EGARCH(1,1) rugarchによる簡単な計算例

統計ソフトRのパッケージMASSに含まれているSP500の収益率のデータを使う
ret <- ts(SP500)
としてRコードで分析を進める。

ugarchでegarch(1,1)モデルを推定するEGARCHボラティリティモデ ルをパッケージ rugarchを使って推定してみる。詳しい使い方については
Introduction to the rugarch package (Version 1.3-8) Alexios Ghalanos に書かれている。cran.r-project.orgの Vignettesnで読めるようになっている。

EGARCH モデルの概要

パッケージrugarchではeGARCH(1,1) を下記のような条件付分散の式で示される。

\(e_{t}\text{=}\sqrt{h_{t}}z_{t}\) 従って \(z_{t}\text{=}\frac{e_{t}}{\sqrt{h_{t}}}\)

\(z_{t}\ \ \ \ \ iid\ \ N(0,1)\) 期待値0、分散1の標準正規変数

\(ret_{t}=\mu+e_{t}\)

\(\ln(h_{t})=\omega+\alpha_{1}z_{t-1}+\gamma\left\{ \left(\left|z_{t-1}\right|-E\left(\left|z_{t-1}\right|\right)\right)\right\} +\beta_{1}\ln(h_{t-1})\)

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

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)モデル を下記のように定義していた。

パッケージrugarchではeGARCH(1,1) を下記のような条件付分散の式で示される。

\(e_{t}\text{=}\sqrt{h_{t}}z_{t}\) 従って \(z_{t}\text{=}\frac{e_{t}}{\sqrt{h_{t}}}\)

\(z_{t}\ \ \ \ \ iid\ \ N(0,1)\) 期待値0、分散1の標準正規変数

\(ret_{t}=\mu+e_{t}\)

\(\ln(h_{t})=\omega+\alpha_{1}z_{t-1}+\gamma\left\{ \left(\left|z_{t-1}\right|-E\left(\left|z_{t-1}\right|\right)\right)\right\} +\beta_{1}\ln(h_{t-1})\)

\(\ln(h_{t})=-0.00001-0.082747z_{t-1}+0.12602\left\{ \left(\left|z_{t-1}\right|-E\left(\left|z_{t-1}\right|\right)\right)\right\} +0.98225\ln(h_{t-1})\)

ここで注意を要するのは、この条件付分散の式には標準正規変数の絶対値の

期待値\(\mathrm{\text{E}}\left(\left|\mathrm{z}_{\mathrm{t}-1}\right|\right)\)が組み込まれている点である。
\(\mathrm{\text{E}}\left(\left|\mathrm{z}_{\mathrm{t}-1}\right|\right)\)\(\sqrt{\frac{2}{\pi}}\simeq\) 0.7978$

いう定数になるため、上式を書き換えると

\(\ln(h_{t})=-0.00001-0.082747z_{t-1}+0.12602\left\{ \left(\left|z_{t-1}\right|-0.79788\right)\right\} +0.98225{\ \ln(h}_{t-1})\)

\(=(-0.00001-0.12602\times0.79788)-0.082747z_{t-1}+0.12602\cdot\left|z_{t-1}\right|+0.98225\ln(h_{t-1})\)

\(=-0.1005-0.082747z_{t-1}+0.12602\cdot\left|z_{t-1}\right|+0.98225\ln(h_{t-1})\)

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

\(\ln(h_{t})\text{=}\omega\text{+}\alpha_{1}z_{t-1}\text{+}\gamma\cdot\left|z_{t-1}\right|\text{+}\beta_{1}\ln(h_{t-1})\)として定数項を一本にまとめて推定して

Outputするような場合にはrugarchによるoutputと定数項の数値が0.79788だけ

差異が出てくる。もちろん式を整理すれば最終的には大体同じような結果を得られると思う。

やについても条件付分散式の算式が異なると係数の推定値も異なってくるので使用

しているソフトがどのような件付分散式を前提としているか確かめておく必要があるだろう。

\(\ln(h_{t})=-0.1005-0.082747z_{t-1}+0.12602\cdot\left|z_{t-1}\right|+0.98225\ln(h_{t-1})\)

\(z_{t-1}\geq0\) ならば\((\alpha+\gamma)z_{t-1}\) つまり(-0.082747+0.12602\(\fallingdotseq\)0.043)

\(z_{t-1}<0\) ならば\(\left(\alpha-\gamma\right)z_{t-1}\) つまり(-0.082747-0.12602\(\fallingdotseq\)-0.2087)

\(\ln(h_{t})=-0.1005+0.98225\ln(h_{t-1})+\begin{bmatrix}0.043z_{t-1}\\ -0.2087z_{t-1} \end{bmatrix}\ \ \ \ \ \ \ \ \ \ \begin{matrix}z_{t-1}\\ z_{t-1} \end{matrix}\ \begin{matrix}\geq0\\ <0 \end{matrix}\)

指数関数表示にすれば

\(h_{t}=\ h_{t-1}^{0.98225}\centerdot e^{-0.1005}\times\begin{bmatrix}e^{0.043z_{t-1}}\\ e^{-0.2087z_{t-1}} \end{bmatrix}\ \ \ \ \ \ \ \ \ \ \begin{matrix}z_{t-1}\\ z_{t-1} \end{matrix}\ \begin{matrix}\geq0\\ <0 \end{matrix}\)

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

標準正規変数の絶対値

\(E\left(\left|x\right|\right)=\sqrt{\frac{2}{\pi}}\)の求め方

xを標準正規変数とすると、その絶対値の期待値は、期待値の定義から

\(E(x)\text{=}\frac{1}{\sqrt{2\pi}}\int^{\infty}_{-\infty}\left|x\right|\cdot e^{-\frac{x^{2}}{2}}dx\text{=}\frac{2}{\sqrt{2\pi}}\cdot\int^{\infty}_{0}x\cdot e^{-\frac{x^{2}}{2}}dx\)

ここで\(\text{-}\frac{x^{2}}{2}\)=tと置き換えると

\(-xdx\text{=}dt\)を使い、\(\int^{\infty}_{0}x\cdot e^{-\frac{x^{2}}{2}}dx\text{=}\int^{\infty}_{0}(-e^{t})dt\)

\(\sqrt{\frac{2}{\pi}}\cdot\int-e^{-\frac{x^{2}}{2}}dx\)

\(\text{=}\sqrt{\frac{2}{\pi}}\)[0-(-1)]=\(\sqrt{\frac{2}{\pi}}\)

 

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

 

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

 

金融工学を初等数学で 目次