Pairs Trading Kalman

Kalman Cointegration: Адаптивный парный арбитраж на фильтре Калмана

Published: 2026-06-25 · Trading

Pairs Trading Kalman — это стратегия статистического арбитража коинтегрированных активов, использующая фильтр Калмана для динамического расчета коэффициента хеджирования. В отличие

⚡ Быстрый ответ

  • Adaptive pairs trading strategy using Engle-Granger cointegration and Kalman Filter state space modeling.
  • Dynamically estimates hedge ratios and spread mean reversion parameters in real-time.

Safety Guards

Rule Max Limit Action On Breach
block_on_cointegration_break 0.05 liquidate_pairs_position

Руководство по интеграции

Обновлено: 2026-07-04
*Дисклеймер: Данный материал носит исключительно информационный характер и не является финансовой рекомендацией.*

## Как реализовать адаптивный парный арбитраж (Pairs Trading) с использованием фильтра Калмана?

Pairs Trading Kalman — это стратегия статистического арбитража коинтегрированных активов, использующая фильтр Калмана для динамического расчета коэффициента хеджирования. В отличие от скользящих средних, фильтр Калмана мгновенно адаптирует модель к изменению корреляции активов, обеспечивая более точный расчет Z-Score спреда и своевременное открытие сделок при отклонениях.































Параметр / Условие Описание Порог / Значение
Вход в сделку Величина Z-Score спреда |Z-Score| > 2.0
Выход из сделки Величина Z-Score спреда Z-Score = 0.0
Критерий коинтеграции Статистическая значимость (p-value) p-value < 0.05
Действие при распаде спреда Нарушение стационарности спреда Принудительная ликвидация обеих ног


### Введение
Классический парный арбитраж основывается на поиске коинтегрированных активов (например, ETH и BTC), спред между которыми стационарен (возвращается к среднему). Однако стандартная оценка коэффициента хеджирования (hedge ratio) через метод наименьших квадратов (OLS) по скользящему окну имеет запаздывание и чувствительна к шуму. Применение **фильтра Калмана** (Kalman Filter) позволяет отслеживать динамическое соотношение цен в реальном времени как скрытое состояние.

### Модель в пространстве состояний (State Space Model)
Отношение двух активов \(y_t\) (ETH) и \(x_t\) (BTC) выражается через линейное уравнение наблюдения:

\[ y_t = \beta_t x_t + \alpha_t + e_t \]

Где параметры регрессии \(\theta_t = [\beta_t, \alpha_t]^T\) изменяются во времени по закону случайного блуждания (уравнение системы):

\[ \theta_t = \theta_{t-1} + w_t \]

Здесь \(e_t \sim N(0, V_t)\) — шум измерения, а \(w_t \sim N(0, W_t)\) — шум процесса.

### Алгоритм фильтра Калмана
Фильтр Калмана работает в два шага на каждом новом ценовом тике:
1. **Прогноз (Predict)**: Прогнозирование текущего вектора состояния \(\theta_{t|t-1}\) и ковариации ошибки \(P_{t|t-1}\) на основе предыдущего шага.
2. **Обновление (Update)**: Расчет невязки прогноза (ошибки отслеживания спреда) и коррекция вектора состояний с помощью коэффициента усиления Калмана (Kalman Gain):

\[ K_t = P_{t|t-1} x_t^T (x_t P_{t|t-1} x_t^T + V_t)^{-1} \]
\[ \theta_{t|t} = \theta_{t|t-1} + K_t (y_t - x_t \theta_{t|t-1}) \]

Это позволяет алгоритму мгновенно адаптировать размер позиции короткой ноги к длинной при изменении корреляции активов.

### Торговые сигналы и Z-Score
Спред рассчитывается как разность цен с учетом динамической беты:

\[ \text{spread}_t = y_t - \beta_t x_t - \alpha_t \]

На основе дисперсии спреда вычисляется его стандартизированное значение (Z-Score). При \(|\text{Z-Score}| > 2.0\) открывается парная позиция (лонг недооцененного актива, шорт переоцененного). При возвращении \(\text{Z-Score}\) к `0.0` позиция полностью закрывается.

### Защитные правила
Если тест Дики-Фуллера (ADF) или Йохансена отвергает коинтеграцию с уровнем значимости выше `0.05` (что означает структурный распад спреда), бот принудительно ликвидирует обе ноги позиции для предотвращения бесконечного убытка при расхождении цен.