GRGと金融工学・統計解析

趣味で金融工学や統計解析を勉強しており,このブログでは自分が面白いと思ったことの紹介などをしていきます.色々な方との議論などできたらいいなぁと思います.

S&P500と日経225の時系列分析(単変量GARCH)

今回は,GARCH周りについて触れていきます.データは,S&P500と日経225の2012-03-07から2017-03-07の期間のlog-returnを用いて最近の挙動について調べていきます.

GARCHモデルはボラティリティに着目したモデルです.前回まではVARモデルを用いて平均について着目していましたが,今回はボラティリティに着目する点に注意しましょう.では,なぜボラティリティに着目する必要があるのでしょうか.その答えの一つとして,株価の変動は一時期において大きく変動する傾向が続くことが知られているからということが挙げられます.このことをボラティリティクラスタリングと呼びます.実際のデータから実証的に得られたこのstylized factを表現するためにボラティリティに着目する必要性があるのです.または,前回説明したエントロピーに関する情報量についてより深く知るため,と考えても良いかもしれません.単変量のGARCH(1,1)モデルは以下のように表せる.

{ \displaystyle
y(t) = \mu (t) + \sqrt{h(t)} \nu (t) \dots (1)
}

{ \displaystyle
h(t) = \omega + \beta h(t-1) + \alpha u^{2}(t-1) \dots (2)
}

GARCH(1,1)の(1,1)とは,(2)式のボラティリティ項hとホワイトノイズ項uを一時点前のものを一つずつ用いることを意味しています.このように,ボラティリティ項がARモデルのようになっているものをGARCH(1,1)モデルと呼びます.(1)式の\( \mu (t) \)をARモデルやARMAモデルなどに設定したものを,AR-GARCHモデルやARMA-GARCHモデルと呼んだりします.今までの流れとして,GARCHモデルを用いる際には天下り的にGARCH(1,1)モデルが使われることが多いです.GARCH(1,1)モデルでも柔軟な表現がすることができることからきているのだと思われます.

GARCHモデルはとても柔軟性があり,広く使われていますが,それでもまだ表現できていないstylized factがあります.それは,ボラティリティの撹乱項\( u(t-1) \)がボラティリティに与える影響は正の時より負の時の方が大きいという点です.このことをレバレッジ効果と呼びます.この性質を表すために,GJRモデルと呼ばれるGARCHモデルを拡張したモデルが提案されています.GJRモデルでは,以下のようにボラティリティが変動します.

{ \displaystyle
h(t) = \omega + \beta h(t-1) + \alpha u^{2}(t-1) + \gamma u^{2}(t-1)I(t-1) \dots (3)
}

ここで,\( I(t-1) \)は\( u(t-1) \)が負の時に1となり,それ以外の時には0になる指示関数です.(3)式のように指示関数をおくことで,\( u(t-1) \)が負の時にだけ,係数が\( \alpha + \gamma \)となり\( \gamma \)が正であれば先ほどのstylized factが説明できるだろうというようなモデルとなります.他にも,ボラティリティのモデルの中ではExponential GARCHモデル(EGARCHモデル)がよく使われています.

{ \displaystyle
\ln h(t) = \omega + \beta \ln h(t-1) + \gamma \nu (t-1) + \delta ( |\nu (t-1)| - E(|\nu (t-1)|)) \dots (4)
}

(4)式がEGARCHモデルと呼ばれるものです.今までとは異なり,(1)式の\( \nu (t-1) \)がボラティリティ項に含まれています.\( \gamma \nu (t-1) \)は,\( \gamma \)が負であれば,株価が減少するとボラティリティが上昇するということを表しています.\( \delta ( |\nu (t-1)| - E(|\nu (t-1)|)) \)は,\( \nu (t-1) \)に対する期待される値からの実現値のズレがボラティリティに与える影響を表しています.\( \delta \)が正であれば,ズレが大きくなるとボラティリティが大きくなるという直感的に正しいモデルとなります.

では,Rを使ってそれぞれのモデルのパラメータを推定してみましょう.Rのrugarchパッケージを使って推定を行っていきます.まずは,S&P500のlog-returnのデータを用いて推定してみます.

spec_garch <- ugarchspec( #GARCHモデルについての情報を入力
  variance.model = list(model = "sGARCH", garchOrder=c(1,1)),
  mean.model = list(armaOrder = c(1,1), arfima = F),
  distribution.model = "norm")

