Стратегии
SOL 4H: тренд с фильтром расширения волатильности, длинные и короткие позиции (SOLUSDT.BINANCE USD-M — следовать за направленным трендом ONLY, когда реализованная волатильность EXPANDING, оставаться вне рынка при снижении волатильности и боковом движении, выход по трейлингу ATR, параметров — 3)
Итог: Отменено
SolFourHourVolExpansionGatedTrendLS
Сводка по итогам
SolFourHourVolExpansionGatedTrendLS пыталась сделать трендовое следование на 4H SOL жизнеспособным, торгуя только при явном расширении реализованной волатильности и избегая бокового движения при низкой волатильности, погубившего предыдущие варианты. На надёжном бэктесте за 6 года и 1019 сделок результат оказался практически безубыточным после издержек: общая доходность около 15%, коэффициент Шарпа 0.18, причём CI пересекает ноль, фактор прибыли 1.022 и информационный коэффициент -1.04 относительно стратегии «купи и держи»; моделируемое влияние на рынок съело две трети валовой прибыли при ёмкости всего около $226K. Хуже того, фильтр волатильности не подтвердил основную гипотезу: в спокойном режиме, которого стратегия якобы избегает, она всё равно теряла -25.95%. После 2 итераций аналитик отказался от неё на этапе проверки бэктеста, до оптимизации: сигнал с преимуществом ниже издержек признан невосстановимым — ещё один провал в уже имеющем результат 0/N семействе моментумных стратегий на одном инструменте SOL.
Гипотеза
Сигнал с краем ниже издержек, чувствительный к комиссиям и влиянию на рынок, на убедительной выборке 1019 сделок за 6 год: profit_factor 1.022 (около безубыточности, ниже порога жизнеспособности 1.05 и в диапазоне fee_edge), коэффициент Шарпа 0.18, причём CI [-0.61, 1.02] пересекает ноль; information_ratio -1.04. Моделируемое влияние на рынок съедает 66.5% валовой прибыли при ничтожной ёмкости $226K, поэтому номинальная доходность 0.236% на сделку не является устойчивым преимуществом. Фильтр расширения волатильности не оправдывает свою идею: стратегия всё равно теряет -25.95% в спокойном режиме, которого должна избегать. Это копия одноинструментальной трендово-моментумной LS на 4H, далеко не дотягивающая до единственного пережившего отбор уровня (Sharpe>=1.5 и PF>=2.0, L90); семейство моментумных стратегий SOL уже имеет результат 0/N (fee_edge / много провалов уровня PBO). Оптимизация не исправит сигнал PF-1.022, валовое преимущество которого поглощается комиссиями и влиянием на рынок сверх торговых издержек. Тип провала: fee_edge / край ниже издержек.
Реализация
Бессрочный контракт SOLUSDT.BINANCE USD-M, бары 4H; следование за трендом в длинных и коротких позициях, только когда реализованная волатильность EXPANDING. Оценка тренда = скорость изменения за N баров, нормированная на ATR(50)*sqrt(N) (непрерывно рассчитывается на каждом баре). Фильтр = ATR(10)/ATR(50) >= vol_ratio_threshold. Вход, когда фильтр включён и |оценка тренда| >= trend_min_strength (BUY, если значение положительное, SELL, если отрицательное). Выходы: смена знака тренда; выключение фильтра расширения волатильности OFF (коэффициент опускается ниже порога*0.90 после минимального удержания 3 баров); либо трейлинг-стоп ATR на расстоянии atr_trail_mult*ATR(50) от лучшего закрытия после входа. Размер позиции рассчитывается так, чтобы риск составлял 2% капитала на расстоянии до трейлинг-стопа, и ограничен номиналом 1x капитала; без плеча.
Результаты верификации
Изменение функциональности не требуется; если совпадение имени метода с базовым когда-нибудь вызовет путаницу, переименуй его, например, в _min_bars(), и вызывай напрямую из calculate_signal.
min_bars_required() переопределяет метод базового класса (предупреждение статического анализатора base_shadow). Здесь переопределение выглядит намеренным и обоснованным: максимум из trend_lookback+2, atr_slow_period+2, 20; оно ограничивает calculate_signal через `len(self._bars) < self.min_bars_required()`, поэтому прогрев учитывается. Убедись, что базовый шаблон действительно использует это переопределение для ограничения прогрева; если базовый класс применяет собственный приватный счётчик прогрева, семантика дополнительной ноги и прогрева всё равно сохраняется, поскольку стратегия сама себя ограничивает.
Можно при желании инициализировать состояние трейлинга в момент отправки заявки (в хуке _submit_entry), чтобы точка отсчёта точно соответствовала бару входа; текущий вариант допустим.
Состояние трейлинга (ATR trailing anchors (_trail_best/_trail_worst)) и _entry_bar_i переинициализируются внутри should_exit при первом обнаружении нового идентификатора позиции. Если should_exit не вызывается именно на баре открытия позиции (в базовом потоке вход и выход обычно взаимоисключающие в пределах одного бара), трейлинг фактически начинает отслеживание с бара AFTER после входа. Это небольшое смещение на один бар в начальном значении трейлинга и счётчике удержания, а не ошибка корректности — подход консервативный (min_hold фактически отсчитывается с бара после входа) и соответствует заявленному намерению разработчика.
Предварительный тест в песочнице выявляет три вопроса о прибыльности для оценки аналитиком при полном бэктесте: (1) impact_cost_pct 50.91% при capacity_usd всего около $386K и обороте 130.8 — avg_position_pct 32.6% капитала в одной книге 4H SOL создаёт сильное моделируемое воздействие на рынок, которое съедает примерно половину валовой прибыли (avg_position_pct/max_notional_frac=1.0 — рычаг управления размером позиции, если ограничена ёмкость); (2) стратегия LOSES в режиме низкой волатильности (-25.92%, коэффициент Шарпа 0.036) и приносит прибыль только при нормальной/повышенной волатильности — это согласуется с предпосылкой гипотезы, что боковой рынок губителен для стратегии, однако потери в спокойном режиме велики; (3) основной показатель Шарпа 0.18, при этом CI [-0.61, 1.02] охватывает ноль, а information_ratio -1.04 относительно стратегии «купить и держать». Эти факторы не ставят под сомнение корректность: код точно реализует гипотезу, а оптимизатор ещё не запускался. Реальный бэктест на полной истории и аналитик определят наличие преимущества.
Обзор бэктеста
- Шарп
- 0,18
- Общая доходность
- 14,95%
- Максимальная просадка
- 22,25%
- Всего сделок
- 1019
- Доля прибыльных
- 45,6%
- Профит-фактор
- 1,02
Надёжная выборка: 1019 сделок за 6 лет (metrics_reliable=true); код точно реализует механизм LS с фильтром расширения волатильности (1019 сигналов = 1019 заявок), сбалансированный между 630 длинными и 389 короткими позициями.
avg_trade_return_pct 0.236% формально превышает порог жизнеспособности 0.15% Binance USD-M, а max_drawdown 22.2% не является экстремальным.
profit_factor 1.022 — практически безубыточно после издержек, ниже порога жизнеспособности 1.05 для проверки и точно в диапазоне fee_edge [0.85,1.10] при более чем 300 сделках (L18). Валовое преимущество меньше торговых издержек.
Коэффициент Шарпа 0.18, бутстрэп CI [-0.61, 1.02] около нуля и information_ratio -1.04 относительно стратегии «купи и держи» — различимого преимущества нет; total_return всего около 15% за 6 лет при альфе -0.005.
impact_cost_pct 66.5% валовой прибыли при ёмкости всего около $226K — моделируемое влияние на рынок поглощает две трети валового преимущества; стратегия работает лишь в игрушечном масштабе capacity_usd.
Фильтр расширения волатильности GATE не выполняет заявленную задачу: стратегия по-прежнему сильно теряет в спокойном режиме (-25.95%, коэффициент Шарпа 0.035) — именно при боковом движении, от которого, по её заявлению, она должна систематически уклоняться, — и приносит прибыль только в обычном и стрессовом режимах. Опасения QA насчёт спокойного режима подтвердились.
Копия одноинструментальной трендово-моментумной LS на 4H далеко не дотягивает до единственного уровня этого класса, проходившего проверку (ADA победитель: коэффициент Шарпа>=1.5, PF>=2.0; здесь 0.18 / 1.02 — L90). Базовый бэктест задаёт верхнюю границу; дефляция и проверка на отложенной выборке могут только её снизить.
Семейство импульсных стратегий SOL на одном инструменте имеет показатель 0/N: импульс с подтверждением объёмом SOL (fee_edge), импульс SOL 4H (PBO 0.63, DSR 0.14), а также SOL HL с двумя TF (PBO 0.75) — все недавно провалились.
Анализ
Фильтр бэктеста: - метрики ненадёжны: несогласованность — знак коэффициента Шарпа 0.13 расходится со знаком total_return -22.31%; коэффициент Шарпа рассчитывается по ряду mtm_equity_curve, а доходность — по кривой капитала. Оценивай кривую капитала.
Сводка по итогам
Фильтр расширения волатильности не оправдал свою идею: стратегия всё равно потеряла -25.95% в спокойном режиме, которого должна была избегать, а моментумная SOL на 4H для одного инструмента остаётся на уровне 0/N, около безубыточности после комиссий и влияния на рынок.
Аналитик отказался от неё на этапе проверки бэктеста (до оптимизации): убедительная выборка из 1019 сделок показала сигнал с преимуществом ниже издержек, чувствительный к комиссиям и влиянию рынка, с фактором прибыли 1.022 в диапазоне fee_edge и коэффициентом Шарпа CI около нуля. Поэтому аналитик решил, что оптимизация не сможет улучшить результат.
Следование за трендом в длинных и коротких позициях с 3 параметрами на таймфрейме 4H по бессрочным контрактам SOLUSDT.BINANCE USD-M. Стратегия торговала только при расширении реализованной волатильности (ATR быстрая/ATR медленная выше порога) и оставалась вне рынка при сжатии волатильности и боковом движении, стремясь следовать за сформировавшимися направленными движениями и структурно избегать рыночного шума, поглощающего прибыль издержками.
На выборке за 6 лет и 1019 сделок доходность составила около 15% суммарно при коэффициенте Шарпа 0.18 (бутстрэп CI [-0.61, 1.02]), факторе прибыли 1.022, доле прибыльных сделок 45.6%, максимальной просадке 22.2% и информационном коэффициенте -1.04 относительно стратегии «купи и держи». Показатель avg_trade_return_pct из 0.236% формально превысил порог 0.15%, однако смоделированное влияние рынка поглотило 66.5% валовой прибыли при крошечной ёмкости около $226K.
Stratmill — это инструмент для исследований и бумажной торговли, а не финансовая консультация или брокер. Результаты бэктестов и бумажной торговли являются гипотетическими. Торговля сопряжена с риском убытков.