Распространённые ошибки криптобэктеста и способы их обнаружить
Самые опасные ошибки бэктеста улучшают результат, а не делают график явно сломанным. Надёжная проверка ищет утечку информации, многократную подгонку, недостающие издержки и чрезмерную концентрацию до вопроса о прибыльности стратегии.
Исключите заглядывание в будущее и временные смещения
Заглядывание в будущее возникает, когда решение использует сведения, которых в моделируемый момент ещё не было. Частые примеры: вход по цене закрытия той же свечи, которая сформировала сигнал; преждевременное использование закрытой свечи старшего таймфрейма; выбор выгодного порядка максимума и минимума внутри одной свечи.[4][2]
Учитывайте все проверенные идеи и параметры
Если проверены сотни вариантов, а показан только лучший, его результат содержит удачу отбора. Ведите журнал экспериментов, ограничивайте число свободных параметров и оставляйте данные, которые не влияли на выбор правил. Соседние значения параметров должны образовывать устойчивую область, а не единственный узкий пик.[3][4]
Учитывайте не только запуски формального оптимизатора. Изменение списка инструментов, периода, семейства индикаторов, типа выхода, ориентира или порога успеха после просмотра результата — тоже попытка. Записывайте каждую такую попытку. Если результат уже повлиял на решение, относите эти данные к разработке и ищите действительно независимое подтверждение. Чем шире был поиск, тем выше должна быть планка для итогового кандидата.
Изучайте всю область параметров, а не только строку-лидера. Проверьте небольшую сетку вокруг выбранных значений и ищите широкое плато сходных результатов в разные периоды. Один резкий пик указывает на зависимость от отдельных исторических наблюдений. Предпочтительнее простое значение внутри устойчивой области. Сравнивайте одновременно чистый результат, просадку и число сделок: гладкая поверхность доходности может скрывать слишком маленькую выборку.
| Признак | Почему это опасно | Как проверить |
|---|---|---|
| Работает одно точное значение | Оптимум может быть случайным шумом | Проверить соседние значения |
| Много отброшенных вариантов | Реальное число попыток скрыто | Записать все проверенные семейства правил |
| Результат есть только на обучающей выборке | Правила могли запомнить один период | Зафиксировать правила и проверить позже |
| Сложные фильтры и мало сделок | Свободных параметров больше, чем данных | Упростить модель или расширить выборку |
Проверьте полноту данных и состав инструментов
Если использовать только активы, доступные сегодня, из истории исчезнут неудачные и исключённые из листинга инструменты. Пропуски свечей, недостаточный прогрев индикаторов, изменение спецификаций контрактов и неполные ряды финансирования или открытого интереса незаметно меняют сигналы. Сохраняйте предупреждения и указывайте состав доступных инструментов для каждого исторического момента.
Сначала составьте отчёт о полноте данных. Для каждого инструмента укажите первую и последнюю доступную метку времени, пропуски и дубликаты, период прогрева, необходимые внешние ряды и причины исключения. Сравните фактически доступный набор инструментов с заявленным рынком стратегии. Если в тесте используются только текущие листинги, прямо отметьте смещение выжившего. Не подменяйте отсутствующее внешнее наблюдение нулём, если источник не определяет ноль как корректное значение.
- До расчёта сигналов найдите пропущенные и дублированные свечи.
- Оставьте достаточно предшествующих данных для прогрева каждого индикатора.
- Зафиксируйте делистинги, переименования и периоды недоступности инструментов.
- Не добавляйте прибыльный инструмент после просмотра результата.
- Считайте неполный ряд внешних сигналов ограничением, а не нулевыми событиями.
Смоделируйте исполнение, издержки, плечо и ликвидацию
Если считать исполненным любой лимитный ордер при одном касании цены, игнорировать bid-ask-спред, списывать одну комиссию вместо комиссии за каждое исполнение или пропускать финансирование, можно получить прибыль, недостижимую на рынке. Плечо должно влиять на маржу и риск ликвидации; нельзя умножать на него только прибыльный PnL.
Проверьте модель на неблагоприятных примерах: свеча коснулась и стопа, и цели; цена открылась за стопом; лимит был затронут только экстремумом; размер ниже биржевого минимума; позиция с плечом приблизилась к ликвидации. До расчёта запишите ожидаемое поведение модели. Неразрешённую неопределённость внутри свечи показывайте как ограничение или диапазон чувствительности, а не как точное выгодное исполнение.
правдоподобный чистый результат = валовой торговый результат − все издержки исполнения + финансирование со знакомКонкретная формула зависит от продукта, но каждое предположение должно быть видимым и проверяемым. Если небольшое ухудшение исполнения уничтожает преимущество, у стратегии нет достаточного запаса.
Не используйте показатели, скрывающие хрупкость
Доля прибыльных сделок без отношения средней прибыли к среднему убытку, доходность без просадки и годовой пересчёт короткого периода могут вводить в заблуждение. Проверяйте число и распределение сделок, время восстановления, концентрацию по инструментам и месяцам, а также сравнение с простым ориентиром. Одна исключительная сделка не должна скрывать постоянные убытки.
- Сравните чистый и валовой PnL с простым ориентиром.
- Проверьте максимальную просадку и время ниже предыдущего максимума капитала.
- Найдите крупнейшую сделку и пересчитайте результат без неё.
- Разбейте результат по периодам, инструментам, направлениям и режимам волатильности.
- Убедитесь, что контрольная выборка не использовалась при разработке правил.
Проведите критическую проверку привлекательного бэктеста
Предположим, что результат преувеличен, и попытайтесь найти механизм, прежде чем принять его.
- Постройте временную шкалу доступности каждого сигнала и возможного исполнения.
- Перечислите все проверенные варианты, отклонённые параметры и решения по составу инструментов.
- Пересчитайте результат с консервативным исполнением, полными издержками и реалистичным финансированием.
- Исключите крупнейшую прибыльную сделку и разделите оставшиеся сделки на независимые периоды.
- Запишите нерешённые ограничения и выберите: отклонить стратегию или назначить отдельную проверку.
Проверка бэктеста на типичные ошибки
Не переводите стратегию дальше, пока остаётся неизвестным хотя бы один критический элемент.
- Ни один сигнал не использует будущие или ещё не закрытые данные.
- Число проверенных вариантов и процесс отбора задокументированы.
- Состав инструментов, прогрев и пропуски истории доступны для проверки.
- Исполнения, комиссии, спред, проскальзывание, финансирование, плечо и ликвидация моделируются последовательно.
- Доходность оценивается вместе с просадкой, распределением, ориентиром и контрольной выборкой.
Почему контрольный список не является доказательством
Такая проверка уменьшает известные способы завысить исторический результат, но не устраняет неизвестные дефекты данных, ошибки реализации, изменения рынка и будущей ликвидности. Аккуратный бэктест — более сильный эксперимент, а не гарантия. Paper, тестовая среда и ограниченный запуск с реальным капиталом остаются отдельными проверками.
Источники и дополнительное чтение
Поведение продукта сверено с документацией и кодом SteadyEdge, а изменчивые сведения о биржах и платформах ведут на актуальные официальные источники.
- Как SteadyEdge оценивает стратегииSteadyEdge
- Почему результаты реальной торговли и ретроспективной проверки различаютсяСправочный центр SteadyEdge
- Как переобучение при ретроспективной проверке в финансах приводит к ложным открытиямSignificance / Oxford Academic
- Глубокое обучение с подкреплением для торговли криптоактивами: практический подход к устранению переобучения при ретроспективной проверкеarXiv
Проверьте ошибки до добавления нового индикатора
Используйте методологию и предупреждения SteadyEdge, чтобы критически проверить текущий отчёт. Сначала устраните проблемы качества данных и модели, а уже затем пытайтесь улучшать показатели.