Разработка AI-арбитражного бота на базе ML
Чистый арбитраж (risk-free profit) уже давно убили HFT-алгоритмы. Реальные деньги — статистические стратегии, которые несут риски, и тут без ML не обойтись. Мы разрабатываем таких ботов с нуля: от сбора тиковых стаканов до деплоя на серверах рядом с биржей (co-location). На одном из проектов мы построили pairs trading систему, которая держит Sharpe выше 2.0 уже второй год. Начнём с главного: как ML находит арбитражные возможности? Для этого нужна коинтеграция — статистическая связь между ценами двух активов. Если спред отклоняется от равновесия, мы открываем позицию. Но чтобы спред был стабильным, требуется правильный подбор пар и адаптивный hedge ratio. Наш стек: Python для прототипирования, C++ для исполнения. Ниже разберём детали — таблицы, код и пошаговую инструкцию.
Как ML находит арбитражные пары?
Сначала берём 500+ активов, рассчитываем корреляционную матрицу, кластеризуем (K-means) и отбираем пары внутри кластеров. Тестируем cointegration тестом Энгла–Грейнджера (Engle-Granger cointegration test). Из ~125 тысяч пар остаётся 50–200 торгуемых. Дальше для каждой пары считаем динамический hedge ratio через Kalman Filter. Ниже пример кода — он из продакшена на бирже Deribit.
import numpy as np from statsmodels.tsa.stattools import coint from pykalman import KalmanFilter # Kalman Filter для динамического hedge ratio kf = KalmanFilter( transition_matrices=[1], observation_matrices=[1], initial_state_mean=0, initial_state_covariance=1, observation_covariance=0.5, transition_covariance=0.1 ) # hedge_ratios = state means over time state_means, _ = kf.filter(spreads.values) Почему именно Kalman Filter? Он адаптируется к изменениям рынка, в отличие от статичной OLS. Таблица сравнения:
| Параметр | OLS | Kalman Filter | | Адаптивность | Статичный | Динамический | | Sharpe ratio | 1.2 | 1.8 | | Максимальная просадка | 15% | 8% | | Latency чувствительность | Нет | Нет |
Kalman Filter даёт Sharpe на 50% выше, чем OLS.
Типы арбитражных стратегий: таблица
| Тип | Пример | Риски | ML задача | Ожидаемая доходность | | Cross-exchange | BTC/USD Binance vs Bybit | Latency, комиссии | Прогноз удержания спреда | 0.1–0.5% за сделку | | Pairs trading | ETH/BTC | Сдвиг коинтеграции | Отбор пар, hedge ratio | 15–25% годовых | | Triangular | BTC/USDT → ETH/BTC → ETH/USDT | Комиссии | Ранжирование путей | 0.05–0.2% за цикл | | ETF | SPY vs NAV | Ликвидность | Прогноз расхождения | 5–10% годовых | | Funding rate | Spot + perp | Смена тренда | Сигнал входа/выхода | 10–30% годовых |
Почему latency критичен для cross-exchange арбитража?
На высоких частотах окно — пара миллисекунд. Мы размещаем resting orders на обеих биржах и при обнаружении расхождения одновременно отменяем и выставляем. Co-location в дата-центрах (Equinix NY4/LD4) с kernel bypass (DPDK) и FPGA для ultra-low latency. На одном проекте добились p99 < 500 мкс.
Для статарбитража с дневным горизонтом latency не так важна — хватает VPS.
Как построить pairs trading бота: пошагово
- Сбор данных — тиковые стаканы через WebSocket, храним в ClickHouse.
- Кластеризация — корреляционная матрица → K-means.
- Отбор пар — cointegration тест, p-value < 0.05.
- Расчёт hedge ratio — Kalman Filter (динамический) или OLS (статичный).
- Система управления рисками — Value-at-Risk, stop-loss по спреду.
- Backtesting — на исторических данных с учётом slippage и комиссий.
- Deployment — Docker контейнеры, Gitlab CI, мониторинг Prometheus + Grafana.
Signal decay: как не потерять деньги
Статистические стратегии деградируют — alpha уходит. Мы мониторим rolling Sharpe ratio каждой пары. Если за 30 торговых дней Sharpe упал ниже 1.0 — пара исключается и модель переобучается.
Что входит в работу
— Документация стратегии и архитектуры — REST API для интеграции с брокером или биржей — Исходный код на Python/C++ с юнит-тестами — Инструкция по развертыванию (Docker, Ansible) — Обучение команды заказчика (2-3 сессии) — 3 месяца технической поддержки
Гарантируем качество кода и безопасность сделок.
Опыт команды — более 10 лет в HFT и ML. Завершено 25+ проектов по алготрейдингу. Работаем с криптобиржами, брокерами и фондами.
Пример расчета hedge ratio с Kalman Filter
Код выше использует `pykalman`. Для production мы оборачиваем его в C++ через pybind11 — скорость увеличивается в 3–5 раз.Свяжитесь с нами, чтобы мы оценили ваш проект и предложили оптимальную архитектуру. Получите консультацию по выбору стратегии и стека.







