Given S&P500 returns for the past 20 years I fitted an ARMA(1,1)-GARCH(1,1) model using the rugarch package, so using ugarchspec() and the ugarchfit(), with different innovations distributions, i.e. norm, std, ged. My task would be to evaluate and compare the forecasting performance of the different models but I have problem to figure out how to do it. I then used the ugarchforecast as:

spec <- ugarchspec(variance.model = list("sGARCH", garch0rder = c(1,1), 
submodel = NULL, external.regressors = NULL, variance.targeting = F),     
mean.model = list(arma0rder = c(1,1), include.mean = T, archm = F,     
archpow=1, arfima = F, external.regressors = NULL, archex = FALSE),  
distribution.model = "norm", fixed.pars = list(ar1 = 0.6170, ma1 =    
-0.6824,  mu = 2e-04))
garch <- ugarchfit(spec, ret, out.sample = 100, solver = "solnp",     
fit.control = list(stationarity = 1, fixed.se = 0, rec.init = "all"))
fore <- ugarchforecast(garch, n.ahead = 100, n.roll = 100)

Is that procedure correct? what should I do now to evaluate the forecast performance by comparing MSE, RMSE, MAE?

thank you!


1 Answer 1


To compare the performance among various model, you require realized volatility or proxy of actual volatility (actual volatility is always unobservable).

Go through this paper (link provided below) where authors have explained how previous authors constructed realized volatility or actual volatility.

Paper: Forecasting Volatility in Financial Markets: A Review by Poon and Granger. This is one of most finest paper, where authors reviewed 93 papers related to volatility forecasting and cover each and every aspects in details.


Your Answer

By clicking “Post Your Answer”, you agree to our terms of service and acknowledge you have read our privacy policy.

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