Le paquet rugarch

Modèles GARCH en R

Kris Boudt

Professor of finance and econometrics

Le modèle GARCH(1,1) normal à moyenne constante

Le modèle 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} $$

  • Quatre paramètres : $\mu, \omega, \alpha, \beta$.
  • Estimation par vraisemblance maximale : trouver les valeurs de paramètres pour lesquelles le modèle GARCH a le plus de chances d'avoir généré la série de rendements observée.
Modèles GARCH en R

Alexios Ghalanos

library(rugarch)
citation("rugarch")

Pour citer le paquet rugarch, veuillez utiliser : Alexios Ghalanos (2018). rugarch: Univariate GARCH models. R package version 1.4-0.
Modèles GARCH en R

Flux de travail

  • Trois étapes :

    • ugarchspec() : préciser le modèle GARCH à utiliser (moyenne $\mu_t$, variance $\sigma^2_t$, distribution de $e_t$)

      • ugarchfit() : estimer le modèle GARCH sur votre série temporelle de rendements $R_1,...,R_T$.

      • ugarchforecast() : utiliser le modèle estimé pour prévoir la volatilité de $R_{T+1}$,...

Modèles GARCH en R

Flux de travail en R

ugarchspec() précise le modèle GARCH à utiliser.

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

ugarchfit() estime le modèle GARCH.

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

ugarchforecast() prévoit la volatilité des rendements futurs.

garchforecast <- ugarchforecast(fitORspec = garchfit, n.ahead = 5)
Modèles GARCH en R

Objet ugarchfit

  • ugarchfit produit un objet qui contient tous les résultats liés à l'estimation du modèle GARCH.
  • Méthodes coef, uncvar, fitted et sigma :
# Coefficients
garchcoef <- coef(garchfit)
# Variance inconditionnelle
garchuncvar <- uncvariance(garchfit)
# Moyenne prévue
garchmean <- fitted(garchfit) 
# Volatilités prévues
garchvol <- sigma(garchfit)

Modèles GARCH en R

Coefficients GARCH pour les rendements quotidiens du 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
Modèles GARCH en R

Volatilités estimées

garchvol <- sigma(garchfit)
plot(garchvol)

Modèles GARCH en R

Et la volatilité future ?

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

Et la volatilité pour les jours suivant la fin de la série temporelle ?

Modèles GARCH en R

Prévoir les volatilités à h jours d'avance

  • Appliquer la méthode sigma() à l'objet ugarchforecast donne les prévisions de volatilité :
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
Modèles GARCH en R

Prévoir les volatilités à h jours d'avance

Appliquer la méthode fitted() à l'objet ugarchforecast donne les prévisions de moyenne :

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
Modèles GARCH en R

Application à l'allocation tactique d'actifs

Un portefeuille qui investit une proportion $w$ dans un actif risqué (volatilité $\sigma_t$) et garde $1-w$ en dépôt sans risque a une volatilité égale à

$$ \sigma_p = w \sigma_t$$

Comment choisir $w$ ? Une approche est le ciblage de la volatilité : choisir $w$ pour que la volatilité annualisée prévue du portefeuille atteigne une cible, par exemple 5 %. Alors :

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

Comme les volatilités GARCH varient, la pondération optimale varie aussi.

Modèles GARCH en R

Amusons-nous avec rugarch !

Modèles GARCH en R

Preparing Video For Download...