Pachetul rugarch

Modele GARCH în R

Kris Boudt

Professor of finance and econometrics

Modelul GARCH(1,1) normal cu medie constantă

Modelul GARCH normal

$$ 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} $$

  • Patru parametri: $\mu, \omega, \alpha, \beta$.
  • Estimare prin maximum likelihood: se identifică valorile parametrilor pentru care modelul GARCH este cel mai probabil să fi generat seria de randamente observată.
Modele GARCH în 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.
Modele GARCH în R

Flux de lucru

  • Trei pași:

    • ugarchspec(): Specificați modelul GARCH dorit (medie $\mu_t$, varianță $\sigma^2_t$, distribuția lui $e_t$)

      • ugarchfit(): Estimați modelul GARCH pe seria temporală cu randamentele $R_1,...,R_T$.

      • ugarchforecast(): Utilizați modelul estimat pentru a prognoza volatilitatea pentru $R_{T+1}$,...

Modele GARCH în R

Flux de lucru în R

ugarchspec() specifică modelul GARCH de utilizat.

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

ugarchfit() estimează modelul GARCH.

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

ugarchforecast() prognozează volatilitatea randamentelor viitoare.

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

Obiectul ugarchfit

  • Obiectul returnat de ugarchfit conține toate rezultatele estimării modelului GARCH.
  • Metodele coef, uncvar, fitted și sigma:
# Coefficients
garchcoef <- coef(garchfit)
# Unconditional variance
garchuncvar <- uncvariance(garchfit)
# Predicted mean
garchmean <- fitted(garchfit) 
# Predicted volatilities
garchvol <- sigma(garchfit)

Modele GARCH în R

Coeficienții GARCH pentru randamentele zilnice 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
Modele GARCH în R

Volatilități estimate

garchvol <- sigma(garchfit)
plot(garchvol)

Modele GARCH în R

Ce se întâmplă cu volatilitatea viitoare?

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

Ce se întâmplă cu volatilitatea în zilele care urmează după sfârșitul seriei de timp?

Modele GARCH în R

Prognoza volatilității cu h zile înainte

  • Aplicarea metodei sigma() asupra obiectului ugarchforecast returnează prognozele de volatilitate:
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
Modele GARCH în R

Prognoza volatilității cu h zile înainte

Aplicarea metodei fitted() asupra obiectului ugarchforecast returnează prognozele pentru medie:

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
Modele GARCH în R

Aplicație în alocarea tactică a activelor

Un portofoliu care investește un procent $w$ într-un activ riscant (cu volatilitate $\sigma_t$) și păstrează $1-w$ într-un depozit bancar fără risc are volatilitatea

$$ \sigma_p = w \sigma_t$$

Cum se stabilește $w$? O abordare este țintirea volatilității: $w$ este ales astfel încât volatilitatea anualizată prognozată să atingă un nivel țintă, de exemplu 5%. Atunci:

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

Deoarece volatilitățile GARCH variază, ponderea optimă se modifică în consecință.

Modele GARCH în R

Să explorăm rugarch!

Modele GARCH în R

Preparing Video For Download...