# How to test whether a GARCH process has zero mean?

Before fitting a GARCH model to a process, we should make sure that the process has zero mean. Which test is used in R?

• – Richard Hardy Feb 26 '18 at 15:05

Testing for zero mean becomes complicated when the observations are not i.i.d. but rather exhibit autoregressive conditional heteroskedasticity. To account for that you can fit a GARCH model allowing for nonzero mean and see if the estimated mean is statistically different from zero (check the p-value of the estimated coefficient). In the rugarch package you would use ugarchspec for model specification with the option mean.model = list(..., include.mean = TRUE, ...).

You need to get the model right for the test result to be reliable, though. If you fit an inadequate GARCH model and some autoregressive conditional heteroskedasticity remains unexplained by the model, the p-value might not give an accurate assessment of whether the mean is zero or not.

(Another possible problem are patterns in the conditional mean, like autocorrelation, that should also be accounted for.)

Another alternative could be some ARCH-robust test, perhaps one that uses HAC standard errors; I am just not sure whether HAC standard errors are adequate under ARCH patterns or not. It would be interesting to find out (see "Can I use HAC for testing whether mean is zero in a GARCH model?").

• I will be using the MSGARCH package in R which assumes that the return process Y_t has zero mean. I should have specified in the question that my intention is looking at MSGARCH. In such case can I apply the ADF or KPSS? – Anna Feb 26 '18 at 9:23
• @Anna, (1) ADF and KPSS do not address the question of whether mean is zero or not; (2) ADF and KPSS assume absence of ARCH patterns under the null, so the results you will be getting for a GARCH process will be less reliable than normally. How big of an influence this will have I am not sure about. – Richard Hardy Feb 26 '18 at 9:32
• I shall be looking at log returns (i.e. difference in the prices). Can I just assume that they are IID? I can't really allow for nonzero mean in the MSGARCH package. – Anna Feb 26 '18 at 9:47
• @Anna, but if you need to, you can always subtract the mean before fitting the GARCH model and then add it back when interpreting your final results. There might be a tiny bit of imprecision by doing this stepwise (rather than modelling the mean and the GARCH part in one step), but it should be negligible (unlike the situation where you would model autocorrelation and ARCH patterns in separate steps; that could make a big difference). By the definition of IID'ness, you cannot have IID observations that have ARCH patterns. Also, nonzero unconditional mean has nothing to do with IID'ness. – Richard Hardy Feb 26 '18 at 9:57
• When fitting a GARCH model allowing for nonzero mean, the mean p-value was greater than 0.05, thus not significant. However I do think that is quite right to check if the mean is 0 using a GARCH model and then saying that the GARCH model is inferior to the MSGARCH and fitting an MSGARCH. What do you think? – Anna Feb 26 '18 at 10:39