Signal Pilot
🟡 Средний уровень • Урок 32 из 82

Backtesting и реальность: это идеальное матожидание вам лжёт

16 мин. чтения • Проверка стратегии
Signal Pilot
Профессиональное обучение трейдингу
0%
Вы продвигаетесь!
Читайте дальше, чтобы завершить урок

Ваш backtest: матожидание 8R. Профит-фактор 3,5. 50 000 $ прибыли на счёте в 10 000 $.

Вы выходите в реал. Первая неделя: матожидание -2R. Профит-фактор 0,4. Счёт минус 12 %.

Что случилось? Ваш backtest соврал.

🚨 Скажем прямо

Большинство backtest — чистая фантазия. В них заложены идеальные исполнения, нулевой slippage, отсутствие спредов и волшебные входы, которых в живом рынке не бывает.

Если ваш backtest выглядит слишком хорошо, чтобы быть правдой, значит, так и есть. Вы подогнались под шум, а не под сигнал.

В этом уроке вы узнаете:

  • Почему 90 % backtest разваливаются при выходе в реал
  • 4 смертных греха: переобучение, заглядывание в будущее, нереалистичные издержки, ошибка выжившего
  • Как моделировать slippage и спреды так, чтобы они и правда отражали реальность
  • In-sample против out-of-sample (единственная проверка, которая имеет значение)
⚡ Быстрые шаги на завтра (нажмите, чтобы раскрыть)
  1. Заложите реалистичные издержки в свой backtest — Учтите 0,03-0,05 % slippage на сделку плюс фактический спред. Если результат рушится, ваше преимущество было выдуманным.
  2. Разделите данные 70/30 — Оптимизируйте на 70 % данных, проверяйте на тех 30 %, которых никогда не видели. Если out-of-sample не проходит, вы подогнали кривую.
  3. Торгуйте 30 дней на бумаге, прежде чем выходить в реал — Если бумажные результаты заметно расходятся с backtest, что-то не так. Не выходите в реал, пока они не сойдутся.

Реальный пример: как «идеальный» backtest с матожиданием 1,3R превратился в реале в катастрофу с -0,45R

Предыстория: В марте 2024 года Крис (собирательный пример) после 6 месяцев оптимизации собрал стратегию на пробоях. Backtest выглядел невероятно: матожидание 1,3R, профит-фактор 4,9, 67 % прибыльных, проверено на 2 годах данных SPY (2022-2023). В апреле 2024 года в дело пошли 50 000 $. К июню 2024 года счёт был в минусе на 8 400 $ (-16,8 %). Вот полное вскрытие.

«Идеальный» backtest (данные 2022-2023)
Результаты backtest (янв. 2022 - дек. 2023, 2 года)
Показатель Значение Что думал Крис
Всего сделок 156 Хорошая выборка
Доля прибыльных 67.3% (105W / 51L) «Невероятно! Куда выше среднего.»
Средняя прибыль / средний убыток +2.4R / -1R «Отличное R:R, прибыльные в 2,4 раза крупнее убыточных.»
Профит-фактор 4.9 «Цифра профессионального уровня.»
Матожидание +1,3R на сделку «Территория Святого Грааля.»
Максимальный drawdown -8.2% «Крошечный drawdown. Предельно безопасно.»
Общая доходность (2 года) +$40,600 (+406%) «Вот оно. Увольняюсь с работы.»

Как Крис оптимизировал:

  • Перебрал 50 периодов EMA (нашёл, что EMA(34) «идеальна»)
  • Перебрал 20 множителей ATR для стопов (нашёл, что 1,47× ATR «оптимально»)
  • Перебрал 15 уровней цели (нашёл, что 2,8R «лучше всего»)
  • Итоговая стратегия: пересечение EMA(34) + стоп на 1,47× ATR + цель 2,8R
  • Всего проверено сочетаний: 50 × 20 × 15 = 15 000 вариантов

Чего Крис не заложил в backtest:

  • slippage (предположил идеальные исполнения по точным ценам)
  • Спред между покупкой и продажей (предположил нулевой спред)
  • Комиссии (просто забыл о них)
  • Отклонение заявок (предположил 100 % исполнение)
  • Проверку out-of-sample (ни разу не проверил на невиданных данных)
