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, voir le cours Datacamp sur l'analyse des séries temporelles.



Pour rendre le processus GARCH réaliste, il faut que :
$\omega$, $\alpha$ et $\beta$ soient $>0$ : cela garantit que $\sigma^2_t >0$ en tout temps.
$\alpha + \beta < 1$ : cela garantit que la variance prédite $\sigma^2_t$ revient toujours vers la variance de long terme :
$$ \sigma^{2}_{t} = \omega + \alpha e^{2}_{t-1} \beta \sigma^{2}_{t-1} $$
# Set parameter values
alpha <- 0.1
beta <- 0.8
omega <- var(sp500ret) * (1 - alpha - beta)
# Then: var(sp500ret) = omega / (1 - alpha - beta)
# Set series of prediction error
e <- sp500ret - mean(sp500ret) # Constant mean
e2 <- e ^ 2
# We predict for each observation its variance.
nobs <- length(sp500ret)
predvar <- rep(NA, nobs)
# Initialize the process at the sample variance
predvar[1] <- var(sp500ret)
# Loop starting at 2 because of the lagged predictor
for (t in 2:nobs){
predvar[t] <- omega + alpha * e2[t - 1] + beta * predvar[t-1]
}
# Volatility is sqrt of predicted variance
predvol <- sqrt(predvar)
predvol <- xts(predvol, order.by = time(sp500ret))
# We compare with the unconditional volatility
uncvol <- sqrt(omega / (1 - alpha-beta))
uncvol <- xts(rep(uncvol, nobs), order.by = time(sp500ret))
# Plot
plot(predvol)
lines(uncvol, col = "red", lwd = 2)

Modèles GARCH en R