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

Tim Bollerslev






Pour les modèles AR(MA) de la moyenne, voyez le cours DataCamp sur l'analyse des séries chronologiques.



Pour rendre le processus GARCH réaliste, il faut :
$\omega$, $\alpha$ et $\beta$ soient $>0$ : cela assure que $\sigma^2_t >0$ en tout temps.
$\alpha + \beta < 1$ : cela assure que la variance prévue $\sigma^2_t$ revient toujours à la variance de long terme :
$$ \sigma^{2}_{t} = \omega + \alpha e^{2}_{t-1} \beta \sigma^{2}_{t-1} $$
# Définir les valeurs des paramètres
alpha <- 0.1
beta <- 0.8
omega <- var(sp500ret) * (1 - alpha - beta)
# Alors : var(sp500ret) = omega / (1 - alpha - beta)
# Définir la série des erreurs de prévision
e <- sp500ret - mean(sp500ret) # Moyenne constante
e2 <- e ^ 2
# On prédit, pour chaque observation, sa variance.
nobs <- length(sp500ret)
predvar <- rep(NA, nobs)
# Initialiser le processus à la variance de l'échantillon
predvar[1] <- var(sp500ret)
# Boucle à partir de 2 à cause du prédicteur retardé
for (t in 2:nobs){
predvar[t] <- omega + alpha * e2[t - 1] + beta * predvar[t-1]
}
# La volatilité est la racine carrée de la variance prévue
predvol <- sqrt(predvar)
predvol <- xts(predvol, order.by = time(sp500ret))
# Comparer avec la volatilité inconditionnelle
uncvol <- sqrt(omega / (1 - alpha-beta))
uncvol <- xts(rep(uncvol, nobs), order.by = time(sp500ret))
# Tracer
plot(predvol)
lines(uncvol, col = "red", lwd = 2)

Modèles GARCH en R