Trading Dev AcademyFree quant education

Free lesson · Time series

GARCH: volatility clusters, and you can model the cluster

Open interactive lessonPractice calculationsExplore labs

Start with the idea

GARCH treats yesterday’s squared surprise and variance forecast as information about tomorrow’s dispersion. It models volatility, not the sign of the next return. Nonnegative parameters help keep variance forecasts nonnegative.

Symbols, units & horizon
  • σₜ²: conditional variance for period t
  • εₜ₋₁: previous period innovation in return units
  • ω: nonnegative variance intercept
  • α: coefficient on the previous squared innovation
  • β: coefficient on previous conditional variance
  • α+β: persistence, below 1 for the finite stationary variance used here
  • v̄: long-run variance, not volatility

When and why to use this

Use a variance forecast to scale risk, stress option assumptions and evaluate whether residuals are still clustered after a model is fitted.

Every trader knows that after a big move, more big moves follow. GARCH(1,1) turns the folk knowledge into an equation with three parameters:

σt2=ω+αεt−12+βσt−12
Algebra and arithmetic

Update GARCH and solve its long-run variance

  1. Insert the last squared innovation and forecast into vt=ω+αεt−12+βvt−1. All terms have squared-return units.
  2. If an unconditional variance exists, E[ε2]=E[v]=v‾. Thus v‾=ω+(α+β)v‾; rearrange to v‾=ω(1−α−β).
  3. Forecast deviations decay approximately by (α+β)h; a persistence half-life uses ln(.5)/ln(α+β) when the sum lies between 0 and 1.
Work it by hand

ω=.000002, α=.10, β=.85, last shock=.02, last variance=.0001 gives next variance=.000127 and volatility≈1.127%. Long-run variance=.00004.

  • α: how much yesterday's surprise (ε2) raises today's variance. Typical equity value ≈ 0.05–0.10.
  • β: how much of yesterday's variance carries over. Typical ≈ 0.85–0.92.
  • α+β: persistence. Near 1 means shocks decay slowly; the half-life of a vol shock is ln⁡0.5ln⁡(α+β).
  • ω(1−α−β): the long-run variance the process reverts to.

Uses on the desk: forecast tomorrow's vol to size positions (vol targeting), price options with a term structure, set stops that widen after shocks instead of getting run over by them.

GARCH fit: α=0.08, β=0.90. Half-life of a volatility shock, in days?

Persistence is 0.98. ln⁡0.5ln⁡0.98=−0.693−0.0202=34 days. A vol spike takes over a month to decay halfway — which is why the VIX falls slowly and rises fast.

Python implementation

Self-contained teaching example. Python 3.10+; dependencies and input conventions are shown in the code and notation. Run in your own Python environment.

def garch_next(previous_variance, previous_innovation, omega, alpha, beta):
    if min(previous_variance,omega,alpha,beta) < 0:
        raise ValueError("Variances and coefficients must be nonnegative")
    return omega+alpha*previous_innovation**2+beta*previous_variance

def garch_long_run(omega, alpha, beta):
    if min(omega,alpha,beta) < 0 or alpha+beta >= 1:
        raise ValueError("Require nonnegative parameters and alpha+beta < 1")
    return omega/(1-alpha-beta)

print(garch_next(.0001, -.02, .000002, .08, .90))

Continue learning

Time Series Analysis — all lessons
  1. Start with time order, lags and differences
  2. Before GARCH: mean, shocks and changing variance
  3. Stationarity: the assumption every test makes and every market breaks
  4. Autocorrelation: momentum, mean reversion, or coin flips
  5. GARCH: volatility clusters, and you can model the cluster
  6. Cointegration: a stationary relationship to test
  7. Forecast horizons, EWMA, and model diagnostics
  8. Markov chains: a two-state model you can calculate by hand
  9. Hidden Markov models: predict, observe, update

Quantitative finance and development glossary · Python resources and libraries · Research sources and limitations