Реальность живой торговли (апрель-июнь 2024 года, 10 недель)
Результаты в реале (10 недель, счёт 50 000 $)
Показатель Backtest Реальность в реале Разница
Доля прибыльных 67.3% 51.4% (19W / 18L) на 15,9 пункта хуже
Средняя прибыль +2.4R (+$1,200) +1.8R (+$900) на 25 % меньше
Средний убыток -1R (-$500) -1.3R (-$650) на 30 % больше
Профит-фактор 4.9 1.46 обвал на 70 %
Матожидание +1.3R -0,45R после издержек -1,75R ОТРИЦАТЕЛЬНО
Максимальный drawdown -8.2% -21.4% в 2,6 раза хуже
Общая доходность (10 недель) +9 600 $ по прогнозу -$8,400 (-16.8%) разрыв 18 000 $
Полная бухгалтерия: куда делись 18 000 $
Анатомия разрыва в результатах (37 сделок, 10 недель)
Статья издержек Описание Влияние
1. Переобучение (подгонка кривой) EMA(34) + 1,47× ATR идеально работали на данных 2022-2023, но были подогнаны под исторический шум. Условия рынка 2024 года = другой шум. -$6,200
2. slippage (не был заложен) В среднем 0,08 % slippage на сделку × 25 000 $ средней позиции × 37 сделок туда и обратно = 1 480 $ издержек на slippage -$1,480
3. Спред между покупкой и продажей Спред SPY 0,01 $ × в среднем 500 бумаг × 37 сделок = 185 $. Опционы (использовались ради плеча) спред = 0,03 $ на бумагу × 100 бумаг в контракте × 20 контрактов × 37 сделок = 2 220 $ общих издержек на спред -$2,405
4. Комиссии Опционы: 0,65 $ за контракт × 20 контрактов × 37 сделок × 2 (туда и обратно) = 962 $ -$962
5. Отклонённые заявки В 8 сделках лимитные заявки так и не исполнились (упущено 5 прибыльных и 3 убыточных). Чистые упущенные возможности: 5 прибыльных по +1,8R упущено (-9R) минус 3 убыточных по -1,3R, которых удалось избежать (+3,9R) = -5,1R = 2 550 $ -$2,550
6. Заглядывание в будущее Код backtest считал вход по close[0] и входил на закрытии той же свечи (в реале невозможно). В реале вход — на открытии следующей свечи. Вход в среднем на 0,3 % хуже = 2 775 $ ухудшения -$2,775
7. Задержки исполнения Задержка платформы + время на проверку заявки = 2-8 секунд. Быстрые пробои успевали уйти в среднем на 0,15 % до исполнения = 1 387 $ slippage из-за задержек -$1,387
СОВОКУПНОЕ УХУДШЕНИЕ ОТНОСИТЕЛЬНО BACKTEST: -$17,759

Расчёт:

  • Прогноз прибыли по backtest (10 недель): +9 600 $
  • Минус издержки ухудшения: -17 759 $
  • Ожидаемый результат в реале: -8 159 $
  • Фактический результат в реале: -8 400 $ — расчёт сходится с тем, что произошло на самом деле, с точностью до 250 $
Что нужно было сделать: проверка по правилам
Шаг Что сделал Крис (неправильно) Что следовало сделать (правильно)
1. Разделение данных Использовал для оптимизации все данные 2022-2023 Оптимизировать на 2022 году, а 2023-й отложить для проверки out-of-sample
2. Оптимизация Перебрал 15 000 сочетаний параметров Использовать стандартные параметры (EMA 20/50, стопы на 2× ATR). Ограничить перебор менее чем 10 вариантами
3. Моделирование издержек Предположил нулевые издержки Заложить 0,10 % slippage + 0,01 $ спреда + 2 $ комиссии на сделку = минимум -30 $ на сделку
4. Проверка на заглядывание вперёд Использовал закрытие той же свечи и для сигнала, и для исполнения Сигнал на close[0], исполнение на open[1] (следующая свеча). Реалистичный тайминг.
5. Проверка out-of-sample Ни разу не проверил на невиданных данных Проверить на данных 2023 года (нетронутых). Если результат ухудшается больше чем на 30 %, стратегия переобучена
6. Walk-forward Один-единственный период backtest Окна оптимизации по 6 месяцев, проверка на следующих 3 месяцах. Повторять со сдвигом вперёд. Смотреть на устойчивость.
Проверка out-of-sample, которую Крису следовало сделать

