แพ็กเกจ rugarch

GARCH Models in R

Kris Boudt

Professor of finance and econometrics

โมเดล GARCH(1,1) แบบปกติที่มีค่าเฉลี่ยคงที่

โมเดล GARCH แบบปกติ

$$ R_t = \mu + e_t $$ $$ e_t \sim N(0, \sigma^2_t) $$ $$ \sigma^2_t = \omega + \alpha e^2_{t-1} + \beta \sigma^2_{t-1} $$

  • พารามิเตอร์ 4 ตัว: $\mu, \omega, \alpha, \beta$.
  • ประมาณค่าด้วย maximum likelihood: หาค่าพารามิเตอร์ที่ทำให้โมเดล GARCH มีโอกาสสูงสุดที่จะสร้างชุดผลตอบแทนที่สังเกตได้
GARCH Models in R

Alexios Ghalanos

library(rugarch)
citation("rugarch")

To cite the rugarch package, please use: Alexios Ghalanos (2018). rugarch: Univariate GARCH models.R package version 1.4-0.
GARCH Models in R

ขั้นตอนการทำงาน

  • 3 ขั้นตอน:

    • ugarchspec(): ระบุโมเดล GARCH ที่ต้องการใช้ (ค่าเฉลี่ย $\mu_t$, ความแปรปรวน $\sigma^2_t$, การแจกแจงของ $e_t$)

      • ugarchfit(): ประมาณค่าโมเดล GARCH บนอนุกรมเวลาของผลตอบแทน $R_1,...,R_T$

      • ugarchforecast(): ใช้โมเดล GARCH ที่ประมาณค่าแล้วเพื่อพยากรณ์ความผันผวนของ $R_{T+1}$,...

GARCH Models in R

ขั้นตอนการทำงานใน R

ugarchspec() ใช้ระบุโมเดล GARCH ที่ต้องการใช้

garchspec <- ugarchspec(mean.model = list(armaOrder = c(0,0)),
                           variance.model = list(model = "sGARCH"),
                           distribution.model = "norm")

ugarchfit() ใช้ประมาณค่าโมเดล GARCH

garchfit <- ugarchfit(data = sp500ret, spec = garchspec)

ugarchforecast() ใช้พยากรณ์ความผันผวนของผลตอบแทนในอนาคต

garchforecast <- ugarchforecast(fitORspec = garchfit, n.ahead = 5)
GARCH Models in R

ออบเจกต์จาก ugarchfit

  • ugarchfit ส่งคืนออบเจกต์ที่เก็บผลลัพธ์ทั้งหมดจากการประมาณค่าโมเดล GARCH
  • เมธอด coef, uncvar, fitted และ sigma:
# Coefficients
garchcoef <- coef(garchfit)
# Unconditional variance
garchuncvar <- uncvariance(garchfit)
# Predicted mean
garchmean <- fitted(garchfit) 
# Predicted volatilities
garchvol <- sigma(garchfit)

GARCH Models in R

สัมประสิทธิ์ GARCH สำหรับผลตอบแทนรายวันของ S&P 500

print(garchcoef)
          mu        omega       alpha1        beta1 
5.728020e-04 1.220515e-06 7.792031e-02 9.111455e-01 

$$ R_{t} = 5.7 \times 10^{-4} + e_{t} $$ $$ e_{t} \sim N(0, \hat{\sigma}^{2}_{t}) $$ $$ \hat{\sigma}^{2}_{t} = 1.2 \times 10^{-6} + 0.08 e^{2}_{t-1} + 0.91 \hat{\sigma}^{2}_{t-1} $$

sqrt(garchuncvar)
0.01056519
GARCH Models in R

ความผันผวนที่ประมาณค่าได้

garchvol <- sigma(garchfit)
plot(garchvol)

GARCH Models in R

ความผันผวนในอนาคตเป็นอย่างไร?

tail(garchvol, 1)
2017-12-29 0.004862908

แล้วความผันผวนในวันถัดจากช่วงท้ายของอนุกรมเวลาล่ะ?

GARCH Models in R

การพยากรณ์ความผันผวน h วันล่วงหน้า

  • การใช้เมธอด sigma() กับออบเจกต์ ugarchforecast จะได้ค่าพยากรณ์ความผันผวน:
sigma(garchforecast)
      2017-12-29
T+1  0.005034754
T+2  0.005127582
T+3  0.005217770
T+4  0.005305465
T+5  0.005390797
GARCH Models in R

การพยากรณ์ความผันผวน h วันล่วงหน้า

การใช้เมธอด fitted() กับออบเจกต์ ugarchforecast จะได้ค่าพยากรณ์ค่าเฉลี่ย:

fitted(garchforecast)
      2017-12-29
T+1  0.000572802
T+2  0.000572802
T+3  0.000572802
T+4  0.000572802
T+5  0.000572802
GARCH Models in R

การประยุกต์ใช้กับการจัดสรรสินทรัพย์เชิงกลยุทธ์

พอร์ตโฟลิโอที่ลงทุนสัดส่วน $w$ ในสินทรัพย์เสี่ยง (ที่มีความผันผวน $\sigma_t$) และเก็บ $1-w$ ไว้ในบัญชีเงินฝากไร้ความเสี่ยง จะมีความผันผวนเท่ากับ

$$ \sigma_p = w \sigma_t$$

จะกำหนด $w$ อย่างไร? แนวทางหนึ่งคือ volatility targeting: เลือก $w$ ให้ความผันผวนรายปีของพอร์ตโฟลิโอที่พยากรณ์ได้เท่ากับระดับเป้าหมาย เช่น 5% ดังนั้น:

$$ w^* = 0.05 /\sigma_t $$

เนื่องจากความผันผวน GARCH เปลี่ยนแปลงอยู่เสมอ น้ำหนักที่เหมาะสมจึงเปลี่ยนตามด้วย

GARCH Models in R

มาฝึกกับ rugarch กัน!

GARCH Models in R

Preparing Video For Download...