Разработка алгоритма статистического арбитража на криптовалютных рынках

Ручной статистический арбитраж криптовалют упирается в задержки: пока сигнал считается, цена уже ушла, а ложные входы съедают результат. Мы разрабатываем арбитражный контур под ключ — от расчёта сигналов до контроля проскальзывания и защиты от простоев. Передаём решение с документацией и регламентами, чтобы команда работала с ним самостоятельно.
Часто задаваемые вопросы

Где ломается статистический арбитраж криптовалют

Статистический арбитраж криптовалют держится на математике: находим инструменты с устойчивой связью, считаем отклонение от равновесия, входим на расхождении. В исследовательском окружении модель показывает ровную кривую. В реальной торговле её ломает не статистика, а микромеханика исполнения, которую модель просто не видит.

Первый источник потерь — рассинхрон котировок. Площадки обновляют цены в разные моменты, и «одновременная» котировка на двух биржах на деле отстоит на секунды. Модель читает это как арбитражную возможность, хотя видит две разные точки одного и того же рынка. Сигнал срабатывает с опозданием, вход идёт уже по уехавшей цене.

Второй — тонкий стакан. Прибыль в таком арбитраже живёт в узком спреде, а объём на нужной стороне часто меньше нашего объёма входа: исполнение выедает первые уровни, средняя цена уходит от расчётной, и проскальзывание цены забирает весь предполагаемый спред. Чем тоньше книга заявок, тем быстрее сигнал превращается в убыток.

Третий — ложные сигналы на нестандартном поведении биржи. Под нагрузкой площадка меняет лимиты, пересчитывает комиссии, расширяет спред или приостанавливает ввод и вывод. Модель об этом не знает и продолжает торговать по историческим параметрам, а задержки вывода ломают саму схему переноса позиции между площадками. Мы начинаем не с модели, а с проверки исполнения — разбираем, как это закрывается.

Измеримый эффект: задержка, проскальзывание, простой

После запуска в работу первое, что видно в журнале метрик, — распределение задержки сигнала, а не её среднее. Медиана почти не меняется, зато уходит правый хвост: доля сигналов, дошедших до биржи уже после сдвига котировки, падает в разы, а число ложных входов — вдвое.

Проскальзывание считаем отдельно от комиссии и по каждому инструменту: доля сделок, где фактическая цена входа расходится с расчётной больше чем на половину ожидаемого спреда, падает в разы, а не на проценты. Это и есть граница между работающей моделью и той, что теряет результат на исполнении.

Устойчивость алгоритма проверяем не на спокойном рынке. Прогоняем контур через разрыв ликвидности, перезапуск торгов на Bybit и пропажу потока котировок: правило «нет свежих данных — нет заявок» отсекает входы, которые раньше открывались по устаревшей цене.

Время восстановления контура сократилось с десятков минут ручной сверки позиций до единиц: состояние поднимается из журнала, висящие заявки снимаются автоматически. Заодно ушёл отдельный класс отказов — двойные входы по одному сигналу при повторной отправке заявки.

Метрики держим на панели с пороговыми оповещениями, поэтому деградация видна до того, как превратится в просадку.

Режимы арбитражного контура: сравнение подходов

Режим арбитражного контура выбирают не по доходности на истории, а по издержкам и рискам, которые он тянет за собой: задержке исполнения, комиссиям за перевод, глубине стакана и вероятности не исполнить вторую ногу. Ниже — три базовых режима работы контура, между которыми реально выбирают на этапе проектирования.

Режим Когда подходит Чем ограничен
Межбиржевой перенос Спред между площадками устойчиво шире суммарных издержек: две комиссии, вывод, зачисление, конвертация Нужны заранее размещённые балансы на обеих площадках; пока идёт перевод, цена успевает уйти
Внутрибиржевые пары Нужен быстрый разворот без межплощадочных переводов: связки через базовую валюту и стейблкоины Ограничения ликвидности в тонких парах: объём упирается в глубину стакана, проскальзывание съедает спред
Отклонение от статистической нормы Ряд спреда и связь пары устойчивы, отклонение возвращается к среднему Смена режима рынка ломает модель: связь распадается, позиция висит до закрытия по стопу

Режимы не взаимоисключающие: рабочий контур обычно держит два-три и переключается по условию — сужение спреда, всплеск волатильности, падение глубины стакана. Порог переключения и лимит объёма фиксируем в правилах риска, привязанных к ликвидности здесь и сейчас, а не к усреднённой за месяц.

