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 분포는 두 개의 추가 모수를 가집니다:
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 모델