I have two times series, say $T_i$ and $S_i$ over a reasonably large time window, and I have calculated their cointegration (using python's OLS and Adfuller) . Say that the test has passed with high confidence.

I have just gotten two brand new values, $T_{new}$ and $S_{new}$, and I would like to have a gauge of how far apart they must be to decide that their cointegration is now "broken" (using the metaphor of the drunkard and his dog, I want to determine whether the dog's leash is ripped).

Intuitively, I use the information of the regression and check whether the new residual is beyond the range. Anyone has a better grasp and perhaps even some python code?


PS IMPORTANT: the obvious answer would be to recalculate cointegration, but that is not an option: too computationally expensive.


1 Answer 1


You have estimated a cointegration relationship between $T_i, S_i$.

$$ T_i=\hat{\beta_1}+\hat{\beta_2} S_i + \hat{u_i}$$

For each new observation $(T_{new},S_{new})$, replace to the existing equation and find the residual $\hat{u}_{{new}}=T_{new}-\hat{\beta_1}+\hat{\beta_2} S_{new}$. Standardize this value with

$$\frac{\hat{u}_{{new}}-\bar{\hat{u}}}{\sigma_\hat{u}} \sim \text{for instance a }t_k \text{ (t-Dist with k degrees of freedom)} $$

Since residuals are mean-reverting, exceeding for a significant time the region $(-t_{(k,a)},t_{(k,a)})$, would indicate a possible break of the cointegration relationship between the two series. $(t_{(k,a)}$ is the critical value of the t-Distribution that corresponds to significance level $\alpha$: for instance $t_{(k,a)}=3$)

Denote, the region $(-t_{(k,a)},t_{(k,a)})$ with $\mathcal{D}$.

Cointegration is broken at:

$$\tau =inf\{t:\hat{u}_{new,t-k} \not \in \mathcal{D}, \forall k=1,2,..m\}$$

$m$ remains to researcher's dicretion (heavily depends on the data and is an empirical issue)

  • $\begingroup$ Coxwaillin thanks. Unfortunately, as I have said, I do not want to re-run the cointegration test adding the new two values. I need something quicker $\endgroup$ Commented May 2, 2019 at 16:42
  • 1
    $\begingroup$ You can calculate the stardarized residual from the cointegration equation for each new observation, and find a discrimination rule. Although this requires breaking your sample to smaller sub-samples. A simple solution would be to define an arbitrary rule. For instance, if the residuals of the new observation remain for a significant time above or below 3 standard deviations of the mean, then cointegration is broken (e.g 10 consecutive observations, depending although to your time-frames) $\endgroup$ Commented May 2, 2019 at 16:49
  • 1
    $\begingroup$ The original regression has a Standard Error of Estimate (SEE) if the new point is many times (3?) further from the regression line than this, you can conclude that something is wrong. $\endgroup$
    – Alex C
    Commented May 2, 2019 at 16:50
  • 1
    $\begingroup$ Since you cointegrate 2 non-stationary series, you residuals should be mean reverting. Calculate from the residual series both mean and standard deviation. Then, insert to the estimated linear model the new values and obtain the residual value. Standardize the residuals and compare them to the standard deviation (3 sigma of the mean should have standardized deviation 3 and so on). How you find the threshold of rejecting the hypothesis of cointegrating series, remain at your own discretion. $\endgroup$ Commented May 2, 2019 at 16:57
  • $\begingroup$ Thank you both! Coxswallin, if you take what you said and write a new answer I will give you the points u deserve :) $\endgroup$ Commented May 2, 2019 at 17:20

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.