Правильный порядок:

  1. Период in-sample: Оптимизировать только на данных 2022 года (2023-й не трогать)
  2. Найти параметры: EMA(34) + 1,47× ATR (тот же результат, но получен только по 2022 году)
  3. Зафиксировать параметры: БОЛЬШЕ НИКАКИХ ИЗМЕНЕНИЙ. Параметры заморожены.
  4. Проверка out-of-sample: Прогнать ровно эти параметры на данных 2023 года
  5. Сравнить результаты: Если результат 2023 года ниже 70 % от результата 2022 года, стратегия переобучена

Что бы получилось:

Период Матожидание Профит-фактор Вердикт
2022 (in-sample) +1.4R 3.1 Оптимизированный результат
2023 (out-of-sample) +0.4R 1.4 ⚠️ ухудшение на 71 %
Вывод: Стратегия сильно переобучена. Матожидание 2023 года — 29 % от матожидания 2022 года. С реалистичными издержками (-30 $ на сделку = -0,15R) чистое матожидание остаётся +0,25R (едва выше нуля). НЕ ЗАПУСКАТЬ.

Урок: backtest Криса был фантазией. Если перебрать 15 000 сочетаний параметров, одно из них гарантированно ляжет на исторический шум идеально. То «идеальное» матожидание в 1,3R было подогнанным мусором. Проверка out-of-sample показала бы это до потери 8 400 $. Backtesting нужен не для того, чтобы найти лучший результат в прошлом, а для того, чтобы найти то, что будет работать дальше. А для этого нужны невиданные данные, реалистичные издержки и полное отсутствие заглядывания в будущее.

Часть 1: четыре способа, которыми backtest лжёт

Почему ваша идеальная стратегия провалится в реале

Начнём с неудобной правды: если вы оптимизировали стратегию так, чтобы она легла на исторические данные, вы нашли не преимущество. Вы нашли шум.

Подгонка кривой под случайный шум

Что это: Крутить параметры, пока backtest не станет выглядеть идеально

Пример:

  • Вы перебираете 100 разных периодов EMA (10, 11, 12… 110)
  • EMA(47) даёт в backtest матожидание 4,2R
  • Вам кажется, что вы нашли «волшебное число»

Реальность: EMA(47) просто случайно легла на этот конкретный набор данных. А в проверке вперёд? Матожидание -0,8R. Вы выучили шум, а не сигнал.

Лучше: Ограничьте оптимизацию. Берите стандартные параметры. Проверяйте на невиданных данных.

Использовать данные из будущего (в реале это невозможно)

Что это: Код, который «подглядывает» в будущие свечи, чтобы решить сейчас

Пример:

if close[0] > high[5]:  # использует 5 БУДУЩИХ свечей
    enter_long()

Проблема: В backtesting у вас есть данные из будущего. В реальной торговле — нет.

Реальность: Этот код в реале попросту не может исполниться. Ваш backtest проверяет стратегию, которой не существует.

Лучше: Используйте только те данные, которые доступны в момент решения.

Предполагать идеальные исполнения по идеальным ценам

Допущение в backtest: «Я покупаю ровно по 100,00 $»

Реальность: Рыночная заявка исполняется по 100,12 $ (спред + slippage)

Влияние на 100 сделках:

  • Прибыль по backtest: 5 000 $
  • Издержки на спред (0,10 $ за сделку): -1 000 $
  • slippage (0,05 $ за сделку): -500 $
  • Комиссии (2 $ за сделку): -200 $

Реальность: Настоящая прибыль = 3 300 $ (на 34 % меньше, чем в backtest)

