Как распознать фейковый бэктест: практическое руководство скептика
Почти каждый платный сервис крипто-сигналов публикует бэктест. Большинство таких бэктестов — мошенничество, намеренное или случайное, причём заметное любому, кто знает, куда смотреть. Это практический разбор пяти самых частых трюков (ошибка выжившего, векторизованные филлы, look-ahead, переоптимизация и cherry-picking периодов) и того, как вычислить их за пару минут проверки.
Почему это важно
Индустрия крипто-сигналов — это примерно 95% шума и 5% реального. В эти 95% входят откровенные скамы, честные любители, которые обманывают невольно, потому что сами не понимают, что делают, и бывшие трейдеры, продающие инструменты, которые сработали однажды и больше не работают. Ни один из этих сервисов не нелегален в большинстве юрисдикций: они продаются под юридическим прикрытием оговорок про «образовательный контент».
Экономическая асимметрия жёсткая. Продавец не рискует капиталом: он собирает подписную плату независимо от исхода. Покупатель рискует всем капиталом, применяет сигналы на розничном сайзинге и с розничным таймингом и получает реальные убытки. Любой сервис сигналов, показывающий положительный бэктест и растущую базу подписчиков, наживается на этой асимметрии. Скепсис здесь не опция, а риск-менеджмент.
Дальше идёт чек-лист самых частых схем нечестности. Если бэктест проходит их все, он может быть настоящим. Если проваливает хотя бы одну, он почти наверняка ничего не стоит.
1. Ошибка выжившего
Трюк: стратегию тестируют на вселенной монет, которые торгуются сейчас , а не на той, что существовала в каждый исторический момент. Монеты, которые делистнули, убрали с биржи или сняли за нарушение правил, тихо исключаются. Проигравших в данных попросту нет.
Это самая частая форма нечестности в фейковых крипто-бэктестах, отчасти потому что честные данные добыть по-настоящему сложно. Большинство биржевых API не отдают исторические свечи по делистнутым символам. Собрать датасет без ошибки выжившего — инженерный проект на недели. Большинство сервисов сигналов его пропускают.
Как вычислить:
- Попросите у продавца список сделок. Ищите трейды по монетам вроде FTM, USTC, ANC, MIR, LUNC, CWAR, AGIX (те, что делистнули, ребрендировали или схлопнулись в период бэктеста). Если в списке нет ни одной из них, в датасете сидит ошибка выжившего.
- Проверьте частоту сигналов во времени. У настоящих датасетов частота неравномерная: периоды высокой активности, периоды затишья. Датасеты только из выживших часто выглядят подозрительно ровно годами, потому что провалившихся активов в них нет.
- Настораживайтесь на заявлениях про «диверсифицированные small-cap». Именно на small-cap ошибка выжившего искажает результаты сильнее всего. Стратегия по small-cap без единой делистнутой монеты в датасете — это по сути научная фантастика.
Внутренняя ремарка: у нашего собственного трек-рекорда была эта проблема в ранней версии. Мы пересобрали датасет, добавив 90+ делистнутых символов с их свечами до делиста. Заявленная доходность заметно просела. Вот это и есть честная цифра.
2. Векторизованные филлы (без зависимости от траектории)
Трюк: бэктест считает доходность векторной математикой (цена входа минус цена выхода), не симулируя реальную траекторию сделки тик за тиком. Это значит, что стопы и тейки никогда не срабатывают реалистично: математика просто берёт выгодную цену в пределах окна сделки.
Механически: если стратегия ставит вход на $100, тейк на $110, стоп на $95, а цена в окне сделки идёт $100 → $94 → $111, то векторизованный филл записывает сделку как выход по $111 (финальная или лучшая цена) и игнорирует, что стоп на $95 сработал бы раньше. Математически векторизованный бэктест проиграть не может.
Как вычислить:
- Спросите, какой у симулятора движок: path-dependent (зависящий от траектории) или векторизованный. Если продавец не знает разницы, это уже и есть ответ. Если говорит «векторизованный», бэктест, скорее всего, завышен на 30–60% относительно реальности.
- Проверьте худший убыток по одной сделке. Если стратегия заявляет стоп-лосс −5%, а в списке сделок нет ни одного убытка больше −4,5%, значит симулятор не моделирует проскальзывание и риск гэпов реалистично. Реальные стопы на волатильной крипте регулярно исполняются на 0,5–2% ниже уровня стопа.
- Сравните максимальную просадку с винрейтом. У стратегии с винрейтом 65% и соотношением риск:прибыль 1:1 просадки должны быть примерно пропорциональны худшей серии убытков на N сделках. Если заявленный макс. DD неправдоподобно мал (скажем, 3–4% при 200+ сделках), значит зависимость от траектории сломана.
Мы написали отдельный разбор симуляции с зависимостью от траектории , если вам нужны инженерные детали.
3. Look-ahead bias / подглядывание в данные
Трюк: бэктест использует информацию, которой не было в момент сделки. Самые частые формы:
- Утечка будущих данных: например, стратегия использует «максимум дня» или «закрытие свечи» как вход сигнала, но входит на открытии той же свечи. Сигнал не может существовать раньше, чем данные сформированы.
- Пересчитанные данные: часть данных по funding rate или открытому интересу биржи пересчитывают спустя часы (корректировки, поздняя сверка). Бэктест, использующий финальную пересчитанную цифру, имеет доступ к информации, которой в момент сделки видно не было.
- Композитные индексы: стратегия использует «индексную цену BTC-USD» — средневзвешенную по объёму цену по биржам. Если индекс считается так, что в него входят веса объёма, реализованные в будущем, индикатор частично знает будущее.
- Ошибка выжившего в фичах: «мы отбираем монеты со стабильными фундаменталами» — фундаменталы оцениваются на сегодня. Монету могли считать фундаментально слабой в момент сделки, а сейчас, задним числом, видят стабильной. Фильтр зашивает в себя будущую информацию.
Как вычислить:
- Спросите точно, какие поля стратегия читает в момент сигнала. Если в ответе всплывает любая фича, чьё значение определяется только после закрытия свечи (закрытие, максимум, минимум, объём, фандинг за период, где стоит сигнал), значит look-ahead в игре.
- Ищите стратегии, которые стабильно выигрывают в периоды крупной смены рыночного режима. У настоящих стратегий доходность зависит от режима. Стратегии с подозрительно стабильной доходностью в медвежьих, бычьих и боковых рынках часто имеют утечку look-ahead, которая сглаживает кривую.
- Спросите, что бэктест использует для входов: живой стрим данных или исторические свечи. В живом стриме look-ahead невозможен; исторические свечи часто содержат тихо пересчитанные значения.
4. Переоптимизация параметров
Трюк: стратегию оптимизировали на тех же данных, на которых показывают её результат. Параметры подогнаны под исторический шум, и in-sample результаты выглядят отлично. Вне выборки шум другой, и стратегия проваливается.
Степень переоптимизации примерно пропорциональна числу параметров, умноженному на детальность перебора и на отсутствие валидации вне выборки. У крипто-стратегий часто 5–10 параметров, каждый с 10–20 кандидатными значениями, оптимизированных grid search по тому же периоду, что показывают. Это от 10^7 до 10^10 комбинаций параметров, перебранных против одной-единственной выборки истории. Вероятность наткнуться на ложноположительный набор крайне высока.
Как вычислить:
- Попросите разбивку train/test. Настоящий бэктест использует часть истории (скажем, 70%) для дизайна и настройки, а потом проверяет на отложенных 30%. Цифры вне выборки будут заметно хуже in-sample. Если у продавца нет цифры вне выборки, весь бэктест — это in-sample, и он переоптимизирован.
- Спросите, сколько комбинаций параметров перебрали. Если больше 100, проблема множественных сравнений уже серьёзна даже при хорошей методологии. Если больше 10 000, результат по сути шум, как ни крути.
- Попросите живые результаты. Вне выборки — простейшая из возможных проверок: продолжила ли стратегия работать после того, как период бэктеста закончился? Сервис сигналов с тремя месяцами живых результатов, совпадающих с бэктестом, куда убедительнее того, у кого пять лет бэктеста и ноль живых данных.
5. Cherry-picking периодов
Трюк: период бэктеста подбирают так, чтобы он покрывал только те отрезки, где стратегия работала. Периоды слабого результата исключают под разными предлогами: «актив тогда ещё не был ликвиден», «режим был другой», «мы поменяли правила, и старая версия не считается».
Как вычислить:
- Попросите результат на всей истории. Если стратегию сделали в 2024-м, спросите, какой была доходность в 2020–2023. Если всплывает отговорка «стратегии тогда не существовало», спросите про похожую стратегию или про базовую логику. Настоящий эдж обобщается во времени; трюковый — нет.
- Настораживайтесь на странных датах старта. Бэктесты, начинающиеся в ноябре 2022-го (после дна FTX), захватывают только бычье восстановление. Начинающиеся в январе 2024-го, это только бычий ралли. Подбор периода — самая невинная на вид схема нечестности.
- Попросите разбивку по годам. Стратегии с положительной доходностью в каждом году крайне редки и статистически подозрительны. У настоящих стратегий в любом пятилетнем окне есть хотя бы один убыточный год.
Как на самом деле выглядят хорошие трек-рекорды
У честных крипто-бэктестов есть несколько общих черт:
- Цифры ниже, чем у фейков. Настоящая стратегия с прицелом на рыночно-нейтральную экспозицию редко даёт больше 30–100% APY. Настоящая направленная стратегия с прицелом на альфу редко даёт стабильно больше 50–200% APY. Всё, что заявляет 500%+ на многолетних отрезках, почти наверняка что-то скрывает.
- Видимые просадки. У любой честной кривой equity есть просадки минимум 10–25%. Гладкие кривые: тревожный сигнал.
- Плохие периоды прямо раскрыты. «У нас была просадка −18% в мае 2024-го из-за схлопывания ликвидности в альткоинах» — вот что вы хотите видеть. «Стабильная прибыль при любых рыночных условиях» — это выдумка.
- Прозрачность методологии. Path-dependent симуляция с явными допущениями по проскальзыванию и комиссиям, датасет без ошибки выжившего, split train/test, сравнение live и бэктеста. Если продавец может расписать это в деталях, он, вероятно, сделал работу. Если отделывается общими словами, значит не сделал.
- Живые доказательства. Самый сильный сигнал: публичный живой трек-рекорд, который начался раньше публикации бэктеста. Если живой результат в целом совпадает с бэктестом на горизонте 6+ месяцев, методология, вероятно, надёжна. Если живой результат заметно хуже, в бэктесте был баг или трюк.
Честный чек-лист для любого трек-рекорда
Прежде чем подписываться на сервис или копитрейдить его, спросите:
- Датасет свободен от ошибки выжившего? Можете показать делистнутые или провалившиеся монеты в списке сделок?
- Симулятор path-dependent? Стопы моделируются с реалистичным проскальзыванием?
- Какие фичи используются как входы сигнала? Есть ли среди них те, что определяются только после закрытия свечи сделки?
- Какой результат in-sample против результата вне выборки? Сколько комбинаций параметров перебрали?
- Какая разбивка по годам? Есть ли убыточный год? Какой была худшая просадка?
- Есть ли живой, проверяемый третьей стороной трек-рекорд, который начался до публикации бэктеста?
Если продавец честно отвечает на все шесть, трек-рекорд, вероятно, настоящий. Если не может ответить на большинство или уходит от ответа, трек-рекорд, вероятно, фейк.
К чему это вас приводит
Скорее всего, к скепсису примерно к 95% рекламируемых крипто-стратегий. Это верный уровень скепсиса. Базовая частота «рекламируемой крипто-стратегии, которая реально работает после издержек» — это несколько процентов, не больше. Большинство работающих стратегий вообще не рекламируют, потому что их крутят фонды или отдельные кванты, которым не нужен доход с подписок.
Сервисы сигналов, которые действительно заслуживают доверия, обычно раскрывают свои изъяны. Публикуют просадки. Объясняют, что не сработало. Показывают сравнения вне выборки, даже когда эти сравнения им невыгодны. Честный дискомфорт и есть признак настоящей работы.
Если вы уже платите за сервис, прогоните его по этому чек-листу. Если большинство пунктов не отмечены, ваши деньги кормят шум. Если только присматриваетесь, пройдите чек-лист до подписки. Он занимает 10–15 минут. Цена того, чтобы его пропустить, равна всему, что вы заплатите за следующие 6 месяцев.
Ведут трейдеры, которые публикуют разборы своих провалов
Мы небольшая квант-команда из ЕС. Торгуем вживую, публикуем свой ресёрч и документируем то, что не сработало. Посмотреть алгоритмы · наша методология бэктеста · бесплатные email-курсы.