Что важнее в крипто-бэктесте: вход или выход?
Суть идеи
Авторы прогнали 99,75 млн комбинаций параметров на крипто-данных, варьируя входы, выходы и периоды индикаторов. Главный вывод: win rate оказался значительно чувствительнее к логике выхода из позиции — во всех десяти тестируемых рыночных режимах. Максимальная просадка, напротив, определялась преимущественно входом. Это нетривиально: большинство трейдеров тратят 80% времени на оптимизацию точки входа, считая выход второстепенным.
Второй ключевой результат: замена самого типа индикатора (например, RSI → MACD) меняет характеристики стратегии несравнимо сильнее, чем подбор периода внутри одного индикатора. Авторы предупреждают: если вы «тюнингуете вход», но при этом перебираете и тип индикатора, и его период — вы смешиваете два принципиально разных уровня свободы. Это прямой путь к data-snooping.
Методология: массовый grid-search по крипто-рынкам (предположительно BTC/ETH spot), десять «работ» (jobs) по направлению рынка — вероятно, бычий/медвежий/боковой режимы и их комбинации. Конкретные индикаторы и активы в аннотации не раскрыты полностью, но масштаб выборки внушает доверие к статистической устойчивости выводов.
Применимость к крипте
Исследование изначально проводилось на крипто-данных — адаптация минимальна. Для нашего стека это означает следующее: при построении стратегий на ATM IV, GEX, skew или funding нужно в первую очередь думать о структуре выхода (тейк-профит, стоп, временной выход), если цель — улучшить win rate. Если же приоритет — контроль просадки (что для опционных стратегий критично из-за гамма-риска), то фокус на входном фильтре оправдан.
Практически: при разработке, например, VRP-стратегии (продажа волатильности при высоком IV/RV-спреде) стоит зафиксировать тип входного сигнала и методично тестировать выходы — delta-хедж триггер, фиксированный DTE-выход, выход по реализованной vol. Это структурно совпадает с выводами статьи.
Тестируемо ли
Да, и хорошо ложится на наш Python-движок. Нужны: BTC/ETH OHLCV (есть), rolling-z для нормализации сигналов (есть), walk-forward с фиксированными окнами. Можно воспроизвести логику: зафиксировать один вход (например, RSI-z > 1.5), перебрать выходы (фиксированный % / ATR-стоп / временной), замерить win rate и max drawdown. Затем — зафиксировать выход и перебрать типы входных индикаторов. Данных для этого достаточно; единственное ограничение — отсутствие внутридневных тиков, если авторы тестировали на минутках.
Сомнения
Масштаб в 99 млн тестов — это одновременно сила и слабость. При таком переборе Deflated Sharpe и поправка на множественное тестирование обязательны, иначе любой «лучший» параметр — артефакт. Авторы говорят о чувствительности, а не об оптимальных значениях, что методологически честнее — но всё равно: выводы получены на конкретном историческом окне крипты (скорее всего, 2018–2024), которое включает несколько структурно разных режимов. Устойчивость разбивки «выходы → win rate, входы → просадка» в OOS не гарантирована. Кроме того, аннотация не раскрывает, учитывались ли транзакционные издержки и проскальзывание — в крипте на малых таймфреймах это меняет картину кардинально.
Следующий шаг
Поставить в bt_engine двухуровневый эксперимент на дневных BTC OHLCV (2019–2024, walk-forward 180/60 дней): зафиксировать три типа входных сигналов (RSI-z, MACD-cross, BB-touch), для каждого перебрать пять схем выхода (фиксированный %, ATR×2, временной N-дней, трейлинг-стоп, выход по противосигналу). Замерить win rate и max drawdown отдельно. Проверить гипотезу: дисперсия win rate по выходам > дисперсии по входам — и наоборот для просадки.
Результаты тестов
Проверено на наших данных до публикации (2026-09-05) — повторили дизайн автора на его же пяти перпах и его же окне: 2016 пар условий × 125 выходов × 10 работ, около 25 миллионов бэктестов, и прогнали ту же машинерию через три мира без всякой структуры. Карта чувствительности воспроизводится почти число в число. И ровно так же она воспроизводится на рядах, в которых предсказывать нечего. Это карта конструкции «тейк-профит, стоп, время жизни», а не карта крипты.
Провенанс. Статья открыта, дизайн раскрыт полностью: рынки, окно, сетка, издержки, фолды. Редкий случай, когда можно повторить, а не гадать. Отличия нашего стенда: 8 семейств индикаторов × 8 периодов (64 вариации, 2016 пар) вместо 20 × 20 у автора (79 800 пар); условия семейств наши, так как у автора они не раскрыты (SMA, ROC, RSI, z-score, Bollinger, Williams %R, CCI, фильтр объёма); CCI с упрощённым mean deviation. Остальное по букве: часовые бары BTC, ETH, BNB, XRP, SOL, окно 2021-05-28 … 2026-07-21, long и short отдельно, TP {1, 2, 4, 8, 16%} × SL {то же} × TTL {12, 48, 168, 504, 1512 баров}, 0.04% комиссии + 0.01% проскальзывания за филл, фандинг, вход по открытию бара после сигнала, выход возможен в баре входа, ничья TP и SL в одном баре — в пользу TP (реплей SL-first отдельно), фильтр «не меньше 30 сделок», OOS-прокси = walk-forward efficiency × ln(1 + total return) по его формуле, чувствительность = IQR медиан по своему блоку, делённый на IQR всех результатов работы, классификация 0.80 / 1.25.
Карта автора воспроизводится
| метрика | R = выходы ÷ входы, у нас (автор) | работы entry / tie / exit, у нас (автор) |
|---|---|---|
| win rate | 20.7 (20.8) | 0 / 0 / 10 (0 / 0 / 10) |
| число сделок | 0.46 (0.39) | 10 / 0 / 0 (10 / 0 / 0) |
| максимальная просадка | 0.49 (0.34) | 8 / 2 / 0 (10 / 0 / 0) |
| total return | 0.81 (0.40) | 5 / 2 / 3 (7 / 3 / 0) |
| OOS-прокси | 1.15 (0.53) | 3 / 5 / 2 (6 / 3 / 1) |
Одношаговые изменения одной ручки, |Δ| / IQR работы (у нас / у автора):
| ручка | OOS-прокси | total return | просадка | win rate | сделки |
|---|---|---|---|---|---|
| индикатор одной ноги | 0.55 / 0.53 | 0.39 / 0.43 | 0.46 / 0.37 | 0.04 / 0.04 | 0.50 / 0.28 |
| период ±1 шаг | 0.20 / 0.16 | 0.10 / 0.11 | 0.12 / 0.08 | 0.01 / 0.01 | 0.02 / 0.01 |
| TP ±1 шаг | 0.32 / 0.28 | 0.21 / 0.19 | 0.23 / 0.14 | 0.37 / 0.36 | 0.10 / 0.10 |
| SL ±1 шаг | 0.34 / 0.29 | 0.18 / 0.19 | 0.21 / 0.16 | 0.36 / 0.34 | 0.19 / 0.08 |
| TTL ±1 шаг | 0.21 / 0.13 | 0.13 / 0.08 | 0.12 / 0.06 | 0.07 / 0.07 | 0.05 / 0.01 |
Узкий стоп (1–2%) против широкого (8–16%): +483 сделки и −29.8 п.п. win rate (у автора +324 и −31.3). Всё, что автор описал, у нас на месте. Вопрос в том, что это описывает.
Три мира без структуры дают ту же карту
Берём те же пять рынков и три раза уничтожаем в них всё, что можно предсказать: (1) знаковая рандомизация часовых доходностей — сохранены среднее, траектория волатильности и форма каждого бара, убита автокорреляция; (2) перестановка баров в случайном порядке; (3) чистое геометрическое броуновское движение с той же средней и σ. Все 10 работ, вся сетка, та же статистика:
| реальные данные | знаки | перестановка | GBM | автор | |
|---|---|---|---|---|---|
| win rate: R, работы | 20.7, 0/0/10 | 20.4, 0/0/10 | 23.2, 0/0/10 | 19.3, 0/0/10 | 20.8, 0/0/10 |
| сделки: R, работы | 0.46, 10/0/0 | 0.37, 10/0/0 | 0.39, 10/0/0 | 0.22, 10/0/0 | 0.39, 10/0/0 |
| просадка: R, работы | 0.49, 8/2/0 | 0.63, 6/3/1 | 0.58, 8/2/0 | 0.54, 8/2/0 | 0.34, 10/0/0 |
| total return: работы | 5/2/3 | 4/2/4 | 5/2/3 | 3/5/2 | 7/3/0 |
| OOS-прокси: работы | 3/5/2 | 4/3/3 | 3/6/1 | 3/6/1 | 6/3/1 |
| индикатор против периода (OOS) | 0.55 / 0.20 | 0.61 / 0.20 | 0.66 / 0.25 | 0.64 / 0.23 | 0.53 / 0.16 |
| взаимодействие OOS, медиана | 0.68 | 0.80 | 0.84 | 0.73 | 0.91 |
| узкий стоп: Δсделок, Δwin rate | +483, −29.8 | +434, −30.0 | +491, −31.8 | +363, −32.3 | +324, −31.3 |
Ни одна строка карты не отличает реальный рынок от мира, в котором никакой индикатор не может ничего знать. «Повторяемость во всех десяти работах», которой автор заменил p-value, здесь гарантирована механикой: одна и та же конструкция даёт один и тот же ответ на любом ряде.
Почему: win rate — это геометрия скобки
Для бездрейфового блуждания вероятность коснуться тейка раньше стопа равна SL / (TP + SL). Медианный win rate каждого из 125 выходов на реальных данных ложится на эту формулу с корреляцией 0.999 и медианной ошибкой 0.011: TP 1% при SL 16% даёт около 94% выигрышных сделок, TP 16% при SL 1% — около 6%. Вход в эту формулу не входит вовсе, поэтому IQR медиан по выходам огромен, а по входам почти нулевой, и R ≈ 20 получается до того, как вы посмотрели на рынок. Отсюда же «узкий стоп: больше сделок, ниже win rate»: стоп срабатывает чаще, позиция освобождается раньше, следующий вход наступает быстрее. Это арифметика, и она одинакова для BTC и для монетки.
Просадка и число сделок «ведутся входом» по той же причине с другой стороны: вход задаёт частоту сделок и долю времени в рынке, а серия убытков при фиксированной скобке растёт с числом попыток.
«Взаимодействие 90.8%» измеряет шум
В полной двухфакторной таблице без повторов «взаимодействие» — это остаток после вычитания строчных и столбцовых средних. Если результат зашумлён, шум и есть этот остаток. В таблице из чистого шума наших размеров (1371 входов × 125 выходов) доля взаимодействия по построению равна (r−1)(c−1)/(rc−1) = 0.99. У автора 0.91, у нас на реальных данных 0.68, в мирах без структуры 0.73–0.84. Число говорит, насколько шумен OOS-прокси, а не о том, что «комбинация важнее ручек». Практический вывод автора (проверять финалистов как полные ячейки вход–выход) от этого не становится хуже, но обоснование у него другое: не «взаимодействие велико», а «прокси шумен».
Контекст, который таблицы прячут: при 10 б.п. за круг на часовых барах прибыльны 2–9% ячеек в long-работах и 17–29% в short-работах, медианный итог за пять лет от −41% до −86%. OOS-прокси ранжирует в основном проигрышные стратегии; сама статья эджа и не обещает.
«Индикатор важнее периода» — свойство сетки
Соседние периоды одного индикатора дают почти те же сигналы, смена семейства меняет их целиком, поэтому шаг периода двигает результат меньше, чем смена индикатора, на любом ряде: 0.61–0.66 против 0.20–0.25 в мирах без структуры при 0.55 против 0.20 на реальных данных. Это верно и полезно как порядок операций (сначала структура, потом тонкая настройка), но это утверждение о том, как устроен перебор, а не о рынке.
На дневных барах карта другая
Та же сетка входов и та же скобка на дневных барах BTC и ETH (2019–2026, TTL 2–63 дня, четыре работы): просадка становится exit-led во всех четырёх (R 1.82 против 0.49 на часовых), R по win rate падает до 7.6, узкий стоп добавляет +21 сделку вместо +483. Скобка 1–16% относительно дневного хода — другая геометрия, и карта меняется вместе с ней. Автор это предвидел («дневные акции или очень короткие фьючерсы могут дать другую карту»), но причина не в активе, а в отношении размера скобки к размеру бара. Реплей SL-first меняет только тени: win rate R 18.3, просадка 7/3/0.
Санитария
Цепочки сделок для 12 ячеек пересчитаны явным циклом по барам с касаниями по high/low, TTL, ничьей, комиссиями и фандингом — совпадение до 10⁻⁹; поиск первого касания сверен с наивным сканом на 300 случайных датах; на симулированном бездрейфовом блуждании win rate выходов совпал с SL/(TP+SL) с максимальной ошибкой 0.04; повторный прогон побитово тот же; в мире знаков модули отклонений и тени баров сохранены точно, в перестановке сохранено мультимножество доходностей, в GBM — среднее и σ; условия входа на префиксе ряда совпадают с условиями на полном ряде (сигнал бара не зависит от будущего); карта чувствительности пересчитана независимой реализацией на pandas.
Что это значит и где копаем дальше
- Порядок операций автора остаётся полезной эвристикой, только адрес у него другой: «TP и SL двигают win rate, вход двигает частоту сделок и просадку» — это свойства вашей скобки, они верны на любом инструменте и любом рынке. Сравнивать по этой карте рынки или искать в ней «что работает в крипте» нельзя.
- Что было бы фактом о рынке — знак результата по семействам входов после издержек: какие условия дают положительный OOS хотя бы в части работ. В нашей сетке на часовых барах при 10 б.п. круг это редкость (2–29% ячеек), и это отдельный вопрос, который мы ставим следующим.
- Тест, который стоит требовать от любой карты чувствительности: прогнать её через перестановку баров. Если карта не изменилась, она про конструкцию.
- Читатели с собственной сеткой входов или выходов: пришлите определение, прогоним через тот же стенд и три мира и опубликуем с указанием автора.