読者です 読者をやめる 読者になる 読者になる

GRGと金融工学・統計解析

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

S&P500と日経225の時系列分析(分散分解)

前回 –> S&P500と日経225の時系列分析(グレンジャー因果性・インパルス応答関数) - GRGと金融工学・統計解析

はじめに

前回は,グレンジャー因果性やインパルス応答関数について触れました.今回は,分散分解について見ていきます.分散分解は,他に予測誤差分散分解とも呼ばれます.昔から使われている手法ではあると思うのですが,案外分散分解について説明しているサイトが少ないため,多少でもこのサイトが助けになればと思います.

分散分解について

分散分解とは,予測の平均自乗誤差(MSE)に各変数固有の撹乱項がどの程度寄与しているのかを見ることで,どの変数がその予測の変動を説明するために重要なのか調べる手法のことです.また,分散分解するときには前回説明を行った再帰的構造が仮定されているのでモデルの構築の際には,変数の順番に気をつけましょう.

では,具体的に見ていきます.分散分解では,相対的分散寄与率(relative variance contribution: RVC)と呼ばれる指標を用いて予測を行う際の変数の重要性を見ていきます.RVCは以下のように表すことができます.

{ \displaystyle
RVC(i,j) = \frac{y_i のk時点先のMSEにおいてy_j が寄与する部分}{y_i のk時点先のMSE}
}

\( RVC(i,j) \)はkの関数として求めることができ,短期的に重要な変数が何か,長期的に重要な変数は何かというような分析をすることができます.この定義だけ見ても分かりにくいので,例を用いてイメージをつかみましょう.この例は,(著)沖本竜義:経済・ファイナンスデータの計量時系列分析のP95に載っているものを引用しています.

{ \displaystyle
y_1 (t) = -1 + 0.6 y_1 (t-1) + 0.3 y_2 (t-1) + u_1 (t) \dots (1)
} { \displaystyle
y_2 (t) = 1 + 0.1 y_1 (t-1) + 0.8 y_2 (t-1) + 0.3 u_1 (t) + u_2 (t) \dots (2)
}

ここで\( u_1 , u_2 \)は無相関で,それぞれ分散が4,0.64であるホワイトノイズとします.現時点がt-1時点だとして,1期間先であるt時点の予測をするとしましょう.その時の予測誤差は,\( y_1 \)の場合\( u_1 (t) \)であり,\( y_2 \)の場合\( 0.3 u_1 (t) + u_2 (t) \)であることが(1),(2)式からわかります.そのため,それぞれのMSEは以下のようになります.


\displaystyle MSE( y_1 (t) ) =  E(u_{1}^{2} (t)) = 4 \dots (3)


\displaystyle MSE( y_2 (t) ) = E( (0.3u_1 (t) + u_2 (t))^{2} ) = 0.09E(u_1^{2} (t)) + E(u_2^{2} (t))  = 0.36 + 0.64 = 1 \dots (4)

では,まず\( RVC(1,1) \)について見ていきましょう.\( RVC(1,1) \)は\( y_1 \)のMSEに\( y_1 \)固有の撹乱項である\( u_1 \)の寄与度を表しています.(3)式を見ると,MSEの計算には\( u_1 \)しか使っていないので,\( RVC(1,1) \)は1となります.また,\( RVC(1,2) \)は\( y_1 \)のMSEに\( y_2 \)固有の撹乱項である\( u_2 \)の寄与度を表していますが,(3)式には\( u_2 \)は含まれていないため,\( RVC(1,2) \)は0となります.

では次に,\( RVC(2,1) \)を見ていきます.\( RVC(2,1) \)は\( y_2 \)のMSEに\( y_1 \)固有の撹乱項である\( u_1 \)の寄与度を表しています.(4)式を見ると,\( u_1 \)が存在しており,0.36という数値分MSEに寄与していることがわかります.全体のMSEが1なので,\( RVC(2,1) \)は0.36となります.最後に\( RVC(2,2) \)については,\( y_2 \)のMSEに\( y_2 \)固有の撹乱項である\( u_2 \)の寄与度を表していますので,(4)式から0.64となります.