spec_gjr <- ugarchspec(  #GJRモデルについての情報を入力
  variance.model = list(model = "fGARCH", garchOrder=c(1,1),submodel="GJRGARCH"),
  mean.model = list(armaOrder = c(1,1), arfima = F),
  distribution.model = "norm")

spec_egarch <- ugarchspec( #EGARCHモデルについての情報を入力
  variance.model = list(model = "eGARCH", garchOrder=c(1,1)),
  mean.model = list(armaOrder = c(1,1), arfima = F),
  distribution.model = "norm")

#パラメータ推定 (Dat[,1]の中にS&P500のlog-returnのデータが入っている)
fit_garch <- ugarchfit(spec_garch, Dat[,1])
fit_gjr <- ugarchfit(spec_gjr, Dat[,1])
fit_egarch <- ugarchfit(spec_egarch, Dat[,1])

#AICの表示
infocriteria(fit_garch)[1]
[1] -6.940626   #GARCHモデルのAIC

infocriteria(fit_gjr)[1]
[1] -6.979851   #GJRモデルのAIC

infocriteria(fit_egarch)[1]
[1] -7.012425   #EGARCHモデルのAIC

AICを見る限り,EGARCHモデルが三つのモデルの中で一番良いモデルというような結果であることがわかります.では,パラメータは上述のような関係になっているのでしょうか.GJRモデルと,EGARCHモデルのパラメータ推定の結果を見てみましょう.

#GJRモデルのパラメーター

Optimal Parameters
------------------------------------
        Estimate  Std. Error     t value Pr(>|t|)
mu      0.000527    0.000053  9.8679e+00        0
ar1     0.951819    0.006746  1.4110e+02        0
ma1    -0.986672    0.000002 -6.0180e+05        0
omega   0.000007    0.000000  9.2706e+01        0
alpha1  0.071451    0.010597  6.7424e+00        0
beta1   0.744011    0.016680  4.4604e+01        0
eta11   0.998444    0.004455  2.2412e+02        0

Robust Standard Errors:
        Estimate  Std. Error     t value Pr(>|t|)
mu      0.000527    0.000056  9.4219e+00    0e+00
ar1     0.951819    0.005809  1.6385e+02    0e+00
ma1    -0.986672    0.000000 -9.8033e+06    0e+00
omega   0.000007    0.000000  1.1079e+02    0e+00
alpha1  0.071451    0.015291  4.6728e+00    3e-06
beta1   0.744011    0.031136  2.3896e+01    0e+00
eta11   0.998444    0.002659  3.7556e+02    0e+00

LogLikelihood : 4139.072 

#EGARCHモデルのパラメーター

Optimal Parameters
------------------------------------
        Estimate  Std. Error    t value Pr(>|t|)
mu      0.000436    0.000006     72.345        0
ar1     0.967133    0.006571    147.181        0
ma1    -0.989801    0.000015 -65586.909        0
omega  -1.079997    0.006710   -160.955        0
alpha1 -0.297082    0.015141    -19.620        0
beta1   0.889947    0.000140   6344.786        0
gamma1  0.060124    0.004725     12.724        0

Robust Standard Errors:
        Estimate  Std. Error     t value Pr(>|t|)
mu      0.000436    0.000074      5.8744        0
ar1     0.967133    0.008901    108.6502        0
ma1    -0.989801    0.000018 -54909.0351        0
omega  -1.079997    0.010441   -103.4423        0
alpha1 -0.297082    0.022451    -13.2323        0
beta1   0.889947    0.000197   4511.0978        0
gamma1  0.060124    0.006936      8.6680        0

LogLikelihood : 4158.356 

GJRモデルの場合,eta11というパラメータが(3)式の\( \gamma \)を意味しており,期待通り正となっていることがわかります.EGARCHモデルの場合,(4)式の\( \gamma \)が結果の\( \alpha 1 \)となり,\( \delta \)が\( \gamma 1 \)に対応しています.結果から,EGARCHモデルについても期待通りの符号であったということが言えそうです.この結果はS&P500の結果ですが,日経225の結果も同じように期待通りにパラメータの符号となり,EGARCHモデルが一番AICが小さかったことがわかりました.(結果は長くなってしまうので省略します.)

次は,多変量のGARCHモデル関係について触れていきます.例えば,DCC-GARCHやコピュラを含んだ柔軟性がとても高い多変量のモデルの紹介をしていきます.