# Fitting a VEC model: suggestions on procedure and results

I'm having some hard times trying to do a simple but statistically sound analysis on 4 cointegrated daily time series which I analyzed through VEC. I ask the community:

1. is the procedure I followed right? VEC is the right approach?
2. at the end of the analysis, the normality tests suggested no normality: this fact invalidates the relations between variables that I found?

The general problem is this: I have 4 time series (see the plots below) and tried to find relations among them.

Although the Augmented Dickey-Fuller Test was significant at 0.01 for each, the series seems not to be stationary to me and many of them seems to be characterized by a structural break (the peak between about 400 and 600).

I run VARselect of "vars" library to check for suggested lag, and set them to 7.

library(vars)
(VARselect(df[,2:5], lag.max=7))
$selection AIC(n) HQ(n) SC(n) FPE(n) 7 1 1 7$criteria
1            2            3            4            5            6            7
AIC(n) 2.080431e+01 2.079561e+01 2.077498e+01 2.076599e+01 2.075559e+01 2.073008e+01 2.069636e+01
HQ(n)  2.083902e+01 2.085809e+01 2.086521e+01 2.088399e+01 2.090136e+01 2.090362e+01 2.089767e+01
SC(n)  2.089601e+01 2.096067e+01 2.101339e+01 2.107776e+01 2.114073e+01 2.118858e+01 2.122822e+01
FPE(n) 1.084424e+09 1.075032e+09 1.053074e+09 1.043658e+09 1.032875e+09 1.006874e+09 9.735068e+08


I tested the series for cointegration through the Johansen-Procedure of the library "urca", finding that all the 4 variables are cointegrated. VAR model is thus inadequate, so I tried to fit a VEC model.

library(urca)
myvecm <- ca.jo(df[,2:5], type="eigen", K=7)
summary(myvecm)

######################
# Johansen-Procedure #
######################

Test type: maximal eigenvalue statistic (lambda max) , with linear trend

Eigenvalues (lambda):
[1] 0.08400297 0.06492363 0.06329419 0.02074754

Values of teststatistic and critical values of test:

test 10pct  5pct  1pct
r <= 3 | 22.83  6.50  8.18 11.65
r <= 2 | 71.21 12.91 14.90 19.19
r <= 1 | 73.10 18.90 21.07 25.75
r = 0  | 95.55 24.78 27.14 32.14


I fitted the VEC model with the library (urca) and below I print just the output of the first variable.

myvecm.ols <- cajools(myvecm)
summary(myvecm.ols)

Residuals:
Min      1Q  Median      3Q     Max
-53.116  -5.019  -0.791   3.442 150.863

Coefficients:
Estimate Std. Error t value Pr(>|t|)
constant  0.743737   0.543550   1.368  0.17151
var1.dl1 -0.202386   0.032026  -6.320 3.86e-10 ***
var2.dl1 -0.011432   0.027010  -0.423  0.67220
var3.dl1  0.268449   0.158530   1.693  0.09068 .
var4.dl1  0.027490   0.004752   5.785 9.53e-09 ***
var1.dl2 -0.225971   0.032807  -6.888 9.70e-12 ***
var2.dl2  0.033688   0.031223   1.079  0.28086
var3.dl2  0.034691   0.202315   0.171  0.86389
var4.dl2  0.016001   0.005615   2.850  0.00446 **
var1.dl3 -0.271130   0.033756  -8.032 2.54e-15 ***
var2.dl3  0.041499   0.034470   1.204  0.22889
var3.dl3 -0.311666   0.233355  -1.336  0.18197
var4.dl3  0.028230   0.006355   4.442 9.85e-06 ***
var1.dl4 -0.226274   0.035173  -6.433 1.89e-10 ***
var2.dl4 -0.011356   0.036867  -0.308  0.75812
var3.dl4  0.072705   0.256810   0.283  0.77715
var4.dl4  0.015805   0.006938   2.278  0.02292 *
var1.dl5 -0.114370   0.035910  -3.185  0.00149 **
var2.dl5  0.018002   0.038803   0.464  0.64279
var3.dl5  0.169942   0.273107   0.622  0.53391
var4.dl5  0.022006   0.007305   3.012  0.00265 **
var1.dl6 -0.299861   0.035935  -8.344  < 2e-16 ***
var2.dl6  0.029144   0.040239   0.724  0.46906
var3.dl6  0.085140   0.291754   0.292  0.77048
var4.dl6  0.030258   0.007638   3.962 7.94e-05 ***
var1.l7  -0.205079   0.025383  -8.079 1.76e-15 ***
var2.l7   0.021438   0.038175   0.562  0.57453
var3.l7  -0.008361   0.298788  -0.028  0.97768
var4.l7   0.031693   0.007571   4.186 3.07e-05 ***
---
Signif. codes:  0 ‘***’ 0.001 ‘**’ 0.01 ‘*’ 0.05 ‘.’ 0.1 ‘ ’ 1

Residual standard error: 11.58 on 1060 degrees of freedom
Multiple R-squared:  0.1794,    Adjusted R-squared:  0.1569
F-statistic: 7.991 on 29 and 1060 DF,  p-value: < 2.2e-16


Especially Var4 seems to be related with Var1, which is theoretically reasonable. I run an impulse response function to check how the changes in Var4 affected Var1, finding that, for instance, mostly a 2 days lag of Var4 is related with an increase of 2% in Var1.

I would be happy with a finding like this. However, I am not sure the procedure is correct. Moreover, the normality test with the "vars" package show that the normality assumption is not verified, and I don't know if this would invalidate the relation between Var1 and Var4 I found.

normality.test(myvecmvar)
$JB JB-Test (multivariate) data: Residuals of VAR object myvecmvar Chi-squared = 2506705, df = 8, p-value < 2.2e-16$Skewness

Skewness only (multivariate)

data:  Residuals of VAR object myvecmvar
Chi-squared = 23392, df = 4, p-value < 2.2e-16

\$Kurtosis

Kurtosis only (multivariate)

data:  Residuals of VAR object myvecmvar
Chi-squared = 2483313, df = 4, p-value < 2.2e-16
$$$$
`
• Judging by the graphs, your variables certainly do not have a unit root, so cointegration analysis and VECM do not make sense. Apr 4, 2020 at 14:58
• Thanks @Richard. Now I see that probably I should have interpreted the significant ADF test as a rejection of the null of unit roots. I am sorry but I am a newbie and the matter is really hard. Can you give me some suggestions about what tecniques I coud take into consideration in order to understand the relations between these variables? Thanks
– kk68
Apr 4, 2020 at 15:08
• The spikes look pretty serious... Perhaps a VAR with nonnormal errors? Or a VAR of some transformation of the variables (transformation for taking care of the spikes), maybe logarithm (if all of the values are positive) or a similar one (if some of the values a zero). Apr 4, 2020 at 19:38
• @kk68, you may also want to consider a multivariate GARCH model? You did not say what the time series are, however they look like volatility of asset returns. Apr 5, 2020 at 8:03
• @eBopBob the series are not related to financial data, but your observation is interesting thank you, I’ll take a look to GARCH too
– kk68
Apr 5, 2020 at 23:24