GARCH Forecasting in R – How to Perform GARCH Forecasting with Constant Mean in R?

arimaforecastinggarchr

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

garchFit(formula=~arma(0,1)+garch(1,1),data=XX,trace=FALSE,include.mean=TRUE)

I get constant mean forecasts.

Whereas when I use ARMA(1,1):

garchFit(formula=~arma(1,1)+garch(1,1),data=brentlog1,trace=FALSE,include.mean=TRUE)

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

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

Best Answer

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.