Statistics and Algorithms / GARCH Models / GARCH Models (Multivariate) / MV GARCH Diagnostics |
If the model is correctly specified, each set of standardized residuals should pass the same types of tests as they do for univariate models, that is, there should be no autocorrelation either in the residuals or their squares. If we used the options rseries=rs and mvhseries=hhs, we can get the (univariate) standardized residuals with
set z1 = rs(1)/sqrt(hhs(1,1))
set z2 = rs(2)/sqrt(hhs(2,2))
set z3 = rs(3)/sqrt(hhs(3,3))
We can do the same types of diagnostics as for univariate models; in this case, we’ll use @BDINDTESTS:
@bdindtests(number=40) z1
@bdindtests(number=40) z2
@bdindtests(number=40) z3
If you don’t want to hard-code a specific set of variables, you can write this more flexibly as: (GARCH defines %NVAR as the number of dependent variables)
dec vect[series] z(%nvar)
do i=1,%nvar
set z(i) = rs(i)/sqrt(hhs(i,i))
@bdindtests(number=40) z(i)
end do i
While it’s not uncommon for a published paper to include the univariate diagnostics, unless you’re doing a model which relies heavily on the univariate models themselves (such as a MV=CC or MV=DCC with VARIANCES=SIMPLE or VARIANCES=EXP rather than one of the variance forms with interactions), they won’t really tell you much.
There are multivariate generalizations of the Ljung-Box Q to test for serial correlation in the mean, one of which is in the @MVQSTAT procedure. The problem with applying these to a multivariate GARCH model is that they assume a constant covariance matrix. We can easily standardize the variances, but, except for the CC model, the correlations will change from period to period. Instead, the entire residual vector needs to be “standardized” by pre-multiplying by the inverse of a factor of that period’s covariance matrix to produce (if the model is correct) a set of series which have the identity as their covariance matrix. Note that this says "a" factor. There are an infinite number of ways to factor a covariance matrix (with two or more variables), that is, produce an \(\bf{F}\) that satisfies \({\bf{FF'}} = {\bf{H}}\). Different choices for the factoring process will produce different standardized residuals and (as a result) different diagnostics. Two obvious ways to do this are to use a Cholesky factor or an eigenvector-based factor. Note that, unlike the case with a VAR, you aren’t trying to come up with a “model” for factoring—you just want something mechanical so you can apply the diagnostics. You can generate a VECT[SERIES] of the jointly standardized residuals with the STDRESIDS option and choose the method of factoring with the FACTORBY option, which offers the choice of CHOLESKY (default) and EIGEN.
The following estimates an asymmetric BEKK model, with t distributed errors, and saves the residuals and variances, standard residuals and derivatives, and uses these to do a multivariate Q test, a test for multivariate (residual) ARCH and a fluctuations test.
garch(model=varma,mv=bekk,asymmetric,p=1,q=1,distrib=t,$
pmethod=simplex,piters=10,rseries=rs,mvhseries=hhs,$
stdresids=zu,derives=dd)
@mvqstat(lags=5)
# zu
@mvarchtest(lags=5)
# zu
@flux
# dd
Note that the @MVARCHTEST in particular often fails to be acceptable at conventional levels, even if there is no clearly correctable problem with the model. See Diagnostics in Large Samples.
Copyright © 2025 Thomas A. Doan