Стратегия, рассчитывающая сигнал по цене закрытия понедельника, не может выставить ордер по цене закрытия того же дня. Она может отправить его после того, как цена стала известна, а затем совершить сделку по более поздней доступной цене. Это небольшое решение о времени исполнения может повлиять на результат сильнее, чем хитрый индикатор.
Перед тем как писать сигнал для дневного бэктеста, зафиксируйте последовательность событий: когда свеча считается завершённой, когда стратегия выполняет расчёт, когда ордер поступает на рынок и по какой цене он мог бы исполниться. Если все эти события происходят в один и тот же момент, бэктест пропускает самое сложное.
Можно ли использовать сегодняшнюю цену закрытия, чтобы торговать по ней же?
Обычно нет. Сигнал, зависящий от итоговой цены закрытия, становится доступен только после закрывающего аукциона или последней сделки. Исполнение по той же цене предполагает, что стратегия узнала результат достаточно рано, чтобы участвовать по цене, которая сама помогла сформировать этот результат.
Возьмём простое правило: покупать, когда цена закрытия выше 20-дневной скользящей средней. На закрытии понедельника условие становится истинным. Бэктест, который покупает по цене закрытия понедельника, использует уже сформировавшуюся цену понедельника и для принятия решения, и для исполнения. В простой модели на дневных свечах честное приближение — сформировать ордер после завершения свечи понедельника и исполнить его не раньше открытия во вторник, учитывая соответствующие издержки.
Некоторые стратегии отправляют ордера на закрывающий аукцион, используя информацию, доступную до установленного времени отсечения. Такие стратегии можно тестировать, но сигнал должен опираться только на данные до отсечения, а модель исполнения должна учитывать аукцион. Само выражение «дневной сигнал» не гарантирует ни одного из этих условий.
Какую цену исполнения выбрать для дневного бэктеста?
Единой правильной цены не существует. Цена открытия следующей сессии — понятное исходное допущение, если сигнал сформирован по завершённой дневной свече, а ордер отправлен позже. Но это не гарантия: за ночь рынок может измениться, а рыночный ордер повлечёт за собой спред, комиссии и, возможно, влияние на цену.
Для приведённого выше сигнала в понедельник предположим, что закрытие было по $100, а во вторник рынок открылся по $103. Бэктест от закрытия до закрытия может показать небольшую прибыль, если считать, что покупка произошла по $100. При входе на открытии следующей сессии начальная цена составит $103. Разница в $3 — это не «проскальзывание», которое можно настроить так, чтобы оно исчезло; это ценовое следствие того, что сигнал стал известен только после закрытия понедельника.
| Когда сигнал становится доступен | Возможное исполнение | Что предполагает модель |
|---|---|---|
| После дневного закрытия | Открытие следующей сессии | Ордер может поступить на рынок до открытия или в момент открытия |
| До времени отсечения закрывающего аукциона | Закрывающий аукцион | Сигнал использует только информацию до отсечения; исполнение на аукционе моделируется |
| После дневного закрытия | Более поздняя внутридневная цена | Стратегия ждёт; для исполнения нужны внутридневные данные и заданный график |
На крипторынках «дневное закрытие» — условность, поскольку торговля продолжается и после смены временной отметки. Стратегия всё равно может использовать завершённую дневную свечу UTC, но ей нужно дождаться завершения свечи и поступления данных. Если ваш конвейер данных окончательно формирует свечу с задержкой в несколько секунд, ордер по цене на границе временного интервала особенно сложно обосновать.
Как моделировать ордера, если у меня есть только дневные свечи?
Чётко определите, что свеча может и чего не может показать. Дневные OHLCV позволяют использовать приближение по цене открытия следующей сессии, но не показывают спред в момент поступления ордера, движение цены в течение дня и то, встал ли лимитный ордер в очередь до того, как цена коснулась его уровня.
Для дневного рыночного ордера начните с цены открытия следующей сессии, а затем учтите расходы, которые стратегия понесла бы в реальности: комиссии площадки, оценку спреда и оценку влияния на цену с учётом размера ордера. Проверьте результат при повышенных издержках. Если он зависит от нулевого спреда или пренебрежимо малого влияния на цену, дневные свечи не дают оснований для такой уверенности.
Если минимум дня коснулся уровня вашего лимитного ордера, это ещё не доказывает, что ордер исполнился. Рынок мог торговаться на этом уровне до поступления ордера, или перед вами в очереди могло быть больше объёма, чем прошло сделок. Дневные свечи часто слишком грубы для достоверного моделирования очереди. Используйте данные с более высокой частотой, если вывод зависит от внутридневного исполнения, либо задайте заведомо консервативное допущение об исполнении и укажите это.
Какие проверки выявляют заглядывание в будущее в дневных данных?
Мне нравятся несколько простых проверок: они быстро выявляют допущения:
- Сдвиньте каждый ордер, сформированный на основе сигнала, на одну сессию вперёд. Если результаты резко ухудшатся, проверьте, не использовалась ли цена закрытия сигнальной свечи как цена исполнения.
- Фиксируйте отдельно время сигнала, отправки ордера и исполнения. По временным отметкам должна складываться правдоподобная последовательность без дополнительных пояснений.
- Сравните исполнение на открытии следующей сессии с более поздней, консервативной ценой исполнения. Если стратегия работает только при самой выгодной цене в диапазоне свечи, проблема связана с исполнением.
- Проверьте, как на понятие «следующая сессия» влияют праздники, пропущенные свечи и закрытие рынка. Следующий календарный день может быть неторговым.
Сдвиг на одну сессию — диагностическая проверка, а не универсальная модель исполнения. Для медленной ребалансировки портфеля, стратегии на закрывающем аукционе и криптосистемы с непрерывной торговлей нужны разные временные шкалы. Важно, чтобы эта шкала была видна.
Становится ли бэктест менее полезным из-за дневных данных?
Нет. Дневные данные вполне подходят стратегии, решения и периоды удержания в которой измеряются днями или неделями. С их помощью можно оценить, стоит ли дальше исследовать общее правило. Вводить в заблуждение они начинают тогда, когда бэктест заявляет точность исполнения, которой свечи показать не могут.
Я не раз видел, как результат стратегии резко улучшался после замены «сигнал на закрытии, исполнение на закрытии» на «сигнал на закрытии, исполнение на открытии следующей сессии». Такой результат может разочаровать, но он полезен: он показывает, сохраняется ли идея к моменту, когда по ней уже можно торговать. Храните описание временных допущений рядом с кодом стратегии. Иначе при следующем цикле оптимизации невозможное исполнение незаметно вернётся.
← Все статьи