Проверять только на выживших

Что это: Делать backtesting только по нынешнему составу S&P 500

Проблема: Вы выбрасываете более 200 бумаг, которые были исключены из листинга или обанкротились

Пример:

  • Backtest по списку S&P 500 на 2024 год: матожидание 1,8R, профит-фактор 2,1
  • Но за этот период вы были бы в лонге по Hertz (банкротство в 2020-м), по SVB Financial (крах в 2023-м) и по всем остальным именам, ушедшим в ноль.

Реальность: Ваше матожидание не учитывает катастрофические убытки от исключений из листинга. Настоящее матожидание: -0,2R (убыточная система).

💡 момент озарения

Backtest — это не реальность. Это симуляция. И если в вашу симуляцию заложены невозможные допущения, ваши результаты в реале окажутся столь же невозможными.

Часть 2: моделирование реалистичных издержек

Скрытые издержки, которые убивают стратегии

Вот что большинство backtest игнорирует — и почему ваш, скорее всего, на 20-40 % оптимистичнее правды:

Шаг 1: смоделировать спред между покупкой и продажей

Что это: Разница между ценой покупки и ценой продажи

Пример:

  • SPY покупка: 450,00 $ / продажа: 450,01 $ → спред = 0,01 $
  • Вы покупаете: платите 450,01 $ (половина спреда = 0,005 $)
  • Вы продаёте: получаете 450,00 $ (половина спреда = 0,005 $)

Издержки за круг: $0.01

Для 1 000 бумаг: 0,01 $ × 1 000 = 10 $ за сделку

100 сделок: 1 000 $ издержек на спред

Шаг 2: смоделировать slippage

Что это: Разница между желаемой ценой и фактическим исполнением

Реалистичный slippage по условиям:

  • Обычная ликвидность: 0.01-0.02%
  • Волатильные рынки: 0.05-0.10%
  • Тонкая ликвидность: 0.10-0.30%
  • Крупный размер позиции: 0.20-0.50%

Консервативное допущение: 0,05 % на сделку

Позиция 10 000 $ × 0,05 % = 5 $ slippage с каждой стороны = 10 $ за круг

Шаг 3: смоделировать комиссии

Пример: Interactive Brokers

  • 0,005 $ за бумагу, минимум 1 $
  • 200 бумаг × 0,005 $ = 1 $ с каждой стороны
  • За круг = 2 $

100 сделок: 200 $ комиссий

Шаг 4: итоговые реалистичные издержки

На сделку (за круг):

  • Спред: 10 $
  • slippage: 10 $
  • Комиссия: 2 $

Итого: 22 $ за сделку

Если ваша стратегия приносит 50 $ валовой прибыли за сделку → 28 $ чистыми (на 44 % меньше!)

Пример пересчёта backtest

До и после реалистичных издержек

Стратегия: 100 сделок, в среднем 50 $ прибыли на сделку


Backtest (фантазия):

100 сделок × 50 $ = 5 000 $ прибыли


После реалистичных издержек:

  • Валовая: 5 000 $
  • Спред: -1 000 $
  • slippage: -1 000 $
  • Комиссии: -200 $

Чистая прибыль: 2 800 $ (на 44 % меньше)

Часть 3: in-sample против out-of-sample

Единственная проверка, которая имеет значение

Вот как стратегию проверяют профессионалы:

Разделите данные на два периода.

  1. In-sample (60-70 %): Здесь вы разрабатываете и оптимизируете стратегию
  2. Out-of-sample (30-40 %): Проверка на НЕВИДАННЫХ данных

🎯 Пример: 6 лет данных (2018-2024)

In-sample: 2018-2022 (оптимизируем здесь)

  • Пробуйте разные параметры
  • Ищите правила с лучшим результатом
  • Оттачивайте логику входа и выхода

Out-of-sample: 2023-2024 (проверяем здесь)

  • Прогоните стратегию БЕЗ ЕДИНОГО изменения
  • Сравните результат с периодом in-sample
  • Похоже → не переобучена!
  • Заметно хуже → подогнана под шум in-sample

Красные флаги переобучения

