GARCH Models
Introduction
GARCH (generalised autoregressive conditional heteroscedasticity) models series with time-varying conditional variance: quiet and volatile periods alternate. They are the workhorse of financial time series and also used in physiological signals.
Prerequisites
ARMA models, conditional distributions.
Theory
GARCH(1, 1):
\[r_t = \mu + \varepsilon_t, \qquad \varepsilon_t = \sigma_t z_t, \; z_t \sim \mathcal{N}(0, 1),\]
\[\sigma_t^2 = \omega + \alpha \varepsilon_{t-1}^2 + \beta \sigma_{t-1}^2.\]
Mean structure can be combined with ARMA; GARCH models the innovations’ variance.
Extensions: EGARCH (asymmetric), TGARCH (threshold), GARCH-M (mean-spillover).
Assumptions
Conditional normality (or t, skewed-t); stationarity of variance requires \(\alpha + \beta < 1\).
R Implementation
library(rugarch)
# Simulate GARCH(1,1) returns
spec <- ugarchspec(variance.model = list(model = "sGARCH", garchOrder = c(1, 1)),
mean.model = list(armaOrder = c(0, 0), include.mean = TRUE),
distribution.model = "norm")
set.seed(2026)
sim <- ugarchpath(spec = ugarchspec(
variance.model = list(garchOrder = c(1, 1)),
mean.model = list(armaOrder = c(0, 0))),
n.sim = 500)
r <- as.numeric(fitted(sim))
# Fit
fit <- ugarchfit(spec, data = r)
show(fit)
plot(fit, which = 3) # conditional sdOutput & Results
Parameter estimates, likelihood, conditional-variance plot.
Interpretation
“The fitted GARCH(1, 1) captured volatility clustering, with alpha + beta = 0.95 indicating highly persistent volatility.”
Practical Tips
- Check residuals (standardised): should be approximately iid, often t-distributed.
- Heavier-tailed returns require t or skewed-t innovation distributions.
- GARCH fits in
rugarchare the industry standard. - VaR forecasts use conditional-variance forecasts plus a quantile of the innovation distribution.
- Multivariate GARCH (DCC, BEKK) models time-varying correlations.