Utiliser le modèle GARCH validé en production

Modèles GARCH en R

Kris Boudt

Professor of finance and econometrics

Utilisation en production

Distribution des rendements quotidiens par année

Modèles GARCH en R

Nouvelle fonctionnalité

  • Utilisez ugarchfilter() pour analyser les dynamiques récentes de la moyenne et de la volatilité
  • Utilisez ugarchforecast() appliquée à un objet ugarchspec (au lieu de ugarchfit()) pour prédire la moyenne et la volatilité futures
Modèles GARCH en R

Exemple sur les rendements MSFT

  • msftret : rendements quotidiens 1999–2017.
  • Supposons que l'ajustement du modèle ait été fait avec les rendements disponibles fin 2010.
  • Vous utilisez ce modèle fin 2017 pour analyser la volatilité passée et prévoir la volatilité future.
Modèles GARCH en R

Étape 1 : définir la spécification finale du modèle

Ajustez le meilleur modèle avec msftret disponible fin 2010 :

# Spécifier un modèle AR(1)-GJR GARCH avec loi t asymétrique
garchspec <- ugarchspec(mean.model = list(armaOrder = c(1,0)),
 variance.model = list(model = "gjrGARCH"), distribution.model = "sstd")
# Estimer le modèle
garchfit <- ugarchfit(data = msftret["/2010-12"], spec = garchspec)

Définissez progarchspec comme la spécification à utiliser en production et utilisez l'instruction setfixed(progarchspec) <- as.list(coef(garchfit)) :

progarchspec <- garchspec
setfixed(progarchspec) <- as.list(coef(garchfit))
Modèles GARCH en R

Étape 2 : analyser les dynamiques de moyenne et de volatilité

Utilisez la fonction ugarchfilter() :

garchfilter <- ugarchfilter(data = msftret, spec = progarchspec)
plot(sigma(garchfilter))                                

Distribution des rendements quotidiens par année

Modèles GARCH en R

Étape 3 : prévoir les rendements futurs

garchforecast <- ugarchforecast(data = msftret,
                                fitORspec = progarchspec, 
                                n.ahead = 10) # Prédire les dix prochains jours
cbind(fitted(garchforecast), sigma(garchforecast))
       2017-12-29 2017-12-29
T+1  0.0004781733 0.01124870
T+2  0.0003610470 0.01132550
T+3  0.0003663683 0.01140171
T+4  0.0003661265 0.01147733
T+5  0.0003661375 0.01155238
T+6  0.0003661370 0.01162688
T+7  0.0003661371 0.01170083
T+8  0.0003661371 0.01177424
T+9  0.0003661371 0.01184712
T+10 0.0003661371 0.01191948
Modèles GARCH en R

Utilisation en simulation

Au lieu d'appliquer le modèle complet à des rendements observés, vous pouvez l'utiliser pour simuler des log-rendements artificiels :

$$ r_{t} = \log(P_{t}) - \log(P_{t-1}) $$

Utile pour évaluer l'aléa des rendements futurs et l'impact sur les prix, puisque le prix futur vaut :

$$ P_{t + h} = P_{t} \exp(r_{t + 1} + r_{t + 2} + \ldots + r_{t + h}) $$

Modèles GARCH en R

Étape 1 : calibrer le modèle de simulation

Utilisez les log-rendements pour l'estimation

# Calculer les log-rendements
msftlogret <- diff(log(MSFTprice))[-1]

Estimez le modèle et affectez ses paramètres au modèle de simulation

garchspec <- ugarchspec(mean.model = list(armaOrder = c(1, 0)),
                        variance.model = list(model = "gjrGARCH"),
                        distribution.model = "sstd")
# Estimer le modèle
garchfit <- ugarchfit(data = msftlogret, spec = garchspec)

# Fixer ce modèle estimé comme modèle utilisé pour la simulation
simgarchspec <- garchspec
setfixed(simgarchspec) <- as.list(coef(garchfit))
Modèles GARCH en R

Étape 2 : lancer la simulation avec `ugarchpath()`

La simulation avec la fonction ugarchpath() nécessite de choisir :

  • spec : modèle GARCH entièrement spécifié
  • m.sim : nombre de séries de rendements simulées souhaité
  • n.sim : nombre d'observations par série simulée (p. ex. 252)
  • rseed : un nombre pour fixer la graine générant les séries (reproductibilité)
simgarch <- ugarchpath(spec = simgarchspec, m.sim = 4,
                       n.sim = 10 * 252, rseed = 12345)
Modèles GARCH en R

Étape 3 : analyser les rendements simulés

La méthode fitted() fournit les rendements simulés :

simret <- fitted(simgarch)
plot.zoo(simret) 

Rendements simulés

Modèles GARCH en R

Analyse de la volatilité simulée

plot.zoo(sigma(simgarch))

Volatilité simulée

Modèles GARCH en R

Analyse des prix simulés

Tracé de 4 simulations de 10 ans de prix, avec un prix initial fixé à 1 :

simprices <- exp(apply(simret, 2, "cumsum"))
matplot(simprices, type = "l", lwd = 3)

Prix simulés

Modèles GARCH en R

À vous de pratiquer avec setfixed(), ugarchfilter(), ugarchforecast() et ugarchpath()

Modèles GARCH en R

Preparing Video For Download...