在 R 中构建 GARCH 模型
Kris Boudt
Professor of finance and econometrics
若两项资产收益 $R_{1,t}$ 与 $R_{2,t}$ 的相关系数为 $\rho$,且波动率随时间变化为 $\sigma_{1,t}$ 与 $\sigma_{2,t}$,则其协方差为:
$$ \sigma_{12, t} = \rho \sigma_{1, t} \sigma_{2, t} $$
步骤 1:使用 ugarchfit() 为每个收益序列估计 GARCH 模型。
msftgarchfit <- ugarchfit(data = msftret, spec = garchspec)
wmtgarchfit <- ugarchfit(data = wmtret, spec = garchspec)
步骤 2:使用 residuals() 计算标准化收益。
stdmsftret <- residuals(msftgarchfit, standardize = TRUE)
stdwmtret <- residuals(wmtgarchfit, standardize = TRUE)
步骤 3:使用 cor() 将 $\rho$ 估计为标准化收益的样本相关系数。
msftwmtcor <- as.numeric(cor(stdmsftret, stdwmtret)) # equals 0.298795
步骤 4:将估计的相关系数与波动率相乘,得到 GARCH 协方差
msftwmtcov <- msftwmtcor * sigma(msftgarchfit) * sigma(wmtgarchfit)

两资产组合方差:资产 1 权重为 $w_{1,t}$,资产 2 为 $(1-w_{1,t})$:
$$ \sigma^{2}_{p, t} = w^{2}_{1, t} \sigma^{2}_{1, t} + (1 - w_{1, t})^{2} \sigma^{2}_{2, t} + 2 w_{1, t} (1 - w_{1, t}) \sigma_{12, t} $$
确定最优 $w_{1,t}$ 的方法很多。一种方法是令 $w_{1,t}$ 使组合方差 $\sigma_{t}^2$ 最小。
最小方差组合的一阶条件:
$$ \frac{\partial \sigma^{2}_{p, t}}{\partial w_{1, t}} = 2 w_{1, t} (\sigma^{2}_{1, t} + \sigma^{2}_{2, t} - 2 \sigma_{12, t}) - 2 (\sigma^{2}_{2, t} - \sigma_{12, t}) = 0 $$
解答:
在 R 中计算:
msftvar <- sigma(msftgarchfit) ^ 2
wmtvar <- sigma(wmtgarchfit) ^ 2
msftwmtcov <- msftwmtcor * sigma(msftgarchfit) * sigma(wmtgarchfit)
msftweight <- (wmtvar - msftwmtcov) / (msftvar + wmtvar - 2 * msftwmtcov)

股票的"β"估计度量其系统性风险。
定义:股票收益与市场收益的协方差,除以市场收益的方差。
\beta_{t} = \frac{\textnormal{covariance between the stock return and the market return}}{\textnormal{variance of the market return}} $$
对美国股票,市场收益通常指 S&P 500 的收益。
计算 MSFT 与 S&P 500 收益的协方差
msftsp500cor <- as.numeric(cor(stdmsftret, stdsp500ret))
msftsp500cov <- msftsp500cor * sigma(msftgarchfit) * sigma(sp500garchfit)
计算 S&P 500 收益的方差
sp500var <- sigma(sp500garchfit) ^ 2
计算 β
msftbeta <- msftsp500cov / sp500var

在 R 中构建 GARCH 模型