MGARCH stands for multivariate GARCH, or multivariate generalized autoregressive conditional heteroskedasticity. MGARCH allows the conditional-on-past-history covariance matrix of the dependent variables to follow a flexible dynamic structure.
Stata fits MGARCH models. mgarch implements conditional correlation and diagonal vech models. Conditional correlation models use nonlinear combinations of univariate GARCH models to represent the conditional covariances. mgarch provides estimators for three popular conditional correlation models: constant conditional correlation (CCC), dynamic conditional correlation (DCC), and varying conditional correlation (VCC).
Below we analyze daily data on returns of Toyota, Nissan, and Honda stocks. We include the lag of the Nissan stock in the mean equation for Honda. We specify one ARCH term and one GARCH term for the conditional variance equation of each company.
. webuse stocks
(Data from Yahoo! Finance)
. mgarch ccc (toyota nissan = , noconstant) (honda = L.nissan, noconstant), arch(1) garch(1)
And the results are
Constant conditional correlation MGARCH model Sample: 2 thru 2015 Number of obs = 2,014 Distribution: Gaussian Wald chi2(1) = 1.81 Log likelihood = 17439.87 Prob > chi2 = 0.1781
Coefficient Std. err. z P>|z| [95% conf. interval] | ||
ARCH_toyota | ||
arch | ||
L1. | .0619604 .0087942 7.05 0.000 .044724 .0791968 | |
garch | ||
L1. | .9208961 .0110995 82.97 0.000 .8991414 .9426508 | |
_cons | 4.43e-06 1.13e-06 3.94 0.000 2.23e-06 6.64e-06 | |
ARCH_nissan | ||
arch | ||
L1. | .0773094 .012328 6.27 0.000 .053147 .1014718 | |
garch | ||
L1. | .9060882 .0147303 61.51 0.000 .8772173 .934959 | |
_cons | 6.77e-06 1.85e-06 3.66 0.000 3.14e-06 .0000104 | |
honda | ||
nissan | ||
L1. | .0186628 .0138575 1.35 0.178 -.0084975 .0458231 | |
ARCH_honda | ||
arch | ||
L1. | .0433741 .006996 6.20 0.000 .0296622 .0570861 | |
garch | ||
L1. | .9391094 .0100707 93.25 0.000 .9193712 .9588477 | |
_cons | 5.02e-06 1.31e-06 3.83 0.000 2.45e-06 7.60e-06 | |
corr(toyota, nissan) | .652299 .0128271 50.85 0.000 .6271583 .6774396 | |
corr(toyota, honda) | .7189531 .0108005 66.57 0.000 .6977845 .7401218 | |
corr(nissan, honda) | .628435 .0135653 46.33 0.000 .6018475 .6550225 | |
Having estimated our model, we can now forecast the conditional variances 50 time periods into the future.
. tsappend, add(50) . predict H*, variance dynamic(2016)
We can graph the result:
Above, we fit a CCC model. We could instead fit a DCC model in which the correlation matrix at each time period is modeled as a weighted average of its own past and recent shocks.
Below we fit a bivariate model of stock returns and specify that the error term follows a multivariate Student’s t distribution:
. webuse stocks (Data from Yahoo! Finance) . mgarch dcc (toyota honda =) , arch(1) garch(1) distribution(t)
And the results are
Dynamic conditional correlation MGARCH model Sample: 1 thru 2015 Number of obs = 2,015 Distribution: t Wald chi2(.) = . Log likelihood = 11697.67 Prob > chi2 = .
Coefficient Std. err. z P>|z| [95% conf. interval] | ||
toyota | ||
_cons | .0003445 .0002998 1.15 0.251 -.0002431 .0009321 | |
ARCH_toyota | ||
arch | ||
L1. | .0557317 .0096148 5.80 0.000 .0368871 .0745764 | |
garch | ||
L1. | .9284291 .0121769 76.25 0.000 .9045629 .9522953 | |
_cons | 4.16e-06 1.25e-06 3.34 0.001 1.71e-06 6.60e-06 | |
honda | ||
_cons | .0005349 .0003277 1.63 0.103 -.0001074 .0011771 | |
ARCH_honda | ||
arch | ||
L1. | .0496351 .0089487 5.55 0.000 .0320959 .0671743 | |
garch | ||
L1. | .9342399 .0117626 79.42 0.000 .9111857 .9572942 | |
_cons | 4.89e-06 1.46e-06 3.36 0.001 2.04e-06 7.75e-06 | |
corr(toyota, honda) | .734078 .0144722 50.72 0.000 .7057129 .762443 | |
/Adjustment | ||
lambda1 | .0322827 .0162193 1.99 0.047 .0004933 .064072 | |
lambda2 | .8483622 .1025462 8.27 0.000 .6473754 1.049349 | |
/df | 8.597491 1.024617 8.39 0.000 6.589279 10.6057 | |
The DCC model reduces to the CCC model when the adjustment parameters that govern the dynamic correlation process are jointly equal to zero. We can perform a Wald test to test this hypothesis.
. test _b[/Adjustment:lambda1] = _b[/Adjustment:lambda2] = 0 ( 1) [/Adjustment]lambda1 - [/Adjustment]lambda2 = 0 ( 2) [/Adjustment]lambda1 = 0 chi2( 2) = 346.91 Prob > chi2 = 0.0000
We have fit a CCC model and a DCC model. We could fit a VCC model in which the correlation matrix is modeled as a weighted average of its own past and averages of recent shocks.
To illustrate the flexibility of the conditional correlation estimators, we specify each variance equation separately in the mgarch command below. We include two ARCH terms, one GARCH term, and an independent variable in the variance equation of Honda and one ARCH term for the variance equation of Toyota.
. mgarch vcc (toyota = , arch(1)) (honda = , arch(1 5) garch(1) het(L.nissan)) (Output omitted) Iteration 0: Log likelihood = 11258.814 Iteration 1: Log likelihood = 11258.814 Varying conditional correlation MGARCH model Sample: 2 thru 2015 Number of obs = 2,014 Distribution: Gaussian Wald chi2(.) = . Log likelihood = 11258.81 Prob > chi2 = .
Coefficient Std. err. z P>|z| [95% conf. interval] | ||
toyota | ||
_cons | .0003512 .0003839 0.91 0.360 -.0004012 .0011036 | |
ARCH_toyota | ||
arch | ||
L1. | .1438127 .0248111 5.80 0.000 .0951839 .1924414 | |
_cons | .0002859 .0000107 26.81 0.000 .000265 .0003068 | |
honda | ||
_cons | .0005797 .0003707 1.56 0.118 -.0001469 .0013064 | |
ARCH_honda | ||
arch | ||
L1. | .0361065 .0071381 5.06 0.000 .0221161 .0500969 | |
L5. | -.0291567 .0075788 -3.85 0.000 -.0440109 -.0143025 | |
garch | ||
L1. | .9771736 .0073828 132.36 0.000 .9627036 .9916435 | |
nissan | ||
L1. | -22.75912 6.287587 -3.62 0.000 -35.08256 -10.43567 | |
_cons | -12.37179 .3394606 -36.45 0.000 -13.03712 -11.70646 | |
corr(toyota,honda) | .7236678 .0127599 56.71 0.000 .6986588 .7486768 | |
/Adjustment | ||
lambda1 | .1220529 .0398213 3.07 0.002 .0440047 .2001012 | |
lambda2 | .0337147 .2747191 0.12 0.902 -.5047248 .5721542 | |
Explore more time-series features in Stata.