PM-MOO v3.6 × ZAPAS

LIVE v3.6 с 2026-06-18 ресёрч-снапшот · книга до 2026-06-10 · NOT today-signals данные бэктеста: 2026-04-10 → 06-10 построено 2026-07-09
Операционный алерт (09.07): исходники v3.6 были стёрты checkout'ом на master (07-07). На диске в broker/v2-эра: рестарт брокера as-is = молчаливый откат live-стратегии на v2.4. Живой стек восстановлен декомпиляцией pyc → recovered_v36/ (скорер верифицирован 8/8 тест-кейсов). До установки восстановленных файлов + реконструкции broker.yamlброкер не рестартовать. Параллельная restore-сессия работает с broker/ — координация.
Day-PnL 6м (@$10K/поз)
+$140.9K
WR сделок 58.7 · 35% минус-дней
v3.6 vs v3.5 (OOS)
+48% PnL
WR 52.3→54.6 · maxDD −618→−359
База bt2m (raw)
+$11.2K
10/43 минус-дней · худший −$729
COMBO + best-ETF хедж
+$14.0K
8/43 минус-дней · худший −$436
ZAPAS: z≥2 vs z<−1 (12м)
+0.50 / +0.18
%/тр · инкремент поверх мува t=+6.5
Живой баг AVGUP
−$7K OOS
порог 0% → фикс +1% не зашит

1Анатомия стратегии — как проходит день

Два live-движка (оба dry_run:false) + advisory-карточка. Из восстановленного live-байткода, не по памяти.

🩸 pm_moo_v3 — pump-fade SHORT (основной)

  1. Юниверс 553 universe_pm_moo_910_validated.csv · is_us_base | is_sp500 · снапшот 15 мая (без lev-ETF)
  2. Окна входа early6B: 08:00 · 08:05 · 08:15 · 08:30 · 08:40 · 09:00 (09:25 = exclude, OOS Sh −15.8)
  3. Фичи на баре: vwap_dev, mom_5m, pm_rsi, pm_vol, PM $vol · ret от prev_close (TRAP-снапшот чинит якорь)
  4. Скорер v3.3 → грейд (формула справа)
  5. Гейты: грейд ≥ A · bid ≥ $7 · PM vol ≥ 50K · earnings ±1td skip · сплит-дни skip
  6. Сайзинг: A=$1,000 · A+=$3,000 → × prior-day тилты (вчера down ×0.50 · bigUP≥5% ×1.25 · SPY green ×1.10 / red ×0.90)
  7. AVGUP: до 3 траншей/тикер, только если цена выше 1-го входа ⚠ порог 0% — усредняет в лузеров, фикс +1% PENDING
  8. Хедж: LONG TQQQ ratio 0.3333 (×3 ≈ QQQ 1:1 BP)
  9. Выход: hold-to-MOO — всегда. cover-движок отключён в коде; ранний выход трижды опровергнут

Скорер v3.3 (2 фактора + 2 тилта + C7)

sell = 0 vwap_dev > 1.0% → +7.32 # растянут над PM-VWAP mom_5m > 0.3% → +9.45 # прямо сейчас растёт base = sell / 16.77 tilted = base + pct_tilt + mcap_tilt pct_tilt : ≥20%→.15 ≥10%→.10 ≥5%→.05 ≥2%→.02 mcap_tilt: <300M→.08 <1B→.06 <10B→.03 grade: A+ ≥.65 | A ≥.30 | B+ ≥.25 | B ≥.15 | C ≥.05 C7 notch-up (A→A+): range>1.512 & pump≥1% & vwap_dev≥1 & pc≥$5 & PM$vol≥$1M

🌅 pm_moo_early — fade 07:30-08:00 (sleeve, без скорера)

Якоря07:30 · 07:45 · 08:00
POP [2,5)% → A ×1.0PUMP ≥5% → A+ ×1.5
Гейтыbid≥$5 · PM $vol≥$300K · earnings ±1td
Механика3 стака · hold-to-MOO · TQQQ inline