上記の例では,\( y_1 \)の一期先の予測の変動には,\( y_2 \)固有の情報は全く意味がないという結果となっています.また,\( y_2 \)の予測の変動には\( y_1 \)の情報は半分とは行かないまでも,少なくない影響を与えていることがわかります.例では1期間先しか見ませんでしたが,同じように2期間先やそれ以上先の期間についても同様に調べることができます.

なぜ分散(MSE)を用いるのか

なんとなく分散分解のイメージはつかめたと思いますが,なぜMSEについてみるのかについてもう少し踏み込んでみましょう.MSEは現時点の情報を使っても予測できない将来の変動について表しています(つまり,分散です.).その予測できない部分の要因が\( y_1 \)固有のものなのか,それとも\( y_2 \)固有のものなのかを知ることは確かに重要であることは想像できます.しかし,それがなぜ分散を分解することで調べることができるのでしょうか?直感的な説明として,情報量という方向から見ていきたいと思います.将来の予測できない部分が正規分布に従っているとしましょう.この仮定は基本的であり,ぶっ飛んだものではないことは理解していただけると思います.今着目しているのは,その予測できない部分の情報がどのように表せるのかということです.その情報量をエントロピーで表せるとしてみたらどうでしょう.正規分布p(x)のエントロピーは以下のように表せます.


\displaystyle - \int^{\infty}_{-\infty} p(x) \ln p(x) dx = \frac{1}{2} + \frac{1}{2} \ln (2\pi \sigma^{2}) \dots (5)

(5)式を見ると,予測できない部分が持つ情報量の大きさは正規分布の分散のみに依存していることがわかります.つまり,予測できない部分の情報の要因を分解するときには分散に着目すると上手くいきそうですね.たとえ,予測できない部分が正規分布ではなく,他の分布に従っていたとしても,大きく分布が異なっていなければ近似として分散を見ることは悪いことではないと考えられます.ちなみに,このエントロピーを用いた説明は,私個人が自分を納得させるために考えているものであり,間違っている可能性があることは言及しておきます.(もしかしたら,どこかの教科書にもっと良い説明があるかもしれませんし,同じような説明がある可能性もあります)

分散分解の結果

では,前回の続きとして,分散分解を自前のデータに適用してみましょう.varsパッケージのfevd関数を用いてみました.

#分散分解
decomposition <- fevd(VAR_parameter,n.ahead = 15)
plot(decomposition)

f:id:GRG:20170311144137j:plain

結果から,日経225のlog-returnがS&P500のlog-returnの予測に役に立たないことが見て取れます.これは前回の結果とも整合的です.逆に,S&P500のlog-returnが日経225のlog-returnには少なからず影響があることが見て取れます(だいたい20%くらいでしょうか).

最後に

次回は,GARCHモデル周りに触れていこうかと思います.他にも,自分が興味があるけど紹介しているサイトが少ないというような事柄が色々あるので,このサイトで紹介できたらなぁと思います.


参考文献

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

S&P500と日経225の時系列分析(グレンジャー因果性・インパルス応答関数)

前回 – > S&P500と日経225の時系列分析(VARモデル) - GRGと金融工学・統計解析

はじめに

前回は,VARモデルを用いてS&P500と日経225のlog-returnの近年の関係性について調べていきました.今回は,折角VARモデルを用いたのだから,グレンジャー因果性やインパルス応答などについて触れたいと思います(少しずつ口調を軽くしていきたい・・・.なぜか文章を書くととても固くなってしまう・・・.).グレンジャー因果性やインパルス応答に関しては,以下のサイトが沖本本の内容をとても丁寧に説明しているため,ここでは省略していきます.

Rで計量時系列分析:VARモデルから個々の時系列データ間の因果関係を推定する - 六本木で働くデータサイエンティストのブログ

グレンジャー因果性

では,まずはじめにグレンジャー因果性についてです.Rのvarsパッケージを使って検定をしていきましょう.

#グレンジャー因果性

causality(VAR_parameter,cause = "SP500_return") #S&P500が日経225に影響を与えているか

$Granger

    Granger causality H0: SP500_return do not Granger-cause
    NIKKEI_return

data:  VAR object VAR_parameter
F-Test = 76.5, df1 = 4, df2 = 2342, p-value < 2.2e-16      # <-- 有意になっている


