共和分と総最小二乗法(TLS) 〜 主成分分析(PCA)の利用

COINTEGRATION AND TOTAL-LEAST-SQUARES REGRESSION」を読んでのメモ*1

まずはこの5点。

1.ある1つの株価データを使って、別の株価データの動きを計算する
2.線形回帰「株価A〜株価B」を計算し、式「株価A = intercept + beta * 株価B」におけるbetaとinterceptを計算する
3.スプレッド「S = 株価A - (intercept + beta * 株価B)」を計算する。
4.ADF検定を行い、スプレッドSが定常的か否かを判定する。
5.スプレッドSが定常的ならば、2つの株価は共和分の関係にある。

なお、共和分の定義については、ここのブログから引用すると下記。

定義6.2(共和分) xtとytを単位根(I(1))過程とする。axt+bytが定常(I(0))過程となるようなaとbが存在するとき、xtとytとの間には共和分(cointegration)の関係がある、もしくはxtとytは共和分している(cointegrated)といわれる。より一般的には、ytをI(1)とする。a′ytがI(0)過程となるようなaが存在するとき、ytには共和分の関係がある、もしくはytは共和分しているといわれる。また、このとき、(a,b)′やaは共和分ベクトル(cointegrating vector)と呼ばれる。

さて、Rで線形回帰を行ってスプレッドSを求めるにはlm関数を使用する。

lm(株価A〜株価B)

もしも、interceptを0にしたい場合は次のようにする。

lm(株価A〜株価B+0)

しかし、lm関数はOLS(最小二乗法)に基づいた計算を行っているため、問題が生じる。
簡潔に述べると、「株価Aと株価Bの従属関係を入れ替えた場合、株価を入れ替えた後に計算したβは、株価を入れ替える前のβの逆数になっているようにしたいが、OLSだとそうはならない」。
これを解決するには、OLSではなく、TLS(総最小二乗法)を使用すれば良い。
しかし、RでTLSを計算するにはどのようにすればよいのだろうか。lm関数ではTLSを使えない。
解決方法は、PCA(主成分分析)を使用することである。

これを実際に確認して見る。
使用するデータは、「TOPIXと個別銘柄の価格」で使用したUFJの株価とTOPIXの株価で行う。

> head(returns)
           YJ8306.Adjusted YJ998405.Close
2013-01-07    -0.016667052   -0.008420174
2013-01-08    -0.029852963   -0.010473928
2013-01-09     0.015037877    0.008189979
2013-01-10     0.010604553    0.011277954
2013-01-11     0.010493276    0.010818415
2013-01-15     0.008316056    0.008343955

UFJのリターンとTOPIXのリターンでPCA。

> r1<-princomp(~returns[,1]+returns[,2])
> beta1<-r1$loadings[1,1]/r1$loadings[2,1]
> r1
Call:
princomp(formula = ~returns[, 1] + returns[, 2])

Standard deviations:
     Comp.1      Comp.2 
0.025507386 0.006616398 

 2  variables and  244 observations.
> beta1
[1] 1.526714

UFJTOPIXのリターンを入れ替えてPCA。

> r2<-princomp(~returns[,2]+returns[,1])
> beta2<-r2$loadings[1,1]/r2$loadings[2,1]
> r2
Call:
princomp(formula = ~returns[, 2] + returns[, 1])

Standard deviations:
     Comp.1      Comp.2 
0.025507386 0.006616398 

 2  variables and  244 observations.
> beta2
[1] 0.6550015

2つの株価を交換した場合に、βが逆数の関係になっているかを確認。

> beta1
[1] 1.526714
> 1/beta2
[1] 1.526714

なお、PCAについて学習したい場合は「A tutorial on Principal Components Analysis」を参照。

*1:元PDFのリンクが切れていたので、そこから派生したこのサイトを読むしかなく、このサイトも消える可能性があるのでメモしとかないと。