Skip to content
All library documents

Diagnosing Bias in GARCH Volatility Forecasts

Article Quant Q&A · Author: mugen

Summary

The document describes an out-of-sample comparison of one-day-ahead variance forecasts from an ARMA-GARCH model against realized-volatility estimates for twelve stocks. It proposes checking calibration by regressing observed variance on forecast variance: an unbiased forecast should have an intercept of zero and a slope of one. The author avoids formal inference and instead inspects plots across rolling forecasts, comparing the model with Parkinson, close-to-close, Garman-Klass, Rogers-Satchell, and Yang-Zhang estimates. Comparing variances rather than standard deviations is motivated by Jensen’s inequality.

The reported plots suggest forecast bias across multiple stocks and observed-volatility estimators, but the document does not provide the plots or quantify the pattern. It raises the possibility that the forecasts, or the noisy low-frequency volatility proxies, are responsible. Without intraday data, the author cannot compare against realized variance built from intraday returns. The discussion frames a diagnostic question rather than establishing a cause or offering a correction; estimator noise and dependence also make visual evidence an incomplete basis for inference.

Key ideas

  • An unbiased variance forecast should have zero intercept and unit slope when observed variance is regressed on forecast variance.
  • Comparing variance avoids the Jensen-related bias that can arise when comparing square-root volatility measures.
  • The author checks forecasts against several low-frequency volatility estimators and reports that the apparent bias persists.
  • Low-frequency volatility proxies are noisy, and the document does not determine whether the model or the estimators cause the observed discrepancy.

Tags

Full text
# Why are my GARCH forecasts biased?


# Why are my GARCH forecasts biased?












I've run an ARMA(1, 1)-GARCH(1, 1) model with normal density on log returns for twelve stocks. I computed the one-step-ahead out of sample forecast for daily volatility on a rolling windows for 500 iterations ($h^2_{t|t-1}$) and compared them against Parkinson's observed daily volatility ($\hat{\sigma}^2_{park, \ t |t -1}$). The latter was computed on a window comprising the last ten days.

```
# Estimating volatility with parkinson's formula:
# where daily is a xts object with the prices
library(TTR)
volatility(daily, n = 10, calc = "parkinson", N = 1, mean0 = FALSE)
```

I'd like to compare the one-step ahead forecast made at moment t-1, ($h^2_{t|t-1}$), and the volatility observed on time t, ($\hat{\sigma}^2_t$). A regression forecast ~ observed is unbiased if both the intercept is zero and the slope equals one. I don't want to run a formal test to avoid dealing with heteroskedasticity, correlation and other obstacles, but the plots talk by themselves:

Similarly, you can overlay both observed versus forecasts and see the bias.

I'm comparing $h^2_{t|t-1}$ versus $\hat{\sigma}^2_t$ because their square roots would be biased due to Jensen's inequality. I know Parkinson's is a noisy estimator for volatility, but I'm impressed the out of sample forecasts of a basic GARCH(1, 1) are flagged as biased in many stocks. It's simply too suspicious!

Does anyone here have an idea what's going on? Does GARCH(1, 1) produce biased forecasts for every stocks or are the observed volatility estimators biased? How could I check and eventually fix the latter without high intraday data?

A sidenote on Parkinson's volatility Unfortunately, I've got no access to high frequency data and I can't use the all superior Anderson's RV (the sum of squared intraday returns). I'm therefore forced to rely on low frequency estimators for the observed volatility such as close to close (sample standard deviation on returns), Parkinson's low-high, Garman-Klass, Rogers-Satchell, Yang-Zhang and Yang-Zhang corrected by Garman-Klass. Their definitions can be found in enter link description here. Comparing the forecasts from my GARCH model to any of these estimates for observed volatility still shows bias. Taking for example the following stock, the bias practically doesn't change for different estimates of observed volatility.

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.