I'm trying to forecast a time series of a stock option using ARMA-GARCH modelling in R. First I determine the ARMA order using AIC and I found (0,1) to be the best one.

But when I run


I get constant mean forecasts.

Whereas when I use ARMA(1,1):


I get variables mean forecasts. Does anyone know why is that?

How do I forecast the actual prices of the stock (not its variance)?


2 Answers 2


ARMA(0,1) (also known as MA(1)) will give a constant forecast beyond the time period $t+1$. More generally, MA($q$) will give a constant forecast beyond the time period $t+q$. This is nothing new; you may check any introductory time series textbook or lecture notes where forecasts from an MA(1) or MA($q$) model are discussed. Alternatively, you may check this post or search through other posts tagged with arima and forecasting.

On the other hand, ARMA(1,1) will give variable mean forecasts. Again, you may find that in any introductory time series textbook.

Edit: the following paragraph applies to stock returns and may be irrelevant with regards to stock options.

A side note regarding forecasts for stock returns: there is very little chance that an ARMA($p$,$q$) model will beat a naive no-change forecast. It would be more realistic to assume an ARMA(0,0) model for the conditional mean of the stock returns. I am not so sure about the option include.mean. In the medium run, the stock price could be going up together with inflation, then include.mean=TRUE could make sense (assuming that the inflation is constant). In the long run, the assumption of constant inflation may fail, so you could try disinflating the stock price before modelling it using the ARMA-GARCH model.

  • 1
    $\begingroup$ Thanks Richard for your answer. How can I then predict the actual values of the stock price using ARMA(0,1) for say the next month (n.ahead=30)? I am not understanding the relation between inflation and the presence of the mean, could you please expand on this? Thanks $\endgroup$ May 31, 2015 at 8:09
  • $\begingroup$ The forecast 30 periods ahead (n.ahead=30) will equal the forecast 1 period ahead. That happens because you assume your model is ARMA(0,1), and such a model delivers a constant forecast beyond the period $t+1$. Oh, I noticed I missed the term option. If you are working on stock options rather than stock prices, then it may be a different story and the last paragraph in my answer may not be relevant. $\endgroup$ May 31, 2015 at 8:24
  • $\begingroup$ The argument about inflation goes like this: if nominal prices in the economy rise by 0.01 percent per day due to inflation, then the stock prices should rise as well to reflect the increasing nominal value of the assets behind the shares of the companies. The two effects (rising nominal prices and rising share prices) cancel out so that the real value of the shares remains unchanged, ceteris paribus. $\endgroup$ May 31, 2015 at 8:32
  • $\begingroup$ Thanks Richard. I know this argument but how does the mean affect this? Regarding the forecasting, I assumed an ARMA(0,1)-GARCH(1,1) model after performing AIC for different orders. But this means that I can't forecast for more than one day? unless I have at least ARMA(1,1)? thanks $\endgroup$ May 31, 2015 at 10:52
  • $\begingroup$ If you allow for a constant effect of inflation, you would include an intercept in the model for stock returns. If not, you would exclude the intercept. Regarding this means that I can't forecast for more than one day, this is not true. You can forecast, and the forecast is constant starting from $t+1$. A constant forecast is still a forecast. Assuming the model is actually the true model (just as an example), this is even the best forecast you can get. The forecast being a constant does not mean it is inferior. $\endgroup$ May 31, 2015 at 11:15

It is normal that you get a constant forecast: this follows from the properties of the model that you specified (MA).

Here's the but: you can use a moving window or expanding window to obtain variable estimates. That is, you reestimate the model for each forecast that you make using a different set of datapoints.

Edit: To expand on what I mean with a moving window or expanding window. A moving window or expanding window can be used if you want to test how good your forecasts are, but have actuals available for the data that you want to forecast (i.e. for backtesting). If you use a moving window of $T$ days it means that you estimate the forecast for $y_{t+1}$ only with the $T$ most recent datapoints that is, only with the data from time $t-T+1$ till $t$. An expanding window is similar but uses all the new data that becomes available. That is, if you forecast $y_{t+2}$, you also use the datapoint of $y_{t+1}$. Hope this gives you an idea.

  • $\begingroup$ you mean an updated set of datapoints with your forecast? $\endgroup$ May 31, 2015 at 16:12
  • $\begingroup$ @user3384794 I edited my answer to show more details of what I mean :). $\endgroup$
    – rbm
    May 31, 2015 at 18:01
  • $\begingroup$ I believe the conditional mean equation in your answer is wrong. MA(1) should look like $$y_t=\mu+\epsilon_t+\theta \epsilon_{t-1}.$$ You have missed the $\theta \epsilon_{t-1}$ part. This will change the implications on forecasts etc. $\endgroup$ May 31, 2015 at 19:36
  • $\begingroup$ @richardhardy Good point. I was confused with a GARCH(0,1) setup instead of ARMA(0,1) (w/ garch). Will edit. Thanks! $\endgroup$
    – rbm
    May 31, 2015 at 19:44

Your Answer

By clicking “Post Your Answer”, you agree to our terms of service, privacy policy and cookie policy

Not the answer you're looking for? Browse other questions tagged or ask your own question.