# How should I test for multivariate ARCH effects in R?

I want to test for conditional heteroskedasticity in the form of ARCH effects in a multivariate time series. In the univariate setting, an ARCH-LM test can be used. A natural extension for the multivariate setting would be a multivariate ARCH-LM test.

Question: Is there a multivariate ARCH-LM test in R?

(Except for arch.test in package "vars" that requires an estimated VAR object of class varest as an input.)

I was looking for the multivariate ARCH-LM test in R and had a hard time finding it (but finally I succeeded). Hence, I decided to post a question with an answer here, on Cross Validated.

Indeed, the package "vars" has the multivariate ARCH-LM test implemented in function arch.test. However, it requires the input to be an estimated VAR object of class varest, which is not always comfortable. Fortunately, there exists an alternative. There are four tests for multivariate ARCH effects in package "MTS". They all are implemented in one function MarchTest:

1. $Q ^*(m)$: multivariate Ljung-Box test, sort-of-univariate version (scales the residuals by the square root of the inverse of the estimated covariance matrix and tests for autocorrelation in each of the squared scaled series; does not consider cross-terms between the series)
2. $\bar R$: rank-based test (assesses autocorrelation of ranks of scaled squared residuals)
3. $Q_k^*(m)$: multivariate Ljung-Box test, regular multivariate version (asymptotically equivalent to multivariate ARCH-LM test)
4. $Q_k^r(m)$: robust multivariate Ljung-Box test, sort-of-univariate version (cuts off outliers, otherwise the same as $Q_k^*(m)$)

The tests are discussed in Tsay "Multivariate Time Series Analysis: With R and Financial Applications" p. 401-403 (p. 403-407 include a simulation study and an example application). Conclusions from the limited simulation study are as follows:

1. $Q_k^*(m)$ has marked size distortions in presence of heavy tails.
2. $Q_k^r(m)$ is preferred to $Q_k^*(m)$.
3. $\bar R$ performs nicely and is robust to heavy-tailed distributions.

The tests are coded in R, so they may be a bit slow if used on large data or iterated many times.

• Thanks for sharing, I was looking for something like this for a project im working on. I think the definitions are mixed up a litte, I understood it as follows: 1. is the regular multivariate Version, based on the sample cross correlation matrix of the noise process. 4. is the robust version of 1. 3 is the univariate LjungBox-statistic, based on the transformed scalar residuals / standardized series et. 2. The Rank-based test is based on the rank of the series et. Aug 4, 2017 at 14:45
• Do you suggest that 1 and 3 should be swapped in my answer? Did you conclude this from the text I refer to? Aug 4, 2017 at 14:48
• The notation, yes. That would probably help people using the statistic from Tsays package. On page 403 of his book he lists them in the exact order you presented them (slightly different explanations). But when using the MarchTest function from the "MTS" package it returns the test statistics in the order: Q*, R, Qk, Qk robust. Aug 4, 2017 at 14:58
• So in place of $Q_k^*(m)$ I should have $Q^*(m)$ and vice versa in my first list, is that it? Aug 4, 2017 at 15:20
• I'd suggest this: 1. $Q ^*(m)$: univariate Ljung-Box test, based on the transformed scalar residuals $e_t$ 2. $\bar R$: Rank test, based on the rank of $e_t$ 3. $Q_k^*(m)$: multivariate Ljung-Box test, based on the $k$-dimensional series $a_t$ (asympt. equivalent to multivariate ARCH-LM test) 4. $Q_k^r(m)$: robust multivariate Ljung-Box test, based on the $k$-dimensional series $a_t$ (cuts off outliers through 5% upper tail trimming) Aug 4, 2017 at 15:40