Forecasting Volatility with GARCH
Having a model is useless if you can't predict the future with it. Here is how GARCH is used for forecasting.
The Forecasting Logic
Since we know today's variance (Sigma^2) based on yesterday's data, we can project this forward.
1-Day Ahead Forecast
This is easy. We just plug in the known values from today into the formula:
Forecast_Variance_(t+1) = omega + alpha * epsilon_t^2 + beta * sigma_t^2
Multi-Day Ahead Forecast
Forecasting 10 days out is harder because we don't know the future shocks (Epsilon). So we assume the expected future shock is zero (E[Epsilon] = 0).
The variance forecast drifts towards the Long Run Unconditional Variance (VL).
V_L = omega / (1 - alpha - beta)
- If current volatility is high, the forecast will curve down towards VL.
- If current volatility is low, the forecast will curve up towards VL.
This mathematically captures Mean Reversion.
Steps in Python (Practical)
- Install Library:
pip install arch - Load Data: Get daily returns of a stock.
- Fit Model:
model = arch_model(returns, vol='Garch', p=1, q=1) results = model.fit() - Forecast:
forecasts = results.forecast(horizon=5) print(forecasts.variance[-1:])
Limit of Forecasting: Volatility forecasts are reasonably accurate for short horizons (1-5 days) and medium horizons (1 month). Beyond that, the forecast just becomes the long-term average, so the model adds little value for very long-term predictions.
Loading quiz…