22 Августа 2026 · исследования

Почему у открытых ордеров в бэктесте должны быть часы

Почему у открытых ордеров в бэктесте должны быть часы

В 10:00 стратегия отправляет лимитный ордер. В 10:03 сигнал меняется. В бэктесте ордер незаметно заменяется в 10:04, а затем в 10:05 фиксируется исполнение. При бумажной торговле исходный ордер всё ещё может стоять на бирже. Если он исполнится, пока действует и новый ордер, у стратегии окажутся два ордера и одна модель позиции, которая делает вид, будто ордер был только один.

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

Ошибка 1: считать, что новый сигнал мгновенно отменяет ордер

Во многих бэктестах целевая позиция пересчитывается на каждом баре, а затем стоящий в книге ордер просто заменяется тем, которого требует последний сигнал. Получается, что ордер исчезает ровно в тот момент, когда стратегия передумала. На реальных биржах так не работает. Запрос на отмену требует времени, и ордер может исполниться до того, как биржа его обработает.

Представьте лимитный ордер на покупку 100 акций по $50.00. В 10:03 сигнал ослабевает, и стратегия отправляет запрос на отмену. В 10:03:00.080 исполняются 60 акций; подтверждение отмены приходит в 10:03:00.110. Оставшиеся 40 акций отменены, но позиция уже включает 60 акций. Бэктест на барах, который удаляет ордер в 10:03, может показать нулевую позицию. А тот, который предполагает мгновенную отмену, но всё равно учитывает последующее исполнение, создаёт экспозицию в противоположном направлении.

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

Ошибка 2: считать срок жизни стоящего ордера бесконечным

Лимитный ордер, выставленный по сигналу в 10:00, может устареть, даже если у сигнала нет явного правила выхода. Книга ордеров меняется, волатильность колеблется, а рыночная стоимость инструмента может сместиться. Но если симулятор оставляет ордер активным до исполнения, тот может исполниться через несколько месяцев — и это исполнение будет приписано идее, которой уже давно нет.

Выберите время действия ордера в соответствии со стратегией. Для сигнала на 1 минуту может подойти срок действия 30 секунд; при дневной ребалансировке ордер может оставаться активным до закрытия. Это особенности конкретной стратегии, а не универсальные настройки. Если стратегия пересматривает цену на каждом баре, моделируйте последовательность отмены и замены, а не волшебное перемещение ордера на новую цену.

Политика ордераТипичное применениеВопрос для бэктеста
Немедленное исполнение или отменаЗабрать доступную ликвидность и остановитьсяКакая часть могла исполниться при отправке?
Короткий срок действияБыстрый сигнал с коротким окном исполненияОставался ли ордер действительным, когда цена вернулась?
До конца сессииМедленная ребалансировка или намерение исполнить ордер на аукционе закрытияПоддерживает ли биржа такой срок действия?

Ошибка 3: считать каждое касание цены исполнением

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

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

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

Моделируйте ордер, который собираетесь тестировать на бумаге

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

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

управление ордерамибэктестингисполнениебумажная торговля
ПоделитьсяXLinkedInFacebookRedditHacker NewsWhatsAppTelegramEmail
← Все статьи