Повна розробка AI-арбітражного бота на ML для статистичного арбітражу

Розробка AI-арбітражного бота на базі ML

Напрямки AI-розробки

Часті запитання

Останні роботи

  • image_website-b2b-advance_0.webp
    Розробка сайту компанії B2B ADVANCE
    1441
  • image_web-applications_feedme_466_0.webp
    Розробка веб-додатків для компанії FEEDME
    1302
  • image_websites_belfingroup_462_0.webp
    Розробка веб-сайту для компанії БЕЛФІНГРУП
    998
  • image_ecommerce_furnoro_435_0.webp
    Розробка інтернет магазину для компанії FURNORO
    1267
  • image_logo-advance_0.webp
    Розробка логотипу компанії B2B Advance
    714
  • image_crm_enviok_479_0.webp
    Розробка веб-додатків для компанії Enviok
    1006

Розробка 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 бота: покроково

  1. Збір даних — тікові стакани через WebSocket, зберігаємо в ClickHouse.
  2. Кластеризація — кореляційна матриця → K-means.
  3. Відбір пар — cointegration тест, p-value < 0.05.
  4. Розрахунок hedge ratio — Kalman Filter (динамічний) або OLS (статичний).
  5. Система управління ризиками — Value-at-Risk, stop-loss по спреду.
  6. Backtesting — на історичних даних з урахуванням slippage та комісій.
  7. 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 разів.

Зв'яжіться з нами, щоб ми оцінили ваш проект і запропонували оптимальну архітектуру. Отримайте консультацію з вибору стратегії та стеку.