Volatility is the most-traded quantity in modern finance after returns themselves. It's the input to option pricing, VaR, risk parity, and hundreds of derivatives strategies. The empirical fact that makes vol tradable: volatility clusters — large moves follow large moves, calm follows calm. ARCH/GARCH models capture this.
Volatility clustering
ACF of raw returns: near zero at all lags (efficient market). ACF of squared returns: strongly positive out to dozens of lags. This is conditional heteroskedasticity — the variance of r_t depends on past information, even when E[r_t] doesn't.
ARCH(q)
r_t = μ + ε_t, ε_t = σ_t z_t, z_t ~ i.i.d. (0, 1)σ²_t = ω + α₁ ε²_{t-1} + α₂ ε²_{t-2} + ... + α_q ε²_{t-q}
Engle (1982). Conditional variance is a deterministic function of past squared returns. ARCH(1) requires α₁ < 1 for stationarity; the unconditional variance is ω / (1 - α).
GARCH(p, q)
σ²_t = ω + Σ α_i ε²_{t-i} + Σ β_j σ²_{t-j}
Bollerslev (1986). Generalised by adding lagged conditional variances. GARCH(1,1) — the workhorse — gets remarkable empirical fit to most financial series with just three parameters.
GARCH(1,1) closed-form
σ²_t = ω + α ε²_{t-1} + β σ²_{t-1}Unconditional variance: σ̄² = ω / (1 - α - β)Stationarity: α + β < 1Persistence: α + β (closer to 1 = longer memory)
Typical GARCH(1,1) estimates for equities
α ≈ 0.05-0.10 (one-period innovation weight), β ≈ 0.85-0.92 (carry-over weight), α + β ≈ 0.95-0.99 (high persistence, slow vol mean-reversion). Daily SPX since 1990: α ≈ 0.085, β ≈ 0.905. Daily NSE-20: similar with slightly different ratios. The high persistence is why a vol shock today raises forecast vol for weeks to come.
Forecasting volatility
E[σ²_{t+h} | F_t] = σ̄² + (α + β)^h (σ²_t - σ̄²)
h-step volatility forecast mean-reverts geometrically toward the unconditional variance at rate (α + β). High persistence → slow mean reversion. The whole VIX-style implied-vol term structure can be derived from this.
Estimation
Maximum likelihood, typically Gaussian or t. The log-likelihood is conditional on the path; numerical optimisation iterates over the parameters subject to constraints (α, β > 0, ω > 0, α + β < 1). Most stat packages (Python's arch, R's rugarch) handle this in one call.
Asymmetric extensions — capturing the leverage effect
Negative returns produce more vol than positive returns of the same magnitude (Black 1976). Symmetric GARCH misses this. Two standard fixes:
- EGARCH (Nelson 1991): models log σ²_t; allows asymmetric impact via |z_{t-1}| and z_{t-1} separately.
- GJR-GARCH (Glosten-Jagannathan-Runkle 1993): adds an indicator term γ I(ε_{t-1} < 0) ε²_{t-1} to GARCH(1,1).
Other return distributions
Gaussian residuals usually have too-thin tails for daily returns. Fitting GARCH with Student-t or skewed-t residuals consistently improves likelihood and tail fit. The arch Python package supports normal, t, skew-t, and GED out of the box.
Realised volatility
When intraday data is available, realised volatility (sum of squared intraday returns) is a model-free estimator of integrated variance. HAR-RV (Heterogeneous Autoregressive Realised Volatility, Corsi 2009) regresses realised vol on past daily, weekly, monthly averages — and often forecasts as well as GARCH or better.
Exercise
GARCH(1,1) fit on NSE-20 daily returns gives ω = 0.00001, α = 0.08, β = 0.90, with current σ²_t = 0.0004 (so σ_t = 2%). (1) Compute unconditional volatility (annualised). (2) Persistence. (3) Forecast σ²_{t+10}, expressed as annualised vol. (4) Comment.