I'm trying to produce one-day ahead volatility forecasts for Bitcoin with Realized GARCH(1,1) using the rugarch package in R. The realized variance(data$rv5) is aggregated based on a 5 minute frequency, and the returns(data.xts$ret) are close-to-close. Here's the specs and result:

rgarch.spec<- ugarchspec(mean.model = list(armaOrder= c(0,0), 
                          include.mean = FALSE),
                          variance.model = list(model= 'realGARCH',
                                                garchOrder= c(1,1)), 
                          distribution.model = 'norm')

 rgarchroll<- ugarchroll(spec = rgarch.spec,
                         data= data.xts$ret,
                         n.ahead = 1, 
                         forecast.length = forecast_len, 
                         refit.every = 5,
                         solver= 'hybrid',
                         realizedVol= data.xts$rv5,
                         VaR.alpha = c(0.01, 0.05, 0.10)) 

enter image description here


realized_vol= sqrt(tail(data.xts$rv5, forecast_len)),
rgarch.prediction_vol= rgarchroll@forecast$density$Sigma)

As you can see, the predicted volatility is consistently higher than the realized volatility. Needless to say, the VaR predictions are not accurate at all. However, the standard GARCH(1,1) model works fine using the same return data. So what could possibly be the issue?

Also, I found a another tread discussing a similar problem(GARCH(1,1) volatility forecast looks biased, it is consistently higher than Parkinson's HL vol). However, I don't really see how the answer applies to this case as there are no non-trading hours for Bitcoin.


1 Answer 1


I had the same issue. The program rgarch uses variable types as percentages, see https://www.r-bloggers.com/2014/01/the-realized-garch-model/ Try to multiply the returns data.xts$ret and realized volatility with 100 then it should work.

  • 1
    $\begingroup$ While this link may answer the question, it is better to include the essential parts of the answer here and provide the link for reference. Link-only answers can become invalid if the linked page changes. - From Review $\endgroup$
    – Antoine
    Apr 25, 2022 at 10:08
  • 2
    $\begingroup$ I think I don't understand this answer: why would multiplying two discrepant results by a common factor of 100 make them any less discrepant? $\endgroup$
    – whuber
    Apr 25, 2022 at 13:18

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.