# How to interpret the eigenmatrix from a Johansen cointegration test?

I ran a Johansen cointegration test on 3 instruments, A B and C.

The results that I got are:

R<=x |     Test Stat  90%    95%    99%
r=0 -->    36.7       18.9   21.1   25.8
r=1  -->   8.4        12.29  14.26  18.52
r=2  -->   0.21       2.7    3.8    6.6


EigenValues EigenMatrix
0.03     -->  0.25 | 0.512  |-0.79
0.007    --> -0.96 | -0.618 | 0.14
0.00017  -->  0.05 | 0.59   | 0.59


My question is how I interpret these results? How do I know there is a cointegration for the these instruments.

How to build a portfolio using the eigen vector? Which eigen vector should I choose to build my portfolio?

• Hi Alex, welcome to quant.SE. In order to help the community answer your question, can you please clarify your terms/variables and the formatting of your tables. Also, please consider registering. – Tal Fishman Oct 3 '11 at 16:30

From remote memory,

1. The first question is Yes/No question. Is there any stationary, i.e. I(0), time series for different levels of combination r? This question is answered by your first table.

• For example, if [r=2]'s test stat is say 7 while the critical value of 99% confidence is 6.6 like your example, then I have over 99% confidence to say that all instruments A, B, and C are stationary by themselves. You don't even need to build a co-integrated portfolio/combination. They are ready for mean-reversion strategy already.

• Obviously, in your example, your [r=2] stat is way much lower than even 90% confidence critical value. Thus, you can't form a stationary time series without sort of combination. Your [r=1] is not close to acceptable threshold, too. Thus, no easy combination like A + Beta*B is stationary.

• Now, your [r=0] stat looks interesting, test stat 36.7 > 25.8. I have over 99% confidence to say that there is a stationary combination like A + Beta1*B + Beta2*C.

2. The next question is how to build your portfolio if one of the above hypothesis is positive. In your case is [r=0]. Simply read your corresponding eigenvector that comes with your largest eigenvalue: (0.25 | 0.512 | -0.79), i.e. 0.25*A + 0.512*B -0.79*C is the stationary portfolio you are looking for. You can draw portfolio time series to convince yourself.

Btw, I will be very grateful if someone can refresh me about how to interpret eigenvalues? like what is its unit? I can only remember big eigenvalue is better for the stationarity test above.

EDIT: FYI, I remember the test stat and critical values can be approximated by chi-squared? With this information, you can build a helper function to better interpret these statistic. Here is a quick example in R.

# zero-root function, used for solve df (degree of freedom) of chi-square for given cvals (critical values)

fn_zero_root <- function (df, prob, cval) pchisq(cval, df) - prob

# solve for df
# In [r=1] example: use prob = 90%, cval = 12.29 as the training point

r1.df <- uniroot(fn_zero_root, c(0, 12.29), tol = 0.001, prob = 90/100, cval= 12.29)\$root

# Use the above df to calculate confidence for your test stats = 8.4

100*pchisq(8.4, r1.df)
 68.23303

# Validation

pchisq(12.29, r1.df)
 89.99978
pchisq(14.26, r1.df)
 94.82474
pchisq(18.52, r1.df)
 98.88713

• Owen thank you for your detailed answer, it got my head straight. As for eigenvalue Half life is calculated by Log(2)/EigenValue. This is why you choose the biggest eigenvalue. – Freewind Oct 6 '11 at 7:22
• Good explanation. Since I've not taken any course in time series analysis yet I'm still not sure if I understood how the results can be interpreted. Let's say I want to check for cointegration between two assets, do I only have to see if r0 hypothesis can be rejected or not? Since the r1 only tests for stationary in the individual time series. – Good Guy Mike Mar 3 '13 at 18:41