This example illustrates how to use and select the VARMA-GARCH model for exchange rates, a general type of financial data. As shown in much of the literature, the financial variables are cross-correlated and autocorrelated not only on first moments, but also on second moments. The VARMA-GARCH model and the vector error correction GARCH model are often used to catch the stylized fact.
The data, downloaded from European Central Bank website (https://www.ecb.europa.eu), consist of four pairs of daily foreign exchange reference rates: the euro and the Australian dollar (AUD), the euro and the British pound sterling (GBP), the euro and the Japanese yen (JPY), and the euro and the US dollar (USD). The full sample covers the period from January 4, 1999, to February 12, 2015 (4,127 days). In the following statements, the series are logarithmically transformed, and the returns (in percentage) are calculated:
title 'Analysis of Euro Foreign Exchange Reference Rates'; data eurofxrr; input date : MMDDYY10. aud gbp jpy usd; label aud='The euro and the Australian dollar' usd='The euro and the U.S. dollar' jpy='The euro and the Japanese yen' gbp='The euro and the British pound sterling'; logAUD = log(AUD); logGBP = log(GBP); logJPY = log(JPY); logUSD = log(USD); rAUD = (logAUD - lag(logAUD))*100; rGBP = (logGBP - lag(logGBP))*100; rJPY = (logJPY - lag(logJPY))*100; rUSD = (logUSD - lag(logUSD))*100; datalines; 01/04/1999 1.9100 0.71110 133.73 1.1789 01/05/1999 1.8944 0.71220 130.96 1.1790 01/06/1999 1.8820 0.70760 131.42 1.1743 01/07/1999 1.8474 0.70585 129.43 1.1632 ... more lines ... 02/10/2015 1.4522 0.74200 134.67 1.1297 02/11/2015 1.4606 0.73960 135.50 1.1314 02/12/2015 1.4761 0.73760 135.72 1.1328 ;
Although it is well known that unit roots exist in the exchange rate series and they are not cointegrated, you can use the following statements to verify:
/*--- Unit Roots and Cointegration in Log Exchange Rates ---*/ proc varmax data=eurofxrr; model logAUD logGBP logJPY logUSD / p=2 dftest cointtest; run;
According to the results of the Dickey-Fuller unit root tests shown in Output 42.4.1, the null hypothesis that there is a unit root in each series cannot be rejected at the 5% significance level. The results of the Johansen cointegration rank trace tests shown in Output 42.4.2 confirm that there is no cointegration between series because the null hypothesis that the cointegration rank is 0, in both unrestricted and restricted cases, cannot be rejected at the 5% significance level. Because there is no cointegration, you do not need to consider vector error correction models; otherwise, the final selected model might be a vector error correction GARCH model, instead of a VARMA-GARCH model.
Output 42.4.1: Dickey-Fuller Unit Root Tests
Analysis of Euro Foreign Exchange Reference Rates |
Unit Root Test | |||||
---|---|---|---|---|---|
Variable | Type | Rho | Pr < Rho | Tau | Pr < Tau |
logAUD | Zero Mean | -1.05 | 0.4644 | -1.08 | 0.2549 |
Single Mean | -9.44 | 0.1549 | -2.31 | 0.1683 | |
Trend | -13.85 | 0.2287 | -2.63 | 0.2657 | |
logGBP | Zero Mean | -0.57 | 0.5554 | -0.59 | 0.4630 |
Single Mean | -3.23 | 0.6297 | -1.27 | 0.6445 | |
Trend | -11.11 | 0.3666 | -2.27 | 0.4502 | |
logJPY | Zero Mean | 0.00 | 0.6836 | 0.02 | 0.6894 |
Single Mean | -6.11 | 0.3394 | -1.73 | 0.4140 | |
Trend | -6.56 | 0.7000 | -1.83 | 0.6901 | |
logUSD | Zero Mean | -1.46 | 0.4014 | -0.88 | 0.3346 |
Single Mean | -3.29 | 0.6216 | -1.27 | 0.6471 | |
Trend | -5.76 | 0.7638 | -1.47 | 0.8394 |
Output 42.4.2: Johansen Cointegration Rank Trace Tests
Cointegration Rank Test Using Trace | ||||||
---|---|---|---|---|---|---|
H0: Rank=r |
H1: Rank>r |
Eigenvalue | Trace | Pr > Trace | Drift in ECM | Drift in Process |
0 | 0 | 0.0059 | 36.6836 | 0.3601 | Constant | Linear |
1 | 1 | 0.0018 | 12.1427 | 0.9269 | ||
2 | 2 | 0.0008 | 4.7724 | 0.8319 | ||
3 | 3 | 0.0003 | 1.3036 | 0.2532 |
Cointegration Rank Test Using Trace Under Restriction | ||||||
---|---|---|---|---|---|---|
H0: Rank=r |
H1: Rank>r |
Eigenvalue | Trace | Pr > Trace | Drift in ECM | Drift in Process |
0 | 0 | 0.0060 | 37.1246 | 0.6151 | Constant | Constant |
1 | 1 | 0.0018 | 12.1792 | 0.9921 | ||
2 | 2 | 0.0008 | 4.7941 | 0.9855 | ||
3 | 3 | 0.0003 | 1.3041 | 0.9066 |
Before modeling returns, you can test whether unit roots still exist in the differenced data with the following statement:
/*--- Unit Roots in Returns and Model Specification ---*/ proc varmax data=eurofxrr; model rAUD rGBP rJPY rUSD / p=2 dftest; test const; test ar(1); test ar(2); run;
Output 42.4.3 shows that there is no unit root in each differenced series.
Output 42.4.3: Dickey-Fuller Unit Root Tests
Analysis of Euro Foreign Exchange Reference Rates |
Unit Root Test | |||||
---|---|---|---|---|---|
Variable | Type | Rho | Pr < Rho | Tau | Pr < Tau |
rAUD | Zero Mean | -4242.7 | 0.0001 | -46.04 | <.0001 |
Single Mean | -4243.7 | 0.0001 | -46.04 | <.0001 | |
Trend | -4244.2 | 0.0001 | -46.04 | <.0001 | |
rGBP | Zero Mean | -4358.4 | 0.0001 | -46.67 | <.0001 |
Single Mean | -4358.4 | 0.0001 | -46.67 | <.0001 | |
Trend | -4358.5 | 0.0001 | -46.66 | <.0001 | |
rJPY | Zero Mean | -4181.4 | 0.0001 | -45.72 | <.0001 |
Single Mean | -4181.4 | 0.0001 | -45.72 | <.0001 | |
Trend | -4181.9 | 0.0001 | -45.72 | <.0001 | |
rUSD | Zero Mean | -4306.8 | 0.0001 | -46.40 | <.0001 |
Single Mean | -4306.8 | 0.0001 | -46.39 | <.0001 | |
Trend | -4307.4 | 0.0001 | -46.39 | <.0001 |
The preceding statements also test whether the constant and each of two lags of AR terms are 0. The test results are shown in Output 42.4.4.
Output 42.4.4: Tests on Constant and AR Terms
The null hypothesis that the constant term is 0 and the null hypothesis that the second lag AR term is 0 are both accepted at the 5% significance level. However, the null hypothesis that the first lag AR term is 0 is rejected at the 5% significance level. In the remaining model selection process, only the first lag AR term is considered.
The following statements estimate a zero-mean VAR(1) model and also print some diagnostic results:
/*--- VAR Model ---*/ proc varmax data=eurofxrr; model rAUD rGBP rJPY rUSD / noint p=1 print=(diagnose); run;
Output 42.4.5 shows the information criteria for the estimated zero-mean VAR(1) model. In this example, AICC is used as the criterion for model selection: the smaller the AICC, the better the model.
Output 42.4.5: Information Criteria for the VAR Model
Diagnostics are printed because the PRINT=(DIAGNOSE) option is specified. As shown in Output 42.4.6, the null hypotheses that there is no ARCH effect in each series are all rejected at the 5% significance level.
Output 42.4.6: Tests on ARCH Effects
To find the right GARCH model, you can start with the VAR(1)-CCC-GARCH(1,1) model (which is usually the fastest one to be estimated) as in the following statement:
/*--- VAR CCC GARCH Model ---*/ proc varmax data=eurofxrr; model rAUD rGBP rJPY rUSD / noint p=1; garch p=1 q=1 form=ccc; run;
Compared to the AICC for the zero-mean VAR(1) model (shown in Output 42.4.5), the AICC for VAR(1)-CCC-GARCH(1,1) model, as shown in Output 42.4.7, dramatically decreases, which means that the ARCH effects do play an important role and should be modeled.
Output 42.4.7: Information Criteria for VAR CCC GARCH Model
As indicated by its name, a basic assumption of CCC GARCH model is that the conditional correlation is time-invarying, which might not be true. The following statements estimate a BEKK GARCH model to see whether modeling the conditional correlation could improve the model performance:
/*--- VAR BEKK GARCH Model ---*/ proc varmax data=eurofxrr outest=oediagbekk; model rAUD rGBP rJPY rUSD / noint p=1; garch p=1 q=1 form=bekk; run;
As shown in Output 42.4.8, the AICC for VAR BEKK GARCH model does get smaller than the AICC for the CCC GARCH model (shown in Output 42.4.7). The smaller AICC implies that the assumption of the CCC GARCH model might be inaccurate.
Output 42.4.8: Information Criteria for VAR BEKK GARCH Model
One shortcoming of the BEKK GARCH model is that it has too many parameters. In practice, especially for a large number of dependent variables, the scalar BEKK GARCH model and the diagonal BEKK GARCH model are often applied, as shown in the following statements. In the RESTRICT statement, matrix operations are used; using matrix operations is much more concise than restricting tens of ARCH and GARCH parameters one by one.
/*--- VAR Scalar BEKK GARCH Model ---*/ proc varmax data=eurofxrr outest=oediagbekk; model rAUD rGBP rJPY rUSD / noint p=1; garch p=1 q=1 form=bekk; restrict ach(1)=ach(1,1,1)*I(4), gch(1)=gch(1,1,1)*I(4); run;
/*--- VAR Diagonal BEKK GARCH Model ---*/ proc varmax data=eurofxrr outest=oediagbekk; model rAUD rGBP rJPY rUSD / noint p=1; garch p=1 q=1 form=bekk; restrict ach(1)=ach(1)#I(4), gch(1)=gch(1)#I(4); run;
The AICCs for the scalar and diagonal BEKK GARCH models are shown in Output 42.4.9 and Output 42.4.10, respectively, and both of them are larger than the AICC for the BEKK GARCH model (shown in Output 42.4.8). Hence, so far, the VAR BEKK GARCH model is the best.
Output 42.4.9: Information Criteria for VAR Scalar BEKK GARCH Model
Output 42.4.10: Information Criteria for VAR Diagonal BEKK GARCH Model
Another type of multivariate GARCH model that is suitable for modeling the time-varying conditional correlation is the dynamic conditional correlation (DCC) GARCH model, as indicated by its name. The following statements estimate the DCC GARCH model:
/*--- VAR DCC GARCH Model ---*/ proc varmax data=eurofxrr; model rAUD rGBP rJPY rUSD / noint p=1; garch p=1 q=1 form=dcc; run;
As shown in Output 42.4.11, the AICC for the VAR DCC GARCH model is smaller than the AICC for the VAR BEKK GARCH model (shown in Output 42.4.8), implying that the best model should be in the class of DCC GARCH models.
Output 42.4.11: Information Criteria for VAR DCC GARCH Model
Could the DCC GARCH model be more parsimonious? The following statements use the sample correlation matrix of the standardized residuals (saving six parameters) to calculate the unconditional correlation matrix in the DCC GARCH model:
/*--- Parsimonious VAR DCC GARCH Model ---*/ proc varmax data=eurofxrr; model rAUD rGBP rJPY rUSD / noint p=1; garch p=1 q=1 form=dcc corrconst=expect; run;
The AICC of the parsimonious VAR DCC GARCH model, as shown in Output 42.4.12, becomes a little smaller. Hence, the best model so far is the parsimonious VAR DCC GARCH model.
Output 42.4.12: Information Criteria for the Parsimonious VAR DCC GARCH Model
Another way to refine the model is to try different subforms of GARCH models for each series. The following statements estimate the VAR DCC EGARCH model and produce Output 42.4.13:
/*--- VAR DCC EGARCH Model ---*/ proc varmax data=eurofxrr; model rAUD rGBP rJPY rUSD / noint p=1; garch p=1 q=1 form=dcc subform=egarch corrconst=expect; nloptions maxit=5000 pall; run;
The following statements estimate the VAR DCC PGARCH model and produce Output 42.4.14:
/*--- VAR DCC PGARCH Model ---*/ proc varmax data=eurofxrr; model rAUD rGBP rJPY rUSD / noint p=1; garch p=1 q=1 form=dcc subform=pgarch corrconst=expect; nloptions maxit=5000 pall; run;
The following statements estimate the VAR DCC QGARCH model and produce Output 42.4.15:
/*--- VAR DCC QGARCH Model ---*/ proc varmax data=eurofxrr; model rAUD rGBP rJPY rUSD / noint p=1; garch p=1 q=1 form=dcc subform=qgarch corrconst=expect; nloptions maxit=5000 pall; run;
The following statements estimate the VAR DCC TGARCH model and produce Output 42.4.16:
/*--- VAR DCC TGARCH Model ---*/ proc varmax data=eurofxrr; model rAUD rGBP rJPY rUSD / noint p=1; garch p=1 q=1 form=dcc subform=tgarch corrconst=expect; nloptions maxit=5000 pall; run;
Comparing the AICCs shown in Output 42.4.13 through Output 42.4.16, you find that the AICC for the VAR DCC PGARCH model is the smallest. Hence, the best model becomes the zero-mean VAR(1)-DCC-PGARCH(1,1) model, whose unconditional correlation matrix is estimated by the sample correlation matrix of the standardized residuals.
Output 42.4.13: Information Criteria for the Parsimonious VAR DCC EGARCH Model
Output 42.4.14: Information Criteria for the Parsimonious VAR DCC PGARCH Model
Output 42.4.15: Information Criteria for the Parsimonious VAR DCC QGARCH Model
Output 42.4.16: Information Criteria for the Parsimonious VAR DCC TGARCH Model
Output 42.4.17 shows that most of the AR parameter estimates in the VAR DCC PGARCH model are not significant.
Output 42.4.17: AR Parameter Estimates for the Parsimonious VAR DCC PGARCH Model
Model Parameter Estimates | ||||||
---|---|---|---|---|---|---|
Equation | Parameter | Estimate | Standard Error |
t Value | Pr > |t| | Variable |
rAUD | AR1_1_1 | 0.05720 | 0.01790 | 3.19 | 0.0014 | rAUD(t-1) |
AR1_1_2 | 0.00036 | 0.02396 | 0.02 | 0.9879 | rGBP(t-1) | |
AR1_1_3 | -0.02307 | 0.01619 | -1.42 | 0.1543 | rJPY(t-1) | |
AR1_1_4 | 0.02007 | 0.02020 | 0.99 | 0.3206 | rUSD(t-1) | |
rGBP | AR1_2_1 | 0.02684 | 0.01147 | 2.34 | 0.0193 | rAUD(t-1) |
AR1_2_2 | 0.04514 | 0.01880 | 2.40 | 0.0164 | rGBP(t-1) | |
AR1_2_3 | -0.00466 | 0.01138 | -0.41 | 0.6824 | rJPY(t-1) | |
AR1_2_4 | -0.04649 | 0.01474 | -3.15 | 0.0016 | rUSD(t-1) | |
rJPY | AR1_3_1 | 0.05600 | 0.01846 | 3.03 | 0.0024 | rAUD(t-1) |
AR1_3_2 | -0.05010 | 0.02697 | -1.86 | 0.0633 | rGBP(t-1) | |
AR1_3_3 | -0.00183 | 0.01894 | -0.10 | 0.9229 | rJPY(t-1) | |
AR1_3_4 | -0.00841 | 0.02226 | -0.38 | 0.7055 | rUSD(t-1) | |
rUSD | AR1_4_1 | 0.03856 | 0.01513 | 2.55 | 0.0108 | rAUD(t-1) |
AR1_4_2 | 0.00552 | 0.02290 | 0.24 | 0.8096 | rGBP(t-1) | |
AR1_4_3 | 0.00086 | 0.01477 | 0.06 | 0.9536 | rJPY(t-1) | |
AR1_4_4 | -0.03203 | 0.02011 | -1.59 | 0.1113 | rUSD(t-1) |
The following statements test the significance of some parameter estimates:
/*--- Significance Of Some Parameter Estimates ---*/ proc varmax data=eurofxrr; model rAUD rGBP rJPY rUSD / noint p=1; garch p=1 q=1 form=dcc subform=pgarch corrconst=expect; nloptions maxit=5000 pall; test ar(1, 1, 2:4), ar(1, 2, 3), ar(1, 3, 3:4), ar(1, 4, 2:4); run;
As shown in Output 42.4.18, the null hypothesis that all nine of the parameters in the TEST statement are 0 cannot be rejected at the 5% significance level.
Output 42.4.18: Test on Significance of Some Parameter Estimates
The following statements estimate the VAR DCC PGARCH model without those insignificant parameters:
/*--- VAR DCC PGARCH Model w/o Insignificant Parameters ---*/ proc varmax data=eurofxrr; model rAUD rGBP rJPY rUSD / noint p=1; garch p=1 q=1 form=dcc subform=pgarch corrconst=expect; nloptions maxit=5000 pall; restrict ar(1, 1, 2:4), ar(1, 2, 3), ar(1, 3, 3:4), ar(1, 4, 2:4); run;
As shown in Output 42.4.19, the AICC does improve and decrease. Further refining the model is possible but beyond the scope of this example. Hence, the best model, according to the AICC, is the zero-mean VAR(1)-DCC-PGARCH(1,1) model without insignificant AR parameters, and its unconditional correlation matrix is estimated by the sample correlation matrix of the standardized residuals.
Output 42.4.19: Information Criteria for the VAR DCC PGARCH Model without Insignificant Parameters
This example focuses only on using the information criterion to distinguish models. In practice, the forecast performance of the model might be more important. The VARMAX procedure supports multistep forecasting in both VARMAX-GARCH models and vector error correction GARCH models. Hence, although it is not covered in this example, you can also use the VARMAX procedure and a criterion based on out-of-sample forecast to perform model selection.