S&P500と日経225の時系列分析(VARモデル)
はじめに
今回は,少し前から興味を持ち始めた時系列分析について,リマインダーも兼ねて書いていこうと思う. まだ全然勉強が足りていないが,VARモデルを用いて,S&P500とNIKKEI225の最近の関係性について調べていく. 何か間違いなどがあれば,コメントをいただきたい.
データについて
データは,以下のFREDから入手してきた.FREDは実際の研究論文にも使われているため,信用性もあり,オープンであるのでとても助かる.
Federal Reserve Economic Data | FRED | St. Louis Fed
データの範囲は,2012-03-07から2017-03-07までにした.よく2008~2009に起きたリーマンショックが株価にどのような影響を与えたのか,といったような研究はされているが,たまにはリーマンショックから回復しつつあるところからの分析もしてみるべきだろう.
単位根過程のチェック
VARモデルなどの時系列分析の説明として,沖本本の内容をとても細かく要約しているサイトが以下である.
Rで計量時系列分析:VARモデルの基礎(多変量時系列モデル) - 六本木で働くデータサイエンティストのブログ
このサイトでは,とてもわかりやすく説明がなされているため,ここではVARモデルについての説明は省略する.より詳しく知りたいという方は,沖本本やハミルトンの時系列解析を読んでみることをお勧めする.私も沖本本は読み終えたが,それでもハミルトンの本の内容はより細かく,広い範囲をあつかっているため,とても勉強になる.
少し話が逸れたが,Rを用いてS&P500とNIKKEI225の関係について調べていこう.まずは,Rにデータを入力し,それぞれの過程が単位根であるかどうかを調べて見る.ちなみに,今回のプログラムは動けばそれでいい!という形で書いているため,見る人が見れば卒倒してしまいそうな書き方をしているところがあると思われる.
#データの取得 SP500 <- read.csv("SP500.csv") NIKKEI <- read.csv("NIKKEI225.csv") SP500[,1] <- as.Date(SP500[,1]) NIKKEI[,1] <- as.Date(NIKKEI[,1]) SP500 <- na.omit(SP500) #欠損値は削除 NIKKEI <- na.omit(NIKKEI) #欠損値は削除 #単位根検定 adf.test(SP500[,2],k=1) adf.test(NIKKEI[,2],k=1)
単位根検定にはADF検定を用いて行った.その結果が以下である.
Augmented Dickey-Fuller Test data: SP500[, 2] Dickey-Fuller = -2.7331, Lag order = 1, p-value = 0.268 alternative hypothesis: stationary
Augmented Dickey-Fuller Test data: NIKKEI[, 2] Dickey-Fuller = -2.3669, Lag order = 1, p-value = 0.423 alternative hypothesis: stationary
P値をみると,これらの過程は単位根過程であることが検定によって示された.ちなみに,VARモデルのパラメータ推定をするだけであれば,単位根かどうかはあまり問題にはならない.しかし,グレンジャー因果性などを調べる際には単位根であると問題が生じてくることになる.だが,折角VARモデルを使うのだったら,グレンジャー因果性など分析したいなぁ,ということで今回はlog-returnをとることで単位根過程の問題をなくしていきたいと思う.実際では共和分なども問題を考慮する必要があるが,今回はそれは無視して突き進んでみよう.(共和分を考慮した場合と結果にどのような差が生じるのか,ということも今回の結果を用いて比較することもできる.いずれそのことについて触れたい)
では,log-returnが単位根でないことを確認し,S&P500とNIKKEI225のデータを統合しよう.
#Log-Returnへ変換 SP500_return <- diff(log(SP500[,2])) NIKKEI_return <- diff(log(NIKKEI[,2])) #単位根検定 adf.test(SP500_return,k=1) adf.test(NIKKEI_return,k=1) #データの統合 SP500 <- cbind(SP500[-1,1],SP500_return) NIKKEI <- cbind(NIKKEI[-1,1],NIKKEI_return) colnames(SP500)[1] <- "DATE" colnames(NIKKEI)[1] <- "DATE" Dat <- merge(SP500,NIKKEI,by="DATE") #データの期間が異なるためマージ Dat <- Dat[,-1]
自分でもゲンナリするレベルのプログラムであるが我慢してほしい.長くなってしまうので単位根過程の結果は載せていないが,ちゃんとlog-returnは単位根ではないという結果となった.プログラム上のDatの中身がS&P500とNIKKEI225のlog-returnのデータとなっている.途中データを統合しているが,その結果が2012-03-07から2017-03-07という期間となっている.
VARモデルのパラメーター推定
では,varsパッケージを用いてVARモデルのパラメータの推定を行っていこう.まずは,モデルの次数をAICを用いて決定し,その後パラメータの推定を行う.まずは次数の決定である.
#VARの次数の推定 select_VAR <- VARselect(Dat, lag.max = 5) select_VAR $selection AIC(n) HQ(n) SC(n) FPE(n) 4 1 1 4 $criteria 1 2 3 4 AIC(n) -1.837217e+01 -1.837375e+01 -1.836887e+01 -1.837649e+01 HQ(n) -1.836244e+01 -1.835753e+01 -1.834616e+01 -1.834730e+01 SC(n) -1.834635e+01 -1.833073e+01 -1.830864e+01 -1.829905e+01 FPE(n) 1.049708e-08 1.048050e-08 1.053176e-08 1.045179e-08 5 AIC(n) -1.837171e+01 HQ(n) -1.833603e+01 SC(n) -1.827706e+01 FPE(n) 1.050188e-08
AICの部分を見てみると,次数が4の時が一番良いモデルであるという結果が出ていることがわかる.案外次数が大きいことに驚いたが(2,3くらいだろうと思っていた),次にこの結果を用いてパラメータ推定を行う.
#VARのパラメータ推定 VAR_parameter <- VAR(Dat,p=select_VAR$selection[1]) summary(VAR_parameter) VAR Estimation Results: ========================= Endogenous variables: SP500_return, NIKKEI_return Deterministic variables: const Sample size: 1180 Log Likelihood: 7509.705 Roots of the characteristic polynomial: 0.6041 0.6041 0.5279 0.5279 0.4337 0.4337 0.314 0.314 Call: VAR(y = Dat, p = select_VAR$selection[1]) Estimation results for equation SP500_return: ============================================= SP500_return = SP500_return.l1 + NIKKEI_return.l1 + SP500_return.l2 + NIKKEI_return.l2 + SP500_return.l3 + NIKKEI_return.l3 + SP500_return.l4 + NIKKEI_return.l4 + const Estimate Std. Error t value Pr(>|t|) SP500_return.l1 -0.0190755 0.0295211 -0.646 0.51830 NIKKEI_return.l1 0.0156188 0.0187248 0.834 0.40438 SP500_return.l2 -0.0361826 0.0332772 -1.087 0.27712 NIKKEI_return.l2 -0.0118909 0.0189726 -0.627 0.53095 SP500_return.l3 -0.0138368 0.0333297 -0.415 0.67811 NIKKEI_return.l3 0.0048320 0.0189178 0.255 0.79844 SP500_return.l4 -0.1090107 0.0331157 -3.292 0.00103 ** NIKKEI_return.l4 -0.0239604 0.0167354 -1.432 0.15249 const 0.0005886 0.0002370 2.484 0.01315 * --- Signif. codes: 0 ‘***’ 0.001 ‘**’ 0.01 ‘*’ 0.05 ‘.’ 0.1 ‘ ’ 1 Residual standard error: 0.008072 on 1171 degrees of freedom Multiple R-Squared: 0.0167, Adjusted R-squared: 0.009986 F-statistic: 2.487 on 8 and 1171 DF, p-value: 0.01122 Estimation results for equation NIKKEI_return: ============================================== NIKKEI_return = SP500_return.l1 + NIKKEI_return.l1 + SP500_return.l2 + NIKKEI_return.l2 + SP500_return.l3 + NIKKEI_return.l3 + SP500_return.l4 + NIKKEI_return.l4 + const Estimate Std. Error t value Pr(>|t|) SP500_return.l1 8.169e-01 4.683e-02 17.444 < 2e-16 *** NIKKEI_return.l1 -1.581e-01 2.970e-02 -5.322 1.23e-07 *** SP500_return.l2 1.202e-01 5.279e-02 2.278 0.0229 * NIKKEI_return.l2 9.521e-03 3.010e-02 0.316 0.7518 SP500_return.l3 -1.038e-02 5.287e-02 -0.196 0.8444 NIKKEI_return.l3 -6.980e-03 3.001e-02 -0.233 0.8161 SP500_return.l4 3.142e-02 5.253e-02 0.598 0.5499 NIKKEI_return.l4 -1.039e-02 2.655e-02 -0.391 0.6957 const 2.628e-05 3.759e-04 0.070 0.9443 --- Signif. codes: 0 ‘***’ 0.001 ‘**’ 0.01 ‘*’ 0.05 ‘.’ 0.1 ‘ ’ 1 Residual standard error: 0.0128 on 1171 degrees of freedom Multiple R-Squared: 0.2114, Adjusted R-squared: 0.206 F-statistic: 39.25 on 8 and 1171 DF, p-value: < 2.2e-16 Covariance matrix of residuals: SP500_return NIKKEI_return SP500_return 6.515e-05 1.893e-05 NIKKEI_return 1.893e-05 1.640e-04 Correlation matrix of residuals: SP500_return NIKKEI_return SP500_return 1.0000 0.1831 NIKKEI_return 0.1831 1.0000
少々長くなってしまったが,パラメータ推定はエラーもなく行われたみたいである.まずはS&P500の結果について着目してみよう.有意となっているのは,4日前のS&P500のlog-returnだけである.推定値が約-0.11で,S&P500のlog-returnの標準偏差が0.008なので,4日前に1標準偏差分動いたとしたら現時点で動く期待値としては,約-0.088%となるはずである.個人的には案外影響力があるなぁ...という印象である.なぜ,4日前の変動が影響しているのかということに関しての考察をしてみるのも面白いと思うが,それは共和分などの結果を見てからにしよう.
では次に,NIKKEI225の結果を見てみよう.S&P500とは違って過去の影響を大きく受けていそうな結果である.一番強い影響を与えているのは前日のS&P500の変動であることがわかる.この結果は昔から言われていることだが,近年のデータでもその傾向があることが明らかとなった.投資家が昔から言われているこの結果に従って動いているため,今でもその傾向が表れているのだろう.また,前日だけでなく2日前の変動にも有意という結果が出ていることから,私が思っている以上にアメリカ市場の動向が日本に与える影響というものが今現在でも残っていることがうかがえる.一方,前日のNIKKEI225も現在の変動に影響を与えていることがわかる.しかも,その係数は負であることからNIKKEI225の変動は平均回帰的であることがうかがえる.前日に大きく上昇したときには,現在では大きく下降する傾向にあるという結果であるからだ.
最後に
以上の結果から,現在でも昔言われていた傾向が続いていることがわかった.特に面白い!というような結果は得られなかったが,もっと深く掘ってみると何かが出てくるかもしれない.今回はVARモデルを用いての推定であったが,このようなモデルは平均に着目しているものである.より広い範囲を見ることができる分位点回帰のような手法,例えばCAVaiRなどを用いて分析してみるのも面白いかもしれない.
次回はグレンジャー因果性や共和分などについて触れていく予定である.