Розробка 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 в 1.5 рази вищий, ніж OLS. Крім того, ми використовуємо байєсівські методи для оцінки невизначеності моделі та градієнтний бустинг (XGBoost) для ранжування пар за потенційною прибутковістю — це дозволяє відсіяти хибні коінтеграції та підвищити стабільність системи.
Типи арбітражних стратегій: таблиця
| Тип | Приклад | Ризики | 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 місяці технічної підтримки — Середня вартість проекту починається від $20,000, а економія від автоматизації може сягати 60% операційних витрат.
Гарантуємо якість коду та безпеку угод.
Досвід команди — понад 10 років в HFT та ML. Завершено 25+ проектів з алготрейдингу. Працюємо з криптобіржами, брокерами та фондами.
Приклад розрахунку hedge ratio з Kalman Filter
Код вище використовує `pykalman`. Для production ми обгортаємо його в C++ через pybind11 — швидкість збільшується в 3–5 разів.Зв'яжіться з нами, щоб ми оцінили ваш проект і запропонували оптимальну архітектуру. Отримайте консультацію з вибору стратегії та стеку.