Этапы разработки, проверки и передачи решения

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

  1. Аудит данных. Сводим исторические котировки по нужным площадкам, проверяем разрывы, пропуски и расхождения между источниками, отдельно смотрим низколиквидные периоды и инструменты, которые перестали торговаться.
  2. Постановка гипотезы. Формулируем, на каком статистическом отношении строится преимущество, какой горизонт удержания позиции и какие издержки сделка обязана перекрывать.
  3. Проверка на исторических данных. Прогоняем гипотезу на отложенном периоде с учётом комиссий, проскальзывания и задержки исполнения — модель, живая только без издержек, отсеивается здесь.
  4. Тестовый контур. Выводим логику на биржевую песочницу или минимальные объёмы, сверяем расчётную и фактическую цену исполнения, поведение при обрыве связи и отказе части заявок.
  5. Приёмка решения. Фиксируем критерии: устойчивость результата на разных периодах, допустимая просадка, доля неисполненных заявок, корректность остановки торговли.
  6. Передача в эксплуатацию. Отдаём конфигурацию, регламент запуска и остановки, набор метрик и правила, по которым система сама прекращает торговлю.

Проверка на исторических данных и приёмка идут по одному набору метрик — расхождение между ними сразу показывает, где результат приукрашен.

Конфигурация, документация и регламенты: состав передачи

Передаём не «работающую стратегию на словах», а комплект, с которым ваша команда работает дальше сама. Всё разворачивается в вашем контуре: репозиторий, учётные записи, ключи и мониторинг остаются под вашим контролем, без постоянного доступа с нашей стороны.

  • Исходный код и окружение. Репозиторий с историей изменений, конфигурации сборки и развёртывания, зафиксированные зависимости — сборка поднимается на чистой машине без участия наших инженеров.
  • Схема контура. Как связаны сбор рыночных данных, расчёт сигнала, выставление заявок и учёт позиций; где узкие места и какие потоки критичны для остановки стратегии.
  • Политики доступа и ротация ключей. Роли с разными правами, срок жизни ключей к биржам, порядок плановой замены и немедленного отзыва при уходе сотрудника.
  • Регламент дежурства. Пороги оповещений, кто и в какие сроки реагирует на расхождение расчётной и фактической позиции, при каких условиях стратегия встаёт на паузу автоматически.
  • Документация по эксплуатации. Запуск и плановый перезапуск, обновление параметров модели, типовые сбои и порядок действий, места, где нужно вмешательство человека.
  • Описание модели. Какие данные на входе, как считается сигнал, какое окно оценки, по каким критериям модель переобучается и когда выводится из работы.
  • Результаты проверок. Прогон на исторических данных, набор тестов, контрольные метрики — чтобы принимать систему можно было по цифрам, а не на слово.

Кейс: сокращение проскальзывания и ложных входов

Кейс внедрения — контур статистического арбитража между спотом и бессрочными фьючерсами на ограниченном наборе ликвидных инструментов. Сигналы считались по цене последней сделки, поэтому вход срабатывал там, где стакан уже опустел: доля ложных входов доходила до 38%, а проскальзывание на выходе — до 0,9% от объёма позиции. Метрики контура писались в журнал: время от сигнала до фактического исполнения, объём частичного набора и отклонение цены сделки от расчётной.

Что изменили

Сигнальный слой перевели на расчёт по середине стакана с учётом доступной глубины и короткого окна усреднения — выбросы котировок перестали порождать входы. Исполнение развели с сигналом: заявки лимитные, с частичным набором и отменой по истечении заданного времени. Число одновременных позиций ограничили, чтобы просадка по одному инструменту не переносилась на остальные, и завели резервный канал котировок на случай разрыва основного.

Результат внедрения

Ложные входы сократились до 7%, проскальзывание — до 0,15–0,25%, а доля сигналов, доведённых до полного набора позиции, выросла примерно вдвое. Контур прошёл серию рыночных стрессов без ручного вмешательства: при разрыве канала позиции закрывались по правилам риска, а не по остатку котировки.

Внешняя сверка подтвердила метрики — выборку сделок сопоставили с независимыми данными о глубине рынка Kaiko, расхождение по ценам исполнения уложилось в доли процента, рассинхронизации с публичным стаканом не выявлено.

Что делать, если на бирже уже работает торговый робот

Если на бирже уже работает торговый робот, переписывать его с нуля почти всегда дороже, чем достроить. В действующем контуре отлажены управление позициями, лимиты и журнал сделок — логика статистического арбитража эту часть не отменяет, а опирается на неё.

Сначала разбираем существующий контур: откуда берутся рыночные данные, как считается расхождение между инструментами, где выставляются и снимаются заявки. Переносим не код, а логику — модель связи пары, правило нормированного отклонения, пороги входа и выхода. Новый расчёт калибруется на той же истории, что отработал старый робот, и сверяется с ним на одном отрезке.

