Перейти к содержимому
Все стратегии

Стратегии

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.

Гипотеза

Следование за трендом на LONG-SHORT, одном инструменте, только по данным OHLCV и с учётом рыночного режима; бессрочный контракт SOLUSDT.BINANCE (USD-M), бары 4H. Стратегия принадлежит к семейству механизмов ONLY, которое единственное в этой фабрике когда-либо доходило до бумажной торговли (направленный импульс в длинных и коротких позициях по одному инструменту на 4H с подтверждением GATE — все варианты BTC/ETH/ADA прошли отбор), но использует фильтр DELIBERATELY DIFFERENT от родственных стратегий с……Показать большеСвернуть

Следование за трендом на LONG-SHORT, одном инструменте, только по данным OHLCV и с учётом рыночного режима; бессрочный контракт SOLUSDT.BINANCE (USD-M), бары 4H. Стратегия принадлежит к семейству механизмов ONLY, которое единственное в этой фабрике когда-либо доходило до бумажной торговли (направленный импульс в длинных и коротких позициях по одному инструменту на 4H с подтверждением GATE — все варианты BTC/ETH/ADA прошли отбор), но использует фильтр DELIBERATELY DIFFERENT от родственных стратегий с подтверждением объёмом и двумя таймфреймами, уже находящихся в конвейере, поэтому это не дубликат. Основная идея: следование за трендом на крипторынке на таймфрейме 4H в условиях низкой волатильности постепенно убыточно (CHOP: частые колебания туда-обратно, где движение меньше комиссий — именно так погибли стратегии сжатия волатильности DOT и все варианты внутридневной торговли на возврате к среднему), а прибыль почти полностью возникает в периоды волатильности EXPANSION, когда начинается настоящее направленное движение. Поэтому стратегия не пытается обнаружить сжатие волатильности и предсказать направление пробоя (подход со сжатием DOT, который провалился), а не зависит от наличия сжатия и начинает торговать только после того, как волатильность DEMONSTRABLY расширяется AND и у цены уже сформировалось направление тренда. Она следует за уже начавшимся движением, а не пытается его предсказать. Знак тренда = знак скорости изменения за N баров (один период расчёта тренда). Фильтр расширения волатильности = ATR(быстрая) / ATR(медленная) выше порога, то есть реализованный диапазон за короткое окно значительно превышает собственный базовый уровень (реальное движение, а не дрейф). Когда фильтр OFF (волатильность снижается или рынок колеблется в диапазоне), стратегия не торгует FLAT — в этом и заключается всё преимущество: она структурно избегает режима рыночного шума, поглощающего прибыль издержками, который погубил неудачные варианты. Ровно 3 параметров: trend_lookback, vol_ratio_threshold, atr_trail_mult. Один инструмент (без корзины — это позволяет избежать обвалов multi_instrument 0/127 backtest_failed), одна площадка (без дрейфа базиса между площадками). Стратегия учитывает режим рынка, торгует в обе стороны (недостаточно представленное направление: 14.2% портфеля) и использует мало параметров, что снижает риск переобучения.

Итерация 2. Отзыв: фильтр бэктеста обнаружил несогласованные метрики: кривая капитала на уровне -22.31%, и предложил оценивать именно её — реализация работала, но несла убытки. Самое небольшое структурное исправление, которое также буквально соответствует гипотезе («когда фильтр OFF, стратегия FLAT»): ранее фильтр блокировал только входы NEW, а открытые позиции оставались в рынке при снижении волатильности и возвращении бокового движения. Там широкий трейлинг 3xATR постепенно отдавал прибыль по тренду, а выход……Показать большеСвернуть

Итерация 2. Отзыв: фильтр бэктеста обнаружил несогласованные метрики: кривая капитала на уровне -22.31%, и предложил оценивать именно её — реализация работала, но несла убытки. Самое небольшое структурное исправление, которое также буквально соответствует гипотезе («когда фильтр OFF, стратегия FLAT»): ранее фильтр блокировал только входы NEW, а открытые позиции оставались в рынке при снижении волатильности и возвращении бокового движения. Там широкий трейлинг 3xATR постепенно отдавал прибыль по тренду, а выход при смене знака запаздывал на много баров. Именно этот перенос позиции и приводил в режим рыночного шума, поглощающего прибыль издержками, которого гипотеза избегает. Изменения касались только логики выхода и порога (импорты, структура класса и непрерывный сигнал, прошедший уровни 1-3, не затронуты): (1) should_exit теперь закрывает позицию, когда коэффициент расширения волатильности падает ниже vol_ratio_threshold*gate_exit_frac (0.90 — гистерезис, предотвращающий переключения на границе входа); предусмотрено минимальное удержание 3 баров, чтобы вход нельзя было отменить на следующем баре; (2) повышена избирательность: vol_ratio_threshold 1.10 -> 1.15 и trend_min_strength 0.35 -> 0.50, чтобы стратегия совершала меньше сделок, выбирая действительно расширяющиеся и уже сформировавшиеся тренды вместо множества пограничных сигналов, где движение на сделку едва покрывает круговой оборот около 0.10%; (3) atr_trail_mult 3.0 -> 2.5, чтобы при развороте отдавать меньше движения. Более короткое удержание с ограничением по фильтру также уменьшает переоценку открытой позиции по рынку, из-за которой знак коэффициента Шарпа (ряд mtm) и total_return (кривая капитала) расходились. По-прежнему ровно 3 оптимизируемых параметров, один инструмент, одна площадка, без плеча, длинные и короткие позиции.

Сигнал с краем ниже издержек, чувствительный к комиссиям и влиянию на рынок, на убедительной выборке 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 — это инструмент для исследований и бумажной торговли, а не финансовая консультация или брокер. Результаты бэктестов и бумажной торговли являются гипотетическими. Торговля сопряжена с риском убытков.