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
andforecasting
.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, theninclude.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.