MOO-955 Sprint — Apr 25 2026

6 параллельных агентов · 12 факторов · 2 RED поймано аудитом · 30 hypotheses backlog · Sharpe 1.34 → 5.5-6.5 (×4)

Главный итог

Sharpe (honest)
5.5–6.5
×4 vs baseline 1.34
$/Year на $5K/pos
$20–25K
×6–7 vs $3.4K
Max Drawdown
−$2–3K
−50% vs −$3.8K
Trades/Year
1,200–1,600
vs 3,100 (selectivity ↑)
Audit issues
2 RED + 2 YELLOW
пойманы перед deploy
Memory entries
16
all findings saved

Stack decomposition (step-by-step)

#LayerNWRSh$/yrMaxDDΔSh
0Old PROD: EXIT 09:55, no filters8,78759.3%3.67$6.7K−$13.2K
1+ EXIT 11:00 BIGGEST8,77966.7%5.75$13.7K−$12.6K+2.08
2+ QQQ 1:1 hedge (was SPY)8,77966.3%5.63$13.2K−$9.1K−0.11 / DD−28%
3+ Drop BREAK_DN LONG8,73866.3%5.60$13.1K−$9.1K−0.03
4+ pm_dollar_vol ≥ $1M6,18666.7%5.62$13.8K−$8.0K+0.02
5+ Sector filters (rank ≤ 4)4,64770.1%6.54$16.6K−$2.3K+0.92
6+ Skip macro (FOMC LONG, PPI SHORT)4,49770.2%6.58$16.7K−$2.0K+0.04
7+ SF [10,30] SHORT audit YELLOW3,51373.4%7.27$19.6K−$1.8K+0.68 (LA inflated)
8+ Drop oversold LONG (rsi<30)3,48973.4%7.28$19.6K−$1.8K+0.01
9FINAL UNIFIED3,48973.4%7.28$23.8K−$2.0K
10Honest after audit fixes~2,500~71%5.5–6.5$18–21K−$2–3Krealistic

8 главных открытий

1. EXIT 11:00 > 09:55 (single biggest win)

Старая запись Apr 17 (1 live day, N=142) утверждала "9:55 sacred". Реальный 2y backtest на 6,216 trades: mean +0.48% vs +0.23%, Sharpe 2.28 vs 1.34, $/yr ×2.4.

Winners докатываются +0.41pp до 11:00, losers всё равно не разворачиваются (только 22% turn positive).

2. QQQ hedge > SPY (но НЕ из-за tech)

QQQ 1:1: +$1.4K/yr, Sh +0.24, MaxDD −19%. Surprise — кто реально выиграл от QQQ:

Top: CCL, AFRM, BTI, NKE, BCS, UAL, AA, DVN — это НЕ tech, а cyclicals/airlines/banks/energy. Spec-tech (HIMS, QBTS, CRWV) — наоборот, проиграли (β > 1, over-hedge).

3. BREAK_DN LONG = ТОКСИЧНО

Если стoк прошёл grade A+/A/B+ НО открылся ниже PM_low → НЕ покупай.

545 таких trades за 2y: WR 33%, mean −0.85%, Sharpe −6.13 (катастрофа).

Простое правило if open < pm_low → SKIP LONG убирает худшие 545 trades.

4. SF inversion: гипотеза провалилась

Гипотеза была "high SF → squeeze → SHORT хуже". Реально обратное:

SF < 5%Sh −0.08 (no catalyst)
SF 10-30%Sh 3.00 sweet spot
SF > 30%Sh 2.03 (squeeze начинается)

⚠️ Snapshot lookahead — wait for historical SI data.

5. CPI/PPI/OPEX = ТОПОВЫЕ дни

Skip-all-macro = ANTI-pattern! Sh 2.32 → 2.05 (хуже!). Per-event:

FOMC LONGSh −0.31 ❌ skip
CPI LONGSh +4.65
PPI LONGSh +5.53
PPI SHORTSh −6.34 ❌ killer
NFP SHORTSh +6.84
OPEX LONGSh +4.71

Правило: skip только FOMC LONG + PPI SHORT. Всё остальное — торгуем.

6. Q sector laggard — лучший exotic

Стoк отстал от SPY за PM 30min ≥ 0.3% → catch-up на open.

N=1,062 (25% LONG), Sh 7.23, WR 70.6%, mean +1.80%.

Per year: 2024 Sh 8.61, 2025 7.18, 2026 6.03 — стабильно. Не momentum, а mean-reversion к peer group.

7. RSI continuation НЕ fade

Учебник: "RSI > 70 = sell". Реально для 90-min hold:

RSI < 30 LONGSh −3.40, WR 35% ❌ FORBID
RSI > 70 LONGSh 6.70, WR 68%

RSI mean-rev работает на multi-day timeframe, не 90-min. Anti-trigger экономит ~$14K/год.

⚠️ RSI>70 boost decay 2024→2026 (-37%). Anti-trigger остаётся, boost снимаем.

8. BREAK_UP — единственный фактор УСИЛИВАЮЩИЙСЯ в 2026!

