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

  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 месяца технической поддержки

Гарантируем качество кода и безопасность сделок.

Опыт команды — более 10 лет в HFT и ML. Завершено 25+ проектов по алготрейдингу. Работаем с криптобиржами, брокерами и фондами.

Пример расчета hedge ratio с Kalman FilterКод выше использует `pykalman`. Для production мы оборачиваем его в C++ через pybind11 — скорость увеличивается в 3–5 раз.

Свяжитесь с нами, чтобы мы оценили ваш проект и предложили оптимальную архитектуру. Получите консультацию по выбору стратегии и стека.