R에서의 GARCH 모델
Kris Boudt
Professor of finance and econometrics
예상치 못한 수익률 $e_t = R_t - \mu_t$의 부호에 따라 분산식을 분리:
경우: $ e_{t-1} \gt 0$
$$ \sigma^2_{t} = ??? $$
경우: $ e_{t-1} \le 0$
$$ \sigma^2_{t} = ??? $$
... 일반적인 GARCH(1,1) 식을 사용:
경우: $ e_{t-1} \gt 0$
$$ \sigma^2_{t} = \omega + \alpha e^{2}_{t-1} + \beta \sigma^{2}_{t-1} $$
경우: $ e_{t-1} \le 0$
$$ \sigma^2_{t} = ??? $$
예측 분산은 양(+)의 서프라이즈보다 더 커야 함.
즉, 제곱 예측 오차의 계수가 더 큼. $\alpha$ 대신 $\alpha+\gamma$, 여기서 $\gamma \geq 0$
경우: $ e_{t-1} \gt 0$
$$ \sigma^2_{t} = \omega + \alpha e^{2}_{t-1} + \beta \sigma^{2}_{t-1} $$
경우: $ e_{t-1} \le 0$
$$ \sigma^2_{t} = \omega + (\alpha + \gamma) e^{2}_{t-1} + \beta \sigma^{2}_{t-1} $$
이는 Glosten, Jagannathan, Runkle가 제안한 GJR 모형입니다.
ugarchspec()의 variance.model에서 model = "sGARCH"를 model = "gjrGARCH"로 변경:
garchspec <- ugarchspec(mean.model = list(armaOrder = c(0, 0)),
variance.model = list(model = "sGARCH"),
distribution.model = "sstd")
$$\downarrow$$
garchspec <- ugarchspec(mean.model = list(armaOrder = c(0, 0)),
variance.model = list(model = "gjrGARCH"),
distribution.model = "sstd")
모형 추정
garchfit <- ugarchfit(data = msftret, spec = garchspec)
GARCH 계수 확인
coef(garchfit)[2:5]
omega alpha1 beta1 gamma1
2.007875e-06 3.423336e-02 9.363302e-01 5.531854e-02

out <- newsimpact(garchfit)
plot(out$zx, out$zy, xlab = "prediction error", ylab = "predicted variance")

R에서의 GARCH 모델