I'm trying to compute the standard ARMA(1,1)-GARCH(1,1) as shown in this answer for an entire index,just to store in a database to quickly lookup values for back testing purposes. There is just one problem that the optimization method used by rugarch doesn't always converge giving and yields the error. I'm using minute equity data.

failed to invert hessian

Is there an easy work around or evasive solution to guarantee that it will always converge?

  • 1
    $\begingroup$ i've found that GARCH fails to converge often due to outliers. Try winsorizing the data at 98% and it should converge. If not try asymmetric GARCH. Best is probably to use a new outlier robust GARCH but I don't think rgarch has those yet. This might be the case with datastream data if the market is open on different days to the standard daily dates that Datastream uses, in which case there'll be a large number of zero return days, but I haven't really explored this hypothesis yet (but I suspect it given the type of data that fails to converge that I've played with). $\endgroup$
    – Jase
    Feb 9, 2013 at 6:34
  • $\begingroup$ Have you tried several of the different optimization methods that rugarch offers, or just the default? $\endgroup$ Feb 9, 2013 at 16:51
  • $\begingroup$ @BenjaminKjellson I've tried the solnp and the nlminb solvers not sure if there are more or which is the default $\endgroup$
    – pyCthon
    Feb 9, 2013 at 19:29
  • $\begingroup$ @Jase I think your right in both cases, and that my problem is a large number of zero return days( since i'm using minute data) the problem occurs much less while using daily data $\endgroup$
    – pyCthon
    Feb 9, 2013 at 19:31

1 Answer 1


There is no guarantee that the optimization method always converges! In an introduction the author of the package recommends using the "hybrid" solver, which starts out with the "solnp" and goes through the other solvers, if it doesn't converge. According to him, this should at least guarantee convergence in 90 % of the cases.


  • 2
    $\begingroup$ Thanks as an add on to this answer, if you want to grantee an 100%, follow the above approach if it fails apply some data manipulation to grantee a pass. $\endgroup$
    – pyCthon
    Feb 20, 2015 at 22:30

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.