Cointegration Test – How to Interpret Results in R

cointegrationfinanceinterpretationrstationarity

I ran the Johansen Cointegration Test and "Phillips & Ouliaris" Cointegration Test on the past 7 years of data of Oil Futures (BZ=F), Gold Futures (GC=F), Gold ETF (GLD), and Silver (SLV) returns.

  1. Can someone help me interpret the results? A link to a detailed article explaining how to interpret this result will also help.
  2. Which of these two tests do you think is better?

Notes –

  1. K is constant 2 for Johansen Cointegration Test
  2. All the time series are stationary

Here are the results of Johansen Cointegration Test

cajo <- ca.jo(test_data, ecdet = "none", type="eigen", K=2, spec="longrun", season=4)
summary(cajo)
###################### 
# Johansen-Procedure # 
###################### 

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

Eigenvalues (lambda):
[1] 0.5680698 0.4801699 0.3382725 0.2907758

Values of teststatistic and critical values of test:

            test 10pct  5pct  1pct
r <= 3 |  638.72  6.50  8.18 11.65
r <= 2 |  767.58 12.91 14.90 19.19
r <= 1 | 1216.26 18.90 21.07 25.75
r = 0  | 1560.61 24.78 27.14 32.14

Eigenvectors, normalised to first column:
(These are the cointegration relations)

           BZ.F.l2   GC.F.l2     GLD.l2    SLV.l2
BZ.F.l2   1.000000  1.000000  1.0000000  1.000000
GC.F.l2 -74.136633 10.979215 -0.3707929  0.556958
GLD.l2   79.714196  1.619935  0.3758365 -5.192185
SLV.l2   -1.206384 -4.353230 -1.3115461  4.396690

Weights W:
(This is the loading matrix)

            BZ.F.l2     GC.F.l2     GLD.l2      SLV.l2
BZ.F.d -0.016013244 -0.09984288 -0.6310072 -0.24003976
GC.F.d  0.008328188 -0.09600891  0.1427351 -0.04550002
GLD.d  -0.015309769 -0.08881608  0.1527393 -0.04082764
SLV.d  -0.013361984 -0.06037855  0.2893466 -0.19149600

Here are the results of Phillips & Ouliaris Cointegration Test

capo = urca::ca.po(test_data, type = "Pu", demean = "trend", lag = "short")
summary(capo)
######################################## 
# Phillips and Ouliaris Unit Root Test # 
######################################## 

Test of type Pu 
detrending of series with constant and linear trend 


Call:
lm(formula = z[, 1] ~ z[, -1] + trd)

Residuals:
      Min        1Q    Median        3Q       Max 
-0.273162 -0.011639  0.000862  0.012489  0.247434 

Coefficients:
              Estimate Std. Error t value Pr(>|t|)    
(Intercept) -1.377e-03  1.262e-03  -1.091 0.275354    
z[, -1]GC=F  5.262e-01  1.423e-01   3.698 0.000224 ***
z[, -1]GLD   1.204e-01  1.522e-01   0.791 0.428864    
z[, -1]SLV   2.297e-01  5.810e-02   3.954 7.99e-05 ***
trd          1.204e-06  1.174e-06   1.026 0.305055    
---
Signif. codes:  0 '***' 0.001 '**' 0.01 '*' 0.05 '.' 0.1 ' ' 1

Residual standard error: 0.02719 on 1856 degrees of freedom
Multiple R-squared:  0.4003,    Adjusted R-squared:  0.399 
F-statistic: 309.8 on 4 and 1856 DF,  p-value: < 2.2e-16


Value of test-statistic is: 1618.667 

Critical values of Pu are:
                  10pct    5pct   1pct
critical values 52.0015 60.2384 78.347

Best Answer

Financial returns are usually approximately stationary, or at least they do not have unit roots. However, cointegration is only possible among nonstationary time series, specifically ones that have unit roots. Per definition, it cannot occur between a bunch of stationary time series. Therefore, you would normally do the cointegration analysis on prices (or log-prices), not returns (or log-returns).