📟 pm_moo_v36_scalp — advisory (ордеров не шлёт)

eq = .30·rank(vwap_dev) + .25·rank(vwap_dev/σ20)
     + .20·rank(cumret) + .15·rank(pm_rsi)
eq≥0.80 → +0.72%/тр WR 63.3 · поток 07:30-09:20 · scale-in ≤3 · X3c только как hint

2Хронология доработок

ВерсияДатаСуть
v2.4/2.5май8 суб-стратегий, беты, BB, 11 окон — исходная сложность
v3.029.05Переписана с нуля: SHORT-only, бета выброшена (raw-BB ≥ beta-BB), 2 фактора + 2 тилта
v3.108.06Пороги: A+ .50→.65, A .35→.30 (WF+block-boot+BH-FDR)
v3.210.06Выброшены BB×2 + RSI (мёртвые) · EXTREME off · floor $5 → Sh 4.83→6.47
v3.311.06+C7 notch-up · +early sleeve (единственный выживший из 33 кандидатов)
v3.518.06+prior-day sizing-тилты (сделки те же, +48% PnL OOS)
v3.618.06Окна раньше (early6B) · floor $7 · down-tilt 0.50 — весь edge рекала = сдвиг окон
ZAPAS08-09.07z-фильтр/тилт + best-ETF хедж — исследовано, НЕ зашито (PAPER-first)

Отвергнуто навсегда (не пере-тестировать)

ранний выход / signal-exit (×3 опровергнут) churn / cover-loop vol-TP LONG-сторона v3 интрадей-бета в скорере RSI-фактор Bollinger ×2 onset-гейт (lookahead) soft-long хедж vs семис C7-рекалибровка (0/96) foreign/ADR overlay PM-momentum LONG
Ключевой закон стратегии: фейд — монотонный дрейф к аукциону (short +1b .078 → +6b .122 → +15b .170 → MOO .212), а MOO — единственный выход без слиппеджа. Поэтому hold-to-MOO окончательно.

3Аудит сложности — что несёт деньги, что балласт

КомпонентВклад (из ресёрчей)Вердикт
Ядро: 2 фактора + pct_tilt + окна + hold-to-MOO + earnings-skip~весь PnL (+$140.9K/6м)ЯДРО — не трогать
Сдвиг окон early6B (v3.6)+$2.1K OOS · dSh +2.4главная июньская доработка
Prior-day тилты (v3.5)+48% PnL OOS, sizing-onlyдёшево · оставить
mcap_tiltв ядреоставить
C7-бустер+$337 OOS · −0.26 Sh 6м · панель слепа с 06-10 · promoted-срез хуже un-promotedБАЛЛАСТ → выключить
AVGUP @ порог 0%−$7K OOS vs фикс +1% · усредняет в лузеровЖИВОЙ БАГ → фикс 1 строка
rotation_steer (SMH chip/soft)~$0.4-1.6K/годшум → удалить
EXTREME-флагвыключен, код живмёртвый код → вырезать
v36_scalp карточкаadvisory UIполезен, торговлю не усложняет
ZAPAS z-слой + best-ETF хедж (не зашито)+23% PnL · минус-дни 11→8 · worst −$508→−$436лучший кандидат на добавление

4ZAPAS — бета-запас: методология и что он даёт книге

Как считается премаркет-бета (канон, Jul 07)

  1. Только close→open гэпы. 1 точка = 1 день: gap = (auction_open − prev_close)/prev_close. Опен = ТОЛЬКО аукцион-принт (Datum opg). Не интрадей, не Finviz.
  2. Чистое окно: ≥20 дней без earnings ±1BD (Benzinga), analyst-дней; клип выбросов 2.5σ
  3. OLS через ноль: β = Σxy/Σx² rolling ≤60td до D−1, без lookahead
  4. Best-ETF из панели-22 по max corr per (ticker, day): в книге pm-moo → ARKK 29% · IWM 10% · XLK 10% · SMH 9% · QQQ 5%. QQQ = fallback (100% покрытие vs 80%)
  5. Запас: z = ret_stock − β·ret_ETF на баре входа, оба от prev_close
