Стратегии
Пробой диапазона открытия азиатской сессии на Hyperliquid BTC 15-минутный: длинные и короткие позиции (3-параметрический Crabel ORB, только OHLCV)
Итог: Отменено
BtcHl15mAsianOpeningRangeBreakoutLS
Механизм работает чётко (133 сигналов, 133 отправлено, потерь нет) — это не ошибка кода или передачи данных
Гипотеза
Исправление в итерации 2 для `leverage_set_but_unused`: прежний код уже умножал номинал на плечо, но получал значение через getattr(self.config, "leverage", 1.0) с использованием строкового литерала, который статический анализатор не распознаёт как реальное обращение к атрибуту self.config.leverage детектором AST. Минимальное изменение заменяет его прямым обращением к атрибуту `self.config.leverage` (leverage = float(self.config.leverage or 1.0)); теперь номинал = капитал * position_fraction * плечо явно учитывает плечо 2.0, а модель маржи движка согласуется с номиналом, рассчитанным в стратегии. Остальная логика не менялась: автомат состояний ORB, непрерывный сигнал нормализованной полосы, правила входа и выхода, а также все ранее пройденные уровни остались нетронутыми, поэтому регрессии нет. Плечо 2x подходит для внутридневного пробоя с тесным стопом (1% денежный стоп) и не превышает лимит Hyperliquid 20x.
Принципиально убыточная стратегия с риском катастрофического убытка — оптимизация не поможет. total_return -59.6%, profit_factor 0.41, матожидание -$452/сделку и avg_trade_return_pct -0.266% (отрицательное значение) показывают, что у пробоя ORB резко отрицательное матожидание на BTC-HL 15м; Sharpe -2.58 при CI [-4.39, -0.65] полностью ниже нуля и PSR 0.0016 подтверждают отсутствие преимущества с поправкой на риск. За один день (2026-06-10) потеряно -33.8% при средней позиции 138%, с max_drawdown 62.3% (от CI до 93.7%) — использование плеча делает ситуацию ещё опаснее при отсутствии преимущества. Есть два независимых ограничения: (1) настройка параметров не может превратить отрицательное матожидание направленного пробоя одной акции OHLCV в положительное (L9/L41 — класс с нулём выживших), а (2) данные Hyperliquid охватывают лишь около 167 дней — слишком мало для walk-forward-анализа и контрольной выборки. Не стоит тратить 2 часов на оптимизацию.
Реализация
Классический пробой диапазона открытия Crabel (длинные + короткие позиции) на бессрочном контракте Hyperliquid BTC-USD, бары 15 минут, только OHLCV. Диапазон открытия каждого дня UTC — максимум и минимум за первые 60 минут (00:00-01:00 UTC, начало азиатской сессии). После окна OR закрытие 15-минутного бара выше OR_high (с буфером) открывает длинную позицию, ниже OR_low (с буфером) — короткую. Не более одного полного цикла сделки в день, сброс в 00:00 UTC. Выходы: денежный защитный стоп, стоп при структурном пробое диапазона (повторное пересечение противоположной границы OR) и закрытие позиции к концу дня. Плечо 2x учтено в расчёте размера позиции относительно капитала.
Результаты верификации
CLEAN RESTART 2026-09-04 — история вердиктов и записи обучения этого запуска удалены, запуск начат заново с проверки. Предыдущий отказ произошёл из-за конвейера, а не рынка: тестовый стенд Layer-2 неверно связывал вспомогательные методы @staticmethod (исправлено), QA выносил окончательные вердикты о результативности на неоптимизированном тестовом запуске (удалено — теперь QA оценивает только корректность), а тайм-ауты песочницы возникали из-за нехватки слотов для бэктеста (исправлено). Гипотеза и код стратегии не изменились. Оцени код по существу; результативность позже определят полный бэктест и оптимизатор.
Устанавливай настоящий stop_market() при входе, чтобы стоп 1% срабатывал внутри бара, и/или снижай плечо до 1.0, чтобы гэп не привёл к убытку по одной сделке свыше 20% капитала.
Защитный стоп — это проверка PnL на закрытии бара (get_position_pnl_pct <= -stop_loss_pct в should_exit), выполняемая раз в 15-минутный бар, поэтому она не может ограничить убыток 1% внутри бара. Быстрый бар 15м BTC до закрытия проходит несколько процентов, а исполнение происходит по цене открытия следующего бара. При плече 2x (номинал 1.2x) это привело к единственному убытку -$25,846 (около 26% капитала, средний убыток 25x). Расчёт размера позиции и расходование плеча корректны (2.0 в пределах лимита HL 20x), поэтому это не дефект кода, но тезис о тесном стопе нельзя реализовать проверкой на закрытии бара при 2x.
Убедись, что полный бэктест использует всю доступную историю HL 15м; к переходу на следующий этап относись осторожно из-за короткого периода данных.
Период песочницы охватывает только data_days=140, почти весь доступный массив истории HL BTCUSD за 15м. 133 сделок пригодны для анализа, но 140 календарных дней — короткий отрезок одного рыночного режима для walk-forward-анализа (3 IS + контрольная выборка). Данных нет не полностью (они доступны, сигнал срабатывает), но OOS доказательств будет мало, а охват рыночных режимов — узким.
Обзор бэктеста
- Шарп
- -2,58
- Общая доходность
- -59,58%
- Максимальная просадка
- 62,33%
- Всего сделок
- 133
- Доля прибыльных
- 27,1%
- Профит-фактор
- 0,41
Механизм работает чётко (133 сигналов, 133 отправлено, потерь нет) — это не ошибка кода или передачи данных
Только OHLCV, без зависимости от дополнительных потоков данных
Уверенный чистый убыток: total_return -59.6%, profit_factor 0.41, матожидание -$452/сделку за 133 сделок
Отрицательное преимущество на сделку: avg_trade_return_pct -0.266% (ниже минимального порога любой площадки)
Sharpe -2.58 при CI [-4.39, -0.65] полностью отрицателен; PSR 0.0016; information_ratio -3.9
Катастрофический хвостовой убыток: -33.8% за один день (2026-06-10), largest_loss -$26,268, avg_position_pct 138% — безрассудное использование плеча, max_drawdown 62.3% (от CI до 93.7%)
Только 167 дней данных Hyperliquid (около 5.7 месяцев) — слишком мало для walk-forward-анализа и контрольной выборки
Направленный пробой одной акции OHLCV — класс с почти нулевым числом выживших (L9/L41)
История итераций
Проверка не пройдена (leverage_set_but_unused): в настройках задано плечо=2.0, но стратегия не использует плечо при расчёте размера позиции. Рассчитывай позиции с его учётом — номинал = капитал * доля * плечо / цена (считывай self.config.leverage) — или установи плечо=1.0. Сейчас плечо не действует, и бэктест идентичен 1x.
data_unavailable: не удалось собрать данные бэктеста для BTCUSD.HYPERLIQUID после 5 попыток: - бары (bar_type=BTCUSD.HYPERLIQUID-15-MINUTE-LAST-EXTERNAL): получено 0, требовалось 200 или интервал не менее 14 дней Блокер — слой данных, а не стратегия. Вернись к оценке этой гипотезы, когда сбор данных будет исправлен или история инструмента будет дополнена.
Stratmill — это инструмент для исследований и бумажной торговли, а не финансовая консультация или брокер. Результаты бэктестов и бумажной торговли являются гипотетическими. Торговля сопряжена с риском убытков.