27 Сентября 2026 · исследование

Бэктест прошёл. В бумажной торговле не исполнилось 37% заявок.

Бэктест прошёл. В бумажной торговле не исполнилось 37% заявок.

В бэктесте из 100 отправленных заявок исполненными считались 91. В бумажной торговле та же стратегия получила 63 исполнения. Медианное время от сигнала до подтверждения заявки составило 84 миллисекунды, а 12 из пропущенных исполнений пришлись на лимитные заявки, которые бэктест счёл исполненными, как только цена коснулась их.

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

Что означает соответствие заявок между бэктестом и бумажной торговлей?

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

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

СравнениеЧто помогает выявитьПример
Время и сторона решенияРазличия во входных данных или расписанииСигнал в бумажной торговле срабатывает на один бар позже
Запрошенные объём и ценаОкругление, риск или правила площадкиБэктест отправляет 0.013 BTC, бумажная система округляет до 0.01
Переходы между состояниями заявкиПроблемы с отправкой, отклонением и отменойБэктест считает запрос на отмену завершённой отменой
Объём и цена исполненияОптимистичная модель исполнения или движение рынкаЦена коснулась лимита — бэктест засчитывает полное исполнение, но в бумажной торговле исполнения нет

Почему на касание цены лимитными заявками пришлось так много пропусков?

В нашем бэктесте использовались минутные бары. Если лимитная цена попадала в диапазон максимума и минимума бара, заявка считалась исполненной. Это правило показывает, торговал ли рынок по такой цене в какой-то момент минуты. Но оно не отвечает на вопросы, была ли наша заявка активна в тот момент, первой ли она стояла в очереди и прошёл ли после её поступления достаточный объём торгов.

Бумажные логи выявили проблему со временем. Стратегия рассчитала сигнал в 12:03:00.000, но событие рыночных данных дошло до процесса отправки заявки на 31 миллисекунду позже. Проверки риска заняли ещё 22 миллисекунды, а симулятор площадки подтвердил заявку спустя ещё 31 миллисекунду. При быстром движении исторический бар может создавать впечатление, что цена была достижима, хотя лимитная заявка поступила уже после того, как рынок её прошёл.

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

Как измерить расхождение и не обмануть себя?

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

  1. Связывайте события по ID решения или клиентской заявки, а не по времени, которое вы пытаетесь угадать задним числом.
  2. Сначала сравните решения: время сигнала, сторону, запрошенный объём, тип заявки и лимитную цену.
  3. Для совпадающих решений сравните задержку подтверждения, отклонения, время открытия, время отмены, исполненный объём и средневзвешенную по объёму цену исполнения.
  4. Показывайте доли по типу заявки и рыночным условиям. Общая доля исполнений 63% может скрывать 90% для рыночных заявок и 35% для пассивных лимитных.

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

91%доля исполненных заявок в бэктесте
63%доля исполненных заявок в бумажной торговле
28 п.п.разница, которую нужно изучить

Что стоит изменить в бэктесте?

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

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

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

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

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

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