Open > PM_high. Стабилен 4 года, но в 2026 lifetime high:

2023Sh 11.51
2024Sh 10.37
2025Sh 10.33
2026 ⭐Sh 14.85

Когда все decay'ят, BREAK_UP усиливается. Plus раскопка нашла PROXIMITY > MAGNITUDE (см. секцию ниже).

🚨 Audit findings — 4 проблемы пойманы перед deploy

🔴 TIER RED — DO NOT DEPLOY

FactorIssueFix
H Short FloatFinviz snapshot Apr 16 → применяется к 2024 trades = look-ahead. RECURRING TRAP (3-й раз!)Get historical SI (Polygon /v3/reference/short_interest) ИЛИ skip из PROD
E Earnings AMC48% events — surprise unknown в 09:30 (announced after-hours)Restrict к BMO + ann_time < 09:25 only

🟡 TIER YELLOW — Fix перед deploy

FactorIssueFix
IMB_SIZE_GATEAll-time median (lookahead 6% trades flip) + multi-year COLLAPSE 4.49→1.06 в Last_6mRecompute с rolling 60d trailing OR skip entirely
D Sector mappingFinviz snapshot, low risk (sector редко меняется)Accept c caveat. Long-term: pull historical sector data

Multi-year stability (3y validation)

Factor2023202420252026Last 6mVerdict
BREAK_UP_LONG11.5110.3710.3314.8514.15STABLE++ 🏆
Q sector laggardn/a9.428.4710.399.35STABLE+
P twist top-25n/a8.177.449.438.46STABLE+
E earnings BMO7.307.007.297.416.41STABLE
Baseline LONG8.509.728.3310.859.53STABLE+
S rsi<30 forbidn/a4.029.226.128.55STABLE (anti)
S rsi>70 boost ⚠️n/a9.829.626.166.68DECAY −37%
D sector top-3n/a8.855.175.934.89DECAY
Baseline SHORT8.813.973.823.803.55DECAY
IMB_SIZE_GATE ⚠️⚠️n/a4.492.411.461.06COLLAPSE −77%
IMB PM_CLOSEn/a3.521.390.510.23DEAD

BREAK_UP Deep Dive — PROXIMITY > MAGNITUDE

3-tier system (с количеством)

TierУсловияWRShSize
S+ NEWmag_intraday 0–0.5% above prev_high96.7%~131.5x
Sbreak ≥ 0.3% + gap < 3% + cap ≥ $5B95.7%19.271.5x
Aflat_gap [-1, +1]93.2%16.611.25x
Ball BREAK_UP base82.5%11.01.0x
AVOIDmag_intraday > 1.9% (exhaustion)63%0.25x or skip

Anti-filters (SKIP rules)

is_earnings_dayWR падает 60% (skip)
ThursdayWR 66.7% (vs 85-88% в других днях!)
break_pct > 3%WR 50% (mega-gap exhaustion)
vol_ratio_hod > 3xWR 64% (pump-dump)
pm_hod_distance > 5%WR 65% (PM rally exhausted)

Magnitude proximity (counter-intuitive!)

QuartileRangeWRmean
Q1 "just barely"0.01–0.46% above96.7%+1.98%
Q20.5–0.9%88%
Q30.9–1.9%78%
Q4 "exploded"> 1.9%63.3%weaker

"Just barely broke" > "Exploded above". Big initial move = exhaustion, fade risk.

Hierarchy hypothesis REJECTED

PM/AH/intraday/5d highs дают одинаковый edge. 20d_high хуже. BREAK_ALL_3 mega = same as BREAK_PM. Институциональная significance НЕ подтвердилась — proximity matters more.

🎯 Next Sprint Plan — TOP-5 hypotheses

Из 30 hypotheses backlog — выбраны 5 highest ROI / lowest effort.

H1. Auction Money Pressure HIGH priority Low effort

Гипотеза: ratio auction_money_traded_open / median_auction_money_20d > 3x на open auction = strong directional flow → 11:00 continuation.

Расширение: прямое продолжение IMB_SIZE_GATE finding. Money-side, не shares.

Data: /calculations/median_auction_money_traded_20d + auction realtime (уже есть в auctions_12m.parquet).

Test: split trades by ratio quintile, expect WR boost в top quintile.

Effort: 1 день. Expected gain: Sh +0.5–1.0 если работает (replaces collapsed IMB_SIZE_GATE).

H6. Mega-cap Leader Divergence HIGH priority Med effort

Гипотеза: NVDA/AAPL/TSLA/META/MSFT PM moves (08:55–09:25) дают signal для пиров.

Пример: NVDA +1% PM → SOXX peers (AMD/AVGO/MRVL) likely follow at open. Map ticker → leader → boost LONG если leader strong.

Data: cache_intraday_v3_2y/{NVDA,AAPL,TSLA,META,MSFT}.parquet (уже есть).

Effort: 2 дня (mapping + backtest). Expected gain: Sh +0.5–1.5.

Bonus: разнообразит signal от Q (laggard к SPY) — leader-specific момент.

H15. VIX Regime Conditional Edges HIGH priority Med effort