$Instant

    H0: No instantaneous causality between: SP500_return and
    NIKKEI_return

data:  VAR object VAR_parameter
Chi-squared = 38.29, df = 1, p-value = 6.096e-10

causality(VAR_parameter,cause = "NIKKEI_return") #日経225がS&P500に影響を与えているか

$Granger

    Granger causality H0: NIKKEI_return do not Granger-cause
    SP500_return

data:  VAR object VAR_parameter
F-Test = 0.93108, df1 = 4, df2 = 2342, p-value = 0.4448   # <-- 有意ではない


$Instant

    H0: No instantaneous causality between: NIKKEI_return and
    SP500_return

data:  VAR object VAR_parameter
Chi-squared = 38.29, df = 1, p-value = 6.096e-10

以上の結果から,S&P500から日経225に向けての因果性は統計的に認められるが,その逆は主張することは難しい,というようなことが言えそうです.しかしグレンジャー因果性だけでは,その影響の強度までは知ることができません.そこで用いられるのが,インパルス応答関数と呼ばれるものです.では,そのインパルス応答関数を見ていきます.

インパルス応答関数

#インパルス応答関数

impulse_func <- irf(VAR_parameter,n.ahead = 15,ci = 0.95,ortho = FALSE)
ortho_impulse_func <- irf(VAR_parameter,n.ahead = 15,ci = 0.95,ortho = TRUE)
plot(impulse_func)
plot(ortho_impulse_func)

今回は,非直交化インパルス応答関数と直交化インパルス応答関数を推定してその差があるかどうかも見ていきます.上記のサイトでは,直交化インパルス応答関数を中心に説明がなされているので,補足としてここで直感的な違いを説明します.例えば,S&P500のインパルス応答を推定する際には,S&P500の残差を1単位動かしたときにS&P500自身や日経225にどのような影響が出るのかを調べています.しかし,S&P500だけの残差を単純に動かしていいのでしょうか?S&P500の残差と日経225の残差の間には相関関係があるから,片方だけを動かすなんてことを許していいのか?というような問題が生じます.それを無視してインパルス応答関数を作ったものが,非直交化インパルス応答関数です.そして,コレスキー分解などを用いて残差の部分を直交化したものを用いてインパルス応答関数を作ったものが直交化インパルス応答関数です.直交化のイメージを持つために,数式を使って見ていきましょう.

{ \displaystyle
y_1 (t) = \alpha_1 + \beta_1 y_1 (t-1) + \epsilon_1 (t)
}

{ \displaystyle
y_2 (t) = \alpha_2 + \beta_2 y_2 (t-1) + \epsilon_2 (t)
}

という2つの式があったとします.\( \epsilon_1 , \epsilon_2 \)は相関があるとします.ここでその相関を無視して\( \epsilon_1 \)を動かしてインパルス応答関数を見たものが非直交化インパルス応答関数になります.では,直交化したらどのような形になるのか.それが次のような式となります.

{ \displaystyle
y_1 (t) = \alpha_1 + \beta_1 y_1 (t-1) + u_1 (t)
}

{ \displaystyle
y_2 (t) = \alpha_2 + \beta_2 y_2 (t-1) + \gamma_1 u_1 (t) + \gamma_2 u_2 (t) \dots (1)
}

ここで\( u_1 , u_2 \)は無相関です.このように残差の部分を無相関な残差で表現することができるようになります.これが直交化です.この形なら\( u_1 \)を動かせば\( y_1 \)の影響を相関を気にせず見ることができます.今回は,\( y_1 \)がS&P500のlog-return,\( y_2 \)が日経225のlog-returnを表しています.

少し長くなってしまいましたが,非直交化インパルス応答関数の結果は以下のようになりました.

f:id:GRG:20170310031054j:plain f:id:GRG:20170310031116j:plain

結果を見ると,前回言及したことがそのまま図示されているような形となっていることがわかります.S&P500のlog-returnが1単位上昇すると,次の日の日経225のlog-returnが急上昇していることがわかります.しかし,その効果は2日以降までは続かないことが明らかとなりました.

