Statistics and Algorithms / GARCH Models / GARCH Models (Multivariate) |
The main problem with extending univariate models to a set of variables is that the covariance matrix must be positive-definite at each time period in order for the likelihood to be defined. Even if the variance of each equation stays positive, if the cross terms stray out of bounds for just one data point, a set of parameters gives an undefined function value. Also, the number of parameters can grow quite quickly as you increase the number of variables and the estimation time grows as well. Except for some highly restricted parameterizations, the practical limit is three or four variables.
A multivariate GARCH model uses a recursion in the lagged covariance matrices and lagged residuals to generate a value for the current covariance matrix. There have been many formulas proposed to do that—the model type for a multivariate GARCH is chosen with the MV option. They mainly fall into two broad classes:
1.VECH models generate direct recursions for each component of a covariance matrix, both variances and covariances. The two most common choices here are the diagonal VECH or DVECH (which is the default) and the (full) BEKK.
2.Restricted correlation models generate the variances directly but then derive the covariances from them using a separate calculation. The two main choices here are the CC and DCC. For these, there is a separate VARIANCES option which is used to choose the model used for the variances.
The basic syntax of GARCH is
garch(options) start end list of series
The arrangement with the range first allows for the variable length list of series names for the multivariate models that we’re doing here.
For our example (GARCHMV.RPF), which includes almost all the code fragments for this section, we’ll be working with a set of three exchange rates of Japan, France and Switzerland versus the U.S. dollar, with a bit over 6000 daily observations:
open data g10xrate.xls
data(format=xls,org=columns) / usxjpn usxfra usxsui
*
set xjpn = 100.0*log(usxjpn/usxjpn{1})
set xfra = 100.0*log(usxfra/usxfra{1})
set xsui = 100.0*log(usxsui/usxsui{1})
All of the short examples will use the default mean model of a separate constant or each series. Because there are multiple equations, the procedure for allowing for a more general mean is different from that for the univariate model.
Note that almost every type of multivariate GARCH model has a different set of parameters, so the arrangement of the output changes. Examples of the output with descriptions of the parameters are included in the details for GARCHMV.RPF.
Copyright © 2025 Thomas A. Doan