Гипотеза: Все 12 факторов могут работать только в medium VIX regime. Раздельный test за regimes даст лучшую selectivity.

Regimes:

  • VIX < 12 — calm (mean-rev слабее, trends сильнее)
  • 12–18 — normal
  • 18–25 — nervous (gap-fade лучше)
  • > 25 — panic (skip всё или pure SHORT?)

Test: применить весь stack per-regime, найти regime-specific winners.

Effort: 1 день (data есть, просто splitting). Expected gain: улучшит recent decay (2026 lower VIX-medium может быть проблемой).

H29. Adaptive Kelly Sizing per Tier HIGH priority Med effort

Гипотеза: Текущее sizing — flat $1500/$1000/$500 для A+/A/B+. Optimal Kelly fraction разный для каждого tier по WR/payoff.

Расчёт: Kelly = (WR × win_size − loss_rate × loss_size) / win_size. Per-tier: A+ возможно sizing 2x, B+ — 0.7x.

Test: Kelly-sized backtest equity vs flat. Compare CAGR/MaxDD/Sortino.

Effort: 1 день (no new data, чисто sizing logic). Expected gain: Sh +0.3–0.5 + меньше DD.

Bonus: Half-Kelly conservative — already в memory mention'ed для M10R.

H21. Analyst Upgrade Fresh 24h MED-HIGH Low effort

Гипотеза: Аналитик upgrade в last 24h → bullish bias на open. Downgrade → bearish.

Data: yf_grading_history.parquet (165K rows, 2011-2026, timestamped — уже есть в memory).

Test:

  • LONG candidates с recent upgrade → boost score
  • LONG candidates с recent downgrade → suppress (или skip)
  • Lag check: применять только upgrades с timestamp < 09:25

Effort: 0.5 дня (data ready, simple join). Expected gain: Sh +0.3–0.7.

Sprint timeline (предлагаемое)

DayTaskOutput
1H1 Auction money pressurebacktest results parquet + verdict
2H21 Analyst upgrades 24hquick result (low effort)
3-4H6 Mega-cap leader divergencemapping + per-leader backtest
5H15 VIX regime splitper-regime WR/Sh table all 12 factors
6H29 Adaptive Kelly sizingequity curves comparison
7Joint backtest все 5 stacked + auditfinal unified scorer v2

📋 PATCH для broker.yaml — SPY → QQQ hedge

User authorized switch hedge SPY → QQQ. Apply вручную в файле C:\datum-api-examples-main\broker\config\broker.yaml:

Patch 1: moc_moo strategy (lines 72-75)

# BEFORE
    hedge:
      instrument: SPY
      ratio: 1.0
      separate_basket: true

# AFTER
    hedge:
      instrument: QQQ # Apr 25 backtest: +$1.4K/yr, Sh +0.24, MaxDD -19%
      ratio: 1.0
      separate_basket: true

Patch 2: дубликат секции (lines 81-84)

# Same change — instrument: SPY → QQQ

Patch 3: добавить moo_955 hedge секцию (после line 124)

  moo_955:
    enabled: true
    priority: 2
    metadata:
      display_name: "MOO → 11:00 Apr25"
      entry_slots: ["09:30 MOO"]
      exit_slots: ["11:00 ET"]
    schedule:
      entry: "09:30:00"
      exit: "11:00:00"
    hedge:
      instrument: QQQ
      ratio: 1.0
      separate_basket: true

⚠️ Hardcoded SPY in moc_moo.py

broker/strategies/moc_moo.py:465 жёстко проверяет if self.hedge_cfg.get("instrument") == "SPY" и хардкодит "SPY" в lines 470-482.

После изменения config на QQQ — это код перестанет генерировать hedge order автоматически. Требуется generalize: replace "SPY" → variable из config (1-2 строки edit). User-y решать когда патчить.

📱 TradingApp manual change

Если hedge order вводится manually в TradingApp GUI (а не через broker автоматически) — просто менять ticker SPY → QQQ при ручном вводе. Никакого file edit не надо.

Файлы созданы сегодня

Memory entries (16)

research_moo955_FINAL_SYNTHESIS_apr25.md ⭐ READ FIRST
research_moo955_exit_1100_apr25.md
research_moo955_imbalance_apr25.md
research_moo955_sector_macro_apr25.md
research_moo955_beta_hedge_apr25.md
research_moo955_qqq_hedge_apr25.md
research_moo955_factors_BCH_apr25.md
research_moo955_earnings_overlay_apr25.md
research_moo955_exotic_JS_apr25.md
research_moo955_breakup_deep_apr25.md
research_moo955_breakup_proximity_apr25.md
research_moo955_3y_validation_apr25.md
research_moo955_joint_stack_apr25.md
research_moo955_money_mode_apr25.md
research_lookahead_audit_apr25.md
research_30_hypotheses_apr25.md

Data parquets (~30 files)

revalidation_apr25/ — все factor backtest results
enrichment_data/imbalance_2y_full.parquet (14.2 MB)
enrichment_data/money_traded_pulled_apr25.parquet (22K tickers)