Совместимость с текущим решением строится через разделение ролей: новый слой только принимает решения, старый остаётся исполнителем и ведёт позицию. Риск-ограничения, лимиты по инструментам и учёт остаются прежними — при ошибке в новой логике сработает уже проверенная защита.

Поэтапная замена выглядит так: сначала новая логика считает сигналы параллельно со старой, и мы видим расхождения. Затем на неё переводится часть капитала, затем весь объём, и только после этого старый контур выводится. Откат на любой ступени занимает минуты, потому что прежний исполнитель никуда не удаляется.

Так обновление проходит без остановки торговли: контур продолжает работать, а меняется только то, что принимает решения.

Технические вопросы, которые задают до старта

Вопросы на согласовании почти всегда одни и те же — не про идею статистического арбитража, а про то, как алгоритм ведёт себя, когда рынок уходит в резкое движение или биржа меняет правила игры. Ниже — короткие ответы по существу.

Как стратегия переживает резкие движения рынка?

Расхождение цен мы нормируем на текущую волатильность: сигнал считается не по абсолютной разнице котировок, а по её отклонению от привычного для пары диапазона. При расширении спреда вход блокируется, а размер позиции уменьшается — рост волатильности становится источником сделок, а не причиной просадки.

Кто получает доступ к ключам и деньгам на счёте?

Ключи выдаются только с правом торговли, без возможности вывода средств. Они не попадают в код и логи, хранятся в защищённом хранилище с ограничением по адресам и ротацией; отозвать доступ можно в любой момент без остановки системы.

Как вы не подгоняете модель под историю?

Параметры настраиваются на одном интервале данных и проверяются на другом, который в настройке не участвовал. Дополнительно прогоняем последовательную перепроверку на скользящих интервалах с учётом комиссий и проскальзывания. Если результат держится только на подобранных коэффициентах, модель в работу не идёт.

Что происходит при приостановке торгов на бирже?

Система отслеживает устаревшие котировки и отсутствие ответа биржи: открытые заявки снимаются, позиция приводится к нейтральной, а после возобновления торгов состояние восстанавливается по журналу сделок. О сбое инженеры узнают сразу — по оповещению, а не по отчёту.

Как понять, что результаты реальны, а не красивы на бумаге?

Перед запуском стратегия работает в тестовом контуре на живых котировках без реальных ордеров, и мы сверяем ожидаемое исполнение с фактическим: среднее проскальзывание, доля отклонённых сигналов, глубина просадки. Расхождение прогноза и факта показываем отдельным отчётом.

Обсудим задачу: оценка, план и порядок работ

Оценка начинается не с алгоритма, а с вашего торгового контура. Нужно понимать, какие площадки и инструменты доступны, как устроены доступы к счетам и насколько полны исторические данные по нужным парам. Без этого сроки превращаются в гадание: одна и та же модель на ликвидном и на тонком рынке требует разной инфраструктуры и разного объёма проверок.

Что понадобится от вас на входе:

  • перечень площадок, типов счетов и доступных лимитов на запросы — от этого зависит частота пересчёта сигналов;
  • исторические котировки и сделки за достаточный период либо согласие на их самостоятельный сбор и хранение;
  • ограничения по риску: допустимая просадка, максимальное плечо, запрещённые инструменты и режимы торговли;
  • контур размещения — где исполняются стратегии, требования к изоляции ключей и разграничению доступов;
  • ответственный за приёмку и метрики, по которым результат считается успешным;
  • порядок вывода средств и ребалансировки между площадками.

После согласования работы идут последовательными этапами: сбор и очистка данных, построение статистической модели, проверка на истории с учётом комиссий и проскальзывания, торговля в режиме наблюдения без реальных ордеров, затем ограниченный капитал с ежедневным контролем расхождений между расчётным и фактическим результатом. Каждый этап закрывается отчётом, а переход к следующему — только по вашему согласию. Так вы видите работающую логику до того, как под неё выделен серьёзный объём средств.

Направления блокчейн-разработки

Последние работы

  • Разработка сайта компании B2B ADVANCE
    Разработка сайта компании B2B ADVANCE
    1542
  • Разработка веб-приложения для компании FEEDME
    Разработка веб-приложения для компании FEEDME
    1393
  • Разработка веб-сайта для компании БЕЛФИНГРУПП
    Разработка веб-сайта для компании БЕЛФИНГРУПП
    1081
  • Разработка интернет магазина для компании FURNORO
    Разработка интернет магазина для компании FURNORO
    1368
  • Разработка логотипа компании B2B Advance
    Разработка логотипа компании B2B Advance
    815
  • Разработка веб-приложения для компании Enviok
    Разработка веб-приложения для компании Enviok
    1139