options(warn=1,messages=1)
suppressPackageStartupMessages(library(rugarch))
suppressPackageStartupMessages(library(MASS))
##パッケージMASSに含まれているSP500の収益率の
#データを使う

ret<-ts(SP500)

##rugarchでegarch(1,1)モデルを推定する#EGARCHボラティリティモデ
#ルをパッケージ rugarch

#を使って推定してみる。詳しい使い方については
#Introduction to the rugarch package (Version 1.3-8)
# Alexios Ghalanos に書かれている。cran.r-project.orgの
#Vignettesnで読めるようになっている。
# https://cran.r-project.org/web/packages/rugarch/Vignettes
#推定作業はrugarchの指示通りにRコードを記述すれば容易に
#計算結果だけでなく関連する各種のグラフもoutputしてくれるが
#が、egarchによる推定結果の読み方で注意すべきと思われる点を
#まとめてみた。rugarchでのegarchには以下のような特徴が見られる。

egarch 条件付分散の式の特徴

#ここで注目すべきは、この条件付分散の式に(標準正規変数の絶対値)
#の 期待値が組み込まれている点である。絶対値を利用して悪いニュース
#は良いニュースよりもボラティリティを増幅さすという非対称性を

#モデル化しようとしている


egarchspec <- ugarchspec(variance.model=list(model="eGARCH",
                                            garchOrder=c(1,1)),
                        mean.model=list(armaOrder=c(0,0)),
                        distribution.model="norm")
egarchfit <- ugarchfit(spec=egarchspec, data=ret)
#
#
#
egarchfit@fit$matcoef


#各係数の推定値は以下のようになる。
##             Estimate  Std. Error       t value     Pr(>|t|)

## mu      3.278995e-02 0.011463333   2.860420538 4.230796e-03
## omega  -1.182441e-05 0.002252076  -0.005250451 9.958108e-01
## alpha1 -8.274741e-02 0.010288179  -8.042960453 8.881784e-16
## beta1   9.822487e-01 0.002156778 455.424079226 0.000000e+00
## gamma1  1.260175e-01 0.012893593   9.773653326 0.000000e+00

# μ= 0.0327 ω= -0.00001 α=-0.0827 β=0.9822 γ=0.126

#
と推定されている。


rhat <- egarchfit@fit$fitted.values
plot.ts(rhat,ylim=c(-0.2,0.2))


egarch(1,1) 収益率の平均 グラフ



#収益率のグラフはretの平均値0.0327で一定となっている。

hhat <- ts(egarchfit@fit$sigma^2)

#
par(mfrow=c(2,1))
plot.ts(hhat)
plot.ts(ret)

egarch(1,1) 条件付分散 グラフ





# 収益率が大きなマイナスになった時には大きなプラスの収益率の時よりも

# 相対的にボラティリティが大きくなる傾向が見られる。

par(mfrow=c(1,1))

#
#
plot(egarchfit,which="all")

##

## please wait...calculating quantiles...


egarch(1,1) 関連するグラフ、レバレッジ効果グラフを含む


#
rugarchではEGARCH(1,1)モデル を下記のように定義していた。

egarch(1,1)のモデルと条件付分散  モデルの算式

そこで、先ほど得た係数の推定値を入れて条件付分散式を表すと以下のようになる。

egarch(1,1)条件付分散式の推定結果

ここで注意を要するのは、この条件付分散の式には(標準正規変数の絶対値)
の期待値E(|z(t-1) |)が組み込まれている点である。 E(|z_(t-1) |)はおおよそ
0.79788 という定数になるため、上式を整理しながら書き換えると


 条件付分散の式には標準正規変数の絶対値の期待値が含まれている

Rugarch以外のパッケージや他の統計ソフトで、もし条件付分散式を

 egarch(1,1)の条件付分散式の別の記述法

として定数項をω一本にまとめて推定して outputするような場合にはrugarchに
よる
outputと定数項の数値が(0.79788×λ) だけ 差異が出てくる。
ここの例では
 
-0.12602×0.79788

もちろん式を整理すれば最終的には大体同じような結果を得られると思う。
ソフトによっては αやγについても条件付分散式の算式が異なると係数の
推定値も異なってくるので使用 しているソフトがどのような条件付分散式を
前提としているか確かめておく必要があるだろう。少し蛇足になるが
(標準正規変数の絶対値)の期待値の計算について簡単にまとめてみる。

標準正規変数の絶対値の期待値の計算

標準正規変数の絶対値を利用して悪いニュースは良いニュースよりも
ボラティリティを増幅さすという非対称性をモデル化されている点を確かめ
ておく。
egarch(1,1)の条件付分散式は

EGARCH(1,1)の分散式の推定結果

だったので

条件付分散の増幅効果  レバレッジ効果

z(t-1)がプラスのショック効果よりもマイナスのショック効果が大きく作用する
モデルとなっている。。z(t-1)のショックがプラスとマイナスのケースに分けて
表示すれば以下のようになる。

EGARCH(1,1)ショック効果別の条件付分散の算式
指数関数表示にすれば

egarch(1,1)の指数関数表示
 
過去に遡及してショックとボラティリティの変化をモデル化するのは面白い
 と思うが,現在進行形で期近のボラティリティを予測するのにどの程度役立
つ かはわからない。マーケットは経済理論的に解釈して悪いニュースに
素直に反応する時もあれば、逆に追加緩和などの政策を期待して好感する
こともあり、 ショックに対してどう反応するかはその時点での市場環境により
異なるの でなかなか容易には予測しがたい。

 

Rによる簡単な回帰モデル+GARCH(1,1)

 

単位根検定の背景(ディッキー・フラー分布のシミュレーション with R)

 

金融工学の初等的計算例 目次