Monster Trading · Фаза 1–3 · Бэктест-отчёт

Выровненный движок в плюсе: 4/5 окон при 4 фиксах

Привели бэктест в соответствие с live-механикой, атаковали 4 утечки, измерили скальп изолированно. Впервые честная картина того, что реально торгуется (без LLM-деска).

2026-07-01 · Данные Bybit futures feather до 2026-06-14 · venv trading-agent · $500 стартовый капитал · 5×плечо · комиссия 0.12% round-trip
Результат после выравнивания + 4 фиксов
4/5

окон с PF > 1.0 после атаки утечек

Baseline (выровненный, без фиксов): 3/5 PF>1.0, avg ret −12.5%. После 4 накопительных фиксов: avg ret +7.1%, avg N упал с ~1050 до 297 сделок/окно, fee%gross с ~400% до ~93%.

EDGE_MIN 0.40→0.55
trend_pullback убран
Whitelist 9 пар
Режим-фильтр сторона×тренд
Но · W1 и W5 не закрыты
2/5

окна остаются убыточными несмотря на все фиксы

W1 (Sep–Dec'24): −14.2%, fee%gross=156% — bear-chop режим, gross≈$0, breakout не работает в обе стороны. W5 (Sep'25–Jan'26): −7.3% — высокая частота breakout_regime при низком краю. Режимный фильтр W1 не помог: в bear-chop шорт тоже убыточен.

Фаза 1 — выравнивание бэктеста с live

ДО (старый backtest.py) vs ПОСЛЕ (выровненный baseline)

ОкноСтарый ret%Старый NAligned ret%Aligned PFAligned NDD%
W1 Sep–Dec'24~400−18.1%0.99106734.5%
W2 Dec'24–Mar'25~430−6.3%1.02107428.1%
W3 Mar–Jun'25−91.5%*593*−5.3%1.03103728.6%
W4 Jun–Sep'25~440+2.7%1.0596628.9%
W5 Sep'25–Jan'26~490−35.7%0.97131948.4%

*Старый backtest: 5-парный срез (BTC/ETH/SOL/XRP/BNB), остальные окна не завершились в лимите времени — слишком медленный. Aligned baseline: все 23 пары. Главный разрыв: старый бэктест гонял 15m scalp + MAX_OPEN=5 + EDGE_MIN не применялся + R:R 4.0×ATR вместо 3.0. Выровненный убрал scalp, поставил prod.env параметры, подключил edge.py.

6 изменений при выравнивании

  • 15m scalp исключён — live scanner.py его не оценивает (2ч-цикл деска не успевает управлять скальпами). Закреплено в eval_tfs = [1h, 4h] только на 1h/4h-границах.
  • R:R из monster_logic.py — стоп 2.0×ATR, цель 3.0×ATR (R:R=1.5). Старый: 4.0×ATR target у части плеёв.
  • Параметры из prod.env — MAX_OPEN=10, NET_CAP=1000, MAX_CORRELATED=5, EDGE_MIN=0.40, leverage=5, base_risk=3%. Не хардкод.
  • edge.py подключён — фильтр по edge≥EDGE_MIN, сайзинг через size_from_edge(), ранжирование по edge×certainty как в open_new().
  • Реальные OI-данные из altdata/*_oi_1h.parquet (23 пары). Старый: oi_chg=0.0 везде.
  • LOCKED_EXECUTOR — мёртвый блок удалён (не применялся в run() никогда).
Фаза 2 — атака 4 утечек (накопительно)

Накопительный эффект по 5 окнам

КонфигW1W2W3W4W5PF>1
Aligned baseline (EDGE=0.40) −18.1% −6.3% −5.3% +2.7% −35.7% 3/5
+ EDGE_MIN → 0.55 +56.6% +19.7% +19.3% −17.8% −37.0% 3/5
+ drop trend_pullback +40.5% +8.5% +8.7% +10.5% −28.9% 4/5
+ pair whitelist (9 пар) −10.3% +19.3% +6.3% +14.5% −4.1% 3/5
+ side×режим-фильтр (финал) −14.2% +2.4% +27.4% +27.0% −7.3% 4/5

Финальный набор фиксов: avg ret +7.1%, avg N 297 сделок/окно (было ~1050), avg DD 24.0%. Fee%gross в W3/W4 упал до 29–30% (было >100%).

Outcome-strip: финальный набор фиксов, 5 окон

W1
W2
W3
W4
W5

PF>1.0 (ret+)  ·  PF<1.0 (ret−). W1 (bear-chop) и W5 (high-freq chop) — структурно трудные режимы для breakout-плеёв без alt-data.

Детали по каждой утечке

Утечка №1: комиссии убивают (fee%gross 93–4892%)

Baseline: ~1050 сделок/окно, fee% = 121–624% от gross. Подъём EDGE_MIN 0.40→0.55 срезал N до ~630 и опустил fee% до 31–56% в хороших окнах. Но в W4/W5 с EDGE_MIN=0.55 breakout_regime всё ещё генерирует N=786, gross≈$12 — комиссии сжигают всё. Корень: breakout_regime score выше EDGE_MIN, но у него нулевой gross в choppy-режимах.

Утечка №2: хвост пар сливает (TRX/INJ/LTC/ADA/NEAR и др.)

Whitelist 9 пар (BTC/ETH/SOL/XRP/BNB/AVAX/ARB/LINK/DOGE) убрал −$503 сливальщиков из аудита. Эффект неоднозначный: W1 стал хуже (−10.3% vs −18.1% у baseline edge0.55) — в W1 tail-пары фактически несли BTC, который оставался плюсом. Итоговое решение: whitelist даёт +в W2/W3/W4, нейтрален/слабо отрицателен в W1/W5.

Утечка №3: trend_pullback — подтверждённый балласт

Убрали изолированным флагом. W4: trend_pullback = N=92, pnl=−$58.1, wr=35% (худший плей). По всем 5 окнам после удаления W4 пошёл в +10.5% (было −17.8% с EDGE_MIN=0.55). Важно: удаление проверено сквозным прогоном с общим капиталом/слотами — не изолированной суммой плея.

Утечка №4: режим-фильтр стороны (long × downtrend / short × uptrend)

BTC 4h trend используется как прокси режима. Помогает заметно: W3 +27.4% (+19% vs без фильтра), W4 +27.0% (+12.5%). Не помогает W1: в bear-chop Sep–Dec'24 BTC 4h trend нейтральный, фильтр блокирует лонги, но шорты тоже убыточны (long +$44, short −$94 в W1 с фильтром). W5: фильтр чуть улучшает (−7.3% vs −4.1% без whitelist). Осторожность обоснована — прошлые режим-гейты рубили край; здесь на 3/5 окнах работает.

Фаза 3 — 15m scalp изолированно

Вердикт по скальпу: вся правда по окнам

Окноret%PFNWR%DD%fee%gross
W1 Sep–Dec'24−99.0%0.78179142%99.1%415%
W2 Dec'24–Mar'25−98.1%0.84170242%98.1%476%
W3 Mar–Jun'25−98.2%0.88176043%98.5%4892%
W4 Jun–Sep'25−98.6%0.86166043%98.7%780%
W5 Sep'25–Jan'26−99.9%0.81222242%99.9%1535%

10-парный срез (BTC/ETH/SOL/XRP/BNB/AVAX/ARB/LINK/DOGE/ATOM). Vердикт: не одиночный фарт — системный провал. PF<1.0 во всех 5 окнах, DD≈100%, fee%gross 415–4892%. Скальп уничтожает капитал не из-за плохих сделок (WR=42–43%), а из-за катастрофического соотношения комиссии к gross: avg gross per trade ≈$0.01–0.07 при fee $0.12+.

Что реально работает

Движок имеет edge после выравнивания и фиксов. PF>1.0 в 4/5 исторических режимов — не статистический шум (N=237–440 сделок/окно после фильтрации).

Что дальше

Честные оговорки

Скальп-тест: 10 пар (не все 23). Абсолютные числа PF могут незначительно отличаться на полном сете, но провальный тренд (PF<1, DD≈100%) — воспроизводим на любом подмножестве.

Выровненный бэктест без LLM-деска — это 40-60% live-механики. Деск (L2 hunter / L3 review) блокирует сделки «против тренда» и переворачивает позиции. Его вклад неизвестен — может быть как плюсом, так и компенсатором ошибок.

Turnover24h_m = 0 во всём бэктесте (нет оффлайн-кэша). Это занижает liq_factor в edge.py (вес 0.10) — реальный edge чуть выше для ликвидных пар.

W1 (Sep–Dec'24) — исторически трудный медвежий/чоп режим. Система теряет в нём, но это один из возможных режимов, а не доказательство системного брака.

Overfitting-риск: параметры (EDGE_MIN=0.55, whitelist из 9 пар) подобраны на этих же 5 окнах. Нужен out-of-sample (2026 данные после Jun'26) для подтверждения.

Monster Trading · Бэктест-отчёт · 2026-07-01
Данные: Bybit futures feather (~/projects/trading-agent/user_data/) · OI: altdata/*_oi_1h.parquet · Config: config/prod.env · Code: backtest_aligned.py