では逆に日経225のlog-returnが与える影響はどうでしょう.悲しいことに,日本の株式市場が頑張ったところで,アメリカの株式市場にはほとんど影響を及ぼさないことが見て取れます.これはグレンジャー因果性でみた結果と整合的です.

次に直交化インパルス応答関数を見てみましょう.

f:id:GRG:20170310031138j:plain f:id:GRG:20170310031147j:plain

直交化して変わった点は,S&P500のlog-returnが上昇したときには,同時点で日経225のlog-returnも上昇しているという点です.この結果はなぜ生じたのでしょうか?その理由は,コレスキー分解により日経225のlog-returnの残差の中にS&P500のlog-returnの残差の成分が出てくるからです((1)式を見ればわかります).

このようにS&P500の固有の撹乱項\( u_1 \)が日経225に影響を与えているような構造となるのは,コレスキー分解などの三角分解を用いるからですが,この構造のことを再帰的構造と呼びます.実はこれはとても重要な仮定となっており,インパルス応答関数を調べる際には,変数の並び方が重要であることを示しています.つまり,先ほどの数式を用いて説明すると,\( y_1 \)固有の撹乱項\( u_1 \)は\( y_2 \)に大きく影響を与えるのに対し,その逆はほとんどない!(1期間先の場合は影響なし.2期間以上先では微小ながら影響を与える)ということを意味しているからです.そのため,なるべく様々な変数に影響を与えていると考えられる変数を先に持ってこないとモデルがおかしなことになってしまうため注意が必要です.今回は,S&P500を先に持ってきているため,問題はないと考えられます.

最後に

今回は,グレンジャー因果性とインパルス応答関数について見ていきました.次回は,分散分解について触れていきたいと思います.他にも色々と興味があることがあるので,紹介していけたらいいなぁと思います.

ちなみに

前回や今回は,共和分について無視して差分をとって分析を行っています.しかし,実際の流れとしては共和分の存在を検定してからでないといけません.そこで,共和分の検定を行ってみたところ,共和分は存在しないというような結果が得られました.そのため,今回の推定の結果は変なプロセスを踏んでいるわけではなさそうです.共和分検定の結果は以下のようになりました.

#共和分検定
JO_test <- ca.jo(Dat,ecdet="const",type="eigen",K=4)
PO_test <- ca.po(Dat,demean="none",lag="long",type="Pz")
summary(JO_test)

###################### 
# Johansen-Procedure # 
###################### 

Test type: maximal eigenvalue statistic (lambda max) , without linear trend and constant in cointegration 

Eigenvalues (lambda):
[1] 0.2608555 0.2121007 0.0000000

Values of teststatistic and critical values of test:

           test 10pct  5pct  1pct
r <= 1 | 281.29  7.52  9.24 12.97
r = 0  | 356.67 13.75 15.67 20.20

Eigenvectors, normalised to first column:
(These are the cointegration relations)

                 SP500_return.l4 NIKKEI_return.l4   constant
SP500_return.l4     1.0000000000      1.000000000  1.0000000
NIKKEI_return.l4   -0.2777481844    -15.963568672  0.4697312
constant           -0.0003749595      0.006346735 -2.0376624

Weights W:
(This is the loading matrix)

                SP500_return.l4 NIKKEI_return.l4      constant
SP500_return.d       -1.1999481       0.02184248  4.107961e-20
NIKKEI_return.d       0.9008641       0.05736370 -5.206698e-20

summary(PO_test)

###
#重要なところだけ抜粋
###

Value of test-statistic is: 1728.919 

Critical values of Pz are:
                  10pct    5pct    1pct
critical values 33.9267 40.8217 55.1911

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などを用いて分析してみるのも面白いかもしれない.

次回はグレンジャー因果性や共和分などについて触れていく予定である.

マルチンゲールアプローチ(2)

前回のページ:マルチンゲールアプローチ - GRGと金融工学・統計解析

はじめに

前回は,マルチンゲールアプローチで躓きやすい部分について少しばかり触れた(躓いているのは,私だけかもしれないが・・・).前回の内容を簡単にまとめると,リスク中立世界での株価過程を見るとなんか直感と合わないような形をしているけど大丈夫なのか,ということに関してであった.今回は,現実世界の株価過程とリスク中立世界の株価過程のつながりについてより深く見ていくことを目的とする.