🚩 Признаки того, что ваша стратегия подогнана под кривую

  • Шарп выше 3,0: Слишком хорошо, чтобы быть правдой
  • Матожидание выше 5R: Крайне редко (проверьте свои допущения об исполнении)
  • Всего 20-30 сделок: Выборка слишком мала (статистически бессмысленно)
  • Идеальная кривая капитала: Гладкая линия без drawdown (невозможно)
  • Проверено только на одном инструменте: Скорее всего, подогнано под этот конкретный режим
  • 10 и более оптимизированных параметров: Вы подогнали шум, а не сигнал
Часть 4: анализ walk-forward

Профессиональный метод проверки

In-sample против out-of-sample — это хорошо. Walk-forward — лучше.

Как это работает:

📊 Схема walk-forward

Период 1: Обучение на 2018-2019 → проверка на 2020

Период 2: Обучение на 2019-2020 → проверка на 2021

Период 3: Обучение на 2020-2021 → проверка на 2022

Период 4: Обучение на 2021-2022 → проверка на 2023


Если результат устойчив во всех периодах: Надёжная стратегия

Если результат ухудшается: Переобучена или зависит от режима

🎓 Главное

  • Моделируйте реалистичные издержки: Спред, slippage, комиссии (прибыль ниже на 20-40 %)
  • Избегайте переобучения: Ограничивайте параметры, проверяйте на нескольких рынках
  • In-sample против out-of-sample: Разрабатывайте на 60-70 %, проверяйте на 30-40 %
  • Проверка walk-forward: Убедитесь в устойчивости во времени
  • Красные флаги: Шарп выше 3,0, матожидание выше 5R, меньше 30 сделок
  • Проверьте вперёд, прежде чем идти в реал: Минимум 3-6 месяцев на бумаге
Практическое задание

🎯 Практика проверки backtest

Задание: проверьте свою стратегию детектором красных флагов

Возьмите свою текущую стратегию (или ту, которую рассматриваете) и прогоните через проверку:

  1. Сделайте backtest на 60 % своих данных (in-sample). Запишите: сделки, матожидание, Шарп, максимальную просадку
  2. Выпишите использованные параметры (EMA, пороги и так далее). Вы подбирали их, перебирая несколько значений?
  3. Проверьте на оставшихся 40 % данных (out-of-sample). Сравните с результатом in-sample.
  4. Возьмите проверочную карту из шаблона (8 категорий, максимум 60 баллов)
  5. Посчитайте свой балл: 50-60 = идём дальше, 40-49 = дорабатываем, ниже 40 = выбрасываем
  6. Если балл не ниже 50: проведите 30-60 сделок на бумаге, прежде чем выходить в реал

Цель: Ловите подгонку кривой, заглядывание в будущее и нереалистичные допущения ДО того, как они разнесут ваш настоящий счёт. Лучше выбросить плохую стратегию в backtesting, чем потерять настоящие деньги.

Проверьте себя

🎮 Быстрая проверка

В: Вы делаете backtest стратегии: матожидание 5,2R, коэффициент Шарпа 4,2, проверено на 25 сделках, с EMA(47), потому что она дала лучший результат после перебора 100 разных периодов. Что здесь не так?

A) Ничего — отличная стратегия!
B) Всё сразу: выборка слишком мала, Шарп и матожидание слишком высоки, EMA(47) подогнана под кривую
C) Только матожидание слишком высокое
D) Только выборка слишком мала
Верно! Три серьёзных красных флага: (1) всего 25 сделок = статистически незначимо, (2) Шарп 4,2 = подозрительно высоко (вероятно, переобучение), (3) EMA(47), найденная перебором 100 периодов, = подгонка под шум. Эта стратегия провалится в реале. Нужно: больше 100 сделок, реалистичный Шарп (1,5-2,5), стандартные параметры.

Вы делаете backtest стратегии возврата к среднему по SPY с 2010 по 2024 год. Результат: матожидание 2,8R, 68 % прибыльных, 120 000 $ прибыли. В данных только нынешний состав S&P 500 (те бумаги, что в индексе сегодня). В 2025 году вы выходите в реал — и терпите неудачу. Что пошло не так?

