Home > Topics > Financial Analytics > Forecasting Volatility with GARCH

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)

  1. Install Library: pip install arch
  2. Load Data: Get daily returns of a stock.
  3. Fit Model:
    model = arch_model(returns, vol='Garch', p=1, q=1)
    results = model.fit()
    
  4. Forecast:
    forecasts = results.forecast(horizon=5)
    print(forecasts.variance[-1:])
    
Note

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…