Backtrader интеграция: где расходятся тест и живая торговля
Расхождение бэктеста и торговли почти никогда не связано с ошибкой в логике стратегии. Стратегия видит закрытие бара, принимает решение и в тесте тут же получает исполнение по этой же цене. На живом счёте между сигналом и постановкой заявки есть задержка, а между постановкой и заполнением — движение рынка, которого в истории не было.
Второй источник — данные. Исторический бар сводит интервал к четырём числам: открытие, максимум, минимум, закрытие. По ним нельзя определить, стояла ли на уровне заявка и был ли за ней реальный объём. Тест считает сделку исполненной на касании цены, живая торговля оставляет её неисполненной: перед вами прошёл крупный лимит.
Третий — модель заполнения. По умолчанию заявка закрывается целиком по одной цене, тогда как реальный стакан разбивает её на части, и средняя цена отличается от сигнальной. Это и есть проскальзывание: на ликвидных инструментах оно незаметно, на тонких — превращает ровную прибыльную кривую в убыточную.
Пока все три фактора спрятаны в допущениях по умолчанию, результат на истории ничего не говорит о результате на счёте. Интеграция Backtrader ценна именно здесь: один и тот же код запускается и на истории, и в живой торговле, а проскальзывание, комиссия и правила исполнения заявок задаются явно и проверяются на тех же данных. Разбираем, как это закрывается.
Что меняется в результатах после перевода стратегии в живой контур
Контрольные прогоны на одном и том же срезе данных дают совпадающий результат — не «примерно похожий», а сходящийся до отдельной сделки. Это первое, что меняется после корректной интеграции: фиксируются порядок обработки баров, модель исполнения и источник котировок, поэтому повторный запуск не приносит сюрпризов.
Задержка исполнения перестаёт быть допущением. Заявка в живом контуре проходит через адаптер брокера, подтверждается не мгновенно и может исполниться частями — модель исполнения это учитывает, и доля отклонённых сделок падает с пятнадцати-двадцати процентов до единичных случаев.
Устойчивость стратегии проверяется на разных рыночных режимах — тренд, боковик, высокая волатильность — и на смежных периодах, не участвовавших в настройке. Если параметры подобраны под один участок истории, на остальных просадка растёт в разы; после проверки видно, какие настройки держат форму, а какие просто подогнаны.
Воспроизводимость результатов держится на сверке: журнал сделок из живого контура и из тестового сопоставляется по времени входа и выхода. Расхождение метрик выше двух процентов блокирует выпуск — это признак ошибки в интеграции, а не «другого рынка».
Интеграцию ведём на Backtrader: один и тот же код стратегии работает и на истории, и в живом контуре, поэтому расхождение объясняется моделью исполнения, а не разной логикой. На выходе — числа, за которые можно отвечать: сколько заявок не дошло, как ведёт себя стратегия при смене режима, совпадают ли контрольные прогоны.
Режимы подключения: архив данных, потоковый тест, живой счёт
Одна и та же стратегия на Backtrader запускается в трёх режимах: прогон по архиву, потоковый тест на живых котировках и работа на живом счёте. Именно поэтому такой контур и выбирают — логику не переписывают при переходе от проверки гипотезы к реальным заявкам. Но одинаковый код не значит одинаковое поведение: на каждом режиме меняются источник данных, момент постановки заявки и модель её исполнения, и именно эти различия дают расхождения в результатах.
| Режим | Когда подходит | Ограничения |
|---|---|---|
| Архив данных | Перебор гипотез, оптимизация параметров, прогон по длинной истории | Нет задержек и частичных исполнений: заявка закрывается по цене бара — идеализация, которой на площадке не бывает |
| Потоковый тест | Проверка логики на живом потоке без риска: котировки идут в реальном времени, ордера не выводятся наружу | Задержки и проскальзывание только модельные, расхождение с реальным исполнением остаётся |
| Живой счёт | Реальные заявки и подтверждения от площадки | Отказы, отклонённые ордера, обрывы связи; нужны идемпотентность заявок и восстановление позиции после рестарта |
Мы прогоняем стратегию через все три режима на одном наборе инструментов и одном периоде и сравниваем кривые доходности. Если потоковый и живой результаты расходятся с архивным сильнее, чем допускает логика стратегии, причина почти всегда в модели исполнения — её правят до того, как в контур попадут реальные средства. Отдельно проверяем обрыв соединения и корректность восстановления состояния позиции на том же коде.
Порядок работ: от аудита стратегии до передачи контура
Порядок шагов фиксируем до старта работ: он закрывает главный риск — расхождение результатов бэктеста и торговли на реальном счёте. Причина обычно не в логике стратегии, а в разнице данных, комиссий, проскальзывания и момента исполнения заявки в тесте и в рабочем контуре.
- Аудит стратегии и данных. Разбираем логику входов и выходов, проверяем исторические ряды на пропуски, дубли и заглядывание в будущее, согласуем целевые метрики.
- Схема контура. Определяем состав компонентов, потоки данных, точки отказа и поведение при обрыве связи — до написания кода.
- Настройка окружения. Собираем изолированное окружение с зафиксированными зависимостями, чтобы прогон на другом стенде давал тот же результат.
- Контрольные прогоны. Прогоняем стратегию на историческом участке и параллельно на тестовом счёте, сверяем сделки, время входа и итоговые метрики.
- Приёмка. Сравниваем результат с допусками, согласованными на аудите; расхождения разбираем до передачи, а не после запуска.
- Передача контура. Отдаём конфигурации Backtrader, схемы, регламент запуска и восстановления, документацию и доступы.
- Обучение и сопровождение. Показываем, как менять параметры, читать отчёты и штатно останавливать контур, и остаёмся на связи по инцидентам.
Каждый этап заканчивается артефактом, который можно проверить: отчёт по данным, схема, конфигурация, протокол прогонов, подписанный лист приёмки.
Конфигурации, журналы и регламенты, которые остаются у вас
Передаём не набор скриптов, а воспроизводимый торговый контур: те же конфигурации, те же данные, те же журналы прогонов, на которых получены цифры в отчёте. Ваша команда разворачивает его на своей стороне и получает совпадающие результаты — без доступа к нашему окружению и без уточняющих писем. Ниже — что именно фиксируется в передаче.
- Конфигурации стратегий и источников данных: таймфреймы, состав инструментов, комиссии и модель проскальзывания, параметры риска. Один файл — один прогон, без правок «по памяти».
- Схема контура: какие компоненты участвуют, где хранятся данные, чем технически разделены тестовый прогон и боевой запуск, в какой точке сходятся сигналы брокера.
- Журналы прогонов: сырые записи по каждой сделке, кривая капитала, сводка по просадкам и доходности. Любую цифру из отчёта можно развернуть до конкретной сделки.
- Регламенты: что делать при расхождении тестового и боевого результата, как останавливается стратегия, как откатывается на предыдущую конфигурацию, кому уходит оповещение.
- Правила доступа: где хранятся ключи и учётные данные, кто ими пользуется, как проходит ротация, чем ограничен боевой контур при внештатной ситуации.
- Инструкции для команды: запуск и остановка, добавление нового инструмента или стратегии, обновление исторических данных, чтение журналов.
- Чек-лист приёмки: набор проверок, которые ваша сторона прогоняет самостоятельно и подтверждает воспроизводимость на своих данных.
Документация обновляется вместе с кодом — при изменении логики входов или модели издержек правки в регламенты вносим мы, а дальше это делаете вы по описанному порядку. Опишите задачу — вернёмся с оценкой и планом передачи.
Кейс: как сократили расхождение между тестом и торговлей
Клиент — команда алгоритмической торговли. Стратегия на исторических данных показывала устойчивый рост, но на реальном счёте результат отличался настолько, что решения приходилось принимать заново. Корень был не в логике стратегии, а в контуре: тестовый прогон и боевое исполнение жили в разных реализациях, поэтому расхождение накапливалось ещё до первой сделки.
Что было до интеграции
Замеры до работ: итоговая доходность теста и реальной торговли расходились на 30–40%, а на отдельных периодах знак результата менялся на противоположный. Причины — идеализированное исполнение заявок, отсутствие проскальзывания, разный набор исторических данных и продублированная логика сигналов в двух местах.
Что перестроили в контуре
Мы свели тест и торговлю к одному ядру расчёта сигналов на Backtrader, добавили модель исполнения с задержкой и проскальзыванием, привели поток котировок и корпоративные события к единому источнику и включили журналирование каждого решения с параметрами на входе.
После этого расхождение итоговых метрик сократилось до 4–6%, доля сделок с необъяснимым отклонением — с 18% до 1–2%. Прогон годовой истории ускорился вдвое за счёт кэша данных, а перенос стратегии в боевой режим занимает часы вместо дней.
Чем отличается прогон на истории от торговли на живом счёте?
Исторический прогон и живой счёт — два разных режима исполнения одной стратегии. В тестовом контуре свеча уже закрыта, а цена сделки известна заранее; на живом счёте решение принимается по неполным данным, и между сигналом и подтверждением проходит время. Отсюда и главный источник расхождений — задержки исполнения.
Сводим различия по трём осям: данные, исполнение и контроль позиции.
| Что сравниваем | Исторический прогон | Живой счёт |
|---|---|---|
| Данные | закрытые бары, история без пропусков | поток цен с паузами и задержкой публикации |
| Исполнение | мгновенно по цене бара | заявка в очереди, частичное наполнение, проскальзывание |
| Состояние позиции | из журнала сделок | сверка с отчётом брокера, возможны расхождения |
| Повторяемость | полная, прогон воспроизводится | зависит от момента и ликвидности рынка |
Различия режимов проверяются на одном коде: Backtrader запускает ту же стратегию и на истории, и на живом счёте — меняются источник данных и брокерский интерфейс, а логика остаётся. Это снимает главный риск: расхождение между тем, что тестировали, и тем, что реально торгует.
Отдельно стоит контроль состояния: после обрыва связи или отклонённой заявки позиция на счёте может разойтись с локальным журналом. Поэтому в контур добавляют сверку с отчётом брокера, защиту от дублей при повторной отправке заявок и журнал для разбора инцидентов. Чем раньше в тестовом контуре появляются искусственные задержки и частичные наполнения, тем меньше сюрпризов на живом счёте.
Технические сомнения, которые стоит снять до старта
Часть вопросов повторяется почти в каждой интеграции Backtrader — они про то, где заканчивается красивая кривая на графике и начинается поведение, которое воспроизводится на реальном счёте. Ниже — ответы на те, что чаще всего всплывают на этапе оценки.
Как в расчёт попадают комиссии и проскальзывание?
Комиссия задаётся моделью брокера и списывается по каждой сделке отдельно, а не вычитается один раз из итоговой кривой. Проскальзывание описывается как доля от цены исполнения или фиксированный шаг: заявка закрывается по цене следующего бара, а не по закрытию сигнального. Из-за этого стратегии на частых сделках теряют заметную часть результата — и это видно до запуска, а не после первых недель торговли.
У нас свой источник данных — его можно подключить?
Да. Свой поток котировок описывается как источник с приведением к единому формату: часовой пояс, пропущенные интервалы, корректировка на сплиты и дивиденды. Это не формальность — разрывы в истории и дубликаты баров дают ложные сигналы на вход и завышенную доходность в отчёте.
Как понять, что стратегия устойчива, а не подогнана под историю?
Прогон идёт не на одном отрезке, а на нескольких рыночных режимах: тренд, боковик, резкие движения без продолжения. Смотрим, как ведут себя просадка и доля прибыльных сделок при сдвиге периода проверки. Если показатели держатся — логика переносима на реальный счёт; если рассыпается, узкое место находится на этапе тестов.
Backtrader интеграция: обсудим ваш контур и вернёмся с оценкой
Чтобы Backtrader интеграция опиралась на реальные условия, а не на допущения, нам нужен взгляд внутрь вашего торгового контура: как сейчас запускаются стратегии, откуда берутся данные и куда уходят заявки. Чем полнее вводные, тем меньше предположений в плане работ и тем точнее сроки. Стартовый набор от вашей команды обычно такой:
- репозиторий со стратегиями и правила их запуска — что уже автоматизировано, а что делается руками;
- выгрузки исторических данных: таймфрейм, глубина, учёт комиссий, проскальзывания и корпоративных событий;
- перечень брокеров и площадок, где нужна торговля в реальном времени, со способами доступа и лимитами;
- требования к риску: ограничение позиции, дневной убыток, поведение при разрыве связи и повторной отправке заявки;
- описание инфраструктуры: где будет размещён контур, какие есть ограничения по сети, доступам и расписанию работы;
- ответственный с вашей стороны, кто подтверждает логику стратегий и принимает результаты сверки;
- эталонный пример: сделка или период, где расчёт должен совпасть до копейки.
Обсуждение занимает одну встречу по делу: разбираем контур торговли, снимаем неясные места и фиксируем границы работ. После этого мы возвращаемся с оценкой задачи и планом работ — этапами, сроками и точками приёмки, где вы видите результат на каждом шаге. Опишите задачу — вернёмся с расчётом.







