13.4 GARCH(1,1): forecasting volatility
Motivation
Volatility is the one return moment that is strongly forecastable. It sets position size (M03, M14), margin (M01), and the fair value of options (M08, M09). GARCH(1,1) is the workhorse: three parameters, closed-form forecasts, and a likelihood you can maximise in a few lines.
13.4.1Model and stationarity#
Let (in practice minus a constant, or itself for daily data). GARCH(1,1) (Bollerslev 1986, generalising Engle 1982) is
with , . is -measurable. The persistence is .
Proposition 13.10covariance stationarity
is covariance stationary iff , and then
Proof
. Taking expectations of (13.13), satisfies . This linear recursion converges to a finite limit from any start iff , and its fixed point is . If , (for ) or grows geometrically, so no finite stationary second moment exists. is an MDS, so it is uncorrelated at all non-zero lags.∎
Strict stationarity needs only (Nelson 1990), which holds even for (IGARCH). An IGARCH process is strictly stationary with infinite variance: its variance forecasts never revert.
Proposition 13.11ARMA representation of
Let . Then is an MDS and
Proof
. Substitute and in (13.13): .∎
So squared returns follow an ARMA(1,1) with AR coefficient . This is why the autocorrelations of in M02 decay slowly: with near 0.98 the decay rate is 2% a day.
13.4.2Filtering and forecasting#
Given data , the variance path is computed recursively. The pre-sample values and are unobserved; a standard choice (the arch package's "backcast") sets both equal to a number , an exponentially weighted average of early squared returns. Then
The effect of decays like and is negligible after a few hundred observations.
Proposition 13.12multi-step forecasts
For and ,
The half-life of a variance shock is
Proof
is known at , so the claim holds for . For , by the tower property . Taking of (13.13) at : . Subtract : the deviation satisfies , so . The half-life solves .∎
The variance of the -day return is the sum of the forecasts (the are uncorrelated), so the average variance per day over the next days is
This is the GARCH term structure of volatility, the object to compare with option-implied volatility of the same maturity (M09).
13.4.3Likelihood and maximum-likelihood estimation#
Proposition 13.13Gaussian log-likelihood and score
With and , the log-likelihood of conditional on the backcast is
and its gradient is
Proof
By the prediction-error decomposition, , and given , with density . Take logs and sum. For the gradient, ; multiply by . Differentiating (13.13) with the chain rule gives the recursion for (the term does not depend on through , since is data).∎
At the true , each score term has conditional mean whatever the distribution of , provided . So maximising (13.20) is consistent even when returns are fat-tailed: this is quasi-maximum likelihood (QMLE). The standard errors must then use the sandwich form (Hessian , outer product of scores ), as in Bollerslev and Wooldridge (1992). Fat-tailed make alone too small.
Implementation details that matter (all in exercises/modules/M13-forecasting/solutions/m13_garch.py):
- Enforce , , by reparametrising: ( the sample variance of the returns, a scale), , , and optimise freely over .
- Scale returns to percent. The likelihood surface in is badly conditioned when .
- Start from several points; the likelihood is flat along the ridge const.
The test suite simulates 10,000 days from , recovers within 0.03, matches the arch package's log-likelihood to relative at fixed parameters, and checks (13.17) against a 400,000-path Monte Carlo.
13.4.4Kurtosis implied by GARCH#
Proposition 13.14
If and , the unconditional kurtosis of is
Proof
Write . Square and take expectations, using independence of and and stationarity (, ): . Now . With and , the numerator is . Hence , and .∎
With , ; with , . Conditionally Gaussian shocks with GARCH variance already produce fat unconditional tails. Index returns usually show more (M02), which is why Student- innovations and jump terms are common.
Worked example: a Nifty-like GARCH forecast#
Take illustrative parameters , (persistence 0.98, inside the 0.95–0.99 range typically reported for equity indices) and a long-run volatility of 15% a year. Daily long-run variance is , so . The half-life (13.18) is trading days.
One-step update. Today's conditional volatility was 18% annualised () and the index fell 3% (). Then , or annualised.
Term structure. Suppose instead is 25% annualised. By (13.17) the forecast for day 5 is 24.4% and for day 21 is 22.2% (annualised). By (13.19) the average over the next 21 trading days is . A one-month implied volatility well above 23.5% says the options market prices more risk than this model; whether that gap is a variance risk premium or information the model lacks (an election, a budget) is the M09 question.
Evaluating volatility forecasts#
True variance is unobserved. If you evaluate a variance forecast against a noisy unbiased proxy (squared return, or intraday realised variance), only some loss functions rank forecasts the same way as they would against the true variance. Patton (2011) shows that MSE, , and QLIKE, , are robust in this sense; MSE on volatilities (square roots) is not. QLIKE is the negative Gaussian log-likelihood up to constants, so (13.20) is a QLIKE fit.
Indian evidence (as reported in abstracts; read the papers before relying on details) Pandey (2003, IIM Ahmedabad working paper) compared GARCH and EGARCH with unconditional estimators against realised volatility on Nifty and reported that conditional models forecast five-day and monthly realised volatility poorly. Rajvanshi, Santra and Basu (IIM Calcutta WPS 797) report that GARCH models augmented with India VIX outperform both plain GARCH and implied volatility alone for Nifty 50, using five-minute realised variance as the target. The two are consistent with a common pattern: implied volatility contains information GARCH lacks (scheduled events), and GARCH's edge is at short horizons.
Practitioner notes
- GARCH reacts to a shock one day late and symmetrically. Equity indices show the leverage effect (falls raise volatility more than rises), which GJR-GARCH and EGARCH capture.
- RiskMetrics EWMA, with , is GARCH with and . It never mean-reverts, so its multi-step forecasts are flat. That is a real flaw for 1-month horizons after a spike.
- Jumps on scheduled days (results, budget, elections, RBI policy) are better handled by adding a known event variance than by hoping GARCH learns them.
- Volatility targeting (scaling a position by , as in time-series momentum, M04 · 4.3) must use computed from data up to . Using from a full-sample fit is a look-ahead (13.6).
Data lab Open on OI Charts (opens in a new tab)
GARCH(1,1) on the Nifty: fit, conditional volatility and forecast cone
The lab fits GARCH(1,1) to Nifty 50 daily log returns from 2010 by Gaussian quasi-maximum likelihood (13.20), with the reparametrisation of 13.4.3 that keeps and . The first chart compares the fitted conditional volatility with the volatility actually realised over the following 21 sessions. The second shows the forecast term structure from the last date, (13.17) and (13.19), and a cone from simulated paths that resample the fitted standardised residuals, so the cone keeps their fat tails.
What to look at The persistence and the half-life (13.18); how far the next-day volatility is from the long-run level; the gap between the kurtosis implied by (13.22) and the sample kurtosis.
Questions
- Is the fitted persistence inside the 0.95–0.99 range quoted in 13.4? Convert it to a half-life in calendar weeks.
- The implied kurtosis (13.22) assumes Gaussian shocks. Is it below the sample kurtosis? What does Cont's fact (7) in M02 · 2.5 say about the gap?
- Compare the 21-day average forecast with today's India VIX (M09). Which is higher, and is the difference a variance risk premium or information the model lacks?
- The parameters are estimated on the whole sample, including the data you are now forecasting from. Which look-ahead problem of 13.6 does that create for a backtest of volatility targeting, and how would you remove it?