Стратегии
Возврат к среднему по полосе волатильности в боковом режиме, длинные и короткие позиции (один инструмент: ETHUSDT Binance USD-M, бары 1H, игра на возврат после сильных отклонений ONLY, когда фильтр тренда подтверждает отсутствие тренда — задокументированное исправление проблемы «разворот не работает на крупных активах во время тренда», мало параметров)
Итог: Отменено
EthRangingRegimeVolBandMeanReversionLS1H
Сводка по итогам
Гипотеза
Исправление итерации 3 для тайм-аута слоя -3: предыдущая версия на каждом баре заново создавала массивы numpy из растущей истории баров ENTIRE и выполняла циклы Python ADX по всей истории, что давало общую сложность O(n^2) и превышало лимит дымового теста 300 с на многолетних данных 1H. Минимальное точечное изменение ограничивает self._bars фиксированным хвостом (self._calc_window = max(band_period, 5*adx_period)+10 = 80 баров) перед созданием массивов, поэтому работа на бар составляет O(1), а общая сложность — O(n). Вся логика сигналов, входа, выхода и определения размера позиции побайтно совпадает с кодом, уже прошедшим слои 1-2, поэтому предыдущие проверки не ухудшаются. Окно с запасом покрывает период прогрева Уайлдера ADX (2*adx_period+1) и период полосы SMA.
Реализация
Длинно-короткая стратегия возврата к среднему на таймфрейме 1H для бессрочного контракта USD-M ETHUSDT. Играет на возврат после сильных отклонений z-оценки от полосы SMA длиной 24 баров, но ONLY, когда ADX(14) < 25 (режим отсутствия тренда/бокового движения). Остается вне рынка в трендовых режимах и закрывает позицию, если тренд начинается в ходе сделки. Выход по стоп-лоссу и при возврате к среднему. Вычисления на каждом баре ограничены фиксированным недавним окном, поэтому бэктест выполняется за время O(n).
Результаты верификации
Проверка не пройдена (слой 3 — бэктест в изолированной среде): дымовой тест превысил лимит времени 300 с. Почти всегда это означает, что работа на каждом баре масштабируется с историей — например, повторное сканирование всей серии ставок финансирования/дополнительных данных или пересоздание списка с вызовом min()/sorted() внутри calculate_signal()/on_bar() на каждом баре. Предварительно вычислите отсортированные массивы временных меток ONCE в __init__ и используйте bisect либо кэшируйте результаты поиска по временной метке, чтобы затраты на бар составляли O(log n), а не O(n).
Обзор бэктеста
- Шарп
- -1,94
- Общая доходность
- -85,70%
- Максимальная просадка
- 86,79%
- Всего сделок
- 1388
- Доля прибыльных
- 52,9%
- Профит-фактор
- 0,72
Чистая и точная реализация: фильтр режима ADX, игра на возврат по z-оценке и логика стопа/выхода корректно выражают заявленную гипотезу (артефактов и ошибок учета нет, волатильность 20.6% правдоподобна, невозможных дневных значений нет).
Достаточная выборка и надежная инфраструктура: 1,388 сделок за 6+ лет, высокая частота сделок, один ликвидный инструмент, затраты на бар O(1) — самому бэктесту можно доверять.
Отрицательный результат сам по себе информативен: он на большой статистически значимой выборке четко подтверждает исходное ожидание отсутствия разворотов на крупных активах.
Стабильно отрицательное преимущество на протяжении EVERY года (2020 -13%, 2021 -52%, 2022 -32%, 2023 -2.8%, 2024 -5.8%, 2025 -25.6%, 2026 -18.4%) и во всех режимах — total_return -85.7%, max_drawdown 86.8%.
Глубоко отрицательные метрики с поправкой на риск, сомнений нет: коэффициент Шарпа -1.94 (весь CI отрицательный, ci_high -1.14), коэффициент Сортино -2.46, PSR 0.0, profit_factor 0.72, information_ratio -1.01, математическое ожидание -$60.76 на сделку по 1,388 сделкам.
Обратная геометрия выплат, которой, согласно гипотезе, следовало избежать: exit_z=0.3 (маленький выигрыш) против стопа 4% дает avg_win $290 < avg_loss $455 при доле прибыльных сделок 53%; комиссия съедает 16% валовой прибыли — но даже правильная геометрия не спасет сигнал без предсказательного преимущества на протяжении 6 лет.
История итераций
Проверка не пройдена (слой 2 — синтетические сценарии): Использованные параметры: ['exit_z', 'entry_z', 'risk_frac', 'adx_period', 'band_period', 'min_notional', 'adx_threshold', 'stop_loss_pct'] Убедитесь, что __init__ задает все атрибуты с помощью self.parameters.get(). - steady_uptrend: TypeError: объект 'float' нельзя вызвать (временная метка бара: 1735691580000) - steady_downtrend: TypeError: объект 'float' нельзя вызвать (временная метка бара: 1735691580000) - flat_ranging: TypeError: объект 'float' нельзя вызвать (временная метка бара: 1735691580000) - volatility_spike: TypeError: объект 'float' нельзя вызвать (временная метка бара: 1735691580000) - zero_volume: TypeError: объект 'float' нельзя вызвать (временная метка бара: 1735691580000) - price_gap: TypeError: объект 'float' нельзя вызвать (временная метка бара: 1735691580000)
Сводка по итогам
Краткосрочный разворот не дает положительного преимущества на ликвидных крупных криптоактивах, даже при ограничении режимом отсутствия тренда ADX, поэтому стратегия игры на возврат после чрезмерного движения по-прежнему убыточна на ETH во всех годах и режимах.
На этапе BACKTEST_REVIEW до оптимизации аналитик вынес вердикт «отказаться», признав исходную идею несостоятельной, а не содержащей исправимую ошибку. Код точно реализовывал гипотезу, а бэктест был чистым и надежным, поэтому дефекта для исправления не было, как и ненастроенных параметров, которые могла бы обнаружить оптимизация. До оптимизации, последующего анализа аналитика и проверки рисков дело не дошло.
Длинно-короткая стратегия возврата к среднему на таймфрейме 1H для бессрочного контракта USD-M на Binance ETHUSDT: она играла на возврат после сильных отклонений z-оценки от короткой SMA, но только когда фильтр тренда ADX (ADX<25) подтверждал режим отсутствия тренда/бокового движения; во время трендов стратегия оставалась вне рынка, чтобы не противостоять импульсу.
На выборке из более чем 1,388 сделок за 6+ лет (2019-2026) стратегия понесла значительные убытки: общая доходность -85.7%, коэффициент Шарпа -1.94 (весь CI отрицательный, ci_high -1.14), фактор прибыли 0.72, математическое ожидание -$60.76 на сделку и максимальная просадка 86.8% при доле прибыльных сделок 52.9%. Результат был отрицательным в каждом году и каждом режиме; геометрия выплат была обратной (средний выигрыш $290 < средний убыток $455), а комиссия съедала около 16% валовой прибыли.
Stratmill — это инструмент для исследований и бумажной торговли, а не финансовая консультация или брокер. Результаты бэктестов и бумажной торговли являются гипотетическими. Торговля сопряжена с риском убытков.