12 Ноября 2026 · исполнение

Ваш бэктест исполнился по официальному закрытию. Вы так и не вошли в аукцион.

Ваш бэктест исполнился по официальному закрытию. Вы так и не вошли в аукцион.

Официальное закрытие в файле по акциям выглядит как любая другая цена. Метка времени 16:00:00 Eastern, одно число, готово к исполнению. Дневные сигналы его маркируют. Ребалансировки бьют в него. Исследовательский агент воспримет его как котировку, которая сидела в стакане и ждала вас.

Закрытие — это аукцион, а не котировка. Это цена кросса заявок on-close, которые должны были быть приняты до отсечки. Если бэктест исполнился там, не вступив в этот пакет, он взял принт, частью которого вы бы не были.

Исполнение по 16:00 так, будто кросс был рыночной заявкой

Обычная уловка: посчитать сигнал на закрытии или сразу перед ним, исполнить по официальному закрытию, проставить 16:00. В тихий вторник по AAPL ложь — несколько центов. В дни, которые доминируют в книге с ежедневной ребалансировкой, это вся сделка.

В 16:00:00.000 кросс закрытия идёт или только что прошёл. Исполнимая заявка, которую вы отправите в этот момент, в этот кросс не попадёт. Она приземлится в том, что осталось: остаточный видимый объём, неполный лот, продлённая сессия на ARCA или Nasdaq. Этот принт может быть в двух центах от официального закрытия или в сорока базисных пунктах, и это другой пул ликвидности. На реконституции Russell, на конце месяца или в пятницу тройного ведьмовства закрытие часто составляет двузначную долю дневного объёма. Это и была ликвидность. Вас в ней не было.

3:50отсечка on-close NYSE (ET)
3:55отсечка closing-cross Nasdaq (ET)
~10%типичный объём large-cap в закрытии

Мы случайно проторговали это на бумаге. Подкрутка параметра приземлилась в 15:48. Бэктест по-прежнему исполнял каждое имя по официальному закрытию. OMS отправил обычные рыночные заявки в 16:00:03, потому что никто не подключил MOC. Принты постмаркета, горстка отклонений и недобор в 19 базисных пунктов относительно файла в день, когда файл говорил, что мы флэт к закрытию. Стратегия не сломалась. Сломалось правило исполнения.

Я до сих пор думаю о 15:49 как о физическом месте. Кто-то меняет вес. Кто-то другой смотрит на часы. Отсечке всё равно, кто из вас прав.

MOC — это заявка, которая на самом деле запрашивает этот кросс, и даже MOC — не обещание. Халт, пауза LULD, отменённый аукцион, имя, которое так и не открылось: вы можете быть флэт в 16:00 с рабочей on-close, которая умирает. LOC имеет право промахнуться полностью. Если кросс — $40.12, а ваш лимит — $40.00, вы ничего не держите. Куча бэктестов всё равно записывает закрытие.

Хуже: некоторые вендорские файлы хранят композитное закрытие, которое никогда не печаталось ни на одной площадке. К композиту нельзя присоединиться. Если стратегия отправила бы NYSE MOC, значимое исполнение — это кросс NYSE, в том размере, который аукцион поглотил бы.

Называть последний принт регулярной сессии закрытием

Некоторые пайплайны принципиально отвергают официальное закрытие и берут последний принт SIP до 16:00, потому что этот принт хотя бы «случился». На mega-cap последний и официальный часто стоят в центе или двух друг от друга, и вы не заметите. На mid-cap последний принт может быть 200 акций в 15:59:51, подписанный тем, кто снял остаточный display. Официальное закрытие двумя секундами позже — это кросс на миллион акций по другой цене.

Индекс, корзина создания ETF и каждая ребалансировка MOC торговали кросс. Ваш бэктест торговал остаток. И к последнему принту не прилагается ваш размер. Если этот принт — 400 акций, а ваш клип — 5,000, вы не получили эту цену. Вы получили метку времени, которая случайно оказалась последней.

Я видел файл по mid-cap, где last-print против официального закрытия сдвинулся на 28 центов в четверг ребалансировки. Бэктест, который брал last, выглядел более «подкованным в микроструктуре». Это был просто другой, более тонкий рынок, и он всё равно предполагал, что мы могли быть теми 200 акциями.

Сдвигать исполнение на завтрашнее открытие ради консервативности

Третья увёртка всплывает на код-ревью как комментарий: не предполагайте, что мы можем торговать закрытие, поэтому исполняйте на следующем открытии. Звучит по-взрослому. Это строит другую стратегию.

Сигнал close-to-close, исполненный на следующем открытии, съел ночной гэп. Для многих факторов по акциям этот гэп — большая часть хода, которым вы думали владеть. Исполнение на открытии не делает бэктест осторожным. Оно переносит P&L в сессию, которую вы не собирались торговать, и бросает вас в аукцион открытия, который вы тоже не моделировали.

На бумаге эти обломки легко прочитать неправильно. Дневной P&L бэктеста по-прежнему совпадает с сигналом. Бумажная книга держит ночь индексного гэпа и утро проскальзывания opening-cross. Потом люди спорят про implementation shortfall, хотя честное описание в том, что две системы делают не одну и ту же сделку.

Но открытие — тоже аукцион. Если вы пропустили вчерашнюю отсечку, вы не получаете автоматически чистый last на 9:30. Вы получаете механику MOO/LOO, имбаланс и гэп. Называть это консервативным исполнением закрытия — просто прятать второй несмоделированный кросс под добродетельным комментарием.

Исполнение, которое вы записалиЧто площадка на самом деле требовалаКак выглядят обломки
Официальное закрытие, без типа заявкиMOC или LOC, принятые до отсечки этой площадкиПринт постмаркета, отклонение или композитная цена, которую никто не хостил
Последний принт SIP до 16:00Сделка, в которой вы могли быть, в вашем размереОстаток в 200 акций, принятый за исполнение клипа
Следующее открытие как «более безопасное» закрытиеМодель opening-cross плюс ночной гэпДругая стратегия, всё ещё аукцион, всё ещё промах
Если бумажный счёт не может отправить MOC или LOC, бэктест не получает официальное закрытие. Смените правило исполнения. Не аппроксимируйте кросс рыночной заявкой на 16:00.

Честная развилка невелика. Либо исследовательский контракт говорит, что мы в закрытии, и тогда заявка — on-close, с меткой времени до 15:50 на NYSE или до 15:55 на Nasdaq, с размером относительно ожидаемого объёма закрытия, и ей позволено истечь без исполнения, если это LOC. Либо мы не в закрытии, и тогда постмаркет или следующее открытие — именованная политика со своим аукционом, а кривая капитала перестаёт носить ярлык 16:00.

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

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