Почему бэктесты врут и как проверить, что вас не обманывают
Любую стратегию можно сделать прибыльной на истории. Это не фигура речи — это техническая задача, которая решается за вечер. Поэтому красивая кривая доходности сама по себе не значит ничего: важно, каким способом она получена.
Вот способы, которыми кривую рисуют — от самых грубых до тех, что ловят даже опытные.
1. Заглядывание в будущее
Самая частая и самая дорогая ошибка. Стратегия принимает решение, используя данные, которых на тот момент ещё не существовало.
Классический пример: сигнал появляется на закрытии свечи, а вход считается по цене открытия этой же свечи. Разница на 15-минутке биткоина легко даёт 0.3–0.5% на сделку. Умножьте на семьсот сделок — и вы получите доходность, которой не было.
Как проверить: спросите, по какой именно цене происходит вход. Единственный честный ответ — «по открытию следующей свечи после сигнальной». Всё остальное требует объяснений.
В Лаборатории это видно прямо на графике: решение принимается на закрытии сигнальной свечи, а вход ставится на следующую. Включите «Смотреть вживую» и проверьте по свечам.
2. Комиссии, которых нет
Стратегия делает 700 сделок. Каждая сделка — это вход и выход, то есть две комиссии. На BingX тейкер стоит 0.05%, мейкер 0.02%. Даже по нижней границе это 0.04% за круг.
700 сделок × 0.04% = 28% оборота. Если стратегия зарабатывает 1% на сделку до комиссий, то после них она зарабатывает 0.96% — терпимо. Если 0.05% — она убыточна, и никакие настройки этого не исправят.
Отдельная ловушка: чем чаще торгует алгоритм, тем красивее выглядит его winrate и тем сильнее его убивают издержки. Высокочастотные стратегии в бэктесте без комиссий — это всегда мираж.
3. Забытый фандинг
На бессрочных фьючерсах каждые восемь часов происходит расчёт: одна сторона платит другой. Ставка небольшая — сотые доли процента, — но если позиция висит неделями, набегает ощутимо.
Стратегии с усреднением особенно чувствительны: они по определению держат позицию долго и большим объёмом. Позиция на $2000, висящая 25 суток при ставке 0.01% за период, съест около $15. На депозите в $1000 это полтора процента, отданных ни за что.
4. Переоптимизация
Вы подобрали параметры так, что на истории всё блестит. Проблема в том, что вы подбирали их под эту самую историю. Стратегия не научилась торговать — она выучила прошлое наизусть.
Признаки:
- в стратегии больше пяти-шести настраиваемых чисел;
- результат резко ухудшается, если сдвинуть любой параметр на шаг;
- у соседних значений параметра результат совершенно другой.
Здоровая стратегия ведёт себя плавно: изменили тейк с 0.8% на 0.9% — результат изменился немного, а не перевернулся.
5. Выживший инструмент
Тест на монете, которая выросла в сто раз, покажет, что «покупать на просадках» — гениальная идея. На монете, которая уехала в ноль, та же логика обнулит депозит. Мы просто не видим вторых, потому что их делистят и о них забывают.
Именно поэтому тестировать имеет смысл на биткоине: он не исчезнет с биржи и по нему есть непрерывная история. Тест на альткоинах почти всегда содержит ошибку выжившего.
6. Тест, который продолжается после смерти счёта
Депозит обнулился на сотой сделке — а бэктест бодро считает дальше ещё шестьсот. В итоге кривая доходности показывает прибыль, хотя торговать было бы уже нечем.
Правильное поведение: ликвидация останавливает тест. Точка. Дальше графика нет, потому что дальше нет денег.
7. Просадка, посчитанная только по закрытым сделкам
Самый коварный пункт, потому что формально здесь нет обмана.
Стратегия с усреднением и без стопа закрывает сделки только в плюс. Значит, просадка по закрытым сделкам — ноль. Формально верно. Фактически бессмысленно: пока позиция висела открытой, счёт мог проваливаться на 20, 50, 90 процентов.
Спрашивайте не «какая была просадка», а «насколько глубоко проваливался счёт с учётом незакрытых позиций». Это два совершенно разных числа.
Что делать
Минимальный набор требований к любому бэктесту, которому вы собираетесь верить:
- Вход — по открытию свечи, следующей за сигнальной.
- Комиссии посчитаны по обеим сторонам сделки, по реальным ставкам вашей биржи.
- Фандинг учтён за всё время удержания позиции.
- Ликвидация останавливает тест.
- Показаны обе просадки — по закрытым сделкам и максимальная плавающая.
- Параметров немного, и результат к ним не сверхчувствителен.
- Есть возможность посмотреть каждую сделку на графике, а не только итоговую цифру.
Последний пункт важнее остальных. Итоговая таблица не проверяема. График, на котором видно каждый вход и выход, — проверяем.
Проверьте это сами. Опишите идею в Лаборатории обычными словами — ИИ соберёт стратегию и посчитает её на истории биткоина с 2020 года, в долларах и со сравнением со случайными входами.