在 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+\gamma$ 替代 $\alpha$,且 $\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 模型