Trading Dev AcademyFree quant education

Free lesson · Time series

Before GARCH: mean, shocks and changing variance

Open interactive lessonPractice calculationsExplore labs

Start with the idea

Predicting how far a price may move is different from predicting which direction it will move. Volatility models estimate the size of uncertain moves around a mean forecast.

Symbols, units & horizon
  • t: daily observation index
  • ε_t: daily decimal return minus its mean forecast
  • h_t: conditional variance of ε_t, in squared daily-return units
  • ω: nonnegative variance intercept, same units as h
  • α: nonnegative weight on latest squared shock
  • β: nonnegative weight on previous variance
  • h̄: finite unconditional variance when α+β<1
  • √h: daily decimal-return volatility

When and why to use this

Use a conditional volatility forecast as an input to risk budgets, volatility-normalized features and stress comparisons. Start with constant and rolling variance baselines.

Start with a return and subtract its predicted mean. The difference is a shock or residual. Squaring makes positive and negative shocks contribute positively to a size measure. Averaging squared shocks estimates variance; taking a square root returns to the original return units.

Conditional variance means the variance forecast using information available now. Heteroskedasticity simply means that this variance changes across observations. ARCH uses past squared shocks; GARCH also carries forward past variance forecasts. Its coefficients describe how strongly a new shock changes the estimate and how much memory persists.

The familiar GARCH(1,1) recursion assumes a nonnegative constant, nonnegative shock and memory coefficients, and standardized innovations with conditional variance one. A stable finite unconditional variance requires the shock and memory coefficients to sum to less than one under this specification. These are model conditions, not facts guaranteed by a software fit.

Fit the mean and volatility model on past observations. Update a forecast after observing the latest residual, then use it for the next interval. Evaluate squared-error or likelihood diagnostics alongside the actual risk-sizing decision. A more accurate variance forecast need not yield a better investment portfolio.

ht+1=ω+αϵt2+βht,h‾=ω1−α−β
Model assumptions, derivation and arithmetic

Before GARCH: mean, shocks and changing variance

  1. Choose a mean model and calculate residual ε_t. Square it and multiply by α; multiply the prior variance by β; add ω. This is the assumed GARCH recursion.
  2. Under stationarity and unit-variance standardized innovations, E[ε_t²]=E[h_t]=h̄. Taking expectations gives h̄=ω+(α+β)h̄.
  3. Subtract (α+β)h̄ and divide by 1−α−β. The finite positive result needs a positive denominator.
  4. Take √h_(t+1) to report next-day volatility in return units. This forecasts scale, not the sign of the next return.
Work it by hand

Use ω=.00001, α=.1, β=.8, last shock ε=.02 and prior variance .0001. Next variance=.00001+.1×.0004+.8×.0001=.00013. Volatility=√.00013≈.011402, or 1.1402% daily. Long-run variance=.00001/.1=.0001.

Apply it in a strategy

  • Fix the return units, horizon and mean-model timing.
  • Compare constant variance, rolling variance and GARCH under chronological evaluation.
  • Check residual dependence, tail calibration and the net effect of volatility-driven turnover.

Research deliverable

Show one residual, its square, the weighted update and the square-root conversion back to return units.

Sources & evidence · reviewed 12 September 2026

Foundational primary paper: the model definition and second-moment conditions anchor the recursion. The lesson uses a synthetic daily-return update, not an empirical replication.

Further reading: Bollerslev · Generalized Autoregressive Conditional Heteroskedasticity · 1986 ↗

The supplied introductory article, updated 10 July 2025, informed the progression from variance to ARCH and GARCH. It is a secondary tutorial; mathematical conditions are checked against the primary paper above.

Further reading: Requested GARCH tutorial · GeeksforGeeks ↗

Reviewed 12 September 2026: abstract and metadata only. The reported study uses weekly realized volatility for 465 S&P 500 equities during 2015–2025. Its best forecast-error, ranking and portfolio results come from different models. This motivates evaluating the downstream decision separately from predictive fit. Costs, data construction and robustness were not independently checked; no performance result is adopted here.

Further reading: Wade · Do Better Volatility Forecasts Lead to Better Portfolios? · May 2026 preprint ↗

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.

from math import sqrt, isfinite

def garch_foundation(omega,alpha,beta,residual,variance):
    if not all(isfinite(x) for x in [omega,alpha,beta,residual,variance]) or min(omega,alpha,beta,variance)<0 or alpha+beta>=1:
        raise ValueError("Finite nonnegative parameters and alpha+beta<1 required here")
    forecast=omega+alpha*residual**2+beta*variance
    return forecast,sqrt(forecast),omega/(1-alpha-beta)

print(garch_foundation(.00001,.1,.8,.02,.0001))

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