z_t = s_t − β·r_ETF,t # идио-часть мува z > 0 → памп СВЕРХ сектора → фейдится z < 0 → отстаёт от сектора → «догоняет», НЕ фейдится

Фейд по бину запаса z_e (12м, %/тр · WR)

z < −1
+0.179 · WR 53.5
−1..0
+0.287 · WR 61.3
0..1
+0.265 · WR 60.0
1..2
+0.328 · WR 60.1
z ≥ 2
+0.502 · WR 61.9
нет z (~20%)
+0.320 · WR 61.4

Пампы ≥1%: доля мува, объяснённая β×ETF (12м)

ETF против
+0.482 · WR 63.4
идио-домин.
+0.336 · WR 59.1
смешанный
+0.267 · WR 58.7
бета-домин.
+0.130 · WR 54.6
Инкремент поверх сырого мува: внутри каждого терциля пампа zH−zL = +0.18..+0.34пп; OLS fade~s+z: b_z t=+6.5, b_s t=−2.3 — фейд грузится на остаток. Майский «beta redundant» на гэп-бету не переносится (там была интрадей-BB-бета).

5Бэктест 2 мес: база vs z-фильтр vs тилт vs комбо × 3 хеджа

2026-04-10 → 06-10 · 43 торговых дня · 2,211 сделок · сайзинг A=$1K / A+=$3K · raw без костов · дни без сделок = $0
BASE FILTER TILT COMBO
КонфигNPnL $Минус-дниХудший деньmaxDDWR сделокavg %/тр

6Рекомендации

✂ Упростить (выбросить)

1C7 → C7_ENABLED=False (−60 строк, −4 фичи; +$337 OOS = шум, панель мертва)
2rotation_steer + softsmh — удалить ($1K/год не окупает ветку)
3EXTREME — вырезать мёртвый код
Итог: скорер = «2 фактора + 2 тилта + пороги» — объясняется на салфетке, и это ровно то, что заработало +$140K/6м

🔧 Починить (готово, 1 строка)

4AVGUP порог 0% → +1% (avgup_upmove_thresh: 0.01): +$7K OOS, убирает усреднение в лузеров
5Установить recovered_v36/ + реконструировать broker.yaml ДО любого рестарта брокера

➕ Зашить (PAPER-first)

6ZAPAS-слой: дроп z<−1 · тилт ×1.5 на z≥1 · нет z = нейтраль · QQQ-fallback
7Хедж → best-ETF 1:1 BP вместо TQQQ (корзиной по ref на день); QQQ где нет принта
Вместе: +23% PnL, минус-дни 11→8/43, worst −$508→−$436. Механика = ночная β-джоба из OPG-цепочек + один множитель
Источники: восстановленный live-байткод (recovered_v36/, compiled 06-11..06-22) · research_results/PMMOO_ZAPAS_FILTER_2026_07_08.md · pmmoo_zapas_rows_2026_07_08.parquet (19,645 тр) · bt2m: research_pmmoo_zapas_bt2m_2026_07_08.py · ZAPAS-канон: memory project_zapas_beta_framework_jul07 · bt6m постмортем: ZAPAS_BT6M_EXECUTABLE_POSTMORTEM_2026_07_08.md.
Кавеаты: z-ресёрч = in-sample conditioning без полного gauntlet (WF/sign-flip/BH-FDR) → PAPER-first; raw без костов; Sharpe>5 в top-K = breadth-flagged; z мерится по last-print барам (live по TRAP bid чище — эффект скорее занижен).