Guide
GARCH volatility modeling explained
Harbor Capital's risk desk ran a Monday morning value-at-risk report on its equity sleeve using a 252-day rolling standard deviation. The number looked tame — until Tuesday's CPI surprise sent the S&P down 2.4% and Wednesday's follow-through added another 1.8%. The desk had sized positions for “normal” volatility that no longer described the market. A colleague reran the report with a GARCH(1,1) model fit on five years of daily returns. The conditional variance estimate jumped immediately after the first shock and forecast wider bands for the rest of the week — closer to what options markets were already pricing via the VIX. That is what GARCH (Generalized Autoregressive Conditional Heteroskedasticity) does: it models volatility as a time-varying process that reacts to recent shocks instead of assuming every day shares the same variance. Robert Engle's ARCH (1982) and Tim Bollerslev's GARCH extension (1986) earned a Nobel Prize because the framework matches how real markets behave — calm stretches interrupted by clustered turbulence. This guide covers why constant-volatility assumptions fail, the GARCH(1,1) equation and parameters, estimation and diagnostics, forecasting, extensions for leverage effects, a Harbor Capital VaR desk worked example, a model decision table, pitfalls, and a practitioner checklist. It complements Black-Scholes options pricing and Sharpe ratio analysis without replacing full multivariate risk systems or implied-vol surfaces.
Why volatility clusters
Plot almost any liquid asset's daily returns and two stylized facts jump out. First, the distribution has fat tails — extreme days occur more often than a normal bell curve predicts. Second, volatility clusters: large absolute returns tend to arrive in bunches, while quiet periods also persist. A model that uses one fixed standard deviation for all days (the assumption behind many back-of-envelope VaR and Sharpe calculations) treats a calm Tuesday the same as the day after a rate shock. That understates risk right when you need it most and overstates it during prolonged calm.
GARCH separates the conditional mean (expected return, often assumed zero or modeled with ARMA) from the conditional variance (expected squared deviation today given past information). Yesterday's surprise and yesterday's variance both feed today's variance forecast. The result is a mean-reverting but shock-responsive volatility path — high after selloffs, decaying back toward a long-run level unless another shock hits.
From ARCH to GARCH(1,1)
Engle's ARCH(q) model says today's variance depends
on the sum of past squared shocks (innovations). If returns are
rt = μ + εt with
εt = σt zt and
zt standard normal, then:
σ2t = ω + α1ε2t-1 + ... + αqε2t-q
High ARCH orders need many parameters. Bollerslev's GARCH(p,q) adds lagged conditional variances, parsimoniously capturing persistence. The workhorse GARCH(1,1) is:
σ2t = ω + αε2t-1 + βσ2t-1
- ω (> 0) — baseline variance intercept; tiny alone but sets the floor with α and β.
- α (≥ 0) — ARCH term: how much yesterday's squared shock moves variance today. The “news impact.”
- β (≥ 0) — GARCH term: how much yesterday's variance persists today. The “memory.”
For covariance stationarity you need α + β < 1.
Their sum measures persistence: values near 1 mean shocks decay
slowly (typical for daily equity indices). The
unconditional variance is
ω / (1 - α - β) when the process is stationary.
Annualized volatility is roughly the square root of conditional variance times
trading days (252 for US equities).
Estimation, diagnostics, and forecasting
Maximum likelihood estimation
Practitioners fit GARCH by maximum likelihood, assuming
conditional normality or a fat-tailed distribution (Student's
t is common for equity returns). Libraries like
arch in Python or rugarch in R take a return series,
estimate (ω, α, β), and report standard errors. Always work on
log returns or percentage changes, not prices — prices
are non-stationary; returns are closer to the model's assumptions.
Residual checks
After fitting, standardized residuals
zt = εt / σt should
look like white noise with no remaining ARCH effects. The
Ljung-Box test on squared standardized residuals is the standard
check. If it fails, try higher orders GARCH(1,2), GARCH(2,1), or an extension
below. Compare models with AIC/BIC but favor parsimony —
GARCH(1,1) wins surprisingly often in production.
Multi-step ahead forecasts
GARCH produces a path of conditional variances
σ2t+h|t. One-step forecasts react fully
to the latest shock. Longer horizons converge toward unconditional variance at
rate (α + β)h — volatility is mean-reverting, not a
random walk. That is why a GARCH VaR band widens after a crash then gradually
tightens unless new shocks arrive, unlike a naive rolling window that stays wide
for a fixed 252 days.
Extensions: leverage and asymmetry
Equity returns often show the leverage effect: negative returns raise volatility more than positive returns of the same magnitude. Plain GARCH(1,1) treats shocks symmetrically. Common fixes:
- GJR-GARCH — adds an indicator term so negative shocks get extra weight.
- EGARCH — models log-variance, guaranteeing positivity without constraints and capturing asymmetry via a signed shock term.
- GARCH with Student-t errors — handles fat tails in the innovation distribution rather than the variance equation.
For index-level VaR and portfolio risk, symmetric GARCH(1,1) with t-distributed errors is often enough. Single-stock and credit-sensitive books frequently need an asymmetric spec.
Harbor Capital: rerunning VaR after a volatility spike
Harbor Capital's $420M equity sleeve uses a 99% one-day VaR limit. Before the CPI shock, rolling 252-day volatility on the benchmark-linked portfolio implied a VaR of $6.1M. After a combined -4.1% two-day drawdown, the rolling window still averaged in a year of calmer data — VaR rose only to $7.4M while at-the-money index options implied roughly double the historical vol.
The quant team refit GARCH(1,1) with Student-t innovations on five years of daily portfolio returns:
- Estimated α = 0.09, β = 0.88 (α + β = 0.97, high persistence typical for equities).
- Conditional variance jumped 41% on the shock day.
- One-day-ahead 99% VaR (parametric, using forecast σ) = $9.8M — inside the options-implied range.
- Five-day forecast VaR decayed toward $8.2M as conditional variance mean- reverted absent further shocks.
The desk trimmed gross exposure by 12% until realized vol or GARCH forecasts normalized, and cross-checked against Kelly-style sizing caps. The lesson: GARCH is a reactive forward estimate, not a crystal ball — it updates fast when markets move, which is exactly when static windows lie.
Where GARCH is used
- Parametric VaR and ES — plug forecast σ into normal or t quantiles for daily risk limits.
- Portfolio volatility targeting — scale exposure inversely to GARCH forecast vol to maintain constant risk contribution.
- Options analytics — compare GARCH forecast vol to implied vol from Black-Scholes inversion; large gaps may signal relative value (with huge caveats).
- Backtesting stress windows — simulate paths with GARCH parameters to see how persistence affects drawdown distributions.
- Multivariate models — DCC-GARCH extends the idea to time-varying correlation matrices for multi-asset books.
Model choice decision table
| Your problem | Start here | Upgrade if… |
|---|---|---|
| Daily index VaR, symmetric shocks OK | GARCH(1,1) + normal errors | Residual fat tails → Student-t errors |
| Single-stock or credit equity | GJR-GARCH or EGARCH | Asymmetry tests still fail → higher order or component GARCH |
| Intraday / high-frequency | Realized vol (RV) or HAR-RV | Microstructure noise dominates → adjust sampling frequency |
| Long-horizon strategic allocation | Rolling or EWMA vol | Need reactive crisis response → GARCH for tactical overlay only |
| Options desk implied vs realized | GARCH forecast vs surface IV | Skew dynamics matter → stochastic vol models (Heston, SABR) |
| Multi-asset correlation breaks | DCC-GARCH | Regime shifts → Markov-switching GARCH or separate regimes |
Common pitfalls
- Fitting on prices instead of returns — produces nonsense parameters; always difference or log-return first.
- α + β ≥ 1 — implies non-stationary variance (IGARCH territory); long-horizon forecasts diverge. Know whether that is intentional.
- Overfitting high-order GARCH — GARCH(3,3) on 1,000 days often fits noise; out-of-sample forecasts worsen.
- Ignoring structural breaks — COVID, zero-rate regimes, and index composition changes violate single-regime stationarity. Refit or use rolling windows.
- Confusing GARCH vol with implied vol — GARCH is backward-looking statistical fit; options embed forward risk premia and skew.
- Parametric VaR overconfidence — even with t errors, joint tail events across positions need stress tests beyond univariate GARCH.
Production checklist
- Use log returns (or percentage returns) on a consistent sampling interval.
- Start with GARCH(1,1); document why if you add orders or asymmetry.
- Verify α + β < 1 unless IGARCH is a deliberate choice.
- Run Ljung-Box on squared standardized residuals; inspect QQ plot of standardized residuals.
- Prefer Student-t (or skewed-t) innovations for equity daily data.
- Backtest VaR hits: count exceptions vs 99% or 95% targets (Kupiec test).
- Refresh parameters on a schedule (monthly/quarterly) and after major regime shifts.
- Cross-check GARCH VaR against implied vol and historical simulation.
- Log conditional variance series for audit when risk limits bind.
- Separate tactical GARCH overlays from long-run strategic vol assumptions.
Key takeaways
- Volatility is not constant — it clusters; models must react to recent shocks.
- GARCH(1,1) is the default — three parameters capture persistence and news impact parsimoniously.
- Forecasts mean-revert — crisis vol decays unless new shocks arrive; unlike fixed rolling windows.
- Asymmetry and fat tails matter for single names and precise tail risk; extensions are cheap insurance.
- GARCH complements, not replaces implied vol, stress tests, and position limits.
Related reading
- Market volatility and the VIX explained — implied vol, fear gauges, and how options markets price forward uncertainty
- Value at risk explained — parametric, historical, and Monte Carlo VaR methods GARCH feeds into
- Black-Scholes model explained — constant-vol assumption GARCH relaxes in time-series risk work
- Risk management and position sizing explained — turning vol forecasts into capital at risk