Skip to content
All library documents

Choosing Training and Forecast Horizons for ARCH and GARCH Models

Article Quant Q&A · Author: probablysid

Summary

The document describes a proposed volatility forecasting exercise using ARCH, GARCH, and EGARCH models on daily returns for two stocks. The author divides the observations into a training portion and a later testing portion, estimates model parameters on the training data, and forecasts volatility over the test period. Forecasts are compared with a rolling standard deviation of test-period log returns, scaled to an annualized measure. The central question is whether the available training history is adequate for a multi-year forecast.

The text reports that the resulting plots appear plausible but offers no assessment of forecast accuracy, comparison across models, or guidance establishing a suitable horizon. It therefore illustrates a train-test workflow without resolving whether the training length or forecast span is appropriate. A rolling realized-volatility measure is a proxy for actual volatility, and the document does not discuss parameter stability, changing market regimes, or evaluation metrics that would help judge forecast performance.

Key ideas

  • The proposed workflow estimates volatility model parameters on an earlier training sample and forecasts over a later test sample.
  • The exercise compares ARCH, GARCH, and EGARCH forecasts with rolling standard deviation of test-period returns.
  • A plausible-looking forecast plot does not establish forecast accuracy or a suitable horizon.
  • Training length and forecast span remain open questions in the document.
  • Changing market conditions and parameter stability are not evaluated in the described procedure.

Tags

Full text
# Is my time horizon for GARCH(1,1)/ARCH(1)/EGARCH(1,1) reasonable?


# Is my time horizon for GARCH(1,1)/ARCH(1)/EGARCH(1,1) reasonable?












I am trying to learn about volatility forecasting using three models: ARCH(1), GARCH(1, 1) and EGARCH(1, 1) using python. I wanted to know if my general procedure is correct, and specifically if my time horizon is correct (i.e. is it reasonable to use 9 years of daily stock returns data to then forecast into 3 years).

The first step of my procedure is to import the daily returns data between 1st Jan 2010 and 25th March 2022 from two stocks, using the yfinance python package. I then took the first 80% of this data and calculated logarithmic returns and used this to be the "training set", where I used Scipy's minimise function to determine the parameters for each of the models. I then used the models with the determined parameters to forecast into the remaining 20% of the returns data, which I deem the "testing set" (roughly from 2019-2022). To compare my forecasts with the "actual volatility", I calculated log returns (it_test_returns) for the testing set as well, to get the actual volatility between 2019 and 2022:

```
(np.sqrt(252) * it_test_returns.rolling(window=30).std())*(1/100)
```

And then I plotted this against my forecasts. The resulting plots do look reasonable, but I can't find much information on whether I have used enough training data to forecast three years.

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.