現実世界とリスク中立世界の株価過程の関係

復習となるが,リスク中立世界での株価過程S(t)は以下のように表せる.

{ \displaystyle
dS(t) = rS(t)dt + \sigma S(t)dW^{Q}(t) \dots (1)
}

しかし,私たちが生きている現実世界の株価過程は以下のように表せる.

{ \displaystyle
dS(t) = \mu S(t)dt + \sigma S(t)dW^{P}(t) \dots (2)
}

前回では,この両式は同じ株価過程を意味しているという,いわば前から知っている結果を用いて,次の式が成り立つことを示した.

{ \displaystyle
dW^{Q}(t) = \frac{\mu -r}{\sigma} dt + dW^{P}(t) \dots (3)
}

とにかく価格評価の計算をしたい人にとって,この議論の流れは別に悪い流れではない.実際に計算するときには,(1)式のようにドリフト項がrS(t)dtとなるようにとりあえず置いて,後々つじつまが合うように(3)式を計算すれば,安全資産B(t)を基準財としてマルチンゲールに持っていけるからである.

しかし,安全資産以外の資産を基準財にしたほうが議論がしやすい時も往々にしてある.より強調して言うと,「とりあえずドリフト項をrS(t)dtにすればいいんだろ」という考えだけでは次に進めない(進みにくい)ことが起きる.そこで,(2)式から(1)式に至るまでのプロセスを理解しておくと,そのような場合でも対応することができるようになる.そのプロセスは,以下の三つの事柄に分解することができる.

  1. 安全資産で割った資産価格を現実世界で考える.
  2. 安全資産で割った資産価格はリスク中立世界ではマルチンゲールになるという結果を用いて,リスク中立世界での資産価格の過程を考える.
  3. 安全資産で割っている形を直す.

では一つ目から考えていこう.ここでは,伊藤の公式は既に知っているものとして進めていく.安全資産で割った資産価格\( \frac{S(t)}{B(t)} \)の過程は伊藤の公式を用いると次のようになる.

{ \displaystyle
d\frac{S(t)}{B(t)} = (\mu -r)\frac{S(t)}{B(t)}dt + \sigma \frac{S(t)}{B(t)}dW^{P}(t) \dots (4)
}

この(4)式を式変形すると次のようになる.

{ \displaystyle
d\frac{S(t)}{B(t)} = \frac{S(t)}{B(t)}\sigma ( \frac{\mu -r}{\sigma}dt + dW^{P}(t) ) \dots (5)
}

では,現実世界での資産価格過程を求められたので,次に二つ目について考えてみよう.ここでは,安全資産で割った資産価格はリスク中立世界ではマルチンゲールになるという結果はgivenとして考える.\(dW^{Q}\)と\(dW^{P}\)をうまいこと関係させて,リスク中立世界でマルチンゲールとしたい.そのためには,価格過程にドリフト項が残っていてはマルチンゲールにはならないため消したい.このことを考えながら,(5)式を見ると括弧内の形が(3)式の右辺と一緒ではないか!(本当は(5)式から,(3)式が出ているのだが).では,(3)式が成り立つと仮定したら,(5)式からドリフト項が消えて解決ではないかと考えたくなる.いや,確かにその通りなのだが,厳密にはそんなに簡単ではなく,ギルサノフの定理によって,(3)式のように考えても大丈夫である,と裏で保障されているのである.ギルサノフの定理に関しては他の本やサイトを参照してもらいたい.まとめると,(3)式を(5)式に代入して,次の式を得ることができる.

{ \displaystyle
d\frac{S(t)}{B(t)} = \sigma \frac{S(t)}{B(t)}dW^{Q}(t) \dots (6)
}

最後に,最終的な目的であるリスク中立世界でのdS(t)を(6)式を用いて求める.(6)式は安全資産で割られているため,その形を変形させることでdS(t)が得られそうだ.結果を言うと,もう一度伊藤の公式を\( \frac{S(t)}{B(t)} \)とB(t)に対して用いることで,(1)式を得ることができるのである.

これらのプロセスによって(1)式と(2)式が関係していることを理解することで,両式が同じことを示していることも把握することができるだろう.そして,このプロセスは別に基準財として安全資産を選択していない時にも使えるということは知っておくべきであろう.


