GARCH Models in R
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)

ความแปรปรวนของพอร์ตโฟลิโอสองสินทรัพย์ที่ลงทุนน้ำหนัก $w_{1,t}$ ในสินทรัพย์ 1 และ $(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}$ ที่เหมาะสม วิธีหนึ่งคือเลือก $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 ของหุ้นแสดงถึงความเสี่ยงเชิงระบบของหุ้นนั้น
นิยามจากความแปรปรวนร่วมระหว่างผลตอบแทนของหุ้นกับผลตอบแทนของตลาด หารด้วยความแปรปรวนของผลตอบแทนตลาด
$$ \beta_{t} = \frac{\textnormal{covariance between the stock return and the market return}}{\textnormal{variance of the market return}} $$
จำเป็นต้องใช้ในการคำนวณส่วนชดเชยความเสี่ยง ยิ่งค่า beta สูง หุ้นยิ่งมีความเสี่ยงมาก และอัตราผลตอบแทนที่ต้องการก็ยิ่งสูงตาม
สำหรับหุ้นในตลาดสหรัฐฯ ผลตอบแทนของตลาดคือผลตอบแทนของดัชนี 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
คำนวณค่า beta
msftbeta <- msftsp500cov / sp500var

GARCH Models in R