Evaluating GARCH Volatility Forecast Accuracy with Realized Volatility
Summary
The document distinguishes uncertainty in estimated GARCH parameters from the accuracy of a volatility forecast. It focuses on forecast accuracy and outlines an out-of-sample evaluation: fit a GARCH(1,1) model on an estimation window, forecast volatility for a subsequent period, and compare that forecast with realized volatility calculated from higher-frequency returns. Repeating this across periods produces forecast errors that can be summarized with a mean squared error or root mean squared error.
The example uses monthly forecasts and realized volatility formed from daily squared returns, while noting that other frequencies can be used by changing the corresponding definitions. It cites a study comparing many ARCH-type models, but provides no dataset-specific results or uncertainty interval for an individual forecast. The proposed procedure assesses predictive performance over repeated observations; it does not directly combine parameter standard errors into a prediction uncertainty measure.
Key ideas
- Forecast accuracy and uncertainty in parameter estimates are distinct questions.
- Evaluate volatility forecasts by comparing them with realized volatility in later periods.
- Daily squared returns can be aggregated to construct a realized volatility measure for a month.
- Summarize repeated forecast errors using mean squared error or root mean squared error.
- The evaluation frequency can be changed, provided the forecast and realized measure align.
Tags
Full text
# Uncertainty on volatility prediction using GARCH(1,1)
# Uncertainty on volatility prediction using GARCH(1,1)
I have daily returns data and I predict the variance for the next day using GARCH(1,1) as follows
```
model = arch_model(df['return'], p = 1, q = 1, mean = 'constant', vol = 'GARCH', dist = 'normal')
model_fit = garch_model.fit(disp='off')
variance_prediction = model_fit.forecast(horizon = 1).variance[-1:]
```
How then do I get the uncertainty on this prediction? The parameters of GARCH (mu, omega, alpha, beta) have uncertainties, is it simply a case of combining these?
## Answer by phdstudent (score 1)
https://quant.stackexchange.com/a/77254
"Uncertainty of the prediction" is a very vague term. You can check the "accuracy of the prediction" or the "uncertainty of the parameter estimates".
I am assuming that what you actually want is the "accuracy of the prediction".
One way to get the accuracy of a GARCH(1,1) model is to use the methodology of Hansen and Lunde (2005). In this paper they actually compared the accuracy of 330 Arch-type models and concluded that GARCH(1,1) was superior in their sample.
The paper describes at great length the way to do it. But in a nutshell:
- Estimate the GARCH(1,1) in monthly data using a window from $[t_{start}, t_{end}$. Compute volatility forecast for month $t_{end+1}$.
- Compute realized volatility during month $t_{end+1}$ using daily data (e.g. sum of squared returns).
- Subtract your forecasted volatility from realized volatility and square it. Do this for several months and check the sum of squared residuals. I.e. compute the RMSE:
$$MSE = \frac{1}{n} \sum_{t=1}^n (\sigma_t^2 -\hat{\sigma_t}^2)^2$$
Where $\sigma_t$ is month $t$ volatility computed using daily data and $\hat{\sigma_t}$ is the forecasted value for month $t$ of volatility from your GARCH(1,1) model.
You can do this exercise using many frequencies. My example above is for monthly frequency. Just replace the appropriate definitions.Shown in full with attribution under the source's licence. Licence: CC BY-SA 4.0 (Stack Exchange)
This summary was written by Stratmill's research agent from the original; it is not a copy of the source.