Quantitative Finance Stack Exchange is a question and answer site for finance professionals and academics. Join them; it only takes a minute:

Sign up
Here's how it works:
  1. Anybody can ask a question
  2. Anybody can answer
  3. The best answers are voted up and rise to the top

I'm trying to implement cointegration tests using the R urca package. I've figured out the Johansen test (ca.jo), but I'm having trouble with the Philips-Ouliaris test (ca.po). I have two questions:

  1. How do I interpret the results?
  2. How do I get the cointegrating vectors (the B matrix)?

I understand how the test itself works, but I find the ca.po routine confusing. To give an example: First, I create a bivariate time series with a known cointegrating relation:

> x = cumsum(rnorm(100,1))
> y = -1*x + rnorm(n=100,mean=.1,sd=.1)
> z = zoo(cbind(x,y))

In this case, the cointegrating vector, B, should be close to [1,1]. I run the test and, as expected, get a significant test statistic:

> a = ca.po(z, lag='long', demean='none', type='Pz')

The test statistic is 165.8306 and the 1% critical value is 55.1911. Good news. However, when I inspect the test object, I have trouble finding the cointegrating vector. Shouldn't it be in the a@testreg slot? Here is what I find:

> a@testreg
Response x :

lm(formula = x ~ zr - 1)

Min      1Q  Median      3Q     Max 
-1.8083 -0.4643  0.2463  0.9273  2.5340 

Estimate Std. Error t value Pr(>|t|)  
zrx   1.6255     0.9331   1.742   0.0847 .
zry   0.6111     0.9342   0.654   0.5146  

Signif. codes:  0 '***' 0.001 '**' 0.01 '*' 0.05 '.' 0.1 ' ' 1 

Residual standard error: 1.059 on 97 degrees of freedom
Multiple R-squared: 0.9998, Adjusted R-squared: 0.9998 
F-statistic: 2e+05 on 2 and 97 DF,  p-value: < 2.2e-16

There is also another regression with y on the left-hand side. Anyway, I am wondering what zrx and zry correspond to? Are they elements of a vector zr? I thought that the regression should only include B2, and my cointegrating vector would be [1, -B2]. Also, it is clear that these values do not really correspond to the true cointegrating vector [1,1].

If I run the same cointegration test using ca.jo, I get B = [1,1] without any trouble. Therefore, I am wondering how to interpret this ca.po test? Finally, I also was wondering how to access elements of the test regression in the ca.po object? For example,

> names(a@testreg)

    [1] "Response x" "Response y"

> attributes(a@testreg)

    [1] "Response x" "Response y"

    [1] "listof"

So it's a little confusing. Anyway, thanks for the help! I really appreciate it!

share|improve this question

Your Answer


By posting your answer, you agree to the privacy policy and terms of service.

Browse other questions tagged or ask your own question.