s-broda / ARCHModels.jl

A Julia package for estimating ARMA-GARCH models.
https://juliaeconometrics.wordpress.com/
Other
90 stars 18 forks source link

Multi-step predict for volatility #97

Closed nlmm7 closed 2 years ago

nlmm7 commented 2 years ago

Thanks for the great package!

I noticed a discrepancy with the rugarch package for multi-step predictions of volatility, and I think there might be an issue with the calculation of this in the ARCHModels package.

Taking the documentation example (https://s-broda.github.io/ARCHModels.jl/stable/usage/) of the GARCH(1, 1) fit on the BG96 data: the long run volatility estimate is sqrt(omega / (1 - alpha1 - beta1) which is about 0.514. However, the example on that page for predictions for horizons 1:3 shows a sequence of volatilities 0.384, 0.360, 0.339 (one would expect it to converge to 0.514).

I think the issue is caused by taking zt and at equal to zero in the predict function, while E[at^2] is equal to the variance and larger than zero.

s-broda commented 2 years ago

Thanks, you are right. I've fixed the multi-step predictions for the :variance target in #98. Forecasting the volatility correctly is trickier. What the package has been doing so far is to just take the square root of the variance predictions, which is wrong beyond 1-step ahead because of Jensen's inequality.

I've disabled multi-step predictions for the :volatility target for now, and also for :variance for EGARCH models, for the same reason.