Estoy tratando de definir y rastrear la dispersión entre dos series de tiempo (datos disponibles aquí ), con el fin de aprender los fundamentos del comercio de pares.
Al ejecutar una prueba de cointegración, las dos series parecen estar cointegradas (utilizando la herramienta de python statsmodels.tsa.stattools.coint
los resultados son (-3.3744261541141616, 0.04527140003070947, array([-3.98694225, -3.38584874, -3.07883012]))
y al generar un gráfico de dispersión la relación parece lineal sin mucho ruido.
La mayoría de los posts que he leído recomiendan calcular la dispersión haciendo una regresión de una serie temporal sobre la otra (para una ventana temporal inicial "de entrenamiento") y luego extraer el coeficiente y utilizarlo para restar entre las dos (después de multiplicar una de ellas por él).
Cuando lo hago los resultados del OLS son rsquared=0.88 coeff=2.554344
(usando la función de python statsmodels.api.OLS
) pero el diferencial en el periodo de tiempo que está fuera del que se calculó el MCO se aleja sin converger. Por otro lado, cuando resteo las dos series temporales (más allá del período inicial utilizado para calcular el MCO) la diferencia parece estar limitada estrechamente. Véase el siguiente gráfico (la línea azul es la dispersión del MCO, la línea naranja es la simple sustracción)
Mi pregunta es: dado que la simple sustracción produce una dispersión bastante consistente (dentro y fuera de la muestra), ¿por qué la regresión dentro de la muestra no es capaz de extrapolar bien los datos fuera de la muestra?