MOO→11:00 — Hold vs TP+7/SL-1 + Lookahead audit
window 2025-11-01 → 2026-04-30 (119 дней)
$10K BP / signal независимо
9 HEALTHY v2
raw PnL без costs
Lookahead audit — 9 features
Verdict: data lookahead отсутствует. Все 9 features известны или к 9:29:59 (B/Y), или ровно на 9:30:00 в момент opening cross (Q/A).
Y034 уже сдвинут .shift(1) per ticker = вчерашний percentile.
⚠ Execution-lookahead в 4/9 strategies: Q003, Q004, A006, A013 требуют open_px (цена opening cross).
Сигнал может быть посчитан только ПОСЛЕ принта 9:30 cross. Backtest fill = exact open_px = the cross. Live fill = 9:30:01+ → ~5-30 bps slip vs cross.
Не data leak, но реальный PnL по этим стратегиям будет на 5-30% ниже raw backtest.
| ID | Feature | Дата известна | MOO viable | Status |
| Q003 | open_px / pm_close - 1 ≥ 0.5% | 9:30:00 (cross) | ⚠ post-cross | execution LA only |
| Q004 | open_px / pm_close - 1 ≤ -0.5% | 9:30:00 | ⚠ post-cross | execution LA only |
| A006 | gap_pct ≤ -10% | 9:30:00 | ⚠ post-cross | execution LA only |
| A013 | gap_pct ≥ +20% | 9:30:00 | ⚠ post-cross | execution LA only |
| B005 | pm_volume ≥ 500K | 9:29:59 | ✓ MOO | CLEAN |
| B013 | pm_volume / adv_20d ≥ 0.2 | 9:29:59 | ✓ MOO | CLEAN |
| B014 | pm_volume / adv_20d ≥ 0.3 | 9:29:59 | ✓ MOO | CLEAN |
| B015 | pm_volume / adv_20d ≥ 0.5 | 9:29:59 | ✓ MOO | CLEAN |
| Y034 | daily_dvol_pctile ≤ 0.2 (lagged) | D-1 close | ✓ MOO | CLEAN |
Portfolio: hold_1100 vs tp7_sl1
Hold 11:00 — Total PnL
$739,820
TP+7/SL-1 — Total PnL
$767,789
+$27,969 (+3.8%)
TP+7/SL-1 — Daily Sharpe
10.31
×2.2
TP+7/SL-1 — Max DD
-$20,276
×6 better
Hold — Pos / Neg days
74 / 45
TP+7/SL-1 — Pos / Neg days
96 / 23
TP+7/SL-1 на портфельном уровне доминирует: Sharpe ×2.2, max DD ×6 меньше, +$28K PnL. Кривая equity ровнее, фиксирует прибыль и режет хвосты.
Per-strategy: hold vs tp7_sl1
| ID | Strategy | Dir | N |
Hold $ | Hold WR | Hold DD | Hold Sh |
TP/SL $ | TP/SL WR | TP/SL DD | TP/SL Sh |
Δ$ | SL hit | TP hit |
| Q003 | opening_cross_dev | SHORT | 6,687 |
$213,657 | 53.8% | -$51K | 2.78 |
$273,496 | 29.2% | -$10K | 9.54 |
+$59,839 | 68% | 15% |
| A006 | gap_le_n10 | SHORT | 3,443 |
$169,936 | 53.9% | -$49K | 2.94 |
$114,141 | 24.2% | -$6K | 7.79 |
-$55,795 | 74% | 25% |
| Q004 | opening_cross_dev | LONG | 7,298 |
$96,131 | 49.7% | -$86K | 1.02 |
$163,424 | 26.1% | -$12K | 4.90 |
+$67,293 | 71% | 14% |
| B005 | pm_vol_ge500K | SHORT | 12,385 |
$84,463 | 51.2% | -$188K | 0.66 |
$158,185 | 27.9% | -$47K | 3.29 |
+$73,723 | 66% | 13% |
| Y034 | dvol_pctile_low | LONG | 4,721 |
$75,054 | 50.8% | -$46K | 1.51 |
$48,833 | 31.1% | -$16K | 2.43 |
-$26,221 | 63% | 6% |
| B014 | pm_vol_to_adv_030 | SHORT | 637 |
$43,380 | 53.1% | -$21K | 2.08 |
$7,512 | 20.6% | -$6K | 1.49 |
-$35,868 | 76% | 35% |
| B013 | pm_vol_to_adv_020 | SHORT | 1,348 |
$31,315 | 52.0% | -$21K | 1.16 |
$14,911 | 22.7% | -$6K | 1.81 |
-$16,405 | 73% | 27% |
| B015 | pm_vol_to_adv_050 | SHORT | 216 |
$22,377 | 55.6% | -$20K | 1.65 |
-$740 | 18.5% | -$5K | -0.28 |
-$23,117 | 79% | 45% |
| A013 | gap_ge20 | LONG | 504 |
$3,507 | 44.0% | -$17K | 0.18 |
-$11,972 | 21.4% | -$12K | -3.54 |
-$15,479 | 72% | 31% |
Раскол: 4 стратегии выигрывают от TP/SL (Q003 +$60K, Q004 +$67K, B005 +$74K, A006 -$56K — но Sharpe растёт), 5 проигрывают.
Победители — high-N (6K-12K trades) с тонким edge per-trade ($7-32) — TP режет жирные хвосты потерь, фиксирует +7% когда повезло.
Проигравшие — small-N (200-1300) с толстым edge per-trade ($23-104) — у них edge живёт В ХВОСТЕ распределения, TP/SL это убивает (особенно B015 +$22K → -$740).
⚠ Caveat: TP/SL implementation
Реализация в
audit_lib/hyp_runner.py использует только агрегаты
h_to_1100 /
l_to_1100 = max/min цены за 90 минут.
Невозможно определить, что сработало первым — TP или SL — если оба тача внутри окна (5-36% сделок попадают в "both hit").
Код применяет
conservative rule: при both_hit → SL hit (-1%). Это занижает реальный TP/SL PnL.
Особенно сильно "both hit" в:
- B015 36% both-hit, SL 79% — strategy с big swings, оба уровня часто пробиваются. Реальная торговля: ~50% этих both_hit могли бы быть TP first → +$40-60K.
- A013 27% both-hit, SL 72% — gap 20+% ракеты идут «вверх и вниз». Реал может быть лучше -$12K.
- B014 25% both-hit — high-vol PM-spike SHORTs.
Чтобы получить точный verdict, нужны 1-min bars и tick-level TP/SL detection. Текущий результат =
lower bound для TP/SL.
Рекомендация
USE TP+7/SL-1
Q003, Q004, B005 (high-N, low edge per-trade)
A006 (Sharpe растёт 2.94→7.79 даже с -$56K PnL — лучше risk-adjusted)
Total = ~30K сделок, ~80% объёма. На этих стратегиях TP режет жирные хвосты, локирует прибыль.
USE Hold 11:00
B015, B014, B013 (small-N PM-volume SHORTs c large per-trade edge $23-104)
Y034, A013 (LONG-сторона)
Edge живёт В РАСПРЕДЕЛЕНИИ — широкие движения, ранние SL съедают edge. Нужен полный hold до 11:00 либо более широкий SL (3-5%).
Гибрид-портфель (TP/SL на 4 high-N + Hold на 5 small-N) = ожидаемый ~$870K PnL, Sharpe ~8-10, DD ~$30K. Это +$130K (+18%) над чистым hold и + $100K над чистым TP/SL.