Модели коинтеграции

Анализ временных рядов на Python

Rob Reider

Adjunct Professor, NYU-Courant Consultant, Quantopian

Что такое коинтеграция?

  • Два ряда, $\large P_t$ и $\large Q_t$, могут быть случайными блужданиями
  • Но линейная комбинация $\large P_t - c \ Q_t$ может ею не являться!
  • Если это так
    • $\large P_t - c \ Q_t$ поддаётся прогнозированию
    • $\large P_t$ и $\large Q_t$ называются коинтегрированными
Анализ временных рядов на Python

Аналогия: собака на поводке

  • $\large P_t = $ Хозяин
  • $\large Q_t = $ Собака
  • Оба ряда похожи на случайное блуждание
  • Разность (расстояние) между ними стремится к среднему
    • Если собака отстаёт слишком далеко, её притягивает вперёд
    • Если собака убегает слишком далеко, её притягивает назад
Анализ временных рядов на Python

Пример: мазут и природный газ

  • Мазут и природный газ — оба похожи на случайные блуждания...

Анализ временных рядов на Python

Пример: мазут и природный газ

  • Но спред (разность) стремится к среднему

Анализ временных рядов на Python

Какие ряды бывают коинтегрированными?

  • Экономические субституты
    • Мазут и природный газ
    • Платина и палладий
    • Кукуруза и пшеница
    • Кукуруза и сахар
    • ...
    • Bitcoin и Ethereum?
  • А конкуренты?
    • Coke и Pepsi?
    • Apple и Blackberry? Нет! Поводок оборвался, и собака убежала
Анализ временных рядов на Python

Два шага для проверки коинтеграции

  • Регрессируйте $\large P_t$ на $\large Q_t$ и получите коэффициент $\large c$
  • Запустите тест Дики–Фуллера (ADF) для $\large P_t - c \ Q_t$, чтобы проверить наличие случайного блуждания
  • Альтернативно: используйте функцию coint из statsmodels, которая объединяет оба шага
from statsmodels.tsa.stattools import coint
coint(P,Q)
Анализ временных рядов на Python

Давайте потренируемся!

Анализ временных рядов на Python

Preparing Video For Download...