参考文献

ファイナンスのための確率解析Ⅱ, (著) S・E・シュリーブ,(訳) 長山いづみ

マルチンゲールアプローチ

はじめに

金融工学と言ったらどのようなイメージがあるだろうか・・・?私が一番初めに思っていたことは,株式などにうまく投資して利益を上げるための理論というイメージだった.しかし,金融工学は他にも色々な事柄に使われている.例えば,投資のリターンではなく損失に着目したリスク管理や,オプションなどの適正な価格を理論的に算出するために用いられている.今回は,価格付けについて取り上げたいと思う.

マルチンゲールアプローチとリスク中立世界

価格付けを行うと聞いた時,金融工学を学んでいるほとんどの方が一番初めに思い浮かぶのはマルチンゲールアプローチだと思う(もちろん他にも方法はある).マルチンゲールアプローチはとても有名で強力な手法である.しかし,このアプローチを用いるにあたり,つまづきやすい点がある.それは,「リスク中立の世界を考えよう」という点である.

そのリスク中立の世界とは何であろうか?もちろん,この世界は現実世界とは別の世界のことを言っているのであろう,ということはわかる.では,どのように違うのであろうか?その考え方については,以下のサイトがわかりやすく説明している.

リスク中立確率 - 金融キーワード解説 | シグマインベストメントスクール

しかし,リスク中立の世界という概念のようなものが入った途端,マルチンゲールアプローチがよくわからなくなったと感じてしまう理由について考えて見る.私個人の考えであるが,それは株価過程の書き方を理解しきれていないからだと思われる.リスク中立世界での株価過程S(t)は以下のように表せる.

{ \displaystyle
dS(t) = rS(t)dt + \sigma S(t)dW^{Q}(t) \dots (1)
}

しかし,私たちが生きている現実世界の株価過程は以下のように表せる.

{ \displaystyle
dS(t) = \mu S(t)dt + \sigma S(t)dW^{P}(t) \dots (2)
}

私が一番初めに感じたことは,「この二つの式は違うように見えるが,大丈夫なのだろうか・・・?」ということである.答えから言うと,これらの式は同じ株価過程を違う表現で表しているため,価格評価に(1)式を用いても大丈夫なのである.しかし,(2)式ではなく(1)式を用いる理由についてぼんやりしていると,マルチンゲールアプローチについてよく分からないという感覚を持ってしまうだろう.両式で異なるのは,dt項の係数と\( dW^{P}(t) \),\( dW^{Q}(t) \)である.ここで,結果から逆算すると,

{ \displaystyle
dW^{Q}(t) = \frac{\mu -r}{\sigma} dt + dW^{P}(t) \dots (3)
}

という関係式が成り立っていることがわかる (また逆に,(3)式が成り立っていると仮定したら,(1)式と(2)式は同じものであることがわかる).では,なぜわざわざ(3)式を用いて(2)式から(1)式へとよく分からない変換をしなくてはならないのか?その答えは,(1)式は安全資産B(t)を基準財(ニューメレール)としたらマルチンゲールになるからである.言い換えると,

{ \displaystyle
d\frac{S(t)}{B(t)} = \sigma \frac{S(t)}{B(t)}dW^{Q}(t) \dots (4)
}

となるからである.このように,B(t)で割ったらマルチンゲールとなるような形にすることで,オプションなどの価格付けをする際に計算がとても楽になるのである.ちなみに,(3)式は結果から逆算して出てきたが,厳密には伊藤の公式を経由して出てくるものである.(次回は,この辺りの議論について記述してみる予定)

最後に

ちなみに,マルチンゲールアプローチではリスク中立な世界しか考えることができないのだろうか?いや,それではこのアプローチがここまで広く使われてはいないだろう.価格評価したい資産によっては,安全資産B(t)を基準とするより,株式S(t)を基準にして考えたほうが計算しやすいことが往々にしてある.マルチンゲールアプローチではそのような場合でも,リスク中立世界を考えていた時のように簡単に適用することができる.いずれはこのことについてもブログで取り上げたい.


参考文献

ファイナンスのための確率解析Ⅱ, (著) S・E・シュリーブ,(訳) 長山いづみ