Cointegration – VECM: Alpha as a 0-Vector and Cointegration Rank = $k$ Even Though $X_t$ is I(1)?

cointegrationvector-error-correction-model

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

Best Answer

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.