7 мин чтения

Как провести бэктест торговой стратегии и не обмануть себя

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

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

Как проводить бэктест торговой стратегии на практике

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

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

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

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

Как разбить данные для walk-forward-анализа?

Держите данные для разработки отдельно от данных, по которым вы судите о конечном правиле. In-sample (внутри выборки) — это более ранняя история, на которой вы определяете или настраиваете стратегию. Out-of-sample (вне выборки) — более поздняя история, отложенная в сторону, чтобы оценить зафиксированную версию. Если вы посмотрели на результаты теста и изменили стратегию, этот период стал частью разработки; чистой out-of-sample-проверкой он уже не является. Исследователи описывают эту проблему повторяющихся out-of-sample-перепроверок (Harvey & Liu, 2015).

При walk-forward-оптимизации подбирайте или выбирайте настройки, используя окно из прошлого, а затем применяйте их без изменений к следующему окну. Двигайтесь вперёд и повторяйте. Таблица — иллюстративный график, а не рекомендуемый универсальный размер окна:

Раунд Данные для выбора настроек Зафиксированное тестовое окно
1 Январь–июнь Июль–август
2 Март–август Сентябрь–октябрь
3 Май–октябрь Ноябрь–декабрь

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

Разбиения, которое устранило бы неопределённость, не существует. Даже результат на отложенных данных может быть случайностью, а пересмотр стратегии после просмотра теста ослабляет тест (Harvey & Liu, 2015). Сообщайте результат и число сделок по каждому окну, а не только объединённую кривую. Большой разрыв между результатами разработки и теста — повод усомниться в правиле.

Какие издержки нужно учитывать в крипто-бэктесте?

Вычитайте издержки по каждому исполнению: биржевые комиссии, проскальзывание, а для бессрочных фьючерсов — платежи по ставке финансирования (funding). Проскальзывание — это разница между ценой, которую предполагает ваш тест, и ценой, которую ордер мог бы получить на самом деле. Лимитный ордер может не исполниться только от того, что рынок коснулся его цены.

Для простого полного цикла сделки (вход и выход) оценивайте торговые комиссии так:

entry notional × entry fee rate + exit notional × exit fee rate

Например, возьмём для иллюстрации позицию в $1,000, которая открывается и закрывается с номиналом $1,000 каждый раз, с тейкерской ставкой 0.05% на обоих исполнениях. Комиссия на входе — $0.50, комиссия на выходе — $0.50, всего $1.00. Если валовая прибыль составила $8, остаётся $7 до учёта проскальзывания и фандинга. Это условные числа, а не ставка, которую приводит Binance. Комиссии Binance зависят от инструмента, исполнения как мейкер или тейкер и уровня аккаунта; проверьте актуальную страницу комиссий для того аккаунта, которым будете пользоваться (Binance, 2026).

Для бессрочного контракта учитывайте каждый расчёт по финансированию, который происходит, пока позиция открыта. Фандинг — это платёж между длинной и короткой позициями. Его направление и размер зависят от ставки и позиции, а интервал биржа может менять. Используйте в тесте историческую ставку финансирования для каждого расчёта, а не применяйте сегодняшнюю ставку к старым сделкам. Binance указывает сумму фандинга как номинальную стоимость позиции, умноженную на ставку финансирования (Binance, 2026).

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

Из-за чего бэктест торговой стратегии может вводить в заблуждение?

Пройдитесь по этому списку, прежде чем доверять результату.

Ошибка Как она может проявиться в результатах Что делать
Изменение правил после каждого прогона Сообщается самая красивая версия, а число попыток остаётся за кадром. Ведите датированный журнал каждого испробованного правила и параметра. Перепроверьте выбранную версию на нетронутых данных.
Повторное использование отложенной выборки Результат «out-of-sample» улучшается после многократных правок. Как только вы изучили этот период и пересмотрели стратегию, переводите его в разработку. Более поздние данные оставьте для новой финальной проверки.
Заглядывание вперёд внутри свечи Входы происходят по максимуму, минимуму или закрытию, которые ещё не были известны в момент появления сигнала. Делайте сигналы доступными только после того, как все их входные данные сформированы; используйте цену и время исполнения, которые могли наступить после этого.
Игнорирование монет с делистингом В тест попадают сегодняшние «выжившие», но не активы, которые позже были исключены из листинга или удалены. Восстанавливайте набор доступных для торговли активов таким, каким он был на каждую дату, включая активы с делистингом, если данные есть. В рабочем документе 2022 года на выборке из 3,904 криптовалют за 2014–2021 годы сообщается об эффекте «выжившего» в доходности портфелей; эта выборка — свидетельство проблемы, а не прогноз для вашей стратегии (Ammann et al., 2022).
Издержки не учитываются или предполагается исполнение каждого лимитного ордера Валовая доходность выглядит сильной, а чистая сжимается или исчезает. Применяйте фактический уровень комиссий и тип ордера, моделируйте проскальзывание и учитывайте исторический фандинг для бессрочных фьючерсов.
Выбор результата из множества вариантов без их подсчёта Один удачный набор параметров выглядит как воспроизводимое преимущество. Сообщайте число попыток. Больше тестов — больше шансов подогнать результат под шум; исследования переобучения бэктестов описывают настройки, которые улавливают прошлый шум, а не будущий сигнал (Bailey et al., 2014).

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

Что делать после того, как бэктест пройден?

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

Используйте простое правило: отклоняйте или пересматривайте стратегию, если её чистые результаты теста зависят от одного удачного окна или исчезают, когда вы добавляете реальные издержки. Если результаты достаточно согласованы между тестовыми окнами, торгуйте зафиксированными правилами «на бумаге» и записывайте, где реальные цены и исполнения расходятся с симуляцией. Небольшой реальный прогон — это более поздняя проверка, а не вывод, что стратегия продолжит работать.

Мы начали с собственных денег в июле 2025 года и убрали правила, которые работали на исторических данных, но не сработали в реальной торговле. Мы управляем Cointrapper — закрытым торговым пулом на Binance. Этот опыт — одна из причин, по которой мы относимся к бэктесту как к фильтру, а не как к доказательству, что стратегия будет работать. Вы можете провести эти проверки сами, используя исторические данные и таблицу или программу для бэктестинга.

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

Закрытый пул торговли криптовалютой на Binance. Вступление по заявке.

Подать заявку в пул