A) Ничего — условия рынка 2025 года изменились, это было непредсказуемо
B) Ошибка выжившего — backtest не учёл 30-40 % бумаг, исключённых из листинга или обанкротившихся в 2010-2024 годах
C) Выборка слишком мала — нужно больше 14 лет данных
D) Матожидание слишком высокое — 2,8R для возврата к среднему нереалистично
Верно! Классическая ловушка ошибки выжившего. Проверка на «нынешнем составе S&P 500» означает, что вы проверяли только ПОБЕДИТЕЛЕЙ — бумаги, которые пережили 14 лет и попали в сегодняшний индекс. Вы выбросили обанкротившиеся компании, исключённые из листинга бумаги и провалившиеся бизнесы (30-40 % от общего числа). Именно эти мёртвые бумаги дали бы сигналы на вход по возврату к среднему и никогда бы не восстановились. Ровно это и превращает матожидание 1,8R из примера выше в настоящие -0,2R. Решение: берите данные point-in-time, где есть ВСЕ бумаги, существовавшие на каждую дату, включая те, что позже исключили. Ошибка выжившего завышает результаты backtest на 20-50 %.

Вы делаете walk-forward-проверку стратегии: обучение на 2018-2020, проверка на 2021 (пройдено). Обучение на 2018-2021, проверка на 2022 (пройдено). Обучение на 2018-2022, проверка на 2023 (пройдено). Ни slippage, ни комиссии вы не моделировали. Стоит ли торговать эту стратегию в реале?

A) Да — все walk-forward-проверки пройдены, стратегия надёжна
B) Нет — сначала нужно добавить реалистичные издержки (0,2-0,4 % slippage плюс комиссии) и проверить заново. Если она останется прибыльной, тогда да.
C) Да — проверки walk-forward достаточно, издержки почти не влияют
D) Нет — для проверки нужно не меньше 10 периодов walk-forward
Верно! Проверки walk-forward подтверждают надёжность (то есть стратегия не подогнана под один период), но перед выходом в реал вы ОБЯЗАНЫ смоделировать реалистичные издержки. slippage (0,1-0,2 % с каждой стороны = 0,2-0,4 % за круг) плюс комиссии (2-5 $ за сделку) способны срезать матожидание на 30-60 %. Стратегия с матожиданием 2,5R без издержек с издержками может опуститься до 1,2R — всё ещё прибыльна, но едва. Случай Криса выше — ровно этот провал: backtest на 1,3R, который в реале вышел на -0,45R, как только издержки стали настоящими. Добавляйте издержки В САМОМ КОНЦЕ (после walk-forward); если матожидание остаётся выше 1,5R, а доля прибыльных выше 45 %, торгуйте в реале. Никогда не пропускайте моделирование издержек — именно оно отделяет прибыль от боли.

В backtesting совершенство подозрительно. Реализм — вот преимущество. Моделируйте издержки, избегайте переобучения, проверяйте вперёд — или проваливайтесь в реале.

Связанные уроки

Средний уровень #34

Мастерство торгового дневника

Отслеживайте результат в реале и сравнивайте его с результатами backtest.

Читать урок →
Начальный уровень №9

Размер позиции

Задавайте в backtest корректный размер позиции, чтобы результаты были реалистичными.

Читать урок →
Средний уровень №30

Распознавание режима

Проверьте стратегию во всех режимах, чтобы убедиться в её надёжности.

Читать урок →

⏭️ Дальше

Урок #33: продвинутое управление риском — профессиональные схемы — Изучите критерий Келли, динамический размер позиции и протоколы на случай drawdown.

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

💬 Обсуждение (0 комментариев)

0/1000

Загрузка комментариев…

← Предыдущий урок Следующий урок →

Готовы торговать с Signal Pilot?

Примените полученные знания с профессиональными индикаторами и инструментами анализа рынка в реальном времени.

Вернуться в Signal Pilot →
Только в образовательных целях. Торговля сопряжена со значительным риском убытков. Это не финансовая консультация. Прошлые результаты не гарантируют будущих.