Почему арбитражный бот теряет прибыль на резких движениях рынка
Резкое движение рынка — это не «плохой день», а проверка архитектуры на прочность. Пока арбитражный бот считает сигнал, цена между площадками успевает разойтись: спред, который был в момент обнаружения возможности, к выставлению заявок уже закрыт. Задержка решения в доли секунды оборачивается проскальзыванием цены — сделка идёт на 0.3–0.8% хуже расчётной, и этого достаточно, чтобы прибыль стратегии обнулилась. Особенно заметно на ликвидных площадках вроде Binance, где импульс отрабатывается за одну-две секунды.
Вторая точка потерь — сбой исполнения заявок. На импульсе ликвидность на одной стороне книги сдувается, площадка ограничивает частоту запросов, приходит частичное заполнение — и нога пары остаётся незакрытой. Вместо нейтральной позиции владелец стратегии получает направленную, а расчётный спред превращается в незапланированный риск, который приходится закрывать уже по рынку.
Отдельный слой — модель. Обученная на спокойных данных, она на всплеске волатильности видит входы за границами обучающей выборки: уверенность падает, сигнал приходит с опозданием или не приходит вовсе. Дальше включается простой стратегии: часы, когда рынок даёт лучшее соотношение движения и издержек, бот проводит вне рынка — и потери от такого простоя сопоставимы с серией убыточных сделок.
Разбираем, как закрывается каждый участок: бюджет задержки на всём пути от приёма данных до отправки заявки, политика исполнения с контролем проскальзывания, обработка отказов и частичных заполнений, а также контуры контроля модели, которые выводят её из торговли при выходе за пределы обучающего распределения.
Что меняется после внедрения: скорость решения и контроль риска
Первое, что видно после запуска в рабочем режиме, — точность сигналов. Модель оценивает не только расхождение цен между площадками, но и ликвидность инструмента, ширину спреда и историю исполнения похожих сделок, поэтому доля сигналов, доведённых до реальной сделки, растёт, а ложные срабатывания на новостных всплесках отсекаются до выставления заявки.
Второй измеримый показатель — доля исполненных заявок. Система заранее считает доступный объём, разбивает крупный вход на части и пересчитывает остаток при частичном исполнении, вместо того чтобы оставить висящий ордер и неверную позицию. По журналу видно, сколько заявок закрывается полностью, сколько частично и по какой причине.
Контроль риска перестаёт держаться на внимании оператора: лимиты позиций задаются на инструмент, на направление и на совокупную экспозицию, а у границы объём следующей заявки снижается автоматически. Это ограничивает максимальную просадку сверху — она больше не зависит от того, успел ли человек отреагировать.
Устойчивость стратегии проверяется на смене режима рынка: рост волатильности, падение ликвидности, расхождение котировок. На такие периоды задан регламент — сужение лимитов или пауза, поэтому результат не рассыпается на первой нестандартной сессии.
Ручные вмешательства оператора сокращаются до единичных случаев: подтверждение изменений в параметрах, разбор спорных сделок, сверка отчётности. Остальное система закрывает сама и фиксирует в журнале.
Схемы подключения к биржам и режимы исполнения сделок
Схема подключения определяет, где лежит капитал, кто выставляет ноги сделки и сколько времени проходит между котировкой и фактическим исполнением. Ошибку этого уровня логикой бота не компенсировать: какую бы точную сигнатуру ни считала модель, расхождение возникает на стыке «увидели цену — встали в позицию». Поэтому вариант подключения фиксируют до выбора модели и режима торговли.
| Вариант | Когда подходит | Ограничения |
|---|---|---|
| Прямое подключение к двум площадкам: поток котировок плюс приватный канал ордеров | нужен полный контроль над моментом входа и своим риск-менеджментом | ключи и лимиты запросов на каждой стороне, баланс приходится держать на обеих, задержка между площадками съедает часть расхождения |
| Триангулярный арбитраж внутри одной площадки | капитал сосредоточен в одном месте, нет переводов между биржами | узкий набор пар, высокая конкуренция, спред закрывается быстрее, чем успевает сработать модель |
| Спот против фьючерса (базисная схема) | нужна нейтральность к направлению рынка и удержание позиции дольше минуты | ставка финансирования периодически меняет знак, у маржинальной ноги появляется риск принудительного закрытия, требуется запас обеспечения |
| Исполнение через внешний агрегатор ордеров | нет своей инфраструктуры и ключей, важен быстрый запуск | не видно очередности ордеров, чужие лимиты частоты, задержка ответа полностью вне вашего контроля |
Режим торговли выбирается под ту же схему. Маркет-исполнение гарантирует, что нога закроется, но платит повышенную комиссию и снимает стакан на крупном объёме. Лимитные заявки дешевле, однако нога может не налиться, и тогда открытой остаётся одна сторона — классический источник убытка в арбитраже. Рабочий компромисс — лимитный вход с таймаутом и добором по маркету: бот выдерживает паузу, а затем закрывает расхождение принудительно. Обязательный элемент любой схемы — контроль частичного исполнения и автооткат незакрытой ноги.
Этапы внедрения: от аудита данных до передачи в эксплуатацию
Порядок работ выстроен так, чтобы ошибки в логике находились до подключения реального счёта. Каждый этап закрывается проверяемым артефактом — отчётом, схемой или зафиксированными лимитами, и только после этого начинается следующий.
- Аудит данных. Проверяем историю сделок и котировок: полнота, пропуски, метки времени, корректный учёт комиссий. На выходе — отчёт о пригодности выборки и перечень участков, где данных не хватает.
- Схема системы. Фиксируем источники котировок, расчёт сигнала, формирование заявки, хранение состояний и логов. Схема согласуется до первой строки кода.
- Настройка риска. Лимиты на позицию, дневную просадку, число одновременных сделок и поведение при потере связи с биржей — всё в конфигурации, а не в коде.
- Проверка на истории. Прогон на исторических данных с учётом комиссии и задержки исполнения: смотрим просадку, долю неисполненных заявок, устойчивость к смене режима рынка.
- Теневой режим. Бот считает сигналы по живым данным, но заявки не отправляет. Расхождение расчётной цены с фактическим стаканом показывает, где модель переоценивает ликвидность.
- Передача в эксплуатацию. Развёртывание на целевом окружении, подключение счёта, контроль и оповещения, регламент остановки. Отдаём документацию и конфигурации.
Дальше идёт сопровождение: пересмотр модели при смене режима рынка и контроль отклонений от ожидаемого поведения.
Что передаём на руки: конфигурации, схемы, регламенты и отчёты
Систему передаём так, чтобы её можно было эксплуатировать, дообучать и останавливать силами вашей команды — без инженера, который её собирал. В комплект входит не только рабочий код, но и всё, что нужно для предсказуемой работы арбитражного бота в рабочем режиме.
- Конфигурации стратегии: профили, пороги входа, лимиты на позицию и дневной риск, набор признаков — с пометкой, что меняется на ходу, а что требует перепроверки на истории.
- Схемы системы: путь данных от источника котировок до исполнения сделки, точки отказа на каждом участке, связи моделей и очередей.
- Регламент реагирования: пороги просадки, рассинхрона данных и падения качества модели, порядок перевода в ручной режим и остановки торгов.
- Доступы и роли: матрица прав на изменение параметров, запуск переобучения и просмотр отчётов, порядок ротации ключей, журнал действий.
- Документация: описание признаков и логики сигналов, методика оценки качества, процедура переобучения и проверки модели перед вводом.
- Отчёты: сводки по доходности, просадке, числу сделок и доле отказов — ежедневные и недельные, с историей конфигураций.
Каждый артефакт принимается вместе с вами на живой системе: показываем, как изменение параметра меняет поведение бота, и фиксируем зоны ответственности между вашей командой и нашей.
Кейс: как сократили просадку и убрали ручные вмешательства
До внедрения арбитраж между двумя торговыми площадками держался на ручном подтверждении: оператор видел расхождение цен, сверял лимиты и выставлял заявки сам. На реакцию уходило 6-8 секунд — за это время расхождение либо закрывали чужие заявки, либо оно уходило в минус. За смену набегало 40-60 ручных операций, а просадка на длинном отрезке доходила до 18%.
Что изменили
Цикл перенесли на модель: она оценивает ожидаемую доходность пары с учётом комиссий и глубины стакана, отсекает сигналы ниже порога и отдаёт заявку на исполнение сама. Риск-лимиты — по инструменту, площадке и дневной просадке — проверяются до отправки, поэтому новая позиция не открывается, пока не закрыта предыдущая.
- Время реакции: с 6-8 секунд на решение оператора до десятых долей секунды.
- Доля исполненных заявок: 71% → 96%, остальное отсекают фильтры по глубине стакана.
- Ручные вмешательства: 40-60 за смену → 1-2, только разбор нештатных ситуаций.
- Частота сбоев: несколько инцидентов в неделю → один в месяц, и тот на стороне площадки.
- Просадка: с 18% до 6-7% на сопоставимом отрезке.
Метрики снимаются с панели мониторинга Grafana — время реакции, доля исполнения, отказы площадки и текущая просадка по каждой стратегии отдельно. Заказчик видит тот же поток данных, на который опираемся мы, поэтому расхождение в цифрах разбирается по факту, а не по ощущениям.
Чем машинная модель отличается от жёстких правил в арбитражном боте
Жёсткие правила — это пороги, прописанные вручную: спред выше заданного, достаточная глубина стакана, учтённые комиссии и время до расчёта. Логика прозрачна: сделку объясняет одна строка условия, а поведение воспроизводится при том же входе. Но рынок меняет режим — ликвидность уходит, спреды расширяются, — и пороги, подобранные на прошлом периоде, срабатывают там, где запаса уже нет.
Машинная модель вместо списка условий взвешивает десятки признаков сразу: микроструктуру стакана, волатильность, историю похожих возможностей. Она находит нелинейные сочетания, которые вручную не выписать, и подстраивается под смену режима без правки кода. Обратная сторона — переобучение: на коротком или однородном отрезке данных модель запоминает шум и на новых данных теряет качество.
Поэтому рабочая схема — гибридная логика. Жёсткие правила образуют внешний контур: лимиты на экспозицию, отсечка по ликвидности, запрет входа при аномалиях. Модель работает внутри — ранжирует возможности и выбирает момент. Тогда сбой модели не выходит за явно заданные границы и не превращается в неуправляемый риск.
Переобучение держат под контролем процедурой: выборка делится по времени, а не случайно, качество проверяется на периоде, которого модель не видела, обучение идёт на скользящем окне, а расхождение прогноза с фактом отслеживается постоянно. Просели метрики — откат к предыдущей версии.
Интерпретация решений нужна для разбора инцидентов и риск-контроля: видно, какие признаки дали вклад в конкретную сделку и почему бот вошёл. Логи решения и понятные пороги срабатывания делают поведение модели проверяемым, а не чёрным ящиком.
Технические сомнения: надёжность, риск и поддержка системы
До запуска на реальном счёте заказчик проверяет не точность прогноза, а поведение бота в нештатных ситуациях: обрыв связи с биржей, компрометация ключей, отказ стратегии. Ниже — ответы на четыре сомнения, которые чаще всего возникают на этом этапе.
Что будет, если связь с биржей оборвётся при открытой позиции?
Состояние позиции и выставленные заявки пишутся в журнал на диске, а не держатся только в памяти процесса. При обрыве бот прекращает отправку распоряжений, а после восстановления сверяет фактический счёт с учётным и закрывает расхождение до возобновления торговли. Дублирующие заявки, которые обычно и превращают короткий сбой в убыток, не возникают.
Как защищены торговые ключи?
Ключи не лежат в коде или файлах репозитория: они хранятся в защищённом хранилище и выдаются процессу на время работы. Права ключа ограничены торговлей — вывод средств по нему невозможен, поэтому компрометация не даёт доступа к балансу. Ротация проходит без остановки бота.
Что делать, если стратегия перестанет работать?
Правила торговли вынесены в конфигурацию отдельно от кода, поэтому меняются без пересборки ядра. Новая версия перед выкаткой проходит прогон на исторических данных и на тестовом счёте, метрики — просадка, доля отменённых заявок, поведение при низкой ликвидности — сравниваются с предыдущей. Откат к прежним правилам занимает минуты.
Кто отвечает за сбои после запуска?
Границы фиксируем до старта: наша зона — исполнение распоряжений, журналирование, устойчивость к обрывам и мониторинг с оповещениями; ваша — доступы, счёт и выбор стратегии. Поддержка системы включает реакцию на инциденты и плановые доработки.
Обсудим задачу и вернёмся с оценкой и планом работ
Арбитражный бот — это связка модели, исполнителя заявок и контроля риска, поэтому оценка «на глаз» здесь не работает. Чтобы вернуться с планом работ и сроками этапов, а не с вилкой предположений, нам нужно увидеть данные и ограничения конкретного контура. Подготовьте к разговору:
- перечень площадок и типов событий стратегии: расхождение котировок, движение линии, несостыковка лотов;
- исторические данные — глубина архива, частота снимков стакана, записаны ли исходы событий;
- ограничения площадок и каналов: лимиты запросов, задержка отклика, способы выставления заявок;
- правила риск-контроля — предельная просадка, стоп-условия, нужен ли ручной подтверждающий шаг;
- целевые метрики: допустимая доля ложных сигналов, время от события до заявки, устойчивость к обрывам связи;
- кто со стороны заказчика валидирует сигналы и принимает этапы.
Этого достаточно, чтобы определить состав команды — инженер данных, ML-специалист, серверный разработчик, инженер инфраструктуры — и зафиксировать сроки по этапам: разбор данных, прототип модели, сервис предсказаний, интеграция с площадками, мониторинг. Каждый этап закрываем демонстрацией на ваших данных и передачей документации: схемы потоков, описание признаков, регламент переобучения и отката модели. Опишите задачу — вернёмся с оценкой и планом работ.







