I'm trying to wrap my head around the VECM model by doing some simple examples. In this exercise I'm taking the log prices of 2 assets, A and B. These prices are clearly not stationary, for example asset A: asset A

(For the rest of the explanation I'm using the statsmodels library, but my questions are about the fundamentals behind the model, not about the use of the library itself.)

Now, as I said I have a dataframe with 2 columns of log-price data, one for asset A and one for asset B.

  1. I can check for the cointegration rank of my data. First of all, if I calculate the cointegration rank for 1 lagged difference I get a rank of 2. From what I understand this implies that the data (vector Xt, or the log-prices themselves) is already stationary and the model isn't informative and hence we should study Xt directly (Analysis of Financial Time Series, Tsay, section 8.6). How is this possible in this case if both my series are log-prices and hence hardly stationary (I(0))? Now, if I select 2 lagged differences I get the expected rank of one, which basically means there is 1 cointegration relationship between the 2 series

  2. And here comes my second question, how come that the lag matters when calculating the cointegrating rank? Any resources where I could see this? My understanding is that alpha and beta are k x m (k = number of assets, m = cointegrating factors) so I don't see where the lag comes here, also because for a cointegrating relationship one would look at the log-prices at the same t

    from statsmodels.tsa.vector_ar.vecm import select_coint_rank, VECM
    select_coint_rank(df_vecm, det_order=0, k_ar_diff=1) #-----> rank = 2
    select_coint_rank(df_vecm, det_order=0, k_ar_diff=2) #-----> rank = 1
  3. In this example, I'm running a VECM model with cointegration rank = 1 and 2 lagged differences. According to these results the alphas of the model are not significantly different from 0. If I'm not mistaken, the alphas are basically the speed of adjustment of the long-term (cointegration) relationship. Does this mean that according to these results there isn't such a long-run relationship and these 2 variables are not cointegrated?

    vecmodel = VECM(df_vecm, coint_rank=1, k_ar_diff=2)
    vecfit = vecmodel.fit()
  4. My cointegrating vector $\beta$ is [1, 2.02]. I guess since the cointegration rank of my matrix is 1 and there is one cointegrating relationship, it's normal that the first element of $\beta$ is 1 and common in all the VECM models?

Here are the VECM results:

VECM results


1 Answer 1


A brief answer:

  1. You logic is correct. In theory, this should not happen. In practice, this may be caused by estimation imprecision and/or low power of tests.
  2. In theory, the lag does not matter. As long as the lag is finite, the appropriate linear combination of the cointegrated series is a finite sum of I(0) elements, and that is still I(0). (See this answer of mine for details.) In practice, see point 1.
  3. In theory, the $\alpha$s should not be jointly zero, though one of them may be zero. In practice, see point 1.
  4. Yes, it is standard practice to normalize the first element of $\beta$ to 1. You could always multiple $\alpha$ by a constant and divide $\beta$ by the same constant to obtain the same behavior of the cointegrated system, so normalizing $\beta$ this way is just a matter of convention.
  • $\begingroup$ Thank you Richard, very clear. One last clarification: Is it correct to assume that if all the $\alpha$s are not significantly different from 0, there is no cointegrating relationship between the variables? How can this be understood together with the information of 0 < coint_rank < k ? From your point #1, this would probably mean that the cointegration test for the rank is not accurate and it found a cointegration relationship where there isn't none, right? Thanks again $\endgroup$
    – Hiperfly
    Feb 27, 2023 at 8:14
  • $\begingroup$ @Hiperfly, you basically got everything right by yourself; I just briefly pointed out a couple of things. Indeed, if the cointegration rank $0<r<k$, then the $\alpha$s cannot be jointly zero. This should not happen in theory or given infinite data. If that happens, the possible causes are indicated under point 1. $\endgroup$ Feb 27, 2023 at 8:29

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.