Инструменты бэктеста могут давать разные ответы на одну и ту же торговую идею, потому что они используют разные данные, разный учёт момента срабатывания индикаторов, разное моделирование ордеров и разные допущения о затратах. Выбирайте ПО, задавая вопрос, можно ли проверить и воспроизвести эти решения, а не сравнивая самую высокую кривую доходности. Бэктест — это историческая модель; его результат не показывает, что стратегия будет прибыльной или что реальная площадка исполнит ордера так же.
Начните с контролируемого набора тестов
Прежде чем сравнивать функции, составьте одну небольшую фиксированную спецификацию исследования: рынок и контракт, интервал данных и даты, правило сигнала, момент выставления ордера, размер позиции, комиссии и фандинг. Сохраните входные свечи и версию стратегии. По возможности используйте одни и те же файлы и настройки в каждом кандидате и отмечайте любое преобразование, которое мешает точному совпадению.
| Область | Вопрос для проверки | Какие данные сохранить |
|---|---|---|
| Данные | Можно ли определить поставщика, тип рынка, отметки времени, часовой пояс, пропуски и синтетические строки? | Источник, дата получения, охват, необработанный экспорт или отпечаток |
| Момент срабатывания сигнала | Оценивается ли правило на информации, доступной в тот момент? Когда его ордер может впервые исполниться? | Отметка времени сигнала, соглашение о баре, отметка времени входа |
| Ордера | Что происходит при гэпе, частичном исполнении, устаревшей цене или баре, пересекающем и стоп, и цель? | События по ордерам, модель исполнения, правило для неоднозначного бара |
| Затраты и контракт | Явно ли заданы уровень комиссии, спред, проскальзывание, расчёт фандинга, размер тика, маржа и допущения о ликвидации? | Конфигурация и реестр затрат; отмечайте неизвестные пункты как не смоделированные |
| Воспроизводимость | Можно ли снова запустить и проверить точную стратегию, данные и версию движка? | Версия стратегии, отпечаток входных данных, настройки, реестр сделок |
Пропущенные значения должны оставаться видимыми. Если фандинг недоступен, инструмент, который молча считает его нулевым, делает иное допущение, чем инструмент, который исключает этот денежный поток и помечает это. Перед сравнением результатов уточните семантику спота, фьючерсов с датой экспирации или бессрочного фьючерса; у этих инструментов не одна и та же модель фандинга или маржи.
Используйте четыре теста, которые могут не пройти
- Проверка момента срабатывания: создайте короткую последовательность свечей, которую можно проверить вручную. Зафиксируйте, когда сигнал становится известен и какую следующую цену использует движок. Добавьте гэп, чтобы увидеть, исполняется ли стоп на своём уровне или по худшей доступной цене в рамках выбранной модели.
- Проверка неоднозначности: включите бар, у которого и максимум, и минимум пересекают и стоп, и цель. Сам бар OHLC не показывает, что было первым. Полезный инструмент раскрывает своё правило очерёдности или помечает результат как неоднозначный; он не должен молча выдавать один путь за наблюдавшийся факт.
- Проверка на заглядывание в будущее: зафиксируйте запуск, затем добавьте более поздние свечи. Более ранние события сигналов и ордеров не должны смещаться только из-за добавления будущих строк; позиция, всё ещё открытая на старом конце выборки, может позже получить выход. Провал теста указывает на заглядывание в будущее, пересмотренные данные или правило с состоянием, которое требует изучения.
- Проверка повторного запуска и затрат: повторите тот же зафиксированный ввод, затем меняйте по одному допущению за раз. Убедитесь, что запуск на тех же входных данных воспроизводим и что добавленные комиссии, фандинг или проскальзывание попадают в реестр один раз. Сохраняйте оба запуска, а не только более привлекательный.
Проведите небольшой набор опровергающих тестов
Используйте несколько строк, где вы уже знаете, какая информация доступна и что движок обязан раскрыть. Цель — выявить допущения до того, как тратить время на масштабный поиск стратегий.
- Сигнал по закрытию: сделайте так, чтобы сигнал зависел от финального закрытия свечи. Зафиксируйте, когда это закрытие становится известно и какое первое смоделированное исполнение разрешает движок. Более раннее исполнение требует явного альтернативного механизма данных или ордеров; пометка на свече сама по себе не доказывает исполнение.
- Гэп через стоп: поставьте стоп на $95 и сделайте так, чтобы следующая наблюдённая цена открылась на $92. Спросите, может ли модель исполнить на уровне стопа, по следующей доступной цене или по другому заявленному правилу. Тест пройден, когда выбранное поведение видно и согласуется с задокументированной моделью ордеров, а не когда все инструменты показывают одно и то же число.
- Стоп и цель в одном баре: разместите стоп и цель внутри диапазона максимума-минимума свечи. OHLC сам по себе не показывает, какая цена была первой. Инструмент должен раскрыть предполагаемую последовательность, использовать более детальные данные, если они доступны, или пометить результат как неоднозначный.
- Пропущенный фандинг (carry): удалите наблюдения фандинга за один интервал. Проверьте, сохраняет ли запуск статус «неизвестно», исключает ли пропущенный денежный поток с предупреждением или применяет раскрытый запасной вариант. Молчаливое превращение пропущенных данных в нулевой платёж меняет сам вопрос.
- Точный повторный запуск: повторите запуск с теми же сохранёнными данными, правилом, версией движка и настройками. Сравните события сделок и итоги реестра. Затем добавьте более поздние бары и убедитесь, что более ранние закрытые события не меняются; позиция, открытая на исходной границе выборки, может получить более поздний выход.
Сохраняйте для каждого теста входной файл, ожидаемое поведение, наблюдённый результат, версию и решение. Записывайте результат как подтверждено, настраивается, ограничено или не документировано. Не усредняйте эти оценки в один балл продукта: недокументированное правило исполнения при гэпе нельзя компенсировать красивым графиком. Точно так же провал небольшого проверочного теста — это повод воспроизвести и понять различие, а не доказательство того, что весь продукт непригоден.
Моделирование ордеров — это выбор ПО, а не универсальное свойство под названием «реалистичность». Текущая документация TradingView по Pine Script v6 описывает эмулятор брокера, который исполняет по данным графика и предполагает внутрибарный путь цены на исторических барах; его Bar Magnifier может использовать бары младшего таймфрейма, где они доступны. Текущая документация QuantConnect по моделям исполнения говорит, что встроенные модели исполнения в бэктесте предполагают полное исполнение, и описывает поведение при устаревшей цене. Это примеры для конкретных платформ, а не рейтинг. Они показывают, почему стоит читать модель для именно того продукта, версии и настроек, которые рассматриваются.
Сравните доказательства, затем сравните баллы
Если два инструмента расходятся, сравните первую различающуюся строку в реестре сделок: время сигнала, время ордера, цену исполнения, количество, комиссии, фандинг или причину выхода. Проверьте допущения о данных и исполнении, прежде чем смотреть на итоговую доходность. Одинаковые входные данные не требуют идентичных результатов, когда движки реализуют разные правила; цель — объяснить различие и решить, подходит ли каждая модель для поставленного вопроса.
Отложенный период помогает только в том случае, если решения, принятые после его просмотра, записаны. Постоянная настройка на одних и тех же «нетронутых» данных превращает их в ещё одну исследовательскую выборку. Работа Probability of Backtest Overfitting обсуждает, почему простой отложенный период может не уловить повторяющийся отбор стратегий. Ведите журнал изменений как для отброшенных, так и для сохранённых вариантов; не считайте самый сильный запуск ПО независимым доказательством.
Наконец, изучите безопасность, экспорт данных, разрешения аккаунта, цену и сроки хранения в текущих условиях поставщика. Подключение к публичному рынку только для чтения, гипотетический демо-ордер и подписанный реальный ордер — это разные возможности. Никогда не передавайте ключ для подписи только ради просмотра графика или воспроизведения исторических данных.
Движок SuperQuant выполняет бэктесты раз в час, а отдельный процесс демо-торговли выполняется вручную; встроенные примеры историй синтетические. Его расчёты исполнения и маржи — упрощённые модели, они не сертифицированы биржей и не отправляют реальные ордера. Эти границы описывают данный продукт, а не заявляют о его превосходстве. Используйте руководство по бэктесту, руководство по затратам и руководство по качеству данных, чтобы изучить связанные допущения. Это руководство носит образовательный характер и не является продвижением продукта или инвестиционной рекомендацией.