GRGと金融工学・統計解析

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

S&P500と日経225の時系列分析(DCCモデル・多変量GARCH)

前回 –> S&P500と日経225の時系列分析(単変量GARCH) - GRGと金融工学・統計解析

はじめに

前回は単変量のGARCHモデルについて触れました.今回は,多変量に拡張したGARCHモデルについて触れていきます.多変量になったとしても,単変量の時とほとんど同じような議論をすることができます.しかし,多変量になることで相関関係を考える必要が出てくるので,そのモデリングの仕方が重要となってきます.そこで今回は,Dynamic Conditional Correlation Model(DCCモデル)を用いて相関関係を見ていきます.

DCCモデル

まずは,DCCモデルについて見てみましょう.多変量の時系列モデルは一般的に次のように書けます.

{ \displaystyle
{\bf y(t) = \mu (t) +  u (t) =\mu (t) + H^{\frac{1}{2}}(t) \nu (t)} \dots (1)
}

DCCモデルは(1)式の\( H(t) \)のモデリングを行います.\( H(t) \)の対角成分は各変数の分散となるので,前回紹介したGARCHモデルやEGARCHモデルなどを用いて表現することができます.問題なのは,対角成分以外の成分(共分散)をどのように表現するかです.DCCモデルでは次のように表現しています.

{ \displaystyle
{\bf H(t) = D(t)R(t)D(t)} \dots (2)
}


{\bf D(t)} = diag(h_{1,1} (t), h_{2,2} (t), \dots, h_{n,n} (t) )^{\frac{1}{2}} \dots (3)


{\bf R(t)} = diag(q_{1,1} (t), q_{2,2} (t), \dots, q_{n,n} (t) )^{-\frac{1}{2}} {\bf Q(t)} diag(q_{1,1} (t), q_{2,2} (t), \dots, q_{n,n} (t) )^{-\frac{1}{2}} \dots (4)

{ \displaystyle
{\bf Q(t)} = (1-a-b) {\bf \bar{Q}} + b {\bf Q(t-1)} + a \epsilon (t-1) \epsilon (t-1) \dots (5)
}

ここで\( \epsilon (t-1) = {\bf D(t)^{-1}u(t)} \)であり,\( \bar{Q} \)は\( \epsilon (t) \)の条件なし相関行列を意味しています.いきなり数式が色々出てきましたが,一つずつ見ていきましょう.(2)式は\( D(t), R(t) \)の組み合わせですが,(3)式にあるように\( D(t) \)は各変数の標準偏差を対角成分に持つ行列で,\( R(t) \)は相関行列を意味しています.そのため,(2)式のように掛け合わされると,分散共分散行列\( H(t) \)が出てくるという関係となっています.相関行列\( R(t) \)は行列Qで特徴付けられていて,Qが変化することでRが変化するような構造になっています.そして,そのQの動きを表したのが(5)式という形です.\( R(t) \)が相関行列になるためには,(5)式のパラメータが,\(0 \leq a, 0 \leq b, a+ b < 1 \)となる必要があります.

初見だと,なかなかに複雑なモデルだと感じるかもしれません.もし扱うことが難しそうだと感じるならば,DCCモデルではなく,CCCモデルで慣れてから使うといいかもしれません.CCCモデルは,Constant Conditional Correlation Modelの略称で,相関行列が時間に依存せずに一定である,というような仮定を置いたモデルとなっています.つまり,

{ \displaystyle
{\bf H(t) = D(t)RD(t)}
}

という形となっています.\( D(t) \)が変化することにより,間接的に共分散が動くようなモデルとなっています.とても単純で,使いやすいという理由から広く利用されているモデルです.

DCCモデルのパラメータ推定

では,2012-03-07から2017-03-07のS&P500のlog-returnと日経225のlog-returnの関係をDCCモデルを用いて分析してみます.使うパッケージはRのrmgarchパッケージです.

#DCCモデル

spec_garch = ugarchspec(mean.model = list(armaOrder = c(1, 1),include.mean=TRUE), variance.model = list(garchOrder = c(1,1), model = 'eGARCH'), distribution.model = 'norm')
spec_multi = multispec(replicate(2, spec_garch))
spec_dcc = dccspec(uspec = spec_multi, dccOrder = c(1, 1), distribution = "mvnorm",model = "DCC")
fit_dcc_garch = dccfit(spec_dcc, data = Dat, fit.control = list(eval.se = TRUE))

SP500_NIKKEI_cor <- as.vector(rcor(fit_dcc_garch)[1,2,])
SP500_vola <- as.vector(sigma(fit_dcc_garch)[,1])
NIKKEI_vola <- as.vector(sigma(fit_dcc_garch)[,2])

各変数のボラティリティはEGARCHモデルで記述しています.これは,前回EGARCHモデルが一番AICが低かったことからそのようにしています.(ちなみに,EGARCHモデルはGARCHモデルを特別な場合として含んでいないため,AICで比較することが正しいとは言えないかもしれません.もっと多角的な評価が本当は必要です.)ここでは,基本的なモデルとして全ての分布が正規分布であるとおいています.

まず,相関係数はどのような変動をしているのかを見てみます.

f:id:GRG:20170312232227j:plain

時間によって大きく変化していることがわかります.また,ほぼ全ての期間で相関係数が正であることも見て取れます.次に,それぞれのボラティリティも見てみます.

f:id:GRG:20170312232401j:plain

f:id:GRG:20170312232410j:plain

ボラティリティも大きく変動していることがわかります.以上の結果から,やはりボラティリティ相関係数が一定という仮定を置いて,ポートフォリオを組むことはあまりいいことではないことがわかります.(しかし,ポートフォリオ問題を複雑にし過ぎるのもよくはない.そこが難しいところですよねぇ...)

最後に

次回は,Dynamic Conditional Dependence Model(DCDモデル)について触れていきたいと思います.もしかしたら,コピュラの説明が長くなってしまい,コピュラの回になってしまうかもしれませんが...もっとわかりやすく人に伝えられる文章を書けるように頑張ります!


参考文献

沖本竜義:経済・ファイナンスデータの計量時系列分析