Бэктест торговой стратегии: что это и как проверить без подгонки

Обложка статьи «Бэктест торговой стратегии: что это и как проверить без подгонки»: правила стратегии переходят в свечной график и отдельный контур независимой проверки

Что такое бэктест простыми словами

TradingView определяет backtesting как воссоздание работы стратегии на исторических данных. Проверяемый объект здесь не название вроде «торговля по тренду», а точная инструкция: когда появляется вход, по какой цене он считается исполненным, где выход, какой размер позиции и когда сделка пропускается.

Если эти правила исполняет программа, это уже часть алгоритмической торговли; бэктест отвечает только за их проверку на выбранной истории.

Представим учебное правило: после закрытия дневной свечи выше максимума предыдущих 20 свечей открыть длинную позицию на следующей доступной цене; выйти по заранее заданному стопу или условию обратного сигнала. Чтобы протестировать его, нужны ещё источник котировок, период истории, способ учёта гэпа, комиссия и проскальзывание. Без них два человека получат разные результаты и оба назовут их «тем же бэктестом».

У бэктеста есть три слоя. Первый - рыночные данные: цена, время, доступный объём и корпоративные корректировки. Второй - логика стратегии. Третий - модель исполнения, которая решает, когда и по какой цене виртуальная заявка могла быть исполнена. Ошибка в любом слое меняет итог.

  1. 1

    Идея

    Наблюдение без вывода о доходности

  2. 2

    Правила

    Вход, выход, стоп и пропуск

  3. 3

    Данные

    Инструмент, таймфрейм и период

  4. 4

    Исполнение

    Комиссия, проскальзывание и тип заявки

  5. 5

    Прогон

    Все сделки без удаления неудобных случаев

  6. 6

    Проверка

    Нетронутый участок и журнал версии

Каждый шаг фиксируется до просмотра итоговой статистики. Если правило меняется, начинается новая версия теста.

Схема 1. Бэктест начинается до нажатия кнопки «Запустить»: сначала фиксируется проверяемая версия идеи.

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

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

Forward test начинается после того, как правила заморожены. TradingView описывает его как воспроизведение стратегии в реальном времени по мере обновления графика. MetaTrader 5 позволяет отделять позднюю часть истории для forward-проверки результатов оптимизации. Общий принцип один: проверочный участок не должен участвовать в выборе параметров.

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

  1. История

    Бэктест

    Проверяет правила на выбранном прошлом периоде

  2. Новые свечи

    Форвард-тест

    Параметры заморожены до появления результата

  3. Текущий рынок

    Демо-счёт

    Проверяет поток виртуальных заявок

  4. После проверки

    Решение

    Учитывает расхождения, риск и допустимый размер

Каждый следующий этап добавляет новые данные, но не стирает ограничения предыдущего.

Схема 2. История, новые данные и демо проверяют разные причины расхождения; один удачный этап не делает остальные лишними.

Из чего состоит корректный бэктест: данные, правила, издержки, исполнение

Начните с данных. Укажите тикер вместе с площадкой, часовой пояс, таймфрейм, даты начала и конца. Для акций важно, скорректирована ли история на сплиты и дивиденды. Для фьючерсов - как собран непрерывный контракт. Для круглосуточного рынка - у какого поставщика взяты свечи. Один символ у разных источников может иметь отличающиеся экстремумы.

Затем перепишите торговую стратегию в форму, где нет слов «примерно», «сильный» или «красивый». У сигнала должна быть вычислимая граница. Вместо «покупать при сильном росте» запишите «после закрытия выше максимума N предыдущих закрытых свечей». Отдельно задайте выход, стоп, повторный вход, одновременные сигналы, размер позиции и случай, когда данных не хватает.

Торговые издержки обычно состоят не из одной цифры. Комиссия может взиматься на входе и выходе. Спред разделяет цены покупки и продажи. Проскальзывание отражает отличие ожидаемой цены от исполнения. На высокочастотных правилах небольшой расход на сделку способен изменить вывод сильнее, чем новый фильтр.

