АнализУрокСредний

Ловушки бэктеста: переобучение, ошибка выжившего и заглядывание в будущее

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

9 мин чтенияФакты провереныОпубликовано 20 апр. 2026 г.

Главное

  • Бэктест лишь отвечает на вопрос, что сделали бы правила при выбранных вами допущениях.
  • Переобучение растёт с каждым настраиваемым параметром; отдавайте предпочтение простым правилам и устойчивым плато.
  • Ошибка выжившего и заглядывание в будущее завышают результаты без всякого видимого предупреждения.
  • Учитывайте реалистичные издержки, используйте данные вне выборки и проводите форвард-тест, прежде чем вкладывать реальный капитал.

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

Что бэктест может и чего не может сказать

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

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

ЛовушкаЧто идёт не такБыстрая проверка
ПереобучениеПравила подгоняются, пока не совпадут с прошлым шумомРазрушает ли результат небольшое изменение настроек?
Ошибка выжившегоВ данных есть только активы, которые существуют до сих порВключает ли набор данных исключённые из листинга или слитые инструменты?
Заглядывание в будущееТест использует информацию, которой ещё не былоМогло ли это значение быть известно в момент сделки?
Игнорируемые издержкиСпред, комиссия, проскальзывание и своп не учтеныОстаётся ли результат положительным при реалистичных издержках, увеличенных вдвое?
Подгонка под данные (data snooping)Проверяется множество идей, и сохраняется только лучшаяСколько вариантов было испробовано до этого?

Переобучение: подгонка под шум

Переобучение, или подгонка под кривую (curve fitting), означает настройку стратегии настолько близко к прошлым данным, что она улавливает случайные особенности, а не повторяющееся поведение. Чем больше у правила настраиваемых параметров, тем легче это сделать.

Вот пример масштаба. Допустим, вы проверяете длины скользящей средней от 5 до 100 с шагом 5 (20 значений), размеры стопа в 20 шагах и 10 разных целей по прибыли. Это 20 × 20 × 10 = 4 000 комбинаций. Даже если каждая из них — подбрасывание монеты без реального преимущества, несколько вариантов выглядели бы отлично только по случайности. Выбор победителя из 4 000 случайных попыток говорит о том, какой вариант оказался самым везучим, а не какой лучший.

Ищите плато, а не пикиУстойчивая идея, как правило, работает с похожими результатами в окрестности настроек. Если период 20 даёт отличный результат, а 18 и 22 — плохой, вы, вероятно, нашли всплеск шума. Предпочитайте настройки из середины широкой стабильной области.

Ошибка выжившего: пропавшие неудачники

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

Условные числа показывают эффект. Предположим, в начале десятилетнего периода были доступны 100 акций. Восемьдесят уцелели и в среднем приносили 10% в год. Двадцать были исключены из листинга и в среднем теряли 15% в год. В целом по группе среднее составило (80 × 10 + 20 × −15) ÷ 100 = 5% в год. Тест только по выжившим покажет 10% — вдвое больше реальности. Та же проблема может затрагивать фонды, торговые системы с опубликованными результатами и даже валютные пары, которые были убраны с платформы.

Заглядывание в будущее: случайное знание будущего

Заглядывание в будущее (look-ahead bias) означает, что тест использует данные, которых не было бы в момент принятия решения. Нередко это неочевидно. Примеры: покупка по цене закрытия бара, когда сигнал был рассчитан по этому же закрытию; использование максимума или минимума дня для выставления ордера раньше в течение того же дня; работа с экономическими показателями в их позднее пересмотренном виде вместо версии, опубликованной в то время.

  • Совершайте сделки по цене открытия следующего бара, а не бара, породившего сигнал, если только вы действительно не можете действовать на закрытии.
  • Проверьте, что каждый индикатор использует только прошлые значения, особенно пользовательские или перерисовывающиеся индикаторы, которые задним числом меняют свои исторические значения.
  • Используйте данные «на момент времени» (point-in-time) для фундаментальных показателей и состава индексов.
  • Скептически относитесь к любому результату, который выглядит слишком гладким. Реальная торговля редко даёт идеально ровные кривые.

Издержки, исполнение и размер выборки

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

Размер выборки не менее важен. Бэктест с 25 сделками — это анекдот. Многие практики ищут как минимум несколько сотен сделок, распределённых по разным рыночным условиям, прежде чем относиться к статистике с доверием. Важны и условия: тест, проведённый только на длинном устойчивом росте, мало что говорит о боковом или падающем рынке.

Более честный порядок проверки

  1. Запишите правила до тестирования. Зафиксируйте гипотезу и правила на бумаге, включая то, сколько параметров вы будете менять. Это ограничивает возможность подстройки после просмотра результатов.
  2. Разделите данные. Настройте правила на более раннем периоде (in-sample, обучающая выборка) и сохраните более поздний период (out-of-sample, контрольная выборка) нетронутым. Типичное разбиение — около 70% для построения и 30% для проверки.Совет: Смотрите на отложенные данные один раз. Повторные подглядывания превращают их в обучающую выборку.
  3. Проверьте устойчивость настроек. Сдвигайте каждый параметр вверх и вниз. Если результаты резко меняются, правило хрупкое.
  4. Добавьте реалистичные издержки. Включите спред, комиссию, своп и проскальзывание, затем удвойте издержки и посмотрите, что останется.
  5. Пошаговое тестирование (walk-forward). Заново настраивайте правила на скользящем окне и проверяйте на следующем невиданном отрезке, повторяя это по всем данным. Так имитируется то, как вам реально пришлось бы адаптировать правила.
  6. Форвард-тест на малом размере. Запустите правила на демо-счёте или с минимальным размером на значимое число сделок и сравните реальное поведение с бэктестом.
Хороший бэктест — повод тестировать дальше, а не торговать крупнееДаже тщательно проверенный результат может не сработать в реальности, потому что рынки меняются, а ваше исполнение отличается от модели. Продукты с кредитным плечом усиливают ущерб, когда преимущество, найденное в бэктесте, оказывается иллюзией.

Часто задаваемые вопросы

Сколько сделок нужно в бэктесте?

Фиксированного порога нет, но несколько десятков — это явно слишком мало. Больше сделок уменьшает шум в статистике, а охват разных рыночных условий важен не меньше, чем само количество.

Достаточно ли тестирования вне выборки, чтобы доказать, что стратегия работает?

Нет. Оно снижает риск переобучения, но не устраняет его, особенно если вы пробуете много идей и оставляете ту, что прошла проверку. Оно также не учитывает будущие изменения рынка.

Чем бэктест отличается от форвард-теста?

Бэктест использует прошлые данные, а форвард-тест запускает правила на новых данных по мере их поступления, на демо-счёте или с небольшим реальным размером. Форвард-тесты выявляют проблемы исполнения и издержек, которые скрывает история.

Можно ли доверять опубликованному бэктесту поставщика?

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

Об автореРедакция Brokeli Редакция Brokeli пишет и проверяет наши обучающие руководства. Данные о брокерах берутся из опубликованных исследовательских срезов, а в руководствах нет торговых сигналов.Редакция →
Ловушки бэктеста: переобучение, ошибка выжившего, заглядывание вперёд · Brokeli