Rで学ぶGARCHモデル
Kris Boudt
Professor of finance and econometrics
2つの資産リターン $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})$ を投資した2資産ポートフォリオの分散:
$$ \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}$ の定義方法は多数存在する。一つのアプローチは、ポートフォリオ分散 $\sigma_{t}^2$ を最小化するよう $w_{1,t}$ を設定することである。
最小分散ポートフォリオの1階条件:
$$ \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{株式リターンと市場リターンの共分散}}{\textnormal{市場リターンの分散}} $$
リスクプレミアムの計算に必要。高いほどリスクが高く、要求収益率も高くなる。
米国株の場合、市場リターンはS&P 500のリターンを使用する。
MSTFと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モデル