Модель исполнения решает, что делать внутри свечи. Если в одном баре были задеты и стоп, и цель, одних OHLC-значений недостаточно, чтобы узнать порядок. TradingView использует брокерский эмулятор и позволяет настраивать комиссию, проскальзывание, строгость исполнения лимитной заявки и задержку. Эти настройки не являются косметикой: они определяют, какие сделки существуют в отчёте.

Минимальный паспорт прогона выглядит так:

  1. Название и версия правила.
  2. Инструмент, площадка, источник данных и часовой пояс.
  3. Таймфрейм и точные границы периода.
  4. Условия входа, выхода, стопа и пропуска.
  5. Размер позиции и правила повторного входа.
  6. Комиссия, спред, проскальзывание и тип заявки.
  7. Момент расчёта: внутри свечи или после её закрытия.
  8. Версия кода или снимок настроек.

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

Как провести бэктест вручную на графике: пошаговый протокол

Ручная проверка полезна, когда правило ещё нельзя описать кодом или нужно понять его механику. Она медленнее автоматической, зато быстро обнаруживает расплывчатые слова. Если два одинаковых рисунка вы оцениваете по-разному, формализация пока не закончена.

Сначала выберите участок истории и закройте правую часть графика режимом повтора. Не начинайте с места, которое помните как большое движение. Запишите версию правила и все параметры в шапке таблицы. Затем двигайтесь по одной закрытой свече и принимайте решение только по данным слева.

Для каждого сигнала сохраняйте одинаковые поля: дата и время, цена сигнала, предполагаемая цена исполнения, направление, стоп, выход, комиссия, проскальзывание, итог после издержек и максимальное неблагоприятное движение внутри сделки. Отдельная колонка «причина пропуска» защищает от избирательности: отсутствие сделки тоже становится наблюдением.

Порядок ручного прогона:

  1. Откройте график до неизвестного вам участка и включите воспроизведение по свечам.
  2. Зафиксируйте инструмент, период, таймфрейм и версию правил.
  3. На каждой закрытой свече проверьте условия входа в неизменном порядке.
  4. Если есть сигнал, запишите его до открытия следующей свечи.
  5. Примените заранее выбранную модель исполнения, комиссию и проскальзывание.
  6. Доведите сделку до выхода, не двигая стоп задним числом.
  7. Сохраните и прибыльные, и убыточные, и пропущенные случаи.
  8. Закончив участок, заблокируйте таблицу от правок и только потом считайте метрики.

Полезная контрольная техника - повторить часть выборки через несколько дней, не глядя в первую таблицу. Если сделки расходятся, причина обычно в неоднозначном правиле. Уточните формулировку и начните новую версию, а не исправляйте отдельные строки старой.

Что ручной тест проверяет хорошо, а что требует автоматизации

Подойдёт, если

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

Не подойдёт, если

  • Быстро перебрать десятки параметров и рынков
  • Точно восстановить порядок тиков внутри свечи
  • Исключить усталость и субъективный выбор человеком

Карточка 1. Ручной тест - инструмент формализации; большой воспроизводимый прогон удобнее передать стратегии или тестеру.

Какие метрики смотреть: сделки, просадка, profit factor, серии

Число сделок - это знаменатель всех остальных выводов. Пять сделок могут дать высокий процент успеха случайно. Универсального «достаточного» числа нет: оно зависит от частоты стратегии, разброса результатов и разнообразия рыночных режимов. Поэтому рядом с числом всегда указывают длительность периода и состав рынка.

Чистый результат считают после комиссии, спреда и проскальзывания. Если часть расходов неизвестна, покажите отдельные сценарии, например базовый и более строгий, а не подставляйте ноль. Разница между ними часто полезнее одной оптимистичной цифры.

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

