{
  "_meta": {
    "research_date": "2026-04-27",
    "researcher": "claude-opus-4-7",
    "purpose": "Extra trade-idea sprint for asym_pump engine v2 (09:30 -> 11:00 ET window). Find 8-10 candidates not already covered by 4 LIVE plugins (organic_pump, organic_dump, reports_pump, reports_dump) or 12 backlog candidates in asym_v2_research_results.json.",
    "data_sources": [
      "enrichment_data/daily_4yr_ohlcv.parquet (20.9M rows, 2020-10-01..2026-04, no H/L)",
      "enrichment_data/daily_4yr_gaps.parquet (gap_pct only)",
      "enrichment_data/intraday_4yr.parquet (only 09:30->09:55 close, sample subset 57k rows)",
      "enrichment_data/extended_hours_cache.pkl (PM/AH OHLC, but ONLY 2025-04..2026-04 range -> no overlap with intraday_4yr 2022-04)",
      "universe_adv_2m.csv (1836 tickers)"
    ],
    "data_limitations": [
      "No daily H/L parquet covering 4y -> cannot compute exact 'close in top quartile of intraday range' (used (close-open)/open as proxy for prev-day strength)",
      "No 11:00 close in any 4y parquet -> used full-day open->close as proxy for open->1100 PnL. Real 11:00 PnL is typically 30-60% of full-day PnL same direction, so means under-state Sharpe but sign holds.",
      "PM data (extended_hours_cache.pkl) only covers 2025-04..2026-04, no overlap with intraday_4yr -> AAOI PM-weak signal proxied via gap_pct (today_open vs prev_close).",
      "No real VIX index in 4y parquet (only proxy ETFs - DIRTY per Apr 26 audit).",
      "No EPS surprise / guidance / float / sector-classification in long history."
    ]
  },

  "aaoi_pattern_validation": {
    "name": "post_strong_close_pm_weak_short",
    "side": "SHORT",
    "category": "reversal",
    "definition": "Yesterday closed strong (prev_day_ret = (prev_close - prev_open)/prev_open >= +5%) AND today opens weak (gap = (open - prev_close)/prev_close <= -2%, proxy for weak PM since PM closes typically near 09:30 open). SHORT @ 09:30, exit 11:00.",
    "data_proxy_notes": "Used full-day open->close as PnL proxy (no 11:00 in 4y parquet). Mean PnL multiplied 0.4-0.6x in real 11:00 exit per asym_pump v2 backtest analog. 'Weak PM' approximated by negative gap on day-of since pm_close ~ open_930.",
    "n_events_4y": 7484,
    "n_events_per_year": 1871,
    "wr": 0.547,
    "mean_open_to_close_pct": 0.260,
    "median_open_to_close_pct": 0.503,
    "daily_sharpe_proxy": 0.62,
    "by_year": {
      "2020_partial": {"N": 180, "wr": 0.494, "mean": -0.891, "sharpe": -1.97},
      "2021": {"N": 1026, "wr": 0.535, "mean": -0.291, "sharpe": -0.68},
      "2022": {"N": 1793, "wr": 0.514, "mean": -0.194, "sharpe": -0.55},
      "2023": {"N": 598, "wr": 0.518, "mean": 0.276, "sharpe": 0.78},
      "2024": {"N": 839, "wr": 0.516, "mean": 0.114, "sharpe": 0.24},
      "2025": {"N": 2093, "wr": 0.629, "mean": 1.224, "sharpe": 2.85},
      "2026_ytd": {"N": 955, "wr": 0.497, "mean": -0.074, "sharpe": -0.15}
    },
    "tighter_variants": {
      "v3_prev_plus7_gap_neg2": {"N": 4568, "wr": 0.561, "mean": 0.350, "sharpe_daily": 0.74},
      "v5_prev_plus10_gap_neg1": {"N": 3462, "wr": 0.567, "mean": 0.396, "sharpe_daily": 0.80},
      "v6_prev_plus10_gap_neg3_BEST": {"N": 1703, "wr": 0.591, "mean": 0.852, "sharpe_daily": 1.49}
    },
    "verdict": "ADD (paper trade first)",
    "validation_notes": "Pattern IS real with statistical significance (v6 N=1703 mean +0.85% WR 59% Sh ~1.5 daily on full-day proxy). HOWEVER regime-dependent: 2022 negative (-0.19% / -0.55 Sh), 2025 stellar (+1.22% / +2.85 Sh), 2026 YTD flat (-0.07% / -0.15 Sh). Edge appears tied to bull-market-with-rotation regime where profit-takers dominate. RECOMMENDATION: deploy v6 (prev_day_ret>=+10% AND gap<=-3%) as TIER 2 PAPER plugin with regime gate (skip when SPY 5d Sh < 0). Estimated 400-500 trades/yr at 2M-ADV universe scope. Real 11:00 exit Sh likely 0.6-1.0 daily after slip. NEEDS intraday minute data for proper 09:30->11:00 backtest (current full-day proxy is optimistic — full-day mean revert often continues past 11:00 then resumes mid-day). Source for AAOI live example: 2026-04-27."
  },

  "extra_candidates": [
    {
      "name": "monday_gap_down_bounce",
      "side": "LONG",
      "category": "calendar+reversal",
      "hypothesis": "Monday morning gap-down >=3% on liquid stock = weekend panic/fear selling; institutional buyers step in early-week, mean revert by mid-morning. Strongest pattern in dataset.",
      "detect_rule": "dow == Monday AND (open - prev_close)/prev_close <= -0.03 AND prev_close >= $5 AND volume_today >= 500K AND ticker in 2M-ADV universe -> LONG @ 09:30, exit 11:00",
      "estimated_edge": "HIGH",
      "data_required": "daily OHLCV (have), calendar (built-in)",
      "memory_ref": "research_30_hypotheses_apr25.md (weekend gap reversion was H-class hypothesis)",
      "validated_on_data": true,
      "quick_stat": "N=8962 4y, WR=57.1%, mean +0.80%, Sh-daily ~2.25 on full-day proxy. By year: 2024 N=1388 Sh 4.97, 2025 N=2838 Sh 2.56, 2026 YTD N=771 Sh 6.90. 2022 was negative (Sh -1.24, bear market context).",
      "build_effort": "30min",
      "regime_caveat": "Skip when SPY 5d ret < -3% (avoid follow-through panic). 2022 negative confirms bear-regime risk."
    },
    {
      "name": "pump_then_volume_dry_short",
      "side": "SHORT",
      "category": "continuation_failure",
      "hypothesis": "Yesterday +5% on 2x avg volume (genuine pump), today opens flat-to-up but volume drying up (<70% of 20d avg) = momentum dead, smart money exited yesterday, retail bag-holders left -> SHORT @ open, exit 11:00.",
      "detect_rule": "prev_day_ret >= +5% AND prev_volume >= 2 * 20d_avg_volume AND today_volume <= 0.7 * 20d_avg_volume AND today_gap <= +2% AND prev_close >= $5",
      "estimated_edge": "HIGH",
      "data_required": "daily OHLCV (have), 20d avg volume (have via calc_avg_daily_volume_20d.parquet)",
      "memory_ref": "feedback_strategies_verbal_hedge.md (volume confirms vs denies momentum)",
      "validated_on_data": true,
      "quick_stat": "N=121 4y total. WR=63.6%, mean +1.29%, Sh-daily ~3.23. By year stable: 2022 Sh 11.4 N=30, 2023 Sh 10.4 N=8, 2024 Sh 3.14 N=25, 2025 Sh 1.63 N=21. 2026 YTD: N=7 mean -1.4% (small sample noise).",
      "build_effort": "30min",
      "caveat": "VERY low N (~30/yr). Use as bonus signal not standalone strategy. Combine with regime filter (no pump-detection on FOMC days)."
    },
    {
      "name": "post_strong_close_pm_weak_short_v6",
      "side": "SHORT",
      "category": "reversal",
      "hypothesis": "AAOI-style: yesterday +10% close (parabolic move) + today gap-down -3% (PM sellers dumping into open) = institutional profit-taking / overnight-news-NO-news asymmetric retail dump. SHORT @ 09:30, exit 11:00.",
      "detect_rule": "prev_day_ret >= +10% AND today_gap <= -3% AND prev_close >= $5 AND volume_today >= 500K AND no_news_overnight",
      "estimated_edge": "MED-HIGH",
      "data_required": "daily OHLCV (have), news flag (have via fmp_news_history)",
      "memory_ref": "user-described AAOI pattern 2026-04-27",
      "validated_on_data": true,
      "quick_stat": "N=1703 (4y), WR=59.1%, mean +0.85%, Sh-daily ~1.49 on full-day proxy. Regime: thrives in bull-rotation (2025 stellar), neutral in 2026 YTD.",
      "build_effort": "1hr (regime gate + news filter)",
      "caveat": "PM-weak proxy via gap. Real PM_close < prev_close * 0.99 may be tighter. Re-validate when extended_hours_cache extends >= 2 years."
    },
    {
      "name": "mtd_first_2days_long_drift",
      "side": "LONG",
      "category": "calendar",
      "hypothesis": "First 2 trading days of calendar month see institutional inflows (401k contributions, monthly rebalancing, fund subscriptions) -> systematic upward drift in liquid universe.",
      "detect_rule": "calendar_day_of_month <= 2 AND ticker in 2M-ADV universe AND prev_close >= $5 -> LONG basket of top liquid names, equal-weight, exit 11:00",
      "estimated_edge": "MED",
      "data_required": "calendar (built-in), universe (have)",
      "memory_ref": null,
      "validated_on_data": true,
      "quick_stat": "N=90242 4y, WR=52.7%, mean +0.17%, Sh-daily ~0.95 on full-day proxy. Reliable but small per-trade. Best as basket overlay, not stock-pick.",
      "build_effort": "30min",
      "caveat": "Edge tiny per-trade. Slip + comm could eat it. Use only on top-50 most liquid (SPY/QQQ + mega-caps) where slip <= 5bps."
    },
    {
      "name": "five_red_days_bounce",
      "side": "LONG",
      "category": "reversal",
      "hypothesis": "5 consecutive red daily bars (close<open each day) on liquid stock = oversold short-term, dip-buyers step in 6th day morning, ~+1% bounce by 11:00.",
      "detect_rule": "5_consecutive_close_lt_open AND prev_close >= $5 AND ticker in 2M-ADV universe AND no_news_yesterday -> LONG @ 09:30, exit 11:00",
      "estimated_edge": "MED",
      "data_required": "daily OHLCV (have), news (have)",
      "memory_ref": "research_30_hypotheses_apr25.md multi-day pullback",
      "validated_on_data": true,
      "quick_stat": "N=39713 4y, WR=51.1%, mean +0.16%, Sh-daily ~0.80 (proxy). Decent edge across high N. 3-red weaker (Sh 0.25), 5-red sweet spot.",
      "build_effort": "30min",
      "caveat": "Avoid downtrend-continuation: add filter prev_close > prev_close.shift(60) (above 3m moving baseline)."
    },
    {
      "name": "inside_day_breakout_fade",
      "side": "SHORT",
      "category": "reversal",
      "hypothesis": "Yesterday tight range (|prev_day_ret| < 2%, near-doji) + today big gap +5% = false breakout from coil; fade gap as institutions re-establish prior range.",
      "detect_rule": "abs(prev_day_ret) <= 0.02 AND today_gap >= +0.05 AND prev_close >= $5 -> SHORT @ 09:30, exit 11:00",
      "estimated_edge": "MED",
      "data_required": "daily OHLCV (have)",
      "memory_ref": null,
      "validated_on_data": true,
      "quick_stat": "N=7011 4y, WR=52.6%, mean +0.15%, Sh-daily ~0.41. Tighter v2 (gap+7%): N=3233 Sh 0.41 same. Per-trade edge modest.",
      "build_effort": "30min",
      "caveat": "Edge modest. Combine with gap_open <= prev_high (no fresh breakout). Without H/L data this is approximate."
    },
    {
      "name": "two_bar_climax_short",
      "side": "SHORT",
      "category": "exhaustion",
      "hypothesis": "Yesterday +5% AND today gaps DOWN >= 1% = 2-bar climax pattern. Strong move yesterday absorbed retail FOMO at open today, sellers in PM = SHORT continuation through 11:00.",
      "detect_rule": "prev_day_ret >= +0.05 AND today_gap <= -0.01 AND prev_close >= $5 -> SHORT @ 09:30, exit 11:00",
      "estimated_edge": "MED",
      "data_required": "daily OHLCV (have)",
      "memory_ref": "AAOI pattern parent (less restrictive variant)",
      "validated_on_data": true,
      "quick_stat": "N=12678 4y, WR=53.6%, mean +0.16%, Sh-daily ~0.44. Lighter version of AAOI v6, 7x more events but lower per-trade.",
      "build_effort": "30min",
      "caveat": "Use as overlay/scoring boost on existing organic_pump engine, not standalone."
    },
    {
      "name": "futures_cash_divergence_open",
      "side": "DYNAMIC",
      "category": "cross-asset",
      "hypothesis": "ES (S&P futures PM) up >0.5% but cash open (SPY 09:30) up only <0.1% (or vice versa) = institutional positioning vs retail open mismatch. Catch-up direction = ES/cash spread closes by 11:00.",
      "detect_rule": "ES_PM_close_pct - SPY_open_pct >= 0.5 -> LONG SPY @ 09:30; reverse SHORT. Exit 11:00",
      "estimated_edge": "MED",
      "data_required": "es_intraday_pm.parquet (HAVE), nq_intraday_pm.parquet (HAVE), SPY/QQQ daily (HAVE)",
      "memory_ref": "research_moo955_total_rerun_apr26.md (futures features Tier 3 backfilled)",
      "validated_on_data": false,
      "quick_stat": "Not yet validated — needs joining ES PM (cumulative) with SPY open. Estimated Sh 1.5-2.5 based on classical futures-cash arbitrage decay literature.",
      "build_effort": "1hr",
      "caveat": "Edge typically <30bps per trade -> only viable on SPY/QQQ where slip is 1-2 bps."
    },
    {
      "name": "vix_term_kink_short_spy",
      "side": "SHORT",
      "category": "vol_regime",
      "hypothesis": "VIX term structure kink (VIX1M > VIX2M = backwardation onset) on day-after fear spike = continuation lower for SPY/QQQ next morning. Hedge funds front-run vol bid.",
      "detect_rule": "vix1m / vix2m >= 1.05 (backwardation) AND prev_day SPY ret <= -1% AND no_fomc_today -> SHORT SPY @ 09:30, exit 11:00",
      "estimated_edge": "MED-HIGH",
      "data_required": "vix_term_raw_daily.parquet (HAVE), spy_10yr_daily.parquet (HAVE)",
      "memory_ref": "research_30_hypotheses_apr25.md H15 VIX regime",
      "validated_on_data": false,
      "quick_stat": "Not yet validated — has all data. Needs simple join. Backtested in academic lit: VIX backwardation predicts continued vol/decline 60-70% of next 1-3 days.",
      "build_effort": "1hr",
      "caveat": "Real VIX (not VXX proxy) per Apr 26 DIRTY warning. vix_term_raw_daily.parquet IS clean per existing pipeline."
    },
    {
      "name": "adr_overnight_lag_catchup",
      "side": "DYNAMIC",
      "category": "cross-asset",
      "hypothesis": "Foreign ADRs (TSM, BABA, NVO, ASML, etc) often gap incompletely vs their home-market overnight move (Asia/Europe close). Catch-up trade: home-market move > ADR gap = LONG/SHORT residual.",
      "detect_rule": "(home_market_overnight_ret - ADR_gap) >= 0.01 (in absolute terms) -> trade direction of home market, exit 11:00",
      "estimated_edge": "MED",
      "data_required": "bloomberg_adr_daily.parquet (HAVE), bloomberg_adr_factors.parquet (HAVE), foreign_etf_daily.parquet (HAVE), foreign_peers_daily.parquet (HAVE)",
      "memory_ref": null,
      "validated_on_data": false,
      "quick_stat": "Not yet validated — has all 4 parquets to support. Academic ADR-arb literature shows 50-70% of home-market overnight moves un-priced into US open for liquid ADRs.",
      "build_effort": "1day (need to align timezones, identify ADR/home pairs, handle currency)",
      "caveat": "Complex pipeline. Best for top-20 most liquid ADRs. Slip on TSM/BABA = ~5bps acceptable; smaller ADRs slip kills edge."
    }
  ],

  "deferred_or_rejected": [
    {
      "name": "pre_fomc_long_drift",
      "side": "LONG",
      "verdict": "REJECTED",
      "reason": "Validated on data: SPY/QQQ/IWM day-before-FOMC LONG: N=54, WR 48.1%, mean -0.09%, Sh -2.19 (proxy). Famous 'pre-FOMC drift' (academic Lucca-Moench 2015) appears to have decayed in 2024-2026 sample. Not deployable as-is."
    },
    {
      "name": "outside_day_reversal_long",
      "side": "LONG",
      "verdict": "REJECTED",
      "reason": "open<prev_low after up day LONG bounce: N=6735, WR 47.5%, mean -0.20%, Sh -0.58. Continuation dominates reversal. Don't fade outside-down."
    },
    {
      "name": "eom_last2_drift",
      "side": "LONG",
      "verdict": "REJECTED",
      "reason": "End-of-month last 2 days LONG: N=185462, WR 48.4%, mean -0.04%, Sh -0.32. Negative. Window-dressing hypothesis disconfirmed in this universe."
    },
    {
      "name": "three_red_days_bounce",
      "side": "LONG",
      "verdict": "WEAK",
      "reason": "N=168622, mean +0.05%, Sh 0.25. Edge too thin until extended to 5-red (above)."
    }
  ],

  "summary_top3_recommendations": [
    {
      "rank": 1,
      "name": "monday_gap_down_bounce",
      "why": "Robust large-N edge (8962 events 4y) with WR 57%, Sh 2.25 full-day-proxy. 4 of 6 years strongly positive. Easy to build. Best $-EV bang-for-buck."
    },
    {
      "rank": 2,
      "name": "post_strong_close_pm_weak_short_v6 (AAOI pattern)",
      "why": "Validated user-described pattern. v6 (prev+10/gap-3) N=1703 WR 59% Sh 1.49 on proxy. Direct alignment with organic_pump SHORT thesis but earlier-stage entry (no parabolic gap-up needed)."
    },
    {
      "rank": 3,
      "name": "pump_then_volume_dry_short",
      "why": "Highest per-trade edge in screen (mean +1.29%, Sh 3.23) with 6/7 years positive. Low N (~30/yr) but excellent confirmation signal — use as scoring boost on existing pump-fade engine."
    }
  ],

  "implementation_priorities": {
    "immediate_30min_builds": ["monday_gap_down_bounce", "five_red_days_bounce", "mtd_first_2days_long_drift"],
    "1hr_builds": ["post_strong_close_pm_weak_short_v6", "pump_then_volume_dry_short", "two_bar_climax_short", "inside_day_breakout_fade", "futures_cash_divergence_open", "vix_term_kink_short_spy"],
    "1day_builds": ["adr_overnight_lag_catchup"],
    "needs_new_data_pipeline": ["adr_overnight_lag_catchup (timezone+currency alignment)"]
  }
}
