Интеграция модели Инвестор v.1.2.1 с API брокера: автоматизация исполнения сигналов CatBoost

Переход от точности модели на бэктесте к реальному профиту обрывается в 70% случаев из-за проскальзываний и задержек исполнения. Интеграция модели Инвестор v.1.2.1 с API брокера позволяет сократить время реакции системы с 2-3 секунд до 150-300 мс, что критично при торговле волатильными активами РФ.

Архитектура конвейера: от инференса к ордеру

Процесс превращения предсказания CatBoost в сделку должен быть атомарным. В модели Инвестор v.1.2.1 реализована схема: получение snapshot рынка через WebSocket → подача в предобученный бустер → фильтрация сигнала по порогу вероятности (например, p > 0.62 для лонга) → отправка лимитного ордера. Использование REST API для получения данных недопустимо: задержка в 500-800 мс на запрос приводит к потере 0.1-0.2% потенциальной доходности на каждом тике.

Кейс: при торговле акциями Сбера на 15-минутном таймфрейме переход на WebSocket-поток снизил проскальзывание (slippage) с 12 тиков до 3 тиков. Мой вывод: архитектура должна строиться на событийной модели (Event-driven), где триггером служит изменение цены, а не таймер.

Преодоление разрыва между бэктестом и реалтаймом

Главная ловушка — игнорирование ликвидности стакана. Модель может выдать сигнал на покупку 1000 лотов, но реальный объем на лучшем Bid может составлять всего 200 лотов. В Инвестор v.1.2.1 внедрен модуль динамического расчета объема позиции: размер ордера корректируется в зависимости от текущего спреда и глубины стакана в пределах ±2% от цены исполнения.

Пример: при попытке зайти в низколиквидный актив объемом более 5% от среднего минутного объема (ADV), модель автоматически дробит ордер на 5-10 частей с интервалом в 30-60 секунд. Это предотвращает искусственный разгон цены против собственной позиции. Экспертный вывод: без модуля контроля ликвидности любой CatBoost-прогноз превращается в лотерею.

Управление рисками и стоп-лоссы в коде

Автоматизация исполнения требует жесткого риск-менеджмента на уровне API, а не внутри модели. В Инвестор v.1.2.1 стоп-лосс выставляется одновременно с основным ордером (Bracket Order). Оптимальный диапазон стопа для краткосрочных сигналов CatBoost составляет 0.5-1.2% от цены входа, при соотношении риск/прибыль не менее 1:3.

Мини-кейс: во время резкого пролива рынка в марте 2022 года жесткие стопы в коде спасли депозит от просадки более 20%, в то время как ручное закрытие позиций из-за паники заняло бы 15-20 минут. Рекомендую использовать серверные стопы брокера, чтобы исключить риск разрыва соединения с вашим сервером.

Оптимизация скорости инференса для HFT-лайт

Скорость работы модели напрямую влияет на точку входа. Чтобы минимизировать задержки, я использую конвертацию модели CatBoost в формат ONNX или C++ через встроенный экспорт. Это сокращает время получения предсказания с 50-70 мс до 5-10 мс. В связке с LightGBM через стекинг время обработки одного тика составляет около 15 мс.

Сравнение: стандартный .predict() в Python дает задержку, которая при торговле скальперскими стратегиями съедает до 15% прибыли. Переход на оптимизированный инференс позволяет заходить в позицию на 2-3 тика раньше рынка. Вывод: для автоматизации торговля должна идти на Linux-сервере с минимальным пингом до сервера брокера (желательно < 5 мс).

Валидация исполнения и петля обратной связи

Система должна сравнивать цену, которую предсказала модель, с ценой фактического исполнения. Если отклонение (Slippage) систематически превышает 0.05%, стратегия считается нежизнеспособной вне зависимости от точности CatBoost. В модели Инвестор v.1.2.1 реализован логгинг каждой сделки с метками времени до миллисекунд.

Практический пример: анализ логов показал, что в периоды выхода новостей (например, данные по инфляции) проскальзывание вырастало до 0.3%. Решением стал временный запрет на торговлю за 5 минут до и после публикации новостей. Мой вердикт: анализ исполнения важнее, чем анализ точности предсказания.

Вывод

Для успешного запуска модели Инвестор v.1.2.1 забудьте о ручном вводе сделок и простых REST-запросах. Начинайте с реализации WebSocket-соединения и обязательного модуля контроля ликвидности. Избегайте рыночных ордеров (Market Orders) в пользу лимитных, так как в условиях российского рынка это экономит до 0.1% на каждой сделке. Лучший стек для автоматизации сегодня: Python (для логики) → ONNX (для скорости модели) → Linux VPS (для минимального пинга).