Rで学ぶGARCHモデル
Kris Boudt
Professor of finance and econometrics
ugarchspec() の引数 distribution.model を "norm" から "sstd" に変更します:
garchspec <- ugarchspec( mean.model = list(armaOrder = c(0, 0)),
variance.model = list(model = "sGARCH"),
distribution.model = "norm")
$$ \downarrow$$
garchspec <- ugarchspec( mean.model = list(armaOrder = c(0, 0)),
variance.model = list(model = "sGARCH"),
distribution.model = "sstd")
モデルの仮定のもとで
$$ R_{t} = \mu_{t} + e_{t} $$ $$ e_{t} \sim N(0, \sigma^{2}_{t}) $$
次が成り立ちます
$$ \frac{R_{t} - \mu_{t}}{\sigma_{t}} \sim N(0, 1) $$
$$ Z_{t} = \frac{R_{t} - \hat{\mu_{t}}}{ \hat{\sigma_{t}}} $$
Rでの計算
# Obtain standardized returns
stdret <- residuals(garchfit, standardize = TRUE)
library(PerformanceAnalytics)
chart.Histogram(sp500ret, methods = c("add.normal", "add.density"),
colorset = c("gray", "red", "blue"))


現実的な分布は以下を考慮する必要があります:
rugarch では歪スチューデントt分布を使用することで対応可能です:
garchspec <- ugarchspec(distribution.model = "sstd")
正規分布と比べ、歪スチューデントt分布には2つの追加パラメータがあります:
shape):$\nu$ が小さいほど裾が厚い。skew):$\xi=1$ で対称、$\xi<1$ で負の歪度、$\xi>1$ で正の歪度。特殊ケース:




distribution.model 引数を "sstd" に設定します
garchspec <- ugarchspec(mean.model = list(armaOrder = c(0,0)),
variance.model = list(model = "sGARCH"),
distribution.model = "sstd")
モデルを推定します
garchfit <- ugarchfit(data = sp500ret, spec = garchspec)
coef(garchfit)
mu omega alpha1 beta1 skew shape
5.669200e-04 6.281258e-07 7.462984e-02 9.223701e-01 9.436331e-01 6.318621e+00
Rで学ぶGARCHモデル