# Robust standard errors in GARCH modelling (rugarch)

I am currently conducting some GARCH modelling and I am wondering about the robust standard errors, which I can obtain from ugarchfit() in rugarch package in R. I have found a presentation and on page 25 the author says that the robust standard errors are obtained from QMLE estimation, but there is no further explanation.

My question is what is the interpretation of these robust standard errors, that is, what are they robust to? I suspect that they are robust to heteroskedasticity, but I would be grateful for some confirmation. Also, what is more common in practice, reporting the non-robust or robust version of the standard errors?

EDIT: I have found additional information on the topic here. Basically, it confirms what those errors are robust to. Thus, the question whether their use in case of GARCH modeling (on stock index returns) are justifiable?

There is a mention of robust standard errors in "rugarch" vignette on p. 25. The robust standard errors are due to quasi maximum likelihood estimation (QMLE) as opposed to (the regular) maximum likelihood estimation (MLE). They are robust against violations of the distributional assumption, e.g. when the assumed distribution is Normal while the true distribution is Student-$t$. The source cites White "Maximum likelihood estimation of misspecified models" (1982), the (famous) paper introducing QMLE.

Now, are they justifiable? Roughly speaking, if the true distribution is not particularly ill-behaved, QMLE will work. If the true ditribution coincides with the assumed distributions, QMLE will still work, so there is not much to lose (although MLE would give narrower confidence intervals than QMLE, which could be useful). For a rigorous treatment, see White's (1982) paper or an econometrics textbook.

If you want to see how the VCOV estimator à la White (1982) is constructed, after running ugarchfit, in the fitted object, which we call myobj, look at myobj@fit$A and myobj@fit$B. These are the matrices defined in White (1982). rugarch uses solve(A) %*% B %*% solve(A) / n.

Now, if the question is, what is the cause of Hill & McCullough (2019) dissatisfaction with the SE’s, the answer is simple: the default numerical derivation parameters in rugarch for derivative and Hessian computation are questionable. The default difference value is 1e-4, which makes no sense for the constant in the variance equation, which is usually in the order of 1e-6, and if the point at which the derivative is computed is considered ‘too close to zero’, then the finite-difference step is 0.01! This is a recipe for disaster. Using

ugarchfit(..., numderiv.control = list(grad.eps = 1e-8, hess.eps = 1e-8))


solves most issues related to poor QML approximations. However, note that differences too tiny make this evaluation unstable again due to numerical precision loss, but I would not worry in most reasonable applications for difference steps between 1e-7 and 1e-10.

According to Hill & McCullough (2019) the rugarck package don't use the QMLE method. They said:

"However, the "robust" standard error is not the QMLE used by many other packages, and the documentation does not specically state what type of robust standard error is used."

"The poor accuracy of the robust standard error makes us suspect that rugarch uses some robust standard error other than QMLE. The author really should specify what method he uses."