Profit factor равен сумме прибылей по прибыльным сделкам, делённой на абсолютную сумму убытков. Значение выше единицы означает, что валовая прибыль в этой выборке больше валового убытка, но ничего не гарантирует на новой. Если убыточных сделок нет, деление теряет обычный смысл: вместо красивой бесконечности покажите число сделок и отметьте отсутствие наблюдавшихся убытков.

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

Минимальная таблица итогов:

  • число всех сигналов, исполненных сделок и пропусков;
  • валовая прибыль, валовой убыток и чистый результат после издержек;
  • максимальная просадка в деньгах и процентах;
  • profit factor с числом сделок рядом;
  • доля прибыльных сделок без вывода о будущей вероятности;
  • средняя прибыль, средний убыток и их разброс;
  • худшая серия убытков;
  • вклад крупнейшей сделки в общий результат.

Сравнивайте версии по одному набору данных и одной модели исполнения. Если у версии A комиссия нулевая, а у версии B реальная, ранжирование не имеет смысла. Точно так же нельзя сравнивать дневную стратегию за десять лет с минутной за один спокойный месяц только по profit factor.

Оверфиттинг и другие ошибки, которые делают бэктест бесполезным

Исследование Bailey, Borwein, Lopez de Prado и Zhu формализует проблему выбора лучшей версии после множества бэктестов. Даже если отдельный тест выглядит аккуратно, серия переборов превращает исследование в соревнование за случайно красивый результат. Поэтому журнал должен хранить не только победителя, но и число проверенных вариантов.

Самая заметная ошибка - заглядывание в будущее. Оно появляется, если условие использует максимум ещё не закрытой свечи, берёт окончательный состав индекса для старых лет или исполняет заявку по цене, которая стала известна после сигнала. Менее заметная форма - ручной выбор начала периода сразу перед удачным трендом.

Вторая ошибка - смещение выживших. Тест по сегодняшнему списку активов забывает бумаги и фонды, которые закрылись или были исключены. Итог описывает победителей, известных задним числом. Третья - идеальное исполнение: каждая лимитная заявка считается исполненной по касанию, а комиссия и проскальзывание равны нулю.

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

Правила и расходы записаны заранее

Параметры выбраны по лучшей кривой

  1. 1.Одна версия
  2. 2.Несколько версий в журнале
  3. 3.Победитель без истории поиска
Чем больше решений принято после просмотра результата, тем меньше отчёт говорит об устойчивости правила.

Схема 3. Опасность создаёт не сам подбор параметров, а скрытый перебор без независимой проверки и учёта всех попыток.

Признаки бесполезного бэктеста:

  • правила невозможно повторить по письменному описанию;
  • период выбран после просмотра графика;
  • сделки удалялись как «нетипичные» после результата;
  • использованы будущие или пересчитанные задним числом данные;
  • комиссия, спред и проскальзывание не указаны;
  • один бар одновременно задевает стоп и цель, но порядок всегда выбирается в пользу стратегии;
  • показана только лучшая версия из множества;
  • нет отдельного участка проверки;
  • отчёт сообщает проценты без числа сделок и периода.

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

Воспроизводимая проверка той же стратегии в Midas BackTester

Возьмите тот же паспорт, по которому проводили ручную проверку. В инструкции Midas BackTester инструмент описан как бот-стратегия в TradingView: условия Long и Short, выходы, стопы и цели задаются настройками, а расчёт по истории выполняет TradingView. Так ручная идея превращается в повторяемую конфигурацию без переписывания правил для каждой сделки.

Порядок остаётся прежним:

  1. Сохраните исходную формулировку входа, выхода и пропуска.
  2. Зафиксируйте инструмент, таймфрейм, период и источник котировок.
  3. Перенесите правила в условия BackTester и сохраните снимок настроек.
  4. Задайте доступные параметры комиссии и исполнения в свойствах стратегии TradingView.
  5. Запустите прогон и экспортируйте таблицу сделок или сохраните отчёт.
  6. Сверьте несколько случаев с ручным журналом, особенно гэпы и бары, где могли сработать и стоп, и цель.
  7. Запишите число сделок, чистый результат, максимальную просадку, profit factor и худшую серию.
  8. Повторите неизменную конфигурацию на нетронутом временном участке.

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

Чего бэктест не гарантирует: границы метода

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

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

Нельзя переносить процент результата с одного инструмента и периода на капитал пользователя. Размер позиции, валюта счёта, плечо и ограничения брокера меняют риск. Поэтому вывод формулируют ограниченно: «версия 1.3 на данных источника X за период Y при издержках Z показала такой-то результат и прошла/не прошла нетронутый участок».

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

На что отчёт бэктеста отвечает, а чего он не показывает

Подойдёт, если

  • Проверить, повторяется ли результат правила на записанных данных
  • Увидеть, как комиссия и проскальзывание меняют вывод
  • Прогнать правило на участке, который не участвовал в настройке

Не подойдёт, если

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

Карточка 2. Границы метода не отменяют его пользы: бэктест сужает неопределённость вокруг правила, но не вокруг самого рынка.

Связанные правила управления размером позиции и пределом потерь разобраны в материале про риск-менеджмент. Сам по себе хороший отчёт не задаёт допустимый риск. Материал носит образовательный характер и не является индивидуальной инвестиционной рекомендацией.

Источники

Частые вопросы

Что такое бэктест торговой стратегии?

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

Как сделать бэктест стратегии вручную?

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

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

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

Какие показатели важнее всего?

Базовый набор - число сделок, чистый результат после издержек, максимальная просадка, profit factor, средняя прибыль и убыток, а также худшая серия. Дополнительно проверьте, не создан ли весь итог одной крупной сделкой.

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

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

Как учесть комиссию и проскальзывание?

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

Может ли высокий profit factor доказать, что стратегия работает?

Нет. Profit factor описывает отношение валовой прибыли к валовому убытку в конкретной выборке. Его нужно читать вместе с числом сделок, просадкой, периодом, издержками и результатом на нетронутых данных.

Что вы узнаете
  • Поймёте, что именно доказывает и не доказывает бэктест
  • Зафиксируете данные, правила и издержки до просмотра результата
  • Проведёте ручную и автоматизированную проверку по одному протоколу
Применить за 25 мин
Новичкам
28просмотров
Материал был полезен?

Обсуждение

Захар

Кто только начинает - не пропускайте раздел про риск, он тут не для галочки

Катя

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

Макс

Полностью согласен. Метод ломается не на рынке, а в голове - обычно на четвёртой сделке после серии убытков, когда объём внезапно удваивается «чтобы отыграться».

Дарья Ч.

а если автоматический прогон в тестере и ручной журнал по одной и той же стратегии разойдутся, что сверять в первую очередь?

Макс

Не выбирайте более приятный результат, а пройдитесь по списку: момент сигнала, цена исполнения, округление, комиссия, повторные входы и порядок событий внутри свечи. Условия для прогона берут из того же паспорта, что и для ручной проверки, иначе сравнивать нечего. Пока расхождение не объяснено, вывод о стратегии откладывается.

Оставить комментарий

Профильный эксперт
Макс Витковский
Аналитик рынка

Разбирает структуру рынка, уровни и торговые сценарии. Специализация — криптовалюты, технический анализ и ончейн-данные.

График TradingView с сигналами Buy и Sell индикатора Midas
Midas multi-индикатор for TradingViewОдин из самых продвинутых индикаторов для трейдинга
  • Сигналы без перерисовки
  • Интерактивный теханализ
  • 7 стратегий на выбор
Midas multi-индикатор for TradingViewСигнал, стоп и 3 цели — прямо на графике
  • Сигнал фиксируется по закрытию свечи
  • Стоп и 3 цели строятся автоматически
  • План сделки виден до входа