Modèles GARCH en R
Kris Boudt
Professor of finance and econometrics

ugarchfilter() pour analyser la dynamique récente de la moyenne et de la volatilité ugarchforecast() appliquée à un objet ugarchspec (plutôt que ugarchfit()) pour prédire les futures moyenne et volatilitémsftret : rendements quotidiens 1999–2017. Ajustez le meilleur modèle en utilisant msftret disponible à la fin de 2010 :
# Spécifier un modèle AR(1)-GJR GARCH avec une 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 exécutez l'instruction setfixed(progarchspec) <- as.list(coef(garchfit)) :
progarchspec <- garchspec
setfixed(progarchspec) <- as.list(coef(garchfit))
Utilisez la fonction ugarchfilter() :
garchfilter <- ugarchfilter(data = msftret, spec = progarchspec)
plot(sigma(garchfilter))

garchforecast <- ugarchforecast(data = msftret,
fitORspec = progarchspec,
n.ahead = 10) # Prévisions pour 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
Au lieu d'appliquer le modèle complet pour analyser les rendements observés, vous pouvez l'utiliser pour simuler des rendements logarithmiques artificiels :
$$ r_{t} = \log(P_{t}) - \log(P_{t-1}) $$
Utile pour évaluer l'aléa des rendements futurs et l'effet sur les prix, puisque le prix futur vaut :
$$ P_{t + h} = P_{t} \exp(r_{t + 1} + r_{t + 2} + \ldots + r_{t + h}) $$
Utilisez les rendements logarithmiques pour l'estimation
# Calculer les rendements logarithmiques
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)
# Définir le modèle estimé comme modèle à utiliser pour la simulation
simgarchspec <- garchspec
setfixed(simgarchspec) <- as.list(coef(garchfit))
La simulation avec la fonction ugarchpath() exige de choisir :
spec : modèle GARCH entièrement spécifiém.sim : nombre de séries temporelles de rendements simulés souhaitéesn.sim : nombre d'observations par série simulée (p. ex. 252)rseed : nombre pour fixer la graine utilisée pour générer les séries (requis pour la reproductibilité)simgarch <- ugarchpath(spec = simgarchspec, m.sim = 4,
n.sim = 10 * 252, rseed = 12345)
La méthode fitted() fournit les rendements simulés :
simret <- fitted(simgarch)
plot.zoo(simret)

plot.zoo(sigma(simgarch))

Tracer 4 simulations de 10 ans de prix boursiers, avec un prix initial fixé à 1 :
simprices <- exp(apply(simret, 2, "cumsum"))
matplot(simprices, type = "l", lwd = 3)

Modèles GARCH en R