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

Стратегии

ETH 1H UTC Лонг при пробое диапазона открытия с трейлинг-стопом ATR

Итог: Отменено

EthOneHourUTCOpeningRangeBreakoutLong

Сводка по итогам

Стратегия стремилась получить простое внутридневное преимущество с минимальной сложностью: лонг при пробое диапазона открытия UTC на ETH 1H, трейлинг-стоп ATR и закрытие в конце дня; при разработке намеренно избегали недавних сценариев неудач. Вместо этого проявились сразу две проблемы: катастрофическая ошибка с чрезмерным плечом подняла среднюю экспозицию до 360% вместо целевой 120%, вызвав однодневные убытки свыше -100%, которые обнулили счёт в середине -2024; кроме того, реального преимущества не было (фактор прибыли 0.70, коэффициент Шарпа -1.69, весь CI был ниже нуля, убытки в каждом году 2020-2023, комиссии составили 41% от валовой прибыли). Аналитик отказался от стратегии на этапе проверки бэктеста во второй итерации. Это отличает её от родственных стратегий продолжения тренда, где ошибка наращивания позиции лишь искажала положительное преимущество: здесь не зависящий от плеча PF 0.70 означает, что даже при правильном размере позиции комиссии приводят к убыткам. Оптимизировать было нечего, поэтому стратегия не дошла до оптимизации или оценки рисков.

Гипотеза

Лонговая стратегия пробоя на одном инструменте с входами по сессиям на бессрочных фьючерсах ETHUSDT, использующая бары длительностью 1 часа. При смене дня UTC (00:00 UTC) стратегия задаёт «диапазон открытия» по первым 4 часовым барам (00:00-04:00 UTC). После фиксации диапазона стратегия ждёт подтверждённого пробоя его максимума на небольшой буфер ATR и открывает лонг. Выходы: трейлинг-стоп ATR типа «люстра», фиксированный тейк-профит 2R и обязательное закрытие в конце дня (23:00 UTC), чтобы позиции не переносились на определение диапазона следующей сессии. Используются только данные OHLCV и только параметры 3 (range_hours, atr_period, atr_trail_mult). Стратегия намеренно отличается от всех недавних сценариев неудач: не 1D, не 4H, не контртрендовая, не основана на финансировании, не парная, не зависит от OI/ликвидаций, не использует пересечение SMA или откат RSI(2). Объём проверок намеренно минимален — без дополнительных данных, extra_bar_types и extra_instruments, чтобы избежать путей внедрения синтетических данных, связанных с тайм-аутами проверки.

Исправление в итерации 2 для сбоя «замороженный сигнал (значение=0.0)» в Layer-2, steady_downtrend, flat_ranging и price_gap. Причиной был антишаблон сигнала с условным допуском: calculate_signal возвращал 1.0 только при фактическом пробое, а в остальных случаях — 0.0; поэтому в сценариях, где цена не пробивала верхнюю границу диапазона открытия, сигнал оставался постоянным 0.0 (steady_uptrend и volatility_spike уже прошли проверку, поскольку там происходят пробои). Исправление: calculate_signal теперь ALWAYS……Показать большеСвернуть

Исправление в итерации 2 для сбоя «замороженный сигнал (значение=0.0)» в Layer-2, steady_downtrend, flat_ranging и price_gap. Причиной был антишаблон сигнала с условным допуском: calculate_signal возвращал 1.0 только при фактическом пробое, а в остальных случаях — 0.0; поэтому в сценариях, где цена не пробивала верхнюю границу диапазона открытия, сигнал оставался постоянным 0.0 (steady_uptrend и volatility_spike уже прошли проверку, поскольку там происходят пробои). Исправление: calculate_signal теперь ALWAYS возвращает непрерывную оценку, меняющуюся от бара к бару: tanh расстояния цены закрытия выше зафиксированного максимума диапазона в единицах ATR, а пока диапазон формируется — запасную оценку на основе tanh импульса. Так сигнал меняется в каждом сценарии. Точное решение о входе при пробое сессии не изменилось: оно вычисляется в том же месте и сохраняется в self._breakout_trigger (диапазон зафиксирован AND, момент находится в торговом окне AND, сделок ещё не было AND, закрытие > range_high + буфер ATR); теперь should_enter и position_size используют это решение вместо знака исходного сигнала. Поведение сделок Layer-3 и логика выхода chandelier/2R/EOD остались побарно неизменными (логика выхода уже прошла Layer 1). Импорты не менялись (только numpy), что сохраняет успешное прохождение Layer-1. Площадка и плечо без изменений: фьючерсы BINANCE с плечом 2.0; position_size действительно использует плечо (капитал * position_pct * плечо).

Сразу два основания для отказа. (1) Катастрофическое чрезмерное кредитное плечо: avg_position_pct 360% при заявленном намерении 1.2x, что привело к невозможным дневным убыткам (-70.6% на 2024-07-19, -146.9% на 2024-07-30), max_drawdown 137.9% и годовой доходности 2024 в размере -208% — к середине -2024 счёт был практически обнулён, а каждый день начиная с 2024-08 показывает 0.0 (собственного капитала не осталось). Здесь повторяется та же проблема, что и в родственных стратегиях: нет защиты от повторного входа при……Показать большеСвернуть

Сразу два основания для отказа. (1) Катастрофическое чрезмерное кредитное плечо: avg_position_pct 360% при заявленном намерении 1.2x, что привело к невозможным дневным убыткам (-70.6% на 2024-07-19, -146.9% на 2024-07-30), max_drawdown 137.9% и годовой доходности 2024 в размере -208% — к середине -2024 счёт был практически обнулён, а каждый день начиная с 2024-08 показывает 0.0 (собственного капитала не осталось). Здесь повторяется та же проблема, что и в родственных стратегиях: нет защиты от повторного входа при уже открытой позиции; здесь она фатальна — вход на каждой сессии приводит к чрезмерному увеличению размера позиции и наращиванию экспозиции вместо удержания её на уровне 1.2x. (2) Даже до обвала преимущества не было: profit_factor 0.70, коэффициент Шарпа -1.69, а нижняя граница ENTIRE доверительного интервала ниже нуля (ci_high -1.06), win_rate 38.3%, probabilistic_sharpe 0.0 и убытки в каждом году 2020-2023 (-19%, -24%, -27%, -55%). Пробой диапазона открытия на 1H порождает 1,355 сделок; комиссия составляет 40.95% валового результата — сигнал не покрывает издержки и проигрывает из-за комиссий. Это NOT случай, когда перебор размеров позиции применяли к родственным стратегиям продолжения тренда BTC/ETH/SOL (у них положительный PF/альфа искажались из-за наращивания позиции): здесь profit_factor 0.70 почти не зависит от кредитного плеча, поэтому даже при правильном определении размера позиции 1.2x чистый результат остаётся отрицательным из-за комиссий, а сигнал убыточен каждый год. Ни один диапазон параметров не превратит пробой диапазона открытия с PF-0.70 и 41% издержками в виде комиссий в жизнеспособное преимущество, поэтому оптимизация не стоит 2 часов — отказаться. (Примечание разработчика: дефект кредитного плеча и размера позиции, приведший к экспозиции 360%, повторяется в этом семействе стратегий и должен быть исправлен в любой будущей стратегии, однако это не единственная причина отказа — преимущества нет в любом случае.)

Реализация

Лонговый пробой диапазона открытия UTC на бессрочном контракте ETHUSDT.BINANCE USD-M, бары 1H, чистый OHLCV. Каждый день UTC диапазон открытия фиксируется по первым 4 часовым барам, затем открывается лонг при первом закрытии бара выше range_high + буфер ATR (один вход за сессию). Выходы: трейлинг-стоп «люстра» ATR, фиксированный тейк-профит 2R и обязательное закрытие всех позиций 23:00 UTC в конце дня. calculate_signal() возвращает непрерывную оценку расстояния пробоя (tanh расстояния между закрытием и range_high в единицах ATR; до фиксации диапазона используется запасной сигнал импульса), поэтому сигнал меняется на каждом баре; двоичный триггер входа при пробое хранится в self._breakout_trigger и используется в should_enter/position_size. Плечо 2.0 (~1.2x номинала капитала).

Результаты верификации

Проверка не пройдена (Layer 2 — синтетические сценарии): Использованные параметры: ['atr_period', 'range_hours', 'min_notional', 'position_pct', 'eod_flat_hour', 'take_profit_r', 'atr_trail_mult', 'breakout_buffer_mult'] Проверьте, что __init__ задаёт все атрибуты на основе self.parameters.get(). - steady_downtrend: Замороженный сигнал: все сигналы (481) идентичны (value=0.0). Вероятно, в calculate_signal() ошибка — сигнал никогда не меняется. - flat_ranging: Замороженный сигнал: все сигналы (481) идентичны (value=0.0). Вероятно, в calculate_signal() ошибка — сигнал никогда не меняется. - price_gap: Замороженный сигнал: все сигналы (481) идентичны (value=0.0). Вероятно, в calculate_signal() ошибка — сигнал никогда не меняется.

Обзор бэктеста

Шарп
-1,39
Общая доходность
-100,00%
Максимальная просадка
100,00%
Всего сделок
1365
Доля прибыльных
38,4%
Профит-фактор
0,71

Небольшой и простой для проверки объём, как и планировалось (только данные OHLCV, без дополнительных баров или инструментов); логика сессии/диапазона и UTC-из-ts_event реализованы согласованно.

Чрезмерное плечо CATASTROPHIC: avg_position_pct 360% вместо предполагаемого 1.2x, что привело к невозможным однодневным убыткам (-70.6% на 2024-07-19, -146.9% на 2024-07-30), max_drawdown 137.9%, годовой показатель 2024 — -208%. В середине -2024 счёт был обнулён примерно до нуля, а в отчёте за каждый последующий день указано 0.0.

Преимущества не было ещё до обнуления счёта: profit_factor 0.70, коэффициент Шарпа -1.69, весь период CI был ниже нуля (ci_high -1.06), win_rate 38.3%, probabilistic_sharpe 0.0; убытки в каждом году 2020-2023 (-19%, -24%, -27%, -55%).

Комиссии съедают результат: 1,355 сделок, комиссия 40.95% от валового результата — пробой диапазона открытия на 1H слишком часто торгует, а сигнал не покрывает издержки; PF 0.70 не зависит от кредитного плеча, поэтому правильный размер позиции всё равно даёт валовый убыток.

Та же отсутствующая защита от повторного входа при открытой позиции, что и у родственных стратегий, но здесь последствия катастрофические: вход в каждой сессии завышает экспозицию и не удерживает её на уровне 1.2x.

Сводка по итогам

Пробой диапазона открытия 1H с частыми сделками поглощается комиссиями, которые составляют около 41% валовой прибыли; преимущество, не зависящее от плеча, ниже издержек. Исправление повторяющейся ошибки наращивания позиции лишь выявит стратегию, которая всё равно убыточна; катастрофическое чрезмерное плечо 360% показывает, что дефект защиты от повторного входа при открытой позиции в этом семействе стратегий нужно исправить, прежде чем доверять каким-либо результатам.

Аналитик проверки бэктеста вынес вердикт «отказаться» из-за двух дисквалифицирующих проблем: критически важный защитный механизм, предотвращающий повторный вход при уже открытой позиции, отсутствовал, из-за чего экспозиция выросла до 360% и счёт был обнулён; независимо от этого, исходного преимущества не было: не зависящий от плеча фактор прибыли 0.70 и влияние комиссий 41% означают, что даже при правильном размере позиции 1.2x стратегия остаётся убыточной после комиссий и несёт убытки каждый год.

Лонговая стратегия пробоя диапазона сессии на одном инструменте для фьючерсов Binance ETHUSDT 1H (целевой номинал 1.2x при плече 2.0x): фиксировался диапазон открытия UTC по первым 4 часовым барам, лонг открывался после подтверждённого пробоя максимума диапазона с буфером ATR, а выход выполнялся по трейлинг-стопу ATR типа «люстра», тейк-профиту 2R и обязательному закрытию в конце дня.

На 1,355 сделках доходность составила -142.6%, фактор прибыли — 0.70, коэффициент Шарпа — -1.69 (весь период CI был ниже нуля, ci_high -1.06), доля прибыльных сделок — 38.3%, вероятностный коэффициент Шарпа — 0.0, максимальная просадка — 137.9%; катастрофическая ошибка чрезмерного плеча подняла среднюю позицию до 360% вместо предполагаемого ~120%, вызвав невозможные однодневные убытки (-70.6%, -146.9%), которые обнулили счёт примерно в середине -2024. Убытки были в каждом году начиная с 2020-2023, комиссии составили 40.95% от валовой прибыли.

Stratmill — это инструмент для исследований и бумажной торговли, а не финансовая консультация или брокер. Результаты бэктестов и бумажной торговли являются гипотетическими. Торговля сопряжена с риском убытков.