I am confused about how to proceed about testing for cointegration. I am interested in testing for cointegration between 3 stock indices.

I was instructed to use returns and not prices. So my question is how do I proceed about identifying a cointegrating relationship since the definition is finding a combination of I(1) variables that is I(0). Since returns are I(0) because they are the first differences, can I still use the Johansen test?


2 Answers 2


Cointegration testing usually goes in this way:

  1. Have very clear which is the "long-run" relationship among variables your theory predicts. The point about cointegration is that there is at least one common trend among the variables. In your case, you would expect that the price of the three stocks move in tandem, based on some underlying market phenomena like economic growth, volatility, etc. In this case, the long run relationship between variables in likely to be in levels (price of stocks).

  2. Test for unit root on each variable in levels. There are plenty of tests here (ADF, KPSS, etc). You want to find that these variables are I(1) or maybe I(2).

  3. Perform the Johansen cointegration test. If you reject the null hypothesis of cointegration ($r=0$), then there is not a common trend among the variables, and they are not cointegrated. Do not run regressions with them in levels, as any result will be spurious. If you do happen to find cointegration ($0<r\leq n$), then estimate the VECM, from where you can get the cointegration vector(s) that define the common trend(s).

  • $\begingroup$ Thank you for the answer. Could you also refer to my other post regarding the interpretation of the VECM? economics.stackexchange.com/questions/17978/… $\endgroup$
    – Adrian
    Aug 25, 2017 at 14:55
  • 1
    $\begingroup$ To add to the good points already made, in general there may be one or more common trends, so there does not have to be a single common trend. As long as there are fewer trends than series, there is cointegration. Also, formally speaking we reject a null hypothesis of a test, not the test itself. $\endgroup$ Aug 25, 2017 at 15:24
  • $\begingroup$ @RichardHardy Thanks for the comments. You are right in both points. $\endgroup$
    – luchonacho
    Aug 25, 2017 at 17:03
  • $\begingroup$ @RichardHardy In my analysis I found no cointegrating vectors. I have performed the Johansen test both in pairs and the multivariate case. Since there is no error correction representation, should I conclude my finding here? Or is there anything else I could do? $\endgroup$
    – Adrian
    Aug 28, 2017 at 12:08
  • $\begingroup$ @Adrian, you can still model and analyze the data for predictive, explanatory or descriptive purposes if you wish to. Instead of a vector error correction model you would use e.g. a vector autoregression on first-differenced data. $\endgroup$ Aug 28, 2017 at 12:12

Use log price indices to test for their degree of integration, should be I(1) - try ADF unit root test. Once you determine the cointegration rank among log price indices, proceed with VECM model where you data will autamatically be differenced. Log difference is an approximation of growth rate, here stock returns.

What software package are you using?

  • $\begingroup$ I am using Matlab. $\endgroup$
    – Adrian
    Aug 24, 2017 at 19:20
  • $\begingroup$ I already did ADF test and they are all I(1). But I was confused on which data to run the Johansen test, the return data which is I(0) or the actual prices which are I(1). $\endgroup$
    – Adrian
    Aug 24, 2017 at 19:22
  • $\begingroup$ You will run Johansen on log levels. Then, using the information about the cointegration rank use log differenced data in VECM for further analysis. $\endgroup$
    – london
    Aug 24, 2017 at 19:25
  • $\begingroup$ Thank you very much. Now it makes sense. Do you have experience with Matlab? I am having a hard time interpreting the results from the VECM parameter estimation. $\endgroup$
    – Adrian
    Aug 24, 2017 at 19:29
  • $\begingroup$ r = 2 ------ A = 2.1476 0.2474 -0.0912 1.7987 -1.4632 -0.1902 B = -0.5945 -0.1346 0.0406 -0.5229 0.3220 -0.0206 B1 = 0.3856 -0.1649 -0.5012 0.2845 0.0736 0.2642 -0.8338 -0.0111 -0.2509 B2 = 0.2544 -0.2351 -0.4455 -0.1098 0.0671 -0.2807 -0.7106 -0.0183 -0.2341 B3 = 0.1469 -0.0098 -0.5516 -0.0946 -0.1013 -0.0383 -0.3842 0.0355 -0.0482 B4 = -0.1270 -0.0533 -0.1685 -0.1375 -0.1209 0.2782 -0.3731 0.0702 0.0847 c0 = 0.0591 0.7101 $\endgroup$
    – Adrian
    Aug 24, 2017 at 19:30

Your Answer

By clicking “Post Your Answer”, you agree to our terms of service and acknowledge you have read our privacy policy.

Not the answer you're looking for? Browse other questions tagged or ask your own question.