GARCH Return Forecasts: Conditional Means Versus Simulated Outcomes
Summary
The document asks whether one-step-ahead stock returns should be forecast by drawing innovations from a fitted GARCH distribution, scaling them by forecast volatility, and averaging the simulated outcomes. The responses explain that this simulation does not add information to a point forecast: with zero-mean innovations, the average converges to the model’s conditional mean. GARCH is principally useful here for forecasting conditional variance and describing the return distribution.
For a point forecast, use the conditional mean already specified by the model; a simulated innovation is useful for generating a possible outcome or a predictive density, rather than improving the expected return estimate. The discussion suggests evaluating forecasts with a rolling one-step-ahead comparison against observed returns and notes that return predictability may be weak. It offers conceptual guidance rather than an empirical comparison, and the strength of any forecast depends on the mean model and assumptions about innovations.
Key ideas
- A zero-mean innovation leaves the conditional mean as the one-step point forecast.
- Averaging simulated GARCH outcomes tends to reproduce the conditional mean rather than create a stronger forecast.
- GARCH models are especially useful for conditional volatility and density forecasts.
- Rolling forecasts can be compared with realized returns to assess model performance.
- Return predictability is uncertain, so a volatility model should not be treated as evidence of a tradable signal.
Tags
Full text
# Predicting stock returns with GARCH in Python
# Predicting stock returns with GARCH in Python
I have seen this post: Correctly applying GARCH in Python which shows how to correctly apply GARCH models in Python using the `arch` library. Now I am wondering how I can obtain one-step ahead returns forecast. All guides are referring to obtaining volatility forecasts, but not returns.
My intuition would be:
- Retrieve one-step ahead conditional mean and volatility forecasts
- Draw X random numbers from the distribution which was used for fitting the GARCH model.
- Calculate `mean + volatility * random_number` for all randomly drawn innovations.
- Take mean of the above to receive a point forecast of the return.
Is this approach sound? Thanks in advance!
## Answer by Morten Andersen (score 1, accepted)
https://quant.stackexchange.com/a/42265
First of all let me start by saying that I'm not used to using Python. Another thing is that you might want to think about your title again, more specific, the "correctly" term: There seems to be no evidence supporting that you can 100% accurately predict stock returns. Perhaps, you could look up the Efficient Market Hypothesis, more precise how the semi-strong form relates to GARCH models.
I guess you could use this method you're describing, however as far as I can see without actually calculating it myself, when you take the mean at the end you effectively kills the randomness of it. That is, when you generate X different point forecasts, they should in theory be distributed with the assumed distribution in the innovations (which are IID(0,1)), scaled with the (same) volatility forecast and mean, and thus, when taking the mean in the end, you simply obtain a number close to the forecasted conditional mean.
I would simply use a random generated value from the distribution you're assuming in the GARCH, for example a standard normal distribution. Remember that you assume $e \sim IID(0,1)$. You could look into a one-step ahead rolling forecast scheme and perhaps just check to see how your rolling forecast compare with real observed returns.
Another thing you could do is look up parametric density forecasting, in which you practically forecasts the volatility and then scale the assumed distribution of the innovations with this volatility.
Addition of GARCH edit
The GARCH(1,1) process without mean looks like this:
$$ r_t = \sigma_t \epsilon_t, ~~~~~~ \sigma_t^2 = \omega + \alpha r_{t-1}^2 + \beta\sigma_{t-1}^2, $$
When you assume that the return follows a GARCH process, you simply say that the return is given by the conditional volatility ($\sigma_t$) times a randomly generated number ($\epsilon_t$) from your specified distribution. In case you want to include a mean you simply add it to $r_t$.
EMH edit
I recommend that you take a look at how the efficient market hypothesis, and related implications on the innovations, corresponds to GARCH modeling. A good buzzword is martingale difference. A good reference on this subject is Fan & Yao, 2017 The Elements of Financial Econometrics.
## Answer by Richi Wa (score 2)
https://quant.stackexchange.com/a/42266
Similar as Morten states it: if you have a forecast of the return (as conditional mean) then this is a sound forecast. GARCH error could tell you something about the risk but as a point forecast you usually take the conditional mean and you already have it.
Of course it would be a miracle if you could get tradeable forecasts of returns that are better than chance from an ARIMA (or similar) time series model.
## Answer by Tomas G. (score 1)
https://quant.stackexchange.com/a/50559
Expected returns or returns forecasts are not better using GARCH than ARIMA. GARCH is usefull only to predict expected return variance or future return squared. For this reason you don't find guides to compute return forecasts. You usually define your `random number` to have a zero mean for this reason you should only use the `mean` that you have. This is equivalent of not using the GARCH model in the first place but directly using ARIMA. Or in your case just using the mean of the past returns.
(This was allready kind of explained in the other answers but I hope I made it more evident to someone.)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.