{
  "ts": "2026-09-28T15:40:01Z",
  "title": "RenTech discovery catalog",
  "exercises": [
    {
      "id": "breadth_thrust_spy_gate",
      "token": "breadth",
      "name": "D1 Zweig breadth-thrust SPY/SHY gate",
      "chat": "Replicate Horizon improvement loop",
      "status": "skip",
      "finding": "New information (NYSE A/D) but no Yahoo/Stooq series in-repo. Do not proxy with RSP/SPY. Waiting on a real internals loader.\n",
      "ledger": {},
      "rule": "Zweig's breadth thrust: when a large share of NYSE stocks flip from new lows to new highs in a short window, hold SPY; otherwise hold short-term Treasuries. The gate uses the prior session."
    },
    {
      "id": "curve_carry_tlt_shy",
      "token": "curve_carry",
      "name": "D2 Isolated 10y\u22123m curve carry TLT/SHY",
      "chat": "Replicate Horizon improvement loop",
      "status": "fail",
      "finding": "Not a TLT-SMA rewrite (position \u03c1 \u22120.05). Still a failed sleeve: Sharpe 0.01, DD \u221244%. Stayed in TLT until 2022-12-01 \u2014 inversion lagged the crash.\n",
      "ledger": {
        "id": "curve_carry_tlt_shy_2016_2024",
        "token": "curve_carry",
        "name": "Isolated 10y-3m curve carry TLT/SHY",
        "family": "equity_macro",
        "status": "fail",
        "sharpe": 0.01,
        "cagr_pct": -0.53,
        "max_dd_pct": -44.14,
        "total_return_pct": -4.64,
        "rho_spy": -0.15,
        "why": "New info vs bond-trend (pos \u03c1=-0.05) but fail as a sleeve: Sh 0.01 DD -44%; inversion flipped to SHY only 2022-12-01 after TLT crash. OOS Sh -0.74.",
        "description": "Month-end ^TNX>^IRX \u2192 next month TLT else SHY. No TLT SMA, no SPY gate. First DiscoverySpec D2 test.",
        "window_start": "2016-01-04",
        "window_end": "2024-12-31"
      },
      "rule": "At each month-end, if the 10-year yield is above the 3-month yield, hold long bonds (TLT) for the next month. If the curve is inverted, hold short-term Treasuries (SHY). No stock gate and no moving-average filter."
    },
    {
      "id": "hyg_ief_credit_gate",
      "token": "credit_gate",
      "name": "D3 HYG/IEF 20d credit-shock gate",
      "chat": "Replicate Horizon improvement loop",
      "status": "weak",
      "finding": "Not VIX/SMA (\u03c1 0.26 / 0.25). Full Sharpe 0.93 vs SPY 0.85 but OOS loses to buy-and-hold (0.41 vs 0.58). Gate on only 6% of days. Do not promote.\n",
      "ledger": {
        "id": "hyg_ief_credit_gate_2016_2024",
        "token": "credit_gate",
        "name": "HYG/IEF 20d credit-shock gate SPY/SHY",
        "family": "equity_macro",
        "status": "weak",
        "sharpe": 0.932,
        "cagr_pct": 13.22,
        "max_dd_pct": -24.89,
        "total_return_pct": 205.07,
        "rho_spy": 0.8,
        "why": "Not a VIX/SMA alias (\u03c1 0.26 / 0.25). Full Sh 0.93 vs SPY 0.85 / tighter DD, but OOS loses to BH (Sh 0.41 vs 0.58). Rare de-risk; do not promote.",
        "description": "Prior-session 20d HYG/IEF change < -3% \u2192 SHY else SPY. First DiscoverySpec D3 test. Gate on ~6% of days.",
        "window_start": "2016-01-04",
        "window_end": "2024-12-31"
      },
      "rule": "If high-yield bonds have dropped hard versus intermediate Treasuries over 20 sessions (HYG versus IEF, worse than \u22123%), hold short-term Treasuries instead of SPY. Otherwise hold SPY."
    },
    {
      "id": "copper_gold_growth_gate",
      "token": "copper_gold",
      "name": "D4 CPER/GLD 60d growth-cycle gate",
      "chat": "Replicate Horizon improvement loop",
      "status": "weak",
      "finding": "OOS Sharpe 0.70 vs SPY 0.58; 2022 \u221210% vs \u221218%; DD \u221218% vs \u221234%. SHY 30% of days. Not VIX/SMA/credit (\u03c1 0.07 / 0.19 / 0.26). Lags SPY CAGR. Best DiscoverySpec first-test so far \u2014 not a book sleeve.\n",
      "ledger": {
        "id": "copper_gold_growth_gate_2016_2024",
        "token": "copper_gold",
        "name": "CPER/GLD 60d growth-cycle gate SPY/SHY",
        "family": "equity_macro",
        "status": "weak",
        "sharpe": 0.967,
        "cagr_pct": 11.48,
        "max_dd_pct": -18.06,
        "total_return_pct": 165.3,
        "rho_spy": 0.6555,
        "why": "New info (\u03c1 VIX 0.07, SMA 0.19, credit-off 0.26). OOS Sh 0.70 vs SPY 0.58; 2022 -10% vs -18%; DD -18% vs -34%. Lags SPY CAGR. Weak \u2014 best discovery first-test so far, not a book sleeve.",
        "description": "Prior-session 60d CPER/GLD change < -5% \u2192 SHY else SPY. DiscoverySpec D4. SHY ~30% of days.",
        "window_start": "2016-01-04",
        "window_end": "2024-12-31"
      },
      "rule": "If copper has fallen hard versus gold over the prior 60 sessions (a growth scare), hold short-term Treasuries instead of the S&P. Otherwise hold SPY. The switch uses yesterday's ratio, not today's."
    },
    {
      "id": "shannon_entropy_viral",
      "token": "shannon_entropy",
      "name": "Shannon entropy viral coil 0.3 / 20 / 1.5 ATR",
      "chat": "Shannon entropy in trading",
      "status": "fail",
      "finding": "Entropy is not a stock-trading engine. H<0.3 never fires on SPY daily 2004\u20132026 (n=0; sign-H p05=0.81, min H=0.47). The viral 69% hit rate is the unconditional P(5-bar range>1.5 ATR) base rate (~62%). Bottom-decile entropy is at or below that rate; perm3 quintiles go the wrong way. Causal p10+mom Sharpe 0.22 vs SPY buy-and-hold 0.65. Stay-out when sign H>0.9: Sharpe 0.41, in market 13% of days. Unsigned expansion is not a direction.\n",
      "ledger": {
        "id": "shannon_entropy_viral_0p3",
        "token": "shannon_entropy",
        "name": "Shannon entropy coil (viral 0.3 / 20 / 1.5 ATR / 5-bar / 69%)",
        "family": "equity_info_theory",
        "status": "fail",
        "sharpe": 0.0,
        "cagr_pct": 0.0,
        "max_dd_pct": 0.0,
        "total_return_pct": null,
        "rho_spy": null,
        "why": "0.3 never fires on SPY daily 2004-2026 (n=0; p05 of sign H=0.81). Uncond P(5-bar range>1.5 ATR)=62.5%, so 69% is the base rate. Causal p10 mom Sharpe 0.22 vs SPY BH 0.65. Unsigned expansion is not a direction.",
        "description": "Normalized Shannon entropy of a 20-bar window (sign / hist8 / mag4 / perm3). Viral rule: H<0.3 then expect |move|>1.5 ATR within 5 bars ~69%. Traded as 20-bar momentum hold-5 when H<threshold. Yahoo daily, no costs.",
        "window_start": "2004-01-02",
        "window_end": "2026-09-03"
      },
      "rule": "Measure how \"random\" the last 20 bars are with a Shannon entropy score. The viral claim was that a very low score predicts a large move within five bars. We traded it as: when entropy is low, take the 20-bar momentum direction and hold five days. Daily prices, no costs."
    },
    {
      "id": "shannon_entropy_basket",
      "token": "shannon_entropy_basket",
      "name": "Entropy as TSMOM participation gate",
      "chat": "Shannon entropy in trading",
      "status": "fail",
      "finding": "Not a broad-ETF purpose. Hard own/XS H gates on tsmom8 raise DD to \u221225/\u221228% and cut Sharpe. Size \u221d (1\u2212H) is +0.05 Sharpe and still loses to long-only TSMOM (0.84). Every overlay lost on sectors11. Sign XS-gate Sharpe 0.66 with \u221235% DD is a concentrated trend trap. Use the existing TSMOM sleeve.\n",
      "ledger": {
        "id": "shannon_entropy_basket",
        "token": "shannon_entropy_basket",
        "name": "Shannon entropy as TSMOM participation gate (ETF basket)",
        "family": "equity_info_theory",
        "status": "fail",
        "sharpe": 0.585,
        "cagr_pct": 3.96,
        "max_dd_pct": -14.7,
        "total_return_pct": null,
        "rho_spy": 0.17,
        "why": "Hard H gates raise DD (-28%) and cut Sharpe. Size-by-1H +0.05 Sharpe on tsmom8 perm3, loses on sectors. Long-only TSMOM 0.84 beats every entropy overlay. Entropy is not the engine for a broad ETF book.",
        "description": "TSMOM 3/6/12m L/S vol-norm monthly on 8 ETFs; entropy (perm3, 63d) scales weight by 1 minus trailing-year percentile. Not the viral 0.3/5-bar rule.",
        "window_start": "2011-01-03",
        "window_end": "2026-09-03"
      },
      "rule": "The eight-market trend book (stocks, bonds, gold, commodities, dollar), but shrink a market's weight when its recent entropy is high (noisier) and keep weight when the path looks more ordered. Monthly, not the five-bar viral rule."
    },
    {
      "id": "shannon_entropy_breakout",
      "token": "shannon_breakout",
      "name": "Mag4 coil in front of Donchian breakout",
      "chat": "Shannon entropy in trading",
      "status": "weak",
      "finding": "Only coherent stock use: mag4 (clustered |r|/ATR) as yesterday\u2019s coil, Donchian+SMA200 as today\u2019s direction. Sign entropy is a streak and fails; ATR squeeze (non-Shannon coil) is worse. PIT S&P: 40 trades, Sh 0.61, CAGR 1.3% vs ungated Donchian 0.47 / 2.6% (Sharpe bump is cash). R3K snapshot 2,056 names: 205 trades, Sh 0.56 / CAGR 3.0% still trails ungated 0.69 / 7.5%. Extra names help the raw breakout, not entropy. ema_vcp remains the better mechanical breakout. Not a book sleeve.\n",
      "ledger": {
        "id": "shannon_entropy_breakout_donch20",
        "token": "shannon_breakout",
        "name": "Mag4 entropy coil then Donchian-20 breakout (PIT S&P)",
        "family": "equity_breakout",
        "status": "weak",
        "sharpe": 0.613,
        "cagr_pct": 1.3,
        "max_dd_pct": -3.07,
        "total_return_pct": null,
        "rho_spy": 0.0,
        "why": "Right architecture (coil yesterday, Donchian today) but mag4 only raises Sharpe by being in cash: 40 trades/decade, CAGR 1.3% vs ungated Donchian 2.6%. ATR squeeze gate fails. Sign entropy fails. Lags ema_vcp (CAGR 6.4%).",
        "description": "Long PIT S&P: close>SMA200 and close>prior 20d high; yesterday mag4 entropy in trailing-year bottom tercile; stop at 20-bar coil low; exit stop / 20EMA / 20d. 1% risk, max 10 names.",
        "window_start": "2016-01-04",
        "window_end": "2026-09-03"
      },
      "rule": "Buy an S&P name only when three things line up: price above its 200-day average, a 20-day high, and yesterday's price action unusually \"ordered\" on a Shannon-entropy score (a tight coil). Stop at the coil low. Exit on the stop, the 20-day average, or after 20 sessions. At most ten names."
    },
    {
      "id": "shannon_demon_slv_uso",
      "token": "shannon_demon",
      "name": "Shannon Demon 50/50 CRP (SLV/USO harvest)",
      "chat": "Shannon's Demon backtesting script",
      "status": "weak",
      "finding": "Math works on mean-reverting synthetics. Live harvest is small: SLV/USO +11% OOS lift, full-sample Sh 0.55 / DD \u221261%. Better combos (GLD/DBC, GLD/UUP) are all-weather diversification, not a stronger Demon. Distinct from entropy-coil fail.\n",
      "ledger": {
        "id": "shannon_demon_slv_uso",
        "token": "shannon_demon",
        "name": "Shannon Demon 50/50 CRP SLV/USO 10y 5pct band",
        "family": "vol_harvest",
        "status": "weak",
        "sharpe": 0.5544,
        "cagr_pct": 11.92,
        "max_dd_pct": -60.58,
        "total_return_pct": 208.09,
        "rho_spy": null,
        "why": "Best OOS Demon pair after 91-pair scan. 10bp+5% band CRP CAGR 11.9% / Sharpe 0.55 vs BH 9.3% / 0.45; +27% terminal harvest; 45 trades/10y. DD -61% kills it as a book sleeve. \u03b3* only ~2.9%/yr. Absolute return is still silver+oil beta.",
        "description": "50/50 SLV vs USO, rebalance when a weight exits 45/55, 10bp on traded notional. Yahoo adj close, $100k.",
        "window_start": "2016-09-06",
        "window_end": "2026-09-04"
      },
      "rule": "Two sleeves rebalanced when weights drift: a diversified basket of five ETFs, and a monthly top-five of mega-caps that are near a 52-week high with strong 12-month momentum. The idea is that rebalancing a volatile mix harvests a \"volatility bonus.\""
    },
    {
      "id": "shannon_demon_twins",
      "token": "shannon_demon_twins",
      "name": "Demon on TSLA/SH and TQQQ/SQQQ",
      "chat": "Shannon's Demon backtesting script",
      "status": "fail",
      "finding": "Inverse twins are anti-momentum: CRP sells the rocket to buy the decaying inverse. TQQQ/SQQQ collapses to ~1% vol cash that pays the spread daily.\n",
      "ledger": {},
      "rule": "Shannon's rebalancing idea on two pairs that are built to move opposite each other: Tesla versus an inverse Tesla fund, and triple-long Nasdaq versus triple-short Nasdaq. Rebalance back toward 50/50."
    },
    {
      "id": "ema_vcp_first_valid",
      "token": "ema_vcp",
      "name": "First-valid 8/20 EMA VCP breakout",
      "chat": "Replicate Horizon improvement loop",
      "status": "weak",
      "finding": "Mechanical PIT S&P 2016\u201324: +75% / CAGR 6.4% / Sh 0.62 / DD \u221218%. Not the author's +50% CAGR / 13k-of-400k-charts claim.\n",
      "ledger": {
        "id": "ema_vcp_first_valid_sp500_2016_2024",
        "token": "ema_vcp",
        "name": "First-valid 8/20 EMA VCP breakout (mechanical, PIT S&P)",
        "family": "equity_breakout",
        "status": "weak",
        "sharpe": 0.624,
        "cagr_pct": 6.4,
        "max_dd_pct": -0.1814,
        "total_return_pct": null,
        "rho_spy": null,
        "why": "Mechanical encoding of the 4-step EMA/VCP BO: +75% / CAGR 6.4% / Sharpe 0.62 / DD -18% on PIT S&P 2016-24. Nothing like the claimed +50% CAGR since 1995. Win 42%. 2022 -12%.",
        "description": "First VCP coil at 8/20 after 50-EMA reset; ADX>=20 as CML proxy; first-valid per cycle; 1% risk; exit stop or close<20 EMA. No hand labels, no weekly 8/10, no breadth timing, no costs.",
        "window_start": "2016-01-04",
        "window_end": "2024-12-31"
      },
      "rule": "On point-in-time S&P names, wait for a volatility contraction between the 8- and 20-day moving averages after a longer average resets, then buy the first breakout of that coil. Risk 1%. Exit on the stop or a close back under the 20-day average."
    },
    {
      "id": "mu_weekly_call_overlay",
      "token": "mu_wk_overlay",
      "name": "MU weekly short-call overlay on ITM LEAPS",
      "chat": "Overnight MU trading",
      "status": "fail",
      "finding": "Spec is PMCC + bear call, net short delta on a 67\u00d7 winner. Overlay alpha negative in every trend window; only 2020\u201322 sideways pays. No local MU chains (BS/RV). Win rate 80% hides \u2212$220k weeks.\n",
      "ledger": {
        "id": "mu_weekly_call_overlay_2026_08",
        "token": "mu_wk_overlay",
        "name": "MU weekly short-call overlay on ITM LEAPS (calendar butterfly)",
        "family": "options_single_name_overlay",
        "status": "fail",
        "sharpe": null,
        "cagr_pct": null,
        "max_dd_pct": null,
        "total_return_pct": null,
        "rho_spy": null,
        "why": "Selling 2 near-ATM weeklies per 0.85-delta LEAPS is net SHORT delta (-377 sh vs +747 sh); overlay alpha -19,446% over 10y on MU and account is ruined in every trending window. Only positive when MU goes sideways (+61% alpha 2020-2022).",
        "description": "Long deep-ITM LEAPS + sell short_mult weekly bodies + long upper wing same weekly expiry (PMCC stacked with bear call spread, not a true butterfly). BS-priced off EWMA realized vol - no single-name chains locally. Best config (1x body +10% OTM) still -5,026% alpha over 10y. High win rate 80-87% masks fat left tail (worst week -219k).",
        "window_start": "2016-01-04",
        "window_end": "2026-08-13"
      },
      "rule": "On Micron, hold a deep-in-the-money long-dated call and sell weekly calls against it, with a further-out weekly call as a cap. Priced from a volatility estimate because we do not have single-name option history. A covered-call overlay, not a pure butterfly."
    },
    {
      "id": "persistence_ml_gate",
      "token": "wm_persist_wf",
      "name": "World-model persistence ML gate on confirm_entry",
      "chat": "World Model Agent",
      "status": "fail",
      "finding": "Classifier skill is real (AUC 0.63\u20130.67) but walk-forward never beats the ungated book in expectation. Gate predicts persistence, not payoff; confirm_entry is tail-driven so the filter culls winners. 2024-only win was one window + one seed.\n",
      "ledger": {
        "id": "ml_persistence_gate_walkforward_alpha500",
        "token": "wm_persist_wf",
        "name": "ML persistence gate on confirm_entry_4b: walk-forward + seed-stability verdict",
        "family": "equity_world_model",
        "status": "fail",
        "sharpe": 1.6,
        "cagr_pct": null,
        "max_dd_pct": -24.0,
        "total_return_pct": null,
        "rho_spy": null,
        "why": "KILLS the earlier 'promising' claim. Proper walk-forward (each fold scored only by models trained on prior data, probabilities stitched into one causal panel) over 2023-01-03..2026-06-26 on alpha500: ungated confirm_entry_4b baseline ret+457.8% Sharpe1.75 DD-28.0% gross0.787. NO gate config beats it in expectation. Seed study (3 seeds): static-fit keep0.15 Sharpe 1.65+-0.06 (0/3 beat baseline), static keep0.3 1.64+-0.22 (1/3), 6m-retrain keep0.15 1.80+-0.13 (2/3), 6m-retrain keep0.3 1.60+-0.11 (0/3). 5-model seed ENSEMBLES (best-case variance reduction) collapse dispersion and converge BELOW baseline: keep0.15 1.60+-0.08, keep0.3 1.46+-0.04, 0/3 beat baseline -> true expected effect of the gate is NEGATIVE. Single lucky draws explain every prior positive: static seed17 hit 1.88 and 6m seed41 keep0.15 hit 1.95. Sub-window split shows why the original claim looked good: gate helps only when the base signal is degraded (2025-2026 baseline Sharpe 1.63 -> gated 2.23) and hurts when it is strong (2023-2024 baseline 1.85 -> best gate 1.68); the original holdout was exactly the favorable window. Adaptive switching (use gated book only while trailing baseline Sharpe < cut, 5 lookbacks x 4 cuts x 9 variants = 180 cells) gives no robust lift over always-gated. Retrain cadence/window (6m vs 3m vs rolling 2y vs static) is indistinguishable under +-0.1-0.2 Sharpe fit noise. Mechanism: gate AUC is genuinely 0.63-0.67 on the persistence label, but the confirm_entry book is positive-skew/tail-driven (median name ~0%), so raising average persistence probability does not raise expected PnL - filtering culls rare large winners along with losers. Also fixed: absolute prob thresholds are non-stationary (label base rate falls 0.36->0.26 from 2023-24 to 2025-26 folds, silently making a fixed 0.55 cut far stricter); use per-fold quantile-calibrated (keep-frac) thresholds instead.",
        "description": "Walk-forward retrain protocol for CrossSectionalPersistenceGate over the confirm_entry_4b MA-slope intraday book (alpha500, top-10). Harness builds panels/dataset once, trains per fold on trailing data only with an inner time-ordered val split, stitches per-fold probability slices into one causal panel, and supports fixed or per-fold quantile-calibrated thresholds, multi-seed and seed-ensembled fits. Verdict: no reliable improvement over the ungated book; gate is a de-risking lever whose value is regime-conditional, not alpha.",
        "window_start": "2023-01-03",
        "window_end": "2026-06-26"
      },
      "rule": "The same persistence gate, retrained on a walk-forward schedule so the model only sees data available at the time, then applied to the intraday slope book."
    },
    {
      "id": "qs_lookahead_audit",
      "token": "qs_lookahead",
      "name": "QS registry same-bar look-ahead audit",
      "chat": "Replicate Horizon improvement loop",
      "status": "fail",
      "finding": "8/50 QS sleeves (S33/S36\u201338/S40/S42/S44/S45) applied day-t masks to day-t C2C. S42 3.43\u21920.95, S45 3.14\u21921.06 after lag. Live qs_actionable_4 is clean. Do not reopen S42/S45 as book candidates.\n",
      "ledger": {
        "id": "qs_lookahead_audit_2026_08",
        "token": "qs_lookahead",
        "name": "QS registry look-ahead audit + fix (8 sleeves)",
        "family": "qs_equity",
        "status": "fail",
        "sharpe": null,
        "cagr_pct": null,
        "max_dd_pct": null,
        "total_return_pct": null,
        "rho_spy": null,
        "why": "8/50 QS sleeves applied a day-t close/VIX/SMA mask to day-t close-to-close return; S42 Sharpe 3.43->0.95, S45 3.14->1.06, S44 2.12->0.92 after lagging mask one session",
        "description": "Causality perturbation test: shock day-t close, check if position on day t flips. Fixed via _c2c_on_data_mask (mask.shift(1)) + prior-session decision in _month_start_pick/dual_momentum. Live qs_actionable_4 (S01,S03,S14,S17) unaffected - all clean.",
        "window_start": "2016-01-04",
        "window_end": "2026-08-07"
      },
      "rule": "An audit, not a new strategy. Shock today's close and check whether any \"quant seasonality\" position for today flips. That would mean the rule was peeking at the same bar it traded. The live four-edge SPY set was included."
    },
    {
      "id": "spy_overnight_vix",
      "token": "spy_overnight_eq_r1235",
      "name": "SPY overnight \u00d7 VIX calm/fear + 25-idea grid",
      "chat": "Overnight SPY strategy",
      "status": "weak",
      "finding": "Top nights are HIGH VIX/fear, not calm. EQ I18+I10+I08+I09 was promising in-sample but overlaps live QS actionable-4. Live-readiness loop (16 upgrades) only passed C13 (Tue+3down); does not dominate QS4 yearly. Deploy path = existing qs_actionable_etf \u2192 VOO (see SPY_OVERNIGHT_LIVE.md). Do not add a separate VIX-calm overnight sleeve.\n",
      "ledger": {
        "id": "stk_spy_on_eq_r1235",
        "token": "spy_overnight_eq_r1235",
        "name": "SPY overnight EQ ranks1-2-3-5 (I18+I10+I08+I09)",
        "family": "equity_qs",
        "status": "promising",
        "sharpe": 1.049,
        "cagr_pct": 5.91,
        "max_dd_pct": -6.89,
        "total_return_pct": 82.16,
        "rho_spy": null,
        "why": "Selective overnight MR+Tue ensemble: Sharpe 1.05 > always-in 0.89 with DD -6.9% vs -34%; lower return than always-in; diversifies mainly via I18 vs pullback cluster",
        "description": "SPY overnight EQ ranks1-2-3-5 (I18+I10+I08+I09) (equity_qs) \u2014 Selective overnight MR+Tue ensemble: Sharpe 1.05 > always-in 0.89 with DD -6.9% vs -34%; lower re\u2026",
        "window_start": "2016-01-04",
        "window_end": "2026-06-18"
      },
      "rule": "Hold SPY from the close to the next open, but only on a handful of seasonal nights that ranked best in a 25-idea screen (including Tuesday and a few mean-reversion nights). Equal weight. Compared with holding every night."
    },
    {
      "id": "spx_regime_state_space",
      "token": "spx_regime_ss_v2",
      "name": "SPX Regime State Space v2 theta router",
      "chat": "Trading strategy development",
      "status": "fail",
      "finding": "~97% of days cash; anti-Hurst + short hold = whipsaw. Sharpe \u22122.2. Blocked in approach_catalog.\n",
      "ledger": {
        "id": "opt_spx_regime_v2",
        "token": "spx_regime_ss_v2",
        "name": "SPX Regime State Space v2 theta router",
        "family": "options_theta",
        "status": "fail",
        "sharpe": -2.2,
        "cagr_pct": null,
        "max_dd_pct": null,
        "total_return_pct": -15.9,
        "rho_spy": null,
        "why": "~97% days cash; anti-Hurst + short hold = whipsaw",
        "description": "SPX Regime State Space v2 theta router (options_theta) \u2014 ~97% days cash; anti-Hurst + short hold = whipsaw",
        "window_start": "",
        "window_end": ""
      },
      "rule": "A regime model labels each day and routes SPY option structures (which spread to sell, or cash). The tested version sat in cash on most days and flipped quickly when it did trade."
    },
    {
      "id": "cnn_lstm_long_short",
      "token": "cnn_lstm_ls",
      "name": "CNN-LSTM long/short cross-section",
      "chat": "Long short portfolio development",
      "status": "fail",
      "finding": "Short leg drags. L/S fails OOS; long-only top-10 is the only usable cousin. Do not reopen equity_ls without a new story.\n",
      "ledger": {
        "id": "stk_cnn_lstm_ls",
        "token": "cnn_lstm_ls",
        "name": "CNN-LSTM long-short cross-section",
        "family": "equity_ml",
        "status": "fail",
        "sharpe": null,
        "cagr_pct": null,
        "max_dd_pct": null,
        "total_return_pct": null,
        "rho_spy": null,
        "why": "Short leg drags; L/S fails OOS; long-only top-10 only usable",
        "description": "CNN-LSTM long-short cross-section (equity_ml) \u2014 Short leg drags; L/S fails OOS; long-only top-10 only usable",
        "window_start": "",
        "window_end": ""
      },
      "rule": "A neural net (a convolutional layer in front of an LSTM) reads recent price sequences and ranks stocks long and short. Tested as a cross-section, then with the short side removed."
    },
    {
      "id": "timesfm_confirm_gate",
      "token": "timesfm_gate",
      "name": "TimesFM-2.5 PIT gate on confirm_entry_4b",
      "chat": "TimesFM viral forecast model",
      "status": "fail",
      "finding": "Viral \u201csilent Google price model\u201d is ICML 2024, not a drop; TimesFM-3 weights are non-commercial. Apache-2.0 2.5 on confirm_entry_4b top-5 cap20 (2024-01-02\u21922026-06-26): daily T-1 spy_median +143%/Sh 1.54 vs ungated +275%/1.94 \u2014 skipped days had higher mean PnL (12/32 tail winners culled). 5m rest-of-session SPY at j2 corr=0.0; \u221230bp \u201cOOS Sh 1.85\u201d is 2025-11-20 (\u221210.45%); unskip \u2192 OOS Sh 1.51 vs ungated 1.66. Do not deploy. Live stays ungated confirm_entry_4b.\n",
      "ledger": {
        "id": "stk_timesfm_gate",
        "token": "timesfm_gate",
        "name": "TimesFM-2.5 PIT gate on confirm_entry_4b",
        "family": "equity_ml",
        "status": "fail",
        "sharpe": 1.94,
        "cagr_pct": 70.96,
        "max_dd_pct": -17.87,
        "total_return_pct": 274.91,
        "rho_spy": null,
        "why": "Improvement loop failed. Daily T-1 skip culled tail winners. 5m rest-of-session corr=0; -30bp OOS Sharpe lift is 2025-11-20 (-10.45%) \u2014 unskip -> OOS Sh 1.51 vs ungated 1.66. Do not deploy. Live remains ungated confirm_entry_4b.",
        "description": "TimesFM-2.5 overlay on confirm_entry_4b. Headline metrics are the UNGATED book (the overlay loses). Daily + 5m encodings tested PIT.",
        "window_start": "2024-01-02",
        "window_end": "2026-06-26"
      },
      "rule": "Use TimesFM's forecast as a filter on the intraday moving-average-slope book: take the trade only when the model agrees. Daily and 5-minute encodings, scored without looking ahead."
    },
    {
      "id": "kalman_15m_fade",
      "token": "kalman_15m_fade",
      "name": "Viral Kalman 15m mean-reversion (CERN noise filter)",
      "chat": "CERN Kalman noise filter",
      "status": "fail",
      "finding": "Origin story (CERN 2019 / Citadel 8 months later / 63% WR) is not independently sourced. On Alpaca SPY 15m 2020\u20132026 the 1d log-price Kalman *is* an EMA (residual corr = 1.0, K*=0.618 when Q=R). Fade |z|>2, hold 2 bars, flatten EOD: WR 51.9% (not 63%), Sh 0.11, DD \u221225% (not \u22124.2%). 2 bp RT \u2192 Sh \u22120.74. Heavy-smooth cousin (K*\u22480.10) is a slow EMA: 151 trades, WR 56%, Sh 1.02, DD \u22124.7% \u2014 sparse, not a day-trade machine, same as ema_fade_heavy. Chan pair Kalman (ewa_ewc_kalman) is a different tool (dynamic hedge) and stays promising. Do not reopen 1d price Kalman as a noise-filter edge. L2/order-book Kalman was not tested (no local tape).\n",
      "ledger": {
        "id": "kalman_15m_fade_spy_2020_2026",
        "token": "kalman_15m_fade",
        "name": "Viral Kalman 15m mean-reversion (CERN noise filter)",
        "family": "equity_intraday",
        "status": "fail",
        "sharpe": 0.1077,
        "cagr_pct": 0.57,
        "max_dd_pct": -24.99,
        "total_return_pct": 3.76,
        "rho_spy": null,
        "why": "1d Kalman on price is an EMA (resid corr 1.0). SPY 15m fade WR 51.9% / Sh 0.11 / DD -25%, not 63% / 4.2%. 2bp RT Sh -0.74. Chan pair Kalman is the version that worked.",
        "description": "Fade |Kalman innovation z|>2 on 15m log-price; hold 2 bars (~30m); flatten EOD. Public Alpaca 1m resampled. Controls: EMA with same K*, rolling z, 2-state velocity.",
        "window_start": "2020-01-02",
        "window_end": "2026-06-18"
      },
      "rule": "On 15-minute bars, fade a move when a Kalman filter says price has jumped more than two standard errors from its estimate. Hold about 30 minutes and flatten by the close. Compared with a plain moving-average fade and a rolling z-score using the same data."
    },
    {
      "id": "move_bond_vol_gate",
      "token": "move_gate",
      "name": "D5 MOVE 252d 80th-pct SPY/SHY gate",
      "chat": "Replicate Horizon improvement loop",
      "status": "weak",
      "finding": "Yahoo ^MOVE is real (not a VIX alias; \u03c1 VIX>20 = 0.27). Prior MOVE above 252d 80th pct \u2192 SHY: +173% / Sh 0.97 / DD \u221220% vs SPY +236% / 0.85 / \u221234% (2016\u20132024). OOS Sh 0.86 vs SPY 0.58; 2022 \u22126.9%. Level >100 encoding fails OOS (Sh \u22120.59). Same shape as D4 copper/gold \u2014 not a book sleeve. Do not reopen MOVE>100.\n",
      "ledger": {
        "id": "move_bond_vol_gate_p80_2016_2024",
        "token": "move_gate",
        "name": "MOVE 252d 80th-pct SPY/SHY gate",
        "family": "equity_vol",
        "status": "weak",
        "sharpe": 0.973,
        "cagr_pct": 11.85,
        "max_dd_pct": -20.19,
        "total_return_pct": 173.35,
        "rho_spy": 0.675,
        "why": "Not a VIX alias (rho VIX>20=0.27). +173%/Sh 0.97/DD -20 vs SPY +236%/0.85/-34. OOS Sh 0.86 vs 0.58. Lags CAGR. MOVE>100 OOS fails. Same D4 shape \u2014 not a book sleeve.",
        "description": "Prior ICE BofA MOVE above 252d 80th percentile \u2192 SHY else SPY. Daily close, no costs.",
        "window_start": "2016-01-04",
        "window_end": "2024-12-31"
      },
      "rule": "If the MOVE index (bond-market volatility) is above its own one-year 80th percentile, hold short-term Treasuries instead of SPY. Otherwise hold SPY. Uses the prior close."
    },
    {
      "id": "kalman_tv_r",
      "token": "kalman_tv_r",
      "name": "Time-varying R Kalman 15m fade (mega5)",
      "chat": "CERN Kalman noise filter",
      "status": "fail",
      "finding": "R_t from 1m range makes K move (std 0.17; vs AMA residual corr 0.69, not a clone). Still loses after 2 bp RT. Best cell tvr_fade top-n: WR 48% / Sh \u22120.34 / OOS Sh 0.53 / DD \u221237% vs BH OOS 0.95. Live bar (OOS Sh \u2265 0.80) not met. Do not reopen 15m Kalman fades.\n",
      "ledger": {
        "id": "kalman_tv_r_mega5_15m_2020_2026",
        "token": "kalman_tv_r",
        "name": "Time-varying R Kalman 15m fade (mega5)",
        "family": "equity_intraday",
        "status": "fail",
        "sharpe": -0.345,
        "cagr_pct": -2.66,
        "max_dd_pct": -37.15,
        "total_return_pct": -15.99,
        "rho_spy": null,
        "why": "K actually moves (vs AMA resid corr 0.69, not a clone) and still loses after 2bp. Best cell tvr_fade top-n Sh -0.34 / OOS 0.53 / DD -37 vs BH OOS 0.95. Do not reopen 15m Kalman fades.",
        "description": "1m-range R_t Kalman fade on AAPL/MSFT/NVDA/AMZN/GOOGL 15m; 2bp RT; flatten EOD. AMA control.",
        "window_start": "2020-01-02",
        "window_end": "2026-06-18"
      },
      "rule": "On 15-minute bars of five mega-caps, a Kalman filter whose noise estimate changes with the last minute's range. Fade the residual when it stretches, and flatten by the close. Charged 2 basis points round trip."
    },
    {
      "id": "kalman_pullback_trend",
      "token": "kalman_pullback",
      "name": "Kalman-velocity pullback (buy dip when vel>0)",
      "chat": "CERN Kalman noise filter",
      "status": "fail",
      "finding": "2d_tvr_pullback top-n on mega5 15m: WR 52% / Sh \u22120.27 / OOS Sh \u22120.49 / DD \u221219%. EOD flatten and mom variants worse. Same 2 bp RT. Do not encode as a hard skip on confirm_4b either (see SNR overlay).\n",
      "ledger": {
        "id": "kalman_pullback_mega5_15m_2020_2026",
        "token": "kalman_pullback",
        "name": "Kalman-velocity pullback in trend (mega5 15m)",
        "family": "equity_intraday",
        "status": "fail",
        "sharpe": -0.269,
        "cagr_pct": -1.72,
        "max_dd_pct": -18.9,
        "total_return_pct": -10.61,
        "rho_spy": null,
        "why": "Buy dip when Kalman vel>0. 2d_tvr_pullback top-n WR 52% Sh -0.27 / OOS -0.49 / DD -19 after 2bp. EOD and mom variants worse.",
        "description": "Long residual < -z only when Kalman velocity > 0; mega5 15m; 2bp RT.",
        "window_start": "2020-01-02",
        "window_end": "2026-06-18"
      },
      "rule": "On the same 15-minute mega-caps, buy a dip in the Kalman residual only when the filter's velocity is still up (a pullback inside a trend, not a fade of every extreme)."
    },
    {
      "id": "kalman_size_overlay",
      "token": "kalman_snr_overlay",
      "name": "Soft SNR size overlay on confirm_4b",
      "chat": "CERN Kalman noise filter",
      "status": "weak",
      "finding": "Scale lagged SPY 15m TV-R Kalman gain on the book CSV (weight clip 0.25\u20131.5; mean 0.99, p90 1.48). Overlay +1,459% / Sh 1.524 / DD \u221234% vs ungated +1,270% / 1.481 / \u221232%. OOS 2024 Sh 1.966 vs 1.957 but DD worse (\u221224% vs \u221218%). Amplifies, does not de-risk. Not a book change. Per-name 5m residual overlay is kalman_confirm_z_resize.\n",
      "ledger": {
        "id": "kalman_snr_size_overlay_confirm4b",
        "token": "kalman_snr_overlay",
        "name": "Kalman SNR size overlay on confirm_4b",
        "family": "equity_intraday",
        "status": "weak",
        "sharpe": 1.524,
        "cagr_pct": 53.23,
        "max_dd_pct": -33.54,
        "total_return_pct": 1459.47,
        "rho_spy": null,
        "why": "Beats ungated Sh 1.481->1.524 but mean weight 0.99 and OOS 2024 DD worse (-24 vs -18). Amplifies, does not de-risk. Not a book change.",
        "description": "Multiply confirm_4b daily returns by lagged SPY 15m TV-R Kalman gain, clip 0.25-1.5. Size, do not skip.",
        "window_start": "2020-01-03",
        "window_end": "2026-06-18"
      },
      "rule": "Keep every trade from the intraday moving-average-slope book, but scale that day's profit and loss by a lagged Kalman \"how clean is the trend\" score on SPY. A size overlay, not a new entry rule."
    },
    {
      "id": "kalman_confirm_z_resize",
      "token": "kalman_confirm_z_resize",
      "name": "Per-name Kalman-z resize on confirm_4b",
      "chat": "CERN Kalman noise filter",
      "status": "promising",
      "finding": "Standalone 15m fade is dead after 2 bp. Useful Kalman is a size overlay on MA-slope: shrink when 5m residual z>0, boost when cheap, and re-size every bar (freeze-at-entry is only delever). 250 names, 1 bp, 2020\u20132026: boost_cheap Sh 1.96 / CAGR 46% / DD \u221216% vs ungated 1.18 / 32% / \u221223%; OOS Sh 1.70 vs 1.22. Gross 0.38 vs 0.47. Not live: book is ~500 names, live would rebalance every 5m, IBKR commissions unmodeled. Paper only. Do not deploy as a new CERN day-trade.\n",
      "ledger": {
        "id": "kalman_confirm_z_resize_250_1bp",
        "token": "kalman_confirm_z_resize",
        "name": "Per-name Kalman-z 5m resize on confirm_4b",
        "family": "equity_intraday",
        "status": "promising",
        "sharpe": 1.9624,
        "cagr_pct": 46.37,
        "max_dd_pct": -16.39,
        "total_return_pct": 1071.08,
        "rho_spy": null,
        "why": "Intra-hold 5m z-resize (boost_cheap) 1bp: Sh 1.96 / CAGR 46% / DD -16% vs ungated 1.18 / 32% / -23% on 250 names. Freeze-at-entry is only delever. Not live until 500-name + IBKR paper.",
        "description": "confirm_4b top-5 cap20; per-name 5m TV-R Kalman residual z shrinks size when extended, boosts when cheap; re-size every bar; 1 bp slippage.",
        "window_start": "2020-01-02",
        "window_end": "2026-06-18"
      },
      "rule": "Same intraday moving-average-slope book as the live sleeve (top five names, 20% cap, out by the close). A Kalman filter on each name's 5-minute residual shrinks the position when price looks extended and adds when it looks cheap. Size changes; the entry list does not."
    },
    {
      "id": "qs_pdf_double_seven",
      "token": "qs_double_seven",
      "name": "Connors Double Seven (7 down days \u2192 long SPY 7d)",
      "chat": "Trading strategies evaluation",
      "status": "fail",
      "finding": "One QS-PDF extra, not the list. 2016\u20132024: 15 sessions in SPY, +2% / Sh 0.07 / invested 0.7% of days. OOS 2022\u201324 never fires. Too sparse.\n",
      "ledger": {
        "id": "qs_pdf_double_seven_2016_2024",
        "token": "qs_double_seven",
        "name": "Connors Double Seven (7 down \u2192 long SPY 7d)",
        "family": "equity_qs",
        "status": "fail",
        "sharpe": 0.073,
        "cagr_pct": 0.23,
        "max_dd_pct": -12.35,
        "total_return_pct": 2.08,
        "rho_spy": 0.262,
        "why": "15 SPY sessions 2016-2024, +2% / Sh 0.07 / invested 0.7% of days. OOS 2022-24 never fires. Too sparse to be a sleeve.",
        "description": "After 7 consecutive SPY down closes, long 7 sessions else cash.",
        "window_start": "2016-01-04",
        "window_end": "2024-12-31"
      },
      "rule": "Connors' Double Seven: after seven SPY down closes in a row, buy and hold for seven sessions. Otherwise cash."
    },
    {
      "id": "vwap_fail_short",
      "token": "vwap_fail_short",
      "name": "VWAP-fail short (mirror of failed VWAP reclaim)",
      "chat": "Buying short-term dips in stocks",
      "status": "fail",
      "finding": "Day-trading idea 54 on mega5 2022\u20132025: 6,154 trades, Sh \u22121.89, \u221283.5%, avg \u22120.10%/trade. Same tape as failed VWAP reclaim long. PDL failed-support short already covers this neighborhood.\n",
      "ledger": {
        "id": "vwap_fail_short_mega5_2022_2025",
        "token": "vwap_fail_short",
        "name": "VWAP-fail short (day-trading idea 54)",
        "family": "equity_intraday",
        "status": "fail",
        "sharpe": -1.892,
        "cagr_pct": null,
        "max_dd_pct": null,
        "total_return_pct": -83.5,
        "rho_spy": null,
        "why": "mega5 2022-2025: 6154 trades, Sh -1.89, -83.5%, avg -0.10%/trade. Mirror of failed VWAP reclaim long.",
        "description": "Short VWAP fail on mega5; flatten EOD. Idea 54 from the complementary day-trading list.",
        "window_start": "2022-01-03",
        "window_end": "2025-12-31"
      },
      "rule": "On five mega-caps, short when price tries to reclaim the session VWAP and fails. Cover by the close. The mirror of the VWAP-reclaim long."
    },
    {
      "id": "acad_delta_hedged_vrp",
      "token": "delta_hedged_vrp",
      "name": "Delta-hedged short ATM straddle (Tilgenkamp)",
      "chat": "Volatility risk premium strategies in options trading",
      "status": "fail",
      "finding": "Naked ATM straddles already missed Sharpe \u22651.5 under bid/ask. Daily share-hedge to ~0 delta, flatten <7 DTE, Theta SPY 15:45 smoke 2016-01-04\u21922017-06-30: 26 opens, always in, \u22125.6% / Sh \u22120.86 / DD \u221211%. Do not extend; do not reopen unhedged ATM VRP.\n",
      "ledger": {
        "id": "delta_hedged_vrp_atm30_2016_2017",
        "token": "delta_hedged_vrp",
        "name": "Delta-hedged short ATM 30d straddle (Tilgenkamp smoke)",
        "family": "options_theta",
        "status": "fail",
        "sharpe": -0.856,
        "cagr_pct": -3.75,
        "max_dd_pct": -10.77,
        "total_return_pct": -5.56,
        "rho_spy": null,
        "why": "Daily share-hedge to ~0 delta does not rescue ATM VRP. Theta SPY 15:45 2016-01-04 to 2017-06-30: 26 opens, always in, -5.6% / Sh -0.86 / DD -11%. Do not extend.",
        "description": "Short 1 ATM ~30 DTE straddle at bid; daily hedge SPY shares so 100*(dc+dp)+shares~0; flatten <7 DTE at ask. MTM mid.",
        "window_start": "2016-01-04",
        "window_end": "2017-06-30"
      },
      "rule": "Sell a one-month at-the-money SPY straddle, then each day trade SPY shares so the option delta is about flat. Close before the last week. A test of whether the variance premium survives once directional risk is hedged."
    },
    {
      "id": "intrad_remaining_session_vrp",
      "token": "intrad_vrp",
      "name": "Remaining-session VRP (VIXY/SVXY, flatten EOD)",
      "chat": "Intraday vol arb",
      "status": "fail",
      "finding": "Distinct from failed daily 30DTE ATM hedge. After 30m of SPY 1-min RV, trade remaining-session gap vs prior-close VIX9D in VIXY (long vol) / SVXY (short vol), re-evaluate every 15m, flatten 15:55. 2020-01-02\u2192 2026-06-25 $100k 5bp: \u221255% / Sh \u22120.36 / DD \u221269% / 99% of days in. Zero-cost Sh 0.65 still dies 2025\u201326. Sparse 10:00 |gap|>0.15 hold (11 long-vol crash days) is not a sleeve. Stay with daily vol_edge / 4-regime VRP.\n",
      "ledger": {
        "id": "stk_intrad_vrp",
        "token": "intrad_vrp",
        "name": "Remaining-session VRP (VIXY/SVXY, flatten EOD)",
        "family": "equity_vol",
        "status": "fail",
        "sharpe": -0.3639,
        "cagr_pct": -11.62,
        "max_dd_pct": -69.09,
        "total_return_pct": -55.06,
        "rho_spy": null,
        "why": "Active 15m IV-RV day-trade in VIXY/SVXY dies on daily round-trip; 5bp 2020-2026 -55% / Sh -0.36 / DD -69%. Not a substitute for 4-regime VRP or vol_edge.",
        "description": "After 30m SPY RV vs prior-close VIX9D, long VIXY or SVXY, reeval every 15m, flatten 15:55.",
        "window_start": "2020-01-02",
        "window_end": "2026-06-25"
      },
      "rule": "After the first 30 minutes, compare SPY's realized move with a short-dated VIX reading. If implied volatility is rich, buy the inverse-vol ETF; if it is cheap, buy the long-vol ETF. Recheck every 15 minutes and flatten before the close."
    },
    {
      "id": "intrad_gamma_scalp_theta",
      "token": "intrad_gamma_scalp",
      "name": "Intraday gamma scalp on Theta ATM weeklies",
      "chat": "Intraday vol arb",
      "status": "skip",
      "finding": "True gamma-scalp needs a held option + intraday share hedges. Theta SPY ATM weeklies fail put-call parity (~$27 C\u2212P vs S\u2212K) and file deltas look like unscaled strikes (\u0394call\u22480.95 on \u201cATM\u201d). Do not cite the \u221299% 2021 smoke. Blocker: OPRA/0DTE or PCP-clean chains.\n",
      "ledger": {},
      "rule": "Buy a short-dated at-the-money SPY option and hedge the delta through the session, trying to scalp the gap between implied and realized moves. Flatten the same day. Priced off the 15:45 chain, which is a rough stand-in for intraday quotes."
    },
    {
      "id": "jets_vix_straddle",
      "token": "jets_vix_straddle",
      "name": "Jason Jets synthetic VIX ATM straddle (daily hedge)",
      "chat": "Intraday vol arb",
      "status": "fail",
      "finding": "Video spec reconstructed: 21d ATM BS straddle, IV=0.9\u00d7VIX, daily close hedge, sell if IV/RVfc>1.20 and VIX3M>VIX. No listed chains. 2007-01-03 \u21922026-06-25 $100k 4\u00d7 share-notional: filtered +131% / Sh 0.30 / DD \u221275% vs SPY +643% / Sh 0.62 / DD \u221255%. Always-short 4\u00d7 +2733% / Sh 0.61 / DD \u221270% \u2014 leverage, not an edge (Sharpe \u2248 SPY). Long/short \u221299%. Sticky-IV worse. Not intraday. The clip\u2019s hockey-stick is reproduced only if ratio uses next-21d realized vol (lookahead ``fwd_rv``): 1\u00d7 gamma P&L filtered +685% / Sh 6.5 / DD \u22121% vs SPY +553%. That is not tradable. Stay with 4-regime VRP / vol_edge.\n",
      "ledger": {
        "id": "stk_jets_vix_straddle",
        "token": "jets_vix_straddle",
        "name": "Jason Jets synthetic VIX ATM straddle (daily hedge)",
        "family": "options_vrp",
        "status": "fail",
        "sharpe": 0.2997,
        "cagr_pct": 4.39,
        "max_dd_pct": -75.02,
        "total_return_pct": 131.01,
        "rho_spy": null,
        "why": "Clip filtered 4x lags SPY (Sh 0.30 vs 0.62, DD -75%). Always-short 4x is leveraged short-vol with SPY Sharpe. Synthetic VIX marks, daily close hedge, not listed options.",
        "description": "21d ATM BS straddle, IV=0.9*VIX, daily close hedge; sell if IV/max(RV10,RV21,EWMA)>1.20 and VIX3M>VIX. 4x share-notional.",
        "window_start": "2007-01-03",
        "window_end": "2026-06-25"
      },
      "rule": "Jason Jets' synthetic short: each day price a 21-day at-the-money straddle from the VIX, hedge it with shares, and sell only when implied volatility is rich versus recent realized volatility and the VIX curve is in contango. A daily hedge, not a listed-option fill."
    },
    {
      "id": "williams_r_spy_bounce",
      "token": "williams_r_live",
      "name": "Williams %R SPY bounce vs RSI (posted \u221290 vs live \u221280)",
      "chat": "Williams %R trading system",
      "status": "promising",
      "finding": "QS-style post: enter SPY when WR < \u221290, exit close > yesterday high or WR > \u221230; claimed 81% WR and \u201cbeats RSI.\u201d Close-fill/no-cost 2016\u20132026 +222% / Sh 1.14, but next-open + 5 bps on \u221290 misses the live bar (OOS Sh 0.81). Walk-forward live spec is WR(2) < \u221280, next-open, 5 bps: OOS 2022\u201326 Sh 1.07 / CAGR 11.2% / DD \u22128.1% / 2022 +12.6%; 2023\u201326 Sh 1.15. \u03c1 vs QS-4 = 0.19. SMA200, ATR stop, max-hold, close>open confirm, and QQQ+IWM basket all failed OOS. Live satellite in Today Trades / Desk: 5% of the core book taken from tactical AW, trades VOO. Posted \u221290 stays williams_r_spy.\n",
      "ledger": {
        "id": "williams_r_spy_live",
        "token": "williams_r_live",
        "name": "Williams %R live spec (WR2<-80, next-open, 5 bps)",
        "family": "equity_qs",
        "status": "optional",
        "sharpe": 1.065,
        "cagr_pct": 11.15,
        "max_dd_pct": -8.12,
        "total_return_pct": null,
        "rho_spy": null,
        "why": "Walk-forward live spec OOS Sh 1.07 / 2022 +12.6%. Now on in Today Trades / Desk at 5% taken from tactical AW (VOO). Not in the research --stock-only combine table. Do not stack on Connors/RSI2.",
        "description": "WR(2) < -80 buy next open; exit close > yest high or WR > -30. 5 bps RT. Today Trades satellite 5% from tactical AW.",
        "window_start": "2022-01-03",
        "window_end": "2026-09-10"
      },
      "rule": "The live version of the Williams %R bounce: buy SPY at the next open when 2-day %R is below \u221280 (a looser trigger than the research \u221290 rule), and sell when the close beats yesterday's high or %R rises above \u221230. A small round-trip cost is charged."
    }
  ],
  "ideas": [
    {
      "token": "vrp",
      "name": "4-regime VRP engine",
      "chat": "Volatility risk premium strategies in options trading",
      "bucket": "strong",
      "note": "Core options engine. Cite MTM+margin, not exit-day. Trade-log \u03a3pnl ~$98.5k / WR 81.5% illustrative on $100k.",
      "ledger": {
        "id": "opt_vrp_4reg",
        "token": "vrp",
        "name": "4-regime VRP engine",
        "family": "options_theta",
        "status": "default_book",
        "sharpe": 2.89,
        "cagr_pct": 7.1,
        "max_dd_pct": -5.4,
        "total_return_pct": 98.5,
        "rho_spy": null,
        "why": "Anchor low-DD short-vol sleeve; trade-log sum pnl ~$98.5k on $100k illustrative ledger",
        "description": "4-regime VRP short-vol engine on SPY Theta chains (options-only closed trades). \u2014 Anchor low-DD short-vol sleeve; trade-log sum pnl ~$98.5k on $100k illustrative ledger",
        "window_start": "2016-03-18",
        "window_end": "2026-03-19"
      },
      "rule": "Sell SPY option premium when implied volatility is rich versus recent realized volatility. Four market regimes choose the structure. One options book, marked to market with margin, not only on the day a trade closes."
    },
    {
      "token": "lit4",
      "name": "Literature S055/S057/S059/S089",
      "chat": "Unique option trading strategies outline",
      "bucket": "strong",
      "note": "Short RR/skew + put-write cleared Sharpe \u22651.5 under bid/ask. Combined lit4+VRP \u2192 MTM evaluator.",
      "ledger": {
        "id": "opt_lit4",
        "token": "lit4",
        "name": "Literature S055 S057 S059 S089",
        "family": "options_theta",
        "status": "default_book",
        "sharpe": 0.6958,
        "cagr_pct": 6.95,
        "max_dd_pct": -9.74,
        "total_return_pct": null,
        "rho_spy": null,
        "why": "Short RR/skew and put-write families clear Sharpe>=1.5 under bid/ask; use MTM not sum-mode",
        "description": "Literature Theta sleeves S055/S057/S059/S089 (put-write / RR family). \u2014 Short RR/skew and put-write families clear Sharpe>=1.5 under bid/ask; use MTM not sum-mode",
        "window_start": "2016-01-04",
        "window_end": "2022-12-31"
      },
      "rule": "Four published SPY option-income rules: short a risk-reversal (sell rich skew) and put-write-style short puts, only when the index is in an uptrend and volatility is not extreme. Fills use the bid and the ask."
    },
    {
      "token": "vxx_regime_stack",
      "name": "Dynamic VXX regime stack (6 sleeves)",
      "chat": "VXX options regime strategy",
      "bucket": "strong",
      "note": "Approach B sum of MTM daily PnL. Replaces legacy 90/10 JSONL merge.",
      "ledger": {
        "id": "opt_vxx_regime",
        "token": "vxx_regime_stack",
        "name": "Dynamic VXX Regime Strategy Stack (6 sleeves)",
        "family": "options_vxx",
        "status": "default_book",
        "sharpe": 1.22,
        "cagr_pct": 7.11,
        "max_dd_pct": -9.8,
        "total_return_pct": 104.0,
        "rho_spy": null,
        "why": "Approach B sum of MTM daily PnL; replaces legacy 90/10 JSONL merge",
        "description": "Dynamic VXX Regime Strategy Stack \u2014 six regime sleeves, Approach B MTM sum. \u2014 Approach B sum of MTM daily PnL; replaces legacy 90/10 JSONL merge",
        "window_start": "2016-01-01",
        "window_end": "2026-12-31"
      },
      "rule": "Six VXX option strategies that turn on or off with the volatility regime (contango versus backwardation, calm versus stressed). Their daily marks are added together on one account."
    },
    {
      "token": "macro_aw",
      "name": "Macro All-Weather options (8 ETF sleeves)",
      "chat": "Option strategies for uncorrelated instruments",
      "bucket": "strong",
      "note": "Equal-weight TLT/USO/DBC/GLD. Do not stack 8\u00d7 notional as a live claim. \u03c1(SPY) \u2248 \u22120.06.",
      "ledger": {
        "id": "opt_macro_aw_eq",
        "token": "macro_aw",
        "name": "Macro AW options 8 sleeves equal-weight",
        "family": "options_macro",
        "status": "default_book",
        "sharpe": 1.73,
        "cagr_pct": 1.55,
        "max_dd_pct": -0.97,
        "total_return_pct": 16.8,
        "rho_spy": -0.06,
        "why": "Low SPY-rho diversifier; TLT/USO/DBC/GLD putw; use margin MTM for production DD",
        "description": "Macro All-Weather options: 8 ETF sleeves (TLT/USO/DBC/GLD), equal-weight. \u2014 Low SPY-rho diversifier; TLT/USO/DBC/GLD putw; use margin MTM for production DD",
        "window_start": "2016-04-01",
        "window_end": "2026-04-01"
      },
      "rule": "Option income on bonds, oil, commodities, and gold (TLT, USO, DBC, GLD): covered-call style, butterflies, condors, and put writes. Each sleeve is averaged so one market does not dominate. Built to move differently from SPY."
    },
    {
      "token": "tactical_aw",
      "name": "Tactical All Weather SMA+momentum",
      "chat": "Trading strategy based on SMA and EMA slopes",
      "bucket": "strong",
      "note": "Stock-book risk anchor; near-flat 2022; large fund-mode weight.",
      "ledger": {
        "id": "stk_tactical_aw",
        "token": "tactical_aw",
        "name": "Tactical All Weather SMA+momentum gates",
        "family": "equity_macro",
        "status": "default_book",
        "sharpe": 1.66,
        "cagr_pct": 6.73,
        "max_dd_pct": -5.9,
        "total_return_pct": 116.0,
        "rho_spy": null,
        "why": "Stock-book risk anchor; near-flat 2022; large fund-mode weight",
        "description": "Macro ETF rotation (VOO/TLT/IEF/GLD/DBC). Each sleeve only stays on if price is above its SMA and has positive momentum; otherwise that sleeve sits in cash. \u2014 Stock-book risk anchor; near-flat 2022; large fund-mode weight",
        "window_start": "2016-01-04",
        "window_end": "2026-04-02"
      },
      "rule": "Rotate among stocks, long bonds, intermediate bonds, gold, and commodities (VOO, TLT, IEF, GLD, DBC). Hold a market only while its price is above its moving average and momentum is positive. Otherwise that slice sits in cash."
    },
    {
      "token": "tsmom",
      "name": "TSMOM managed futures (8-asset)",
      "chat": "Algorithmic trading strategy testing",
      "bucket": "strong",
      "note": "Moskowitz CTA. \u03b2\u22480.02. Helps 2008/2011/2022. Single-name Chan TSMOM on TLT failed.",
      "ledger": {
        "id": "stk_tsmom",
        "token": "tsmom",
        "name": "TSMOM managed futures 8-asset",
        "family": "equity_cta",
        "status": "default_book",
        "sharpe": 0.61,
        "cagr_pct": 3.2,
        "max_dd_pct": -13.8,
        "total_return_pct": 86.0,
        "rho_spy": null,
        "why": "Crisis years positive (2008 2011 2022); beta~0.02",
        "description": "Time-series momentum / managed futures across SPY, EFA, EEM, TLT, IEF, GLD, DBC, UUP. Blends 3/6/12-month trends, vol-scales each leg, and can go long or short. Low equity beta.",
        "window_start": "2008-01-01",
        "window_end": "2026-04-02"
      },
      "rule": "Managed-futures trend following on eight markets: US stocks, developed and emerging stocks, long and intermediate bonds, gold, commodities, and the dollar. Blend 3-, 6-, and 12-month trends, scale each leg by its volatility, and allow shorts. Rebalance monthly."
    },
    {
      "token": "johansen_etf",
      "name": "Johansen ETF triplets (6 sleeves)",
      "chat": "Algorithmic trading strategy testing",
      "bucket": "strong",
      "note": "ETF triplets only. Stock triplets failed OOS (Chan warning).",
      "ledger": {
        "id": "stk_johansen_etf",
        "token": "johansen_etf",
        "name": "Johansen ETF triplets (6 sleeves)",
        "family": "equity_statarb",
        "status": "default_book",
        "sharpe": 0.67,
        "cagr_pct": 2.67,
        "max_dd_pct": -16.0,
        "total_return_pct": 42.8,
        "rho_spy": null,
        "why": "Commodity-linked triplets; mean |rho|~0.02 vs book",
        "description": "Johansen ETF triplet stat-arb across 6 sleeves (metals, commodities, sectors, energy). \u2014 Commodity-linked triplets; mean |rho|~0.02 vs book",
        "window_start": "2016-01-04",
        "window_end": "2026-04-02"
      },
      "rule": "Statistical arbitrage on six groups of related ETFs (precious metals, commodities, sectors, energy, and a classic Australia\u2013Canada\u2013energy trio). Trade the spread when a cointegration test says the group has drifted apart, and bet it comes back together."
    },
    {
      "token": "equity_dip_cm",
      "name": "CrackingMarkets SP100 dip",
      "chat": "Buying short-term dips in stocks",
      "bucket": "strong",
      "note": "Limit entry, ATR exits, max 10. Standalone monster. Intraday cousin failed. Needs --yahoo-period max.",
      "ledger": {
        "id": "stk_cm_dip",
        "token": "equity_dip_cm",
        "name": "CrackingMarkets SP100 dip (limit+ATR exits)",
        "family": "equity_dip",
        "status": "default_book",
        "sharpe": 1.24,
        "cagr_pct": 33.3,
        "max_dd_pct": -32.9,
        "total_return_pct": 1907.0,
        "rho_spy": 0.45,
        "why": "Standalone monster; in fund-mode adds equity beta; needs yahoo-period max",
        "description": "CrackingMarkets SP100 dip (limit+ATR exits) (equity_dip) \u2014 Standalone monster; in fund-mode adds equity beta; needs yahoo-period max",
        "window_start": "2016-01-04",
        "window_end": "2026-06-18"
      },
      "rule": "After an S&P 100 stock drops at least 3% on a day, and only if it is still above a rising 200-day average with a wide daily range, place a limit buy the next day. Rank by how large the range is versus price. Exit on a time stop, a new high, or a modest profit. At most ten names, long only."
    },
    {
      "token": "qs_actionable_4",
      "name": "QS actionable-4 (S01 S03 S14 S17)",
      "chat": "Trading strategies evaluation",
      "bucket": "strong",
      "note": "Live QS pack is look-ahead clean. S42/S45/S44/Faber are not.",
      "ledger": {
        "id": "stk_qs4",
        "token": "qs_actionable_4",
        "name": "QS actionable-4 overnight SPY edges",
        "family": "equity_qs",
        "status": "default_book",
        "sharpe": 1.1337,
        "cagr_pct": 3.34,
        "max_dd_pct": -3.4,
        "total_return_pct": null,
        "rho_spy": null,
        "why": "Small ~4% weight in stock-only book",
        "description": "QS actionable-4 overnight SPY edges (equity_qs) \u2014 Small ~4% weight in stock-only book",
        "window_start": "2016-01-04",
        "window_end": "2026-06-18"
      },
      "rule": "Four simple SPY overnight or one-day seasonal bets, held in equal weight: buy the close before Turnaround Tuesday, the first day of the month, the night after three down days, and the night the market makes a 10-day low."
    },
    {
      "token": "ma_slope",
      "name": "MA-slope top-N + inverse SH",
      "chat": "Trading strategy based on SMA and EMA slopes",
      "bucket": "strong",
      "note": "Monthly cross-section. Inverse SH is a small satellite, not a standalone winner.",
      "ledger": {
        "id": "stk_ma_slope",
        "token": "ma_slope",
        "name": "MA slope top-N + inverse SH",
        "family": "equity_momentum",
        "status": "default_book",
        "sharpe": 1.2039,
        "cagr_pct": 18.78,
        "max_dd_pct": -9.9,
        "total_return_pct": null,
        "rho_spy": null,
        "why": "Daily sleeve Sharpe ~1.12-1.20; in 8-sleeve stock book",
        "description": "MA slope top-N long book plus optional inverse SH crash hedge. \u2014 Daily sleeve Sharpe ~1.12-1.20; in 8-sleeve stock book",
        "window_start": "2011-01-03",
        "window_end": "2026-06-18"
      },
      "rule": "Each day rank stocks by how steeply a moving average is rising, hold the strongest names, and optionally hold an inverse S&P fund (SH) as a crash hedge. This is the daily version, not the intraday one."
    },
    {
      "token": "ma_slope_intraday",
      "name": "MA-slope confirm4b top-5 cap20",
      "chat": "Trading strategy based on SMA and EMA slopes",
      "bucket": "strong",
      "note": "Tail-driven (median name \u2248 0%). Uncapped / unconstrained / VWAP / ADV floors failed. Cap20 is the book spec.",
      "ledger": {
        "id": "ma_slope_intraday_confirm4b_top5_cap20",
        "token": "ma_slope_intraday",
        "name": "MA slope intraday confirm_entry_4b + top-5 + max 20% weight",
        "family": "equity_intraday",
        "status": "default_book",
        "sharpe": 1.48,
        "cagr_pct": 49.9,
        "max_dd_pct": -32.4,
        "total_return_pct": 1263.8,
        "rho_spy": null,
        "why": "De-tailed Best Ideas / stock-only sleeve: confirm_4b persistence + top-5 + 20% cap. Session WR~53% name WR~49.5%; median name\u22480% so edge is positive-skew. Cap20 removes 100% single-name days; Sharpe 1.48 DD\u221232% vs uncapped top5 +8706%/DD\u221256%. Live trades ~2020+; pad zeros earlier for calendars. On by default with --stock-only (~6.1% wt).",
        "description": "Alpaca 5m MA-slope confirm_entry_4b, top-5, max 20% weight, hold MOC. \u2014 De-tailed Best Ideas / stock-only sleeve: confirm_4b persistence + top-5 + 20% cap. Session WR~53\u2026",
        "window_start": "2020-01-02",
        "window_end": "2026-06-26"
      },
      "rule": "On 5-minute bars, buy names whose moving-average slope stays positive after a short confirmation window. Keep only the top five, cap any name at 20% of the book, and sell at the close. No overnight hold."
    },
    {
      "token": "ride_rockets",
      "name": "Ride-rockets 50/50",
      "chat": "Momentum ETF strategy development",
      "bucket": "strong",
      "note": "near_52w_high top25 + ten_rockets top10, S&P PIT. Default fund wt ~6%. Do not stack near-high + 6m-kill.",
      "ledger": {
        "id": "stk_ride_rockets_5050",
        "token": "ride_rockets",
        "name": "Ride-rockets 50/50 (near_52w_high top25 + ten_rockets top10)",
        "family": "equity_momentum",
        "status": "default_book",
        "sharpe": 0.75,
        "cagr_pct": 14.0,
        "max_dd_pct": -21.0,
        "total_return_pct": 282.3,
        "rho_spy": null,
        "why": "Best risk/return blend from ride-rockets sweep; sleeve corr 0.69; DD better than either parent; now in Best Ideas @ ~6% fund wt",
        "description": "50/50 near-52w-high top25 + ten_rockets top10 (monthly S&P PIT). \u2014 Best risk/return blend from ride-rockets sweep; sleeve corr 0.69; DD better than either parent; n\u2026",
        "window_start": "2016-01-04",
        "window_end": "2026-04-02"
      },
      "rule": "Once a month, from the S&P names that existed at the time, put half the money in the 25 stocks closest to a 52-week high and half in the 10 stocks with the strongest recent relative strength."
    },
    {
      "token": "orb_zarattini",
      "name": "Zarattini 5m ORB (post same-bar-stop fix)",
      "chat": "Five-minute opening range breakout",
      "bucket": "strong",
      "note": "Stocks-in-Play paper SSRN 4729284, not the 2023 QQQ/TQQQ paper (that is orb_qqq_zarattini, weak). Optional Best Ideas (~6% fund). Data from ~2020. Same-bar stop version deprecated. RVOL-rank sizing helps; OR quality filters and 15% ATR stops hurt. 60m OR fails.\n",
      "ledger": {},
      "rule": "Opening-range breakout on \"stocks in play\" (Zarattini, Barbon, and Aziz). The first minutes of the session set a high and a low. Trade the break of that range, with a stop at the other side, across a large stock universe. Different from the single-ETF QQQ version."
    },
    {
      "token": "vol_edge_s3",
      "name": "Volatility-edge ETN S3",
      "chat": "Research ledger granular mine",
      "bucket": "strong",
      "note": "Default in 8-sleeve stock book. ETN calendar limits pre-2011.",
      "ledger": {
        "id": "stk_vol_edge",
        "token": "vol_edge_s3",
        "name": "Volatility Edge VIX ETN S3",
        "family": "equity_vol",
        "status": "default_book",
        "sharpe": 0.775,
        "cagr_pct": 8.02,
        "max_dd_pct": -12.48,
        "total_return_pct": null,
        "rho_spy": null,
        "why": "Default in 8-sleeve stock book; ETN calendar limits pre-2011",
        "description": "Volatility Edge VIX ETN S3 (equity_vol) \u2014 Default in 8-sleeve stock book; ETN calendar limits pre-2011",
        "window_start": "2011-06-20",
        "window_end": "2026-06-18"
      },
      "rule": "A published volatility-ETN rule (Volatility Edge, strategy S3): long or short VIX-linked notes when the term structure and recent volatility say the trade is on. The notes did not all exist before 2011, so the history starts late."
    },
    {
      "token": "williams_r_spy",
      "name": "Williams %R(2) SPY bounce (WR<-90 / close>yest high or WR>-30)",
      "chat": "Williams %R trading system",
      "bucket": "promising",
      "note": "Posted close-fill no-cost 2016\u20132026 +222% / Sh 1.14. Does not survive next-open + 5 bps (OOS Sh 0.81). Live spec is williams_r_live.\n",
      "ledger": {
        "id": "williams_r_spy_wr2",
        "token": "williams_r_spy",
        "name": "Williams %R(2) SPY bounce (WR<-90 / close>yest high or WR>-30)",
        "family": "equity_qs",
        "status": "promising",
        "sharpe": 1.142,
        "cagr_pct": 11.62,
        "max_dd_pct": -12.78,
        "total_return_pct": 222.46,
        "rho_spy": 0.5661,
        "why": "Posted WR(2) beats RSI analog (Sh 1.14 vs 0.88) and Connors/S29; 2022 +15.7% vs SPY -18%. 81% WR is n~7 not n=2. SMA200 is the drag. Satellite only \u2014 overlaps QS IBS/RSI, lags SPY CAGR, rho 0.57.",
        "description": "SPY: enter close when Williams %R(2)<-90; exit close>yesterday high or WR>-30. Cash when flat. No SMA filter, no max hold.",
        "window_start": "2016-01-04",
        "window_end": "2026-09-08"
      },
      "rule": "On SPY, buy at the close when a 2-day Williams %R is extremely oversold (below \u221290). Sell when the close beats yesterday's high, or when %R recovers above \u221230. Sit in cash in between. No trend filter and no maximum hold."
    },
    {
      "token": "williams_r_live",
      "name": "Williams %R live spec (WR2<-80, next-open, 5 bps)",
      "chat": "Williams %R trading system",
      "bucket": "promising",
      "note": "Walk-forward: train 2016\u201321, test 2022\u201326. Next-open + 5 bps, WR(2)<-80 (textbook oversold; posted \u221290 missed the cost bar). OOS Sh 1.07 / CAGR 11.2% / DD \u22128.1% / 2022 +12.6%. 2023\u201326 Sh 1.15. \u03c1 vs QS-4 = 0.19 (not a clone). ETF basket / SMA200 / ATR stop / close>open confirm all failed OOS. On in Today Trades / Desk at 5% (from tactical AW \u2192 VOO). Runner: run_williams_r_live.py / run_williams_r_standard.py.\n",
      "ledger": {
        "id": "williams_r_spy_live",
        "token": "williams_r_live",
        "name": "Williams %R live spec (WR2<-80, next-open, 5 bps)",
        "family": "equity_qs",
        "status": "optional",
        "sharpe": 1.065,
        "cagr_pct": 11.15,
        "max_dd_pct": -8.12,
        "total_return_pct": null,
        "rho_spy": null,
        "why": "Walk-forward live spec OOS Sh 1.07 / 2022 +12.6%. Now on in Today Trades / Desk at 5% taken from tactical AW (VOO). Not in the research --stock-only combine table. Do not stack on Connors/RSI2.",
        "description": "WR(2) < -80 buy next open; exit close > yest high or WR > -30. 5 bps RT. Today Trades satellite 5% from tactical AW.",
        "window_start": "2022-01-03",
        "window_end": "2026-09-10"
      },
      "rule": "The live version of the Williams %R bounce: buy SPY at the next open when 2-day %R is below \u221280 (a looser trigger than the research \u221290 rule), and sell when the close beats yesterday's high or %R rises above \u221230. A small round-trip cost is charged."
    },
    {
      "token": "ewa_ewc_kalman",
      "name": "EWA/EWC Kalman hedge mean-reversion",
      "chat": "Algorithmic trading strategy testing",
      "bucket": "promising",
      "note": "Best Chan pair (Sh 0.96). Linear z-score and Bollinger cousins failed. ETF Johansen book already covers the cointegration idea.",
      "ledger": {
        "id": "chan_ewa_ewc_kalman",
        "token": "ewa_ewc_kalman",
        "name": "EWA/EWC Kalman hedge MR",
        "family": "equity_chan",
        "status": "promising",
        "sharpe": 0.958,
        "cagr_pct": 3.74,
        "max_dd_pct": -9.71,
        "total_return_pct": 45.64,
        "rho_spy": null,
        "why": "Chan Algorithmic Trading suite (Ch.3; fidelity=book).",
        "description": "EWA/EWC Kalman hedge MR (equity_chan) \u2014 Chan Algorithmic Trading suite (Ch.3; fidelity=book).",
        "window_start": "2016-01-04",
        "window_end": "2026-04-02"
      },
      "rule": "Australia and Canada stock ETFs (EWA and EWC) usually move together. A Kalman filter estimates the hedge, and the strategy bets the residual snaps back when it stretches. From Ernie Chan's pairs chapter."
    },
    {
      "token": "kalman_confirm_z_resize",
      "name": "Per-name Kalman-z 5m resize on confirm_4b",
      "chat": "CERN Kalman noise filter",
      "bucket": "promising",
      "note": "250 names, 1 bp, intra-hold resize: Sh 1.96 / CAGR 46% / DD \u221216% vs ungated 1.18 / 32% / \u221223% (OOS +0.48 Sh). Freeze-at-entry only delevers. Not live until 500-name + IBKR paper. Not a new sleeve.\n",
      "ledger": {
        "id": "kalman_confirm_z_resize_250_1bp",
        "token": "kalman_confirm_z_resize",
        "name": "Per-name Kalman-z 5m resize on confirm_4b",
        "family": "equity_intraday",
        "status": "promising",
        "sharpe": 1.9624,
        "cagr_pct": 46.37,
        "max_dd_pct": -16.39,
        "total_return_pct": 1071.08,
        "rho_spy": null,
        "why": "Intra-hold 5m z-resize (boost_cheap) 1bp: Sh 1.96 / CAGR 46% / DD -16% vs ungated 1.18 / 32% / -23% on 250 names. Freeze-at-entry is only delever. Not live until 500-name + IBKR paper.",
        "description": "confirm_4b top-5 cap20; per-name 5m TV-R Kalman residual z shrinks size when extended, boosts when cheap; re-size every bar; 1 bp slippage.",
        "window_start": "2020-01-02",
        "window_end": "2026-06-18"
      },
      "rule": "Same intraday moving-average-slope book as the live sleeve (top five names, 20% cap, out by the close). A Kalman filter on each name's 5-minute residual shrinks the position when price looks extended and adds when it looks cheap. Size changes; the entry list does not."
    },
    {
      "token": "spy_overnight_eq_r1235",
      "name": "SPY overnight EQ (Turnaround Tue + fear\u22293down + 3-down + 10d-low)",
      "chat": "Overnight SPY strategy",
      "bucket": "weak",
      "note": "In-sample Sh 1.05 / DD \u22126.9% overlaps qs_actionable_4. Live loop chose keep QS4 (already in Today Trades). VIX-calm thesis closed; use run_spy_overnight_recommend for MOC/MOO tickets on the live pack.\n",
      "ledger": {
        "id": "stk_spy_on_eq_r1235",
        "token": "spy_overnight_eq_r1235",
        "name": "SPY overnight EQ ranks1-2-3-5 (I18+I10+I08+I09)",
        "family": "equity_qs",
        "status": "promising",
        "sharpe": 1.049,
        "cagr_pct": 5.91,
        "max_dd_pct": -6.89,
        "total_return_pct": 82.16,
        "rho_spy": null,
        "why": "Selective overnight MR+Tue ensemble: Sharpe 1.05 > always-in 0.89 with DD -6.9% vs -34%; lower return than always-in; diversifies mainly via I18 vs pullback cluster",
        "description": "SPY overnight EQ ranks1-2-3-5 (I18+I10+I08+I09) (equity_qs) \u2014 Selective overnight MR+Tue ensemble: Sharpe 1.05 > always-in 0.89 with DD -6.9% vs -34%; lower re\u2026",
        "window_start": "2016-01-04",
        "window_end": "2026-06-18"
      },
      "rule": "Hold SPY from the close to the next open, but only on a handful of seasonal nights that ranked best in a 25-idea screen (including Tuesday and a few mean-reversion nights). Equal weight. Compared with holding every night."
    },
    {
      "token": "atr_breakout_early_vix",
      "name": "Early-window ATR breakout (VIX<22, mega5)",
      "chat": "Buying short-term dips in stocks",
      "bucket": "promising",
      "note": "Default late ATR on SP100 fails (Sh \u22121.84). Filters required. Not in book.",
      "ledger": {
        "id": "stk_atr_early_vix",
        "token": "atr_breakout_early_vix",
        "name": "Early-window ATR breakout VIX<22 mega5",
        "family": "equity_intraday",
        "status": "promising",
        "sharpe": 1.46,
        "cagr_pct": -1.09,
        "max_dd_pct": -20.45,
        "total_return_pct": 19.7,
        "rho_spy": null,
        "why": "Default late entries weak; filters required",
        "description": "Early-window ATR breakout VIX<22 mega5 (equity_intraday) \u2014 Default late entries weak; filters required",
        "window_start": "2022-01-01",
        "window_end": "2025-12-31"
      },
      "rule": "Intraday breakout on five mega-cap stocks: enter early in the session when price clears an average-true-range threshold, and only if the VIX is under 22. Flat by the close."
    },
    {
      "token": "pdl_touch_short",
      "name": "Prior-day-low failed-support short (mega5)",
      "chat": "Buying short-term dips in stocks",
      "bucket": "promising",
      "note": "Sh 1.8 on mega-caps. The LONG mirror is a hard fail. Diversifies SP100 day trades.",
      "ledger": {
        "id": "stk_pdl_short",
        "token": "pdl_touch_short",
        "name": "Prior-day-low failed-support short mega5",
        "family": "equity_intraday",
        "status": "promising",
        "sharpe": 1.8,
        "cagr_pct": null,
        "max_dd_pct": null,
        "total_return_pct": null,
        "rho_spy": null,
        "why": "Needs mega-cap universe; diversifies SP100 day trades",
        "description": "Prior-day-low failed-support short mega5 (equity_intraday) \u2014 Needs mega-cap universe; diversifies SP100 day trades",
        "window_start": "2022-01-01",
        "window_end": "2025-12-31"
      },
      "rule": "On five mega-caps, short when price touches the prior day's low and then fails to hold it (support breaks). Cover the same day."
    },
    {
      "token": "top9_d_mtm",
      "name": "Diverse theta Top-9 D SIDs (MTM margin)",
      "chat": "Unique option trading strategies outline",
      "bucket": "promising",
      "note": "Trust MTM (+81% / Sh 0.48 / DD \u221215%). Exit-day Sharpe ~4 is misleading. Passers D018/D039/D095 skew RR.",
      "ledger": {
        "id": "opt_top9_d_mtm",
        "token": "top9_d_mtm",
        "name": "Diverse theta Top-9 D SIDs MTM margin",
        "family": "options_theta",
        "status": "promising",
        "sharpe": 0.476,
        "cagr_pct": 5.96,
        "max_dd_pct": -15.0,
        "total_return_pct": 80.98,
        "rho_spy": null,
        "why": "Trust MTM (+81% Sh0.48 DD-15%); exit-day summary understates risk. Passers D039/D018/D095 skew RR; D046/D022 weak OOS.",
        "description": "Diverse theta Top-9 D SIDs MTM margin (options_theta) \u2014 Trust MTM (+81% Sh0.48 DD-15%); exit-day summary understates risk. Passers D039/D018/D095 skew RR\u2026",
        "window_start": "2016-01-04",
        "window_end": "2026-04-02"
      },
      "rule": "Nine diverse SPY option-income structures from the research catalog, run together with daily option marks and a margin estimate. The point of the test was whether the combined book still looks good once open positions are marked, not only when they expire."
    },
    {
      "token": "skew_regime_inv_putspread",
      "name": "Skew-regime short RR; inverted \u2192 put debit",
      "chat": "Unique option trading strategies outline",
      "bucket": "promising",
      "note": "Best skew variant Sh 2.08. Steep-only Sh 2.72 (sparser). Baseline mixed-regime weaker. Related to lit4 RR, not a second book.",
      "ledger": {
        "id": "skew_var_inv_putspread",
        "token": "skew_regime_inv_putspread",
        "name": "Skew regime variant: inv_putspread",
        "family": "options_skew_regime",
        "status": "promising",
        "sharpe": 2.081,
        "cagr_pct": 3.33,
        "max_dd_pct": -1.84,
        "total_return_pct": 39.9,
        "rho_spy": null,
        "why": "Baseline steep+flat; inverted \u2192 long put debit spread n_trades=306.",
        "description": "Skew regime variant: inv_putspread (options_skew_regime) \u2014 Baseline steep+flat; inverted \u2192 long put debit spread n_trades=306.",
        "window_start": "2016-01-04",
        "window_end": "2026-04-02"
      },
      "rule": "Normally sell steep put-call skew. When the skew flips (puts no longer richer than calls), switch that sleeve to a long put debit spread instead of staying short volatility."
    },
    {
      "token": "qs_actionable_7",
      "name": "QS actionable-7 (full overnight pack)",
      "chat": "Trading strategies evaluation",
      "bucket": "promising",
      "note": "Sh 1.22. Stock book uses slimmed 4 because RSI/IBS overlap CM dip.",
      "ledger": {
        "id": "qs_actionable_7",
        "token": "qs_actionable_7",
        "name": "QS actionable-7 equal-weight ETF edges",
        "family": "equity_qs",
        "status": "optional",
        "sharpe": 1.22,
        "cagr_pct": 3.77,
        "max_dd_pct": -4.5,
        "total_return_pct": 46.1,
        "rho_spy": null,
        "why": "Full 7-edge bundle; stock book uses slimmed qs_actionable_4 (dropped RSI/IBS overlap with CM dip).",
        "description": "QS actionable-7 equal-weight ETF edges (equity_qs) \u2014 Full 7-edge bundle; stock book uses slimmed qs_actionable_4 (dropped RSI/IBS overlap with CM dip).",
        "window_start": "2016-01-04",
        "window_end": "2026-04-02"
      },
      "rule": "Seven published calendar and overnight SPY edges in equal weight, including the four used in the live book plus RSI and internal-bar-strength variants that overlap the dip sleeve."
    },
    {
      "token": "ride_near_high",
      "name": "Ride-rockets near-52w-high only (top25)",
      "chat": "Momentum ETF strategy development",
      "bucket": "promising",
      "note": "Best Sharpe/DD among 10 variants (+226% / 0.74 / \u221222.5%). Blend with ten_rockets is the book.",
      "ledger": {
        "id": "stk_ride_near_52w_high_top25",
        "token": "ride_near_high",
        "name": "Ride-rockets near_52w_high top25 (near only)",
        "family": "equity_momentum",
        "status": "promising",
        "sharpe": 0.74,
        "cagr_pct": 12.3,
        "max_dd_pct": -22.5,
        "total_return_pct": 226.2,
        "rho_spy": null,
        "why": "Best Sharpe/DD among 10 creative variants; extension riders only (within 5% of 52w high)",
        "description": "Ride-rockets near_52w_high top25 (near only) (equity_momentum) \u2014 Best Sharpe/DD among 10 creative variants; extension riders only (within 5% of 52w high)",
        "window_start": "2016-01-04",
        "window_end": "2026-04-02"
      },
      "rule": "Once a month, buy the 25 S&P stocks trading closest to a 52-week high (within about 5%). No separate \"rockets\" sleeve. Point-in-time membership."
    },
    {
      "token": "ride_ten_rockets",
      "name": "Ride-rockets ten_rockets top10",
      "chat": "Momentum ETF strategy development",
      "bucket": "promising",
      "note": "Best absolute return (+309% / 0.66 / \u221229%). Blend is the book; this sleeve alone is concentrated.",
      "ledger": {
        "id": "stk_ride_ten_rockets_top10",
        "token": "ride_ten_rockets",
        "name": "Ride-rockets ten_rockets top10",
        "family": "equity_momentum",
        "status": "promising",
        "sharpe": 0.66,
        "cagr_pct": 14.8,
        "max_dd_pct": -29.1,
        "total_return_pct": 309.1,
        "rho_spy": null,
        "why": "Best absolute return among 10 variants; ultra-concentrated monthly relative winners",
        "description": "Ride-rockets ten_rockets top10 (equity_momentum) \u2014 Best absolute return among 10 variants; ultra-concentrated monthly relative winners",
        "window_start": "2016-01-04",
        "window_end": "2026-04-02"
      },
      "rule": "Once a month, buy only the 10 S&P stocks with the strongest recent relative performance. Concentrated on purpose."
    },
    {
      "token": "zarattini_orb_rvol_size",
      "name": "ORB + RVOL-rank sizing (quality smoke)",
      "chat": "Five-minute opening range breakout",
      "bucket": "promising",
      "note": "Sh 2.38 vs paper baseline 2.22 on 400-sym smoke. Prefer this over OR body/range filters.",
      "ledger": {
        "id": "orb_q_smoke_rvol_size",
        "token": "zarattini_orb_rvol_size",
        "name": "ORB quality: baseline + RVOL-rank sizing (400-sym smoke)",
        "family": "equity_intraday",
        "status": "promising",
        "sharpe": 2.38,
        "cagr_pct": 99.49,
        "max_dd_pct": -17.64,
        "total_return_pct": 1358.8,
        "rho_spy": null,
        "why": "Best Sharpe on 400-sym smoke vs paper baseline (2.38 vs 2.22); ret +1359% vs +738%; DD -17.6%. Scales risk by rel_vol within day (0.5-2x). Full-universe confirm pending.",
        "description": "ORB quality: baseline + RVOL-rank sizing (400-sym smoke) (equity_intraday) \u2014 Best Sharpe on 400-sym smoke vs paper baseline (2.38 vs 2.22); ret +1359% vs +738%; DD -17.6%. Sc\u2026",
        "window_start": "2020-01-02",
        "window_end": "2023-12-29"
      },
      "rule": "Same stocks-in-play opening-range breakout, but size each trade by how unusually high its opening volume is versus its own history. Tested on a 400-symbol sample, not the full universe."
    },
    {
      "token": "orb_qqq_or_break",
      "name": "QQQ ORB wait for OR high/low break",
      "chat": "Zarattini QQQ ORB catalog",
      "bucket": "promising",
      "note": "Best encoding fix for the 2023 QQQ paper. Do not buy 09:35 blindly \u2014 wait until price trades through the first-candle high/low. 2020-2026 0-slip +518% / Sh 1.12 / post-paper Sh 1.49 vs paper-rule 0.81 / 0.83. With 2.2\u00a2 still +292% / Sh 0.87 / post 1.27 vs baseline 0.50. Frozen live child is orb_qqq_live_spec (11:00 cutoff, MOC, 5% NAV recommend-only).\n",
      "ledger": {
        "id": "orb_qqq_or_break_2020_2026",
        "token": "orb_qqq_or_break",
        "name": "QQQ ORB wait for opening-range break",
        "family": "equity_intraday",
        "status": "promising",
        "sharpe": 1.12,
        "cagr_pct": 32.62,
        "max_dd_pct": -28.78,
        "total_return_pct": 518.3,
        "rho_spy": null,
        "why": "Best encoding fix: wait for OR high/low instead of 09:35 market. Sh 1.12 vs paper 0.81; post-paper 1.49; 2.2c still 0.87. Not book (lags SIP ORB).",
        "description": "Same 5m QQQ ORB stop/10R/MOC/1% risk, but enter only after a trade through the first-candle high (long) or low (short).",
        "window_start": "2020-01-02",
        "window_end": "2026-06-24"
      },
      "rule": "QQQ only. The first 5-minute candle sets direction, but the order waits until price actually trades through that candle's high (long) or low (short). Stop at the other side of the range, target 10 times the risk or the closing bell."
    },
    {
      "token": "orb_qqq_gap_agree",
      "name": "QQQ ORB only if overnight gap agrees",
      "chat": "Zarattini QQQ ORB catalog",
      "bucket": "promising",
      "note": "Trade-level $76 vs $7 when gap and first candle disagree. Standalone +174% / Sh 0.87 / DD \u221217% (0-slip); 2.2\u00a2 Sh 0.66 vs baseline 0.50. Risk-adjusted satellite, not the max-return encoding (that's or_break).\n",
      "ledger": {
        "id": "orb_qqq_gap_agree_2020_2026",
        "token": "orb_qqq_gap_agree",
        "name": "QQQ ORB overnight gap must agree",
        "family": "equity_intraday",
        "status": "promising",
        "sharpe": 0.87,
        "cagr_pct": 16.9,
        "max_dd_pct": -17.29,
        "total_return_pct": 173.9,
        "rho_spy": null,
        "why": "Gap-agree $76/trade vs $7 disagree. Sh 0.87 / DD -17% vs paper 0.81 / -27%. 2.2c Sh 0.66. DD satellite, not max-return encoding.",
        "description": "Take the paper QQQ 5m ORB only when overnight gap (open vs prior close) matches first-candle direction.",
        "window_start": "2020-01-02",
        "window_end": "2026-06-24"
      },
      "rule": "Same QQQ 5-minute opening-range trade, taken only when the overnight gap (today's open versus yesterday's close) points the same way as the first candle."
    },
    {
      "token": "orb_qqq_live_spec",
      "name": "QQQ ORB live spec (break + MOC + 11:00)",
      "chat": "Zarattini QQQ ORB catalog",
      "bucket": "promising",
      "note": "Frozen for recommend-only paper: wait for OR break, flatten MOC, last entry 11:00, 1% risk, 4x, QQQ only, 5% NAV. 2.2\u00a2 2020-2026 +245% / Sh 0.81 / DD \u221233% / post-paper Sh 1.30. \u03c1 vs SIP ORB \u2248 0.04. 10R dropped (identical to MOC). Gap-agree is the tighter-DD variant, not default. 5\u00a2 fills Sh 0.50 \u2014 abort if live slippage looks like that. Not default_book; not unattended full-NAV. Runner: RenTech.live.run_orb_qqq_ibkr --recommend-only.\n",
      "ledger": {
        "id": "orb_qqq_live_spec_2020_2026",
        "token": "orb_qqq_live_spec",
        "name": "QQQ ORB live spec (break+MOC+11:00, 2.2c)",
        "family": "equity_intraday",
        "status": "optional",
        "sharpe": 0.81,
        "cagr_pct": 21.15,
        "max_dd_pct": -32.89,
        "total_return_pct": 244.9,
        "rho_spy": null,
        "why": "Frozen satellite not full-NAV: Sh 0.81 / DD -33% at 2.2c; post-paper Sh 1.30; rho vs SIP ORB 0.04. Recommend-only paper first.",
        "description": "Wait for 5m OR high/low break on QQQ; stop at other extreme; flatten MOC; last entry 11:00 ET; 1% risk; 4x; 5% of IB NAV. Not TQQQ. Not 10R.",
        "window_start": "2020-01-02",
        "window_end": "2026-06-24"
      },
      "rule": "The version considered for live trading: wait for QQQ to break the first 5-minute high or low, stop at the other extreme, flatten at the close, and do not enter after 11:00. Risk 1% with a leverage cap. Not the triple-levered ETF, and no 10-times-risk target."
    },
    {
      "token": "industry_trend_fr48",
      "name": "Zarattini Timing Industry (French 48, 1926\u20132024)",
      "chat": "French MOM",
      "bucket": "promising",
      "note": "Matches paper ~18% CAGR / Sh 1.16 / DD \u221233% on century sample (paper_era). SPDR ETF encoding is weak. Do not reopen generic French long-only grids.",
      "ledger": {
        "id": "res_industry_fr48",
        "token": "industry_trend_fr48",
        "name": "Zarattini Timing Industry French 48",
        "family": "equity_trend",
        "status": "optional",
        "sharpe": 1.16,
        "cagr_pct": 18.4,
        "max_dd_pct": -33.0,
        "total_return_pct": null,
        "rho_spy": null,
        "why": "Matches paper ~18.2%/12.6%/DD33%; century sample",
        "description": "Zarattini Timing Industry French 48 (equity_trend) \u2014 Matches paper ~18.2%/12.6%/DD33%; century sample",
        "window_start": "1926-07-01",
        "window_end": "2024-03-28"
      },
      "rule": "Ken French's 48 industry portfolios, timed with a trend filter from the Zarattini industry-timing paper: hold industries that are trending up and step aside from the rest. A century-long sample, not a tradable ETF book."
    },
    {
      "token": "ma_slope_intraday_rank_gap",
      "name": "confirm_4b + 5% rank-gap",
      "chat": "Trading strategy based on SMA and EMA slopes",
      "bucket": "promising",
      "note": "Modest +98pp vs confirm_4b; Sharpe similar. Add-on, not a replacement.",
      "ledger": {
        "id": "ma_slope_intraday_rank_gap5pct",
        "token": "ma_slope_intraday_rank_gap",
        "name": "MA slope confirm_4b + min_rank_score_pct_gap 5%",
        "family": "equity_intraday",
        "status": "promising",
        "sharpe": 1.3,
        "cagr_pct": 49.8,
        "max_dd_pct": -33.5,
        "total_return_pct": 1256.5,
        "rho_spy": null,
        "why": "Modest upgrade on top of confirm_4b: +1257% vs +1159% (+98pp), Sharpe 1.30 similar, DD slightly worse \u221233.5%. Optional add-on; not in default sleeve.",
        "description": "MA slope confirm_4b + min_rank_score_pct_gap 5% (equity_intraday) \u2014 Modest upgrade on top of confirm_4b: +1257% vs +1159% (+98pp), Sharpe 1.30 similar, DD slightly w\u2026",
        "window_start": "2020-01-02",
        "window_end": "2026-06-26"
      },
      "rule": "Same intraday moving-average-slope book, but skip a name unless its rank score beats the next name by at least 5%. A test of whether a clearer leader is better than a tight cluster."
    },
    {
      "token": "vxx_bear_call_param_sweep",
      "name": "VXX contango-gated bear-call (sweep winner)",
      "chat": "VXX options trading strategies",
      "bucket": "promising",
      "note": "Best Sh 1.18 among 192 configs; median 0.18. Already inside vxx_regime_stack \u2014 do not add a second sleeve.",
      "ledger": {
        "id": "vxx_bear_call_sweep_parent",
        "token": "vxx_bear_call_param_sweep",
        "name": "VXX bear call parameter sweep (192 configs)",
        "family": "options_vxx",
        "status": "optional",
        "sharpe": null,
        "cagr_pct": null,
        "max_dd_pct": null,
        "total_return_pct": null,
        "rho_spy": null,
        "why": "Best Sharpe=1.18; median=0.18. Contango-gated bear calls form VXX regime stack.",
        "description": "VXX bear call parameter sweep (192 configs) (options_vxx) \u2014 Best Sharpe=1.18; median=0.18. Contango-gated bear calls form VXX regime stack.",
        "window_start": "",
        "window_end": ""
      },
      "rule": "Short call spreads on VXX (bearish, collecting premium) across 192 combinations of width, delta, and days to expiration, and only when the VIX futures curve is in contango."
    },
    {
      "token": "copper_gold",
      "name": "CPER/GLD growth-cycle gate",
      "chat": "Replicate Horizon improvement loop",
      "bucket": "weak",
      "note": "Best DiscoverySpec first-test (OOS Sh + 2022). Lags SPY total return. Not a diversifier (\u03c1 0.66).",
      "ledger": {
        "id": "copper_gold_growth_gate_2016_2024",
        "token": "copper_gold",
        "name": "CPER/GLD 60d growth-cycle gate SPY/SHY",
        "family": "equity_macro",
        "status": "weak",
        "sharpe": 0.967,
        "cagr_pct": 11.48,
        "max_dd_pct": -18.06,
        "total_return_pct": 165.3,
        "rho_spy": 0.6555,
        "why": "New info (\u03c1 VIX 0.07, SMA 0.19, credit-off 0.26). OOS Sh 0.70 vs SPY 0.58; 2022 -10% vs -18%; DD -18% vs -34%. Lags SPY CAGR. Weak \u2014 best discovery first-test so far, not a book sleeve.",
        "description": "Prior-session 60d CPER/GLD change < -5% \u2192 SHY else SPY. DiscoverySpec D4. SHY ~30% of days.",
        "window_start": "2016-01-04",
        "window_end": "2024-12-31"
      },
      "rule": "If copper has fallen hard versus gold over the prior 60 sessions (a growth scare), hold short-term Treasuries instead of the S&P. Otherwise hold SPY. The switch uses yesterday's ratio, not today's."
    },
    {
      "token": "credit_gate",
      "name": "HYG/IEF credit gate",
      "chat": "Replicate Horizon improvement loop",
      "bucket": "weak",
      "note": "Not a VIX/SMA alias. OOS loses to buy-and-hold. Gate on ~6% of days.",
      "ledger": {
        "id": "hyg_ief_credit_gate_2016_2024",
        "token": "credit_gate",
        "name": "HYG/IEF 20d credit-shock gate SPY/SHY",
        "family": "equity_macro",
        "status": "weak",
        "sharpe": 0.932,
        "cagr_pct": 13.22,
        "max_dd_pct": -24.89,
        "total_return_pct": 205.07,
        "rho_spy": 0.8,
        "why": "Not a VIX/SMA alias (\u03c1 0.26 / 0.25). Full Sh 0.93 vs SPY 0.85 / tighter DD, but OOS loses to BH (Sh 0.41 vs 0.58). Rare de-risk; do not promote.",
        "description": "Prior-session 20d HYG/IEF change < -3% \u2192 SHY else SPY. First DiscoverySpec D3 test. Gate on ~6% of days.",
        "window_start": "2016-01-04",
        "window_end": "2024-12-31"
      },
      "rule": "If high-yield bonds have dropped hard versus intermediate Treasuries over 20 sessions (HYG versus IEF, worse than \u22123%), hold short-term Treasuries instead of SPY. Otherwise hold SPY."
    },
    {
      "token": "ema_vcp",
      "name": "First-valid 8/20 EMA VCP",
      "chat": "Replicate Horizon improvement loop",
      "bucket": "weak",
      "note": "Mechanical S&P 2016\u201324 Sharpe 0.62. Not the author's +50% CAGR claim.",
      "ledger": {
        "id": "ema_vcp_first_valid_sp500_2016_2024",
        "token": "ema_vcp",
        "name": "First-valid 8/20 EMA VCP breakout (mechanical, PIT S&P)",
        "family": "equity_breakout",
        "status": "weak",
        "sharpe": 0.624,
        "cagr_pct": 6.4,
        "max_dd_pct": -0.1814,
        "total_return_pct": null,
        "rho_spy": null,
        "why": "Mechanical encoding of the 4-step EMA/VCP BO: +75% / CAGR 6.4% / Sharpe 0.62 / DD -18% on PIT S&P 2016-24. Nothing like the claimed +50% CAGR since 1995. Win 42%. 2022 -12%.",
        "description": "First VCP coil at 8/20 after 50-EMA reset; ADX>=20 as CML proxy; first-valid per cycle; 1% risk; exit stop or close<20 EMA. No hand labels, no weekly 8/10, no breadth timing, no costs.",
        "window_start": "2016-01-04",
        "window_end": "2024-12-31"
      },
      "rule": "On point-in-time S&P names, wait for a volatility contraction between the 8- and 20-day moving averages after a longer average resets, then buy the first breakout of that coil. Risk 1%. Exit on the stop or a close back under the 20-day average."
    },
    {
      "token": "sector_momentum",
      "name": "SPDR 12-1 sector rotation",
      "chat": "Long short portfolio development",
      "bucket": "weak",
      "note": "Optional in some books. High SPY beta \u2014 overlay not diversifier. Strong 2022\u201324.",
      "ledger": {
        "id": "stk_sector_mom",
        "token": "sector_momentum",
        "name": "SPDR sector 12-1 top-3 monthly",
        "family": "equity_momentum",
        "status": "default_book",
        "sharpe": 0.77,
        "cagr_pct": 12.62,
        "max_dd_pct": -31.5,
        "total_return_pct": 264.0,
        "rho_spy": null,
        "why": "Strong 2022-24; optional in stock-only (high SPY beta)",
        "description": "SPDR sector rotation: 12-1 momentum, top-3 monthly. \u2014 Strong 2022-24; optional in stock-only (high SPY beta)",
        "window_start": "2016-01-04",
        "window_end": "2026-04-02"
      },
      "rule": "Once a month, rank the SPDR sector ETFs by 12-month return skipping the most recent month, and hold the top three in equal weight."
    },
    {
      "token": "vxx_long_call",
      "name": "VXX long 10% OTM call",
      "chat": "VXX options trading strategies",
      "bucket": "weak",
      "note": "In default book as a ~5% tail sleeve; standalone Sharpe is low / tail-driven.",
      "ledger": {
        "id": "opt_vxx_long_call",
        "token": "vxx_long_call",
        "name": "VXX long 10% OTM call (sized ~5% book)",
        "family": "options_vxx",
        "status": "default_book",
        "sharpe": 0.3348,
        "cagr_pct": 3.22,
        "max_dd_pct": -10.96,
        "total_return_pct": null,
        "rho_spy": null,
        "why": "Tail hedge sleeve in Best Ideas; not full 1% audit sizing",
        "description": "Sized long ~10% OTM VXX call tail hedge (~5% stacked-book PnL). \u2014 Tail hedge sleeve in Best Ideas; not full 1% audit sizing",
        "window_start": "2016-01-04",
        "window_end": "2026-04-02"
      },
      "rule": "Buy VXX calls about 10% out of the money as a crash hedge, sized as a small slice of the options book. The trade loses most of the time and is meant to pay on a volatility spike."
    },
    {
      "token": "markov_aw",
      "name": "Markov chain All-Weather overlay",
      "chat": "Markov chain trading model framework",
      "bucket": "weak",
      "note": "~0.1pp Sharpe/DD vs static AW \u2014 a wash. VIX-regime overlay does not earn a sleeve.",
      "ledger": {
        "id": "res_markov_aw",
        "token": "markov_aw",
        "name": "Markov chain All-Weather overlay",
        "family": "equity_macro",
        "status": "weak",
        "sharpe": null,
        "cagr_pct": null,
        "max_dd_pct": null,
        "total_return_pct": null,
        "rho_spy": null,
        "why": "~0.1pp Sharpe/DD vs static AW \u2014 wash",
        "description": "Markov chain All-Weather overlay (equity_macro) \u2014 ~0.1pp Sharpe/DD vs static AW \u2014 wash",
        "window_start": "",
        "window_end": ""
      },
      "rule": "A Markov chain guesses the next \"state\" of the all-weather mix (stocks, bonds, gold, commodities) and tilts the ETF weights toward that guess. Compared with the same mix held statically."
    },
    {
      "token": "markov_vix_futures",
      "name": "Markov VIX-futures L/S",
      "chat": "Markov chain trading model framework",
      "bucket": "weak",
      "note": "Validated rows Sharpe ~0.35\u20130.39. Not a book candidate.",
      "ledger": {},
      "rule": "Use a Markov chain on the VIX futures curve to decide whether to be long or short volatility futures. A regime bet, not an options structure."
    },
    {
      "token": "pairs_statarb",
      "name": "Pairs stat-arb DHR/TMO",
      "chat": "Algorithmic trading strategy testing",
      "bucket": "weak",
      "note": "Sharpe ~0.36, DD \u221226%. Ledger-blocked family (equity_statarb) without new evidence.",
      "ledger": {
        "id": "stk_pairs_dhr_tmo",
        "token": "pairs_statarb",
        "name": "Pairs stat-arb DHR/TMO",
        "family": "equity_statarb",
        "status": "weak",
        "sharpe": 0.36,
        "cagr_pct": 4.02,
        "max_dd_pct": -26.0,
        "total_return_pct": 49.7,
        "rho_spy": null,
        "why": "Weak vs CrackingMarkets dip",
        "description": "Pairs stat-arb DHR/TMO (equity_statarb) \u2014 Weak vs CrackingMarkets dip",
        "window_start": "2016-01-04",
        "window_end": "2026-04-02"
      },
      "rule": "One pair: Danaher and Thermo Fisher, two healthcare names that usually move together. Short the one that has run ahead and buy the laggard, betting the gap closes."
    },
    {
      "token": "shannon_demon",
      "name": "Shannon Demon rebalancing harvest",
      "chat": "Shannon's Demon backtesting script",
      "bucket": "weak",
      "note": "Harvest is a few percent of wealth, not a Stanford curve. RP overlay helps a bit; vol-target halves CAGR; dual-mom does not generalize. Distinct from entropy-coil fail.",
      "ledger": {
        "id": "shannon_demon_slv_uso",
        "token": "shannon_demon",
        "name": "Shannon Demon 50/50 CRP SLV/USO 10y 5pct band",
        "family": "vol_harvest",
        "status": "weak",
        "sharpe": 0.5544,
        "cagr_pct": 11.92,
        "max_dd_pct": -60.58,
        "total_return_pct": 208.09,
        "rho_spy": null,
        "why": "Best OOS Demon pair after 91-pair scan. 10bp+5% band CRP CAGR 11.9% / Sharpe 0.55 vs BH 9.3% / 0.45; +27% terminal harvest; 45 trades/10y. DD -61% kills it as a book sleeve. \u03b3* only ~2.9%/yr. Absolute return is still silver+oil beta.",
        "description": "50/50 SLV vs USO, rebalance when a weight exits 45/55, 10bp on traded notional. Yahoo adj close, $100k.",
        "window_start": "2016-09-06",
        "window_end": "2026-09-04"
      },
      "rule": "Two sleeves rebalanced when weights drift: a diversified basket of five ETFs, and a monthly top-five of mega-caps that are near a 52-week high with strong 12-month momentum. The idea is that rebalancing a volatile mix harvests a \"volatility bonus.\""
    },
    {
      "token": "monthly_harvest",
      "name": "Monthly high-vol / low-corr CRP basket",
      "chat": "Harvest 5 + PIT ride_rockets presentation",
      "bucket": "weak",
      "note": "Causal \u03b3* filter on 29 ETFs, monthly or quarterly reconstitution, daily equal CRP. Monthly k=5 does not harvest (CRP \u22123% vs same-basket BH; Sh 0.57 / DD \u221241%). Daily rebalance is worse after 10 bp. Quarterly 5% band is the only Demon-positive cell (+8% vs BH) but still lags static Harvest 5 (Sh 0.93 / DD \u221213%). Swapping it into the rockets 50/50 book raises CAGR and wrecks Sharpe/DD/correlation. Keep Harvest 5.\n",
      "ledger": {
        "id": "shannon_demon_monthly_basket",
        "token": "monthly_harvest",
        "name": "Monthly high-vol/low-corr CRP basket",
        "family": "vol_harvest",
        "status": "weak",
        "sharpe": 0.5692,
        "cagr_pct": 10.79,
        "max_dd_pct": -40.8,
        "total_return_pct": null,
        "rho_spy": null,
        "why": "Monthly \u03b3* filter + CRP does not harvest: 2016-09 window CAGR 10.8% / Sh 0.57 / DD -41% vs same-basket BH 11.1%/0.58 (CRP -3% terminal). Daily rebalance worse after 10bp. Quarterly 5% band +8% vs BH but still lags Harvest 5 (Sh 0.93 / DD -13%). Replacing Harvest 5 in rockets 50/50 lifts CAGR 10.6\u219213.1 and wrecks Sh 0.96\u21920.78, DD -13\u2192-30, \u03c1 0.12\u21920.39. Keep static Harvest 5.",
        "description": "Each month pick k=5 from 29 liquid ETFs maximizing Fernholz \u03b3* (min 20% vol, |corr| not near \u00b11, 12m drift-gap \u226460pp). Equal-weight CRP, 5% band, 10 bp. No inverse/3x.",
        "window_start": "2016-01-04",
        "window_end": "2026-09-15"
      },
      "rule": "Each month pick five liquid ETFs that are volatile, not highly correlated with each other, and not wildly different in recent drift. Hold them equal weight and rebalance when a weight drifts by 5%. No inverse or triple-levered funds."
    },
    {
      "token": "cover_up",
      "name": "Cover Universal Portfolio / EG / Fernholz",
      "chat": "Harvest 5 + PIT ride_rockets presentation",
      "bucket": "weak",
      "note": "Cover 1991 UP, Helmbold EG, and Fernholz p=0.5 on QQQ+macro simplices raise Sharpe (\u22481.23) and cut DD vs SPY but lose 4\u20136pp CAGR. They do not outperform SPY. Equal CRP is the same story.\n",
      "ledger": {
        "id": "growth_cover_up_loop",
        "token": "cover_up",
        "name": "Cover Universal Portfolio / EG / Fernholz vs SPY",
        "family": "vol_harvest",
        "status": "weak",
        "sharpe": 1.228,
        "cagr_pct": 10.52,
        "max_dd_pct": -13.9,
        "total_return_pct": null,
        "rho_spy": null,
        "why": "Cover UP, Helmbold EG, Fernholz p=0.5 and equal CRP on QQQ+macro simplices raise Sharpe (~1.23) and cut DD vs SPY but lose 4-6pp CAGR. Growth theory's universal mixer does not outperform SPY; it diversifies it.",
        "description": "Cover 1991 discrete Universal Portfolio (and EG / Fernholz diversity) on QQQ/TLT/GLD/DBC/UUP. 10 bp on turnover.",
        "window_start": "2016-01-04",
        "window_end": "2026-09-15"
      },
      "rule": "Cover's universal portfolio, and two cousins (exponentiated gradient and Fernholz diversity weights), on QQQ, TLT, GLD, DBC, and the dollar ETF. Weights adapt from past returns only. Charged 10 basis points of turnover."
    },
    {
      "token": "kelly_qgt",
      "name": "Kelly log-optimal QQQ/GLD/TLT",
      "chat": "Harvest 5 + PIT ride_rockets presentation",
      "bucket": "promising",
      "note": "Monthly long-only Kelly (252d \u03bc,\u03a3) on QQQ/GLD/TLT beats SPY full and OOS (CAGR 17.3 vs 15.0, OOS 33.5 vs 21.9, Sh 0.94). Mean weights 59/28/12; often 100% QQQ, 2025 \u224896% GLD. Does not beat QQQ BH on the full window (19.9%). Lookback 126/504 fail. Not a Shannon harvest.\n",
      "ledger": {
        "id": "growth_kelly_qqq_gld_tlt",
        "token": "kelly_qgt",
        "name": "Kelly log-optimal QQQ/GLD/TLT",
        "family": "vol_harvest",
        "status": "promising",
        "sharpe": 0.936,
        "cagr_pct": 17.31,
        "max_dd_pct": -38.19,
        "total_return_pct": null,
        "rho_spy": null,
        "why": "Monthly long-only Kelly 252d on QQQ/GLD/TLT beats SPY full+OOS: CAGR 17.3 vs 15.0, OOS 33.5 vs 21.9, Sh 0.94 vs 0.88, DD -38 vs -34, end 552k vs 447k. Mean 59/28/12; 2025 ~96% GLD. Does not beat QQQ BH (19.9%). lb 126/504 fail. Replacing Harvest 5 in rockets 50/50: 16.1%/0.98/-28%.",
        "description": "Each month solve long-only max w'\u03bc-0.5 w'\u03a3w on 252d QQQ/GLD/TLT returns; 10 bp on turnover. Causal, no shorts, no extra leverage.",
        "window_start": "2016-01-04",
        "window_end": "2026-09-15"
      },
      "rule": "Each month, set long-only weights on QQQ, gold, and long bonds to maximize expected log growth from the last year of returns (a Kelly-style solve). No shorts and no extra leverage. Charged turnover."
    },
    {
      "token": "svxy_contango",
      "name": "Contango-gated SVXY/SVIX + GLD CRP",
      "chat": "Harvest 5 + PIT ride_rockets presentation",
      "bucket": "promising",
      "note": "Inverse-vol ETN (SVXY\u2192SVIX stitch) 50/50 CRP vs GLD only while VX2>VX1 (lagged); park 100% GLD in backwardation. Beats SPY 19.3 vs 15.0 / OOS 26.2 vs 21.7 / DD \u221231%. Gate exited before 2018-02-06 \u221283% gap. CRP vs same-basket BH is only ~+3% terminal \u2014 the engine is the curve gate + gold park, not Fernholz. Cash-off and VXX/SVXY twins do not. Overlaps Vol Edge. SVXY leverage changed after volmageddon.\n",
      "ledger": {
        "id": "svxy_contango_gld_park",
        "token": "svxy_contango",
        "name": "Contango-gated SVXY/SVIX + GLD (park gold)",
        "family": "vol_harvest",
        "status": "promising",
        "sharpe": 0.8655,
        "cagr_pct": 19.31,
        "max_dd_pct": -30.97,
        "total_return_pct": null,
        "rho_spy": null,
        "why": "Inverse-vol ETN 50/50 vs GLD only while lagged VX2>VX1; 100% GLD in backwardation. Beats SPY 19.3 vs 15.0 / OOS 26.2 vs 21.7 / DD -31 vs -34. Gate was in gold through 2018-02-06 -83% SVOL gap. CRP vs same BH is only ~+3% terminal (cash-off CRP lift -1.7%) \u2014 engine is curve gate + gold park, not Fernholz. Ungated DD -65%. SVXY leverage changed after volmageddon. Overlaps Vol Edge.",
        "description": "SVXY stitched to SVIX 2022-03-30. 50/50 CRP vs GLD when yesterday VX2/VX1-1>0; else 100% GLD. 5% band, 10 bp. Not VXX vs SVXY twins.",
        "window_start": "2016-01-04",
        "window_end": "2026-09-17"
      },
      "rule": "When VIX futures were in contango yesterday, hold a 50/50 mix of an inverse-volatility ETF (SVXY, later SVIX) and gold. When the curve flips to backwardation, hold only gold."
    },
    {
      "token": "harvest_rockets_plus",
      "name": "Harvest 5 + rockets + 10% satellite",
      "chat": "Harvest 5 + PIT ride_rockets presentation",
      "bucket": "promising",
      "note": "Keep the old two-policy 50/50. Add a satellite sleeve, do not dump flyers into Harvest-5 CRP. +10% contango-SVOL (45/45/10) lifts Sharpe 0.95\u21920.99 and CAGR 11.1\u219212.5 with DD \u221214\u2192\u221216. +10% GBTC beats SPY (18.4 / Sh 1.27 / DD \u221223) but is a crypto path.       Canonical four-sleeve is 42.5/42.5/10/5 (token harvest_rockets_svol_gbtc); five-sleeve adds curve-gated USO (token harvest_rockets_uso). SIL belongs in harvest (\u03c1 0.55); URA overlaps rockets (\u03c1 0.42).\n",
      "ledger": {
        "id": "harvest_rockets_plus_svol10",
        "token": "harvest_rockets_plus",
        "name": "Harvest 5 + rockets + 10% contango SVOL",
        "family": "vol_harvest",
        "status": "promising",
        "sharpe": 0.99,
        "cagr_pct": 12.46,
        "max_dd_pct": -16.25,
        "total_return_pct": null,
        "rho_spy": null,
        "why": "Evolve the old 50/50, do not mix SVOL into Harvest-5 CRP. 45/45/10 Harvest/Rockets/contango-SVOL: CAGR 12.5 vs 11.1, Sharpe 0.99 vs 0.95, DD -16 vs -14. Still lags SPY return (14.0%) but keeps the book's risk shape. 10% GBTC beats SPY (18.4/1.27/-23) with crypto path; OOS only +0.2pp. SIL is harvest-like (\u03c1 0.55); URA overlaps rockets.",
        "description": "Harvest 5 equal CRP (5% band) + PIT ride_rockets 50/50 core, plus 10% contango-gated SVXY/SVIX (cash in backwardation). 10% sleeve band. Not 6-name equal CRP.",
        "window_start": "2016-09-06",
        "window_end": "2026-04-02"
      },
      "rule": "Blend three things: the five-ETF volatility-harvest basket, the monthly ride-rockets stock sleeve, and a 10% slice of inverse volatility that turns off in backwardation."
    },
    {
      "token": "harvest_rockets_svol_gbtc",
      "name": "Harvest + rockets + 10% SVOL + 5% GBTC",
      "chat": "Harvest 5 + PIT ride_rockets presentation",
      "bucket": "promising",
      "note": "User asked for both satellites, then cut GBTC to 5%. Canonical mix 42.5/42.5/10/5, 10 bp, 10% sleeve band, 2016-09-06\u21922026-04-02. CAGR 16.95 vs old 50/50 11.10 vs 10% GBTC book 19.39 vs SPY 14.04. Sharpe 1.22 vs 0.95 vs 1.24 vs 0.82. Max DD \u221219.2 vs \u221213.7 vs \u221225.7 vs \u221233.7. End $448k. Beats SPY full-sample and OOS (+1.1pp CAGR). Halving GBTC gives back ~6.5pp of max DD vs 10% GBTC. SVOL cash in backwardation, \u03c1(H)=0.02. Not in the default stock fund. Deck: docs/harvest_rockets_plus_svol_gbtc.pdf. Five-sleeve with curve-gated USO is harvest_rockets_uso.\n",
      "ledger": {
        "id": "harvest_rockets_plus_svol_gbtc",
        "token": "harvest_rockets_svol_gbtc",
        "name": "Harvest 5 + rockets + 10% SVOL + 5% GBTC",
        "family": "equity_blend",
        "status": "promising",
        "sharpe": 1.215,
        "cagr_pct": 16.95,
        "max_dd_pct": -19.18,
        "total_return_pct": 347.5,
        "rho_spy": null,
        "why": "Canonical four-sleeve 42.5/42.5/10/5 after user cut GBTC to 5%. CAGR 16.95 vs old 50/50 11.10 vs 10% GBTC 19.39 vs SPY 14.04. Sharpe 1.22 / DD -19.2 / end $448k. Beats SPY full-sample and OOS (+1.1pp). Halving GBTC gives back ~6.5pp max DD vs 10% crypto sleeve.",
        "description": "42.5% Harvest-5 CRP (GLD/UUP/TLT/DBC/IEF, 5% band) + 42.5% PIT ride-rockets 50/50 + 10% contango-gated SVXY/SVIX (cash in backwardation) + 5% GBTC. Sleeve mix 10% band, 10 bp.",
        "window_start": "2016-09-06",
        "window_end": "2026-04-02"
      },
      "rule": "About 42% harvest basket, 42% ride-rockets, 10% contango-gated inverse volatility, and 5% bitcoin (GBTC). Rebalance when a sleeve drifts."
    },
    {
      "token": "harvest_rockets_uso",
      "name": "Harvest + rockets + SVOL + 5% GBTC + 5% USO",
      "chat": "Harvest 5 + PIT ride_rockets presentation",
      "bucket": "promising",
      "note": "User asked to add USO, then to rebalance daily with no trading costs (the harvest is the daily reset, not a 10% band). 40/40/10/5/5. USO on only when lagged 20d USO beats USL; cash in contango. 2016-09-06\u21922026-04-02, frictionless: CAGR 16.26 vs SPY 14.04. Sharpe 1.24 vs 0.82. Max DD \u221218.2 vs \u221233.7. End $423k. Beats SPY full+OOS. Daily mix reset clips GBTC vs a wide band (band+10bp was 17.41 / $465k). Caveat no_costs. Deck: docs/harvest_rockets_plus_svol_gbtc.pdf.\n",
      "ledger": {
        "id": "harvest_rockets_plus_uso",
        "token": "harvest_rockets_uso",
        "name": "Harvest 5 + rockets + SVOL + GBTC + USO daily CRP",
        "family": "equity_blend",
        "status": "promising",
        "sharpe": 1.244,
        "cagr_pct": 16.26,
        "max_dd_pct": -18.18,
        "total_return_pct": 322.71,
        "rho_spy": null,
        "why": "Canonical is daily rebalance, zero costs. 40/40/10/5/5. CAGR 16.26 vs SPY 14.04, Sharpe 1.24 vs 0.82, DD -18.2 vs -33.7, end $423k. Beats SPY full+OOS. Daily mix reset clips GBTC vs the old 10% band (that version was 17.41 / $465k). USO still curve-gated vs USL.",
        "description": "Daily CRP: Harvest 5 equal-weight every close; sleeves reset 40/40/10/5/5 every close; fee 0. SVOL only in VIX contango; USO only when lagged 20d USO beats USL; GBTC always on.",
        "window_start": "2016-09-06",
        "window_end": "2026-04-02"
      },
      "rule": "Same harvest-plus-rockets mix, rebalanced every day, plus oil (USO) only when it has beaten the longer oil ETF over 20 days, inverse volatility only in contango, and bitcoin always on."
    },
    {
      "token": "harvest_rockets_daily_explore",
      "name": "Daily-CRP satellite scan (PALL/NLR/COPX)",
      "chat": "Harvest 5 + PIT ride_rockets presentation",
      "bucket": "promising",
      "note": "Daily rebalance, zero costs. \u03b3* from raw uncorrelated vol is a trap: UNG/VIXY/WEAT score high and lose (UNG geo \u221223%). Do not replace GBTC \u2014 every swap lost ~4pp CAGR. Best *additions* on top of 40/40/10/5/5: +5% COPX (16.96 / 1.25 / OOS +1.8pp) but \u03c1(rockets)=0.45; +5% NLR (16.54 / 1.25 / DD \u221217.9 / OOS +2.0); +5% PALL (16.47 / 1.25 / DD \u221217.1, true alt \u03c1H=0.33). Pair +5% PALL +5% NLR \u2192 16.75 / 1.25 / DD \u221217.2 / OOS +1.3 / $440k. GDX/SLV help returns but are gold-complex (\u03c1H\u22480.55). FX and TIPS are too quiet to harvest. Keep GBTC; add a second high-vol metal/nuclear sleeve, not a decaying ice cube.\n",
      "ledger": {
        "id": "harvest_rockets_daily_explore",
        "token": "harvest_rockets_daily_explore",
        "name": "Daily CRP satellite scan PALL/NLR/COPX",
        "family": "equity_blend",
        "status": "promising",
        "sharpe": 1.252,
        "cagr_pct": 16.75,
        "max_dd_pct": -17.22,
        "total_return_pct": null,
        "rho_spy": null,
        "why": "Daily reset wants high-vol *positive-drift* names, not UNG/VIXY. Keep GBTC. Best add: +5% PALL +5% NLR (16.75 / Sh 1.25 / DD -17.2 / OOS +1.3 vs base 16.26 / 1.24 / -18.2). COPX higher CAGR but rockets-beta. GDX/SLV overlap Harvest. Do not swap out GBTC.",
        "description": "Loop on Harvest+rockets+SVOL+GBTC+USO daily CRP fee=0. +5% PALL and +5% NLR (35/35/10/5/5/5/5). UNG/VIXY/grain packs fail.",
        "window_start": "2016-09-06",
        "window_end": "2026-04-02"
      },
      "rule": "The daily harvest-plus-rockets mix with extra satellite slots. The runs that were scored added palladium and a uranium/nuclear ETF, and separately tried natural gas, long-volatility, and grain packs."
    },
    {
      "token": "shannon_breakout",
      "name": "Mag4 entropy coil + Donchian",
      "chat": "Shannon entropy in trading",
      "bucket": "weak",
      "note": "Only coherent stock purpose for Shannon entropy: mag4 coil yesterday, Donchian today. PIT S&P 40 trades / Sh 0.61 / CAGR 1.3% (cash, not an engine). R3K 2,056 names fills to 205 trades / Sh 0.56 / CAGR 3.0% and still loses to ungated Donchian 0.69 / 7.5%. ATR squeeze and sign entropy fail. Prefer ema_vcp. Not a book sleeve.\n",
      "ledger": {
        "id": "shannon_entropy_breakout_donch20",
        "token": "shannon_breakout",
        "name": "Mag4 entropy coil then Donchian-20 breakout (PIT S&P)",
        "family": "equity_breakout",
        "status": "weak",
        "sharpe": 0.613,
        "cagr_pct": 1.3,
        "max_dd_pct": -3.07,
        "total_return_pct": null,
        "rho_spy": 0.0,
        "why": "Right architecture (coil yesterday, Donchian today) but mag4 only raises Sharpe by being in cash: 40 trades/decade, CAGR 1.3% vs ungated Donchian 2.6%. ATR squeeze gate fails. Sign entropy fails. Lags ema_vcp (CAGR 6.4%).",
        "description": "Long PIT S&P: close>SMA200 and close>prior 20d high; yesterday mag4 entropy in trailing-year bottom tercile; stop at 20-bar coil low; exit stop / 20EMA / 20d. 1% risk, max 10 names.",
        "window_start": "2016-01-04",
        "window_end": "2026-09-03"
      },
      "rule": "Buy an S&P name only when three things line up: price above its 200-day average, a 20-day high, and yesterday's price action unusually \"ordered\" on a Shannon-entropy score (a tight coil). Stop at the coil low. Exit on the stop, the 20-day average, or after 20 sessions. At most ten names."
    },
    {
      "token": "spy_overnight_vix_calm",
      "name": "SPY overnight VIX-calm filters",
      "chat": "Overnight SPY strategy",
      "bucket": "weak",
      "note": "Calm nights underperform stress nights. Sh 0.64 / invested 27%; mean below always-in.",
      "ledger": {
        "id": "stk_spy_on_vix_calm",
        "token": "spy_overnight_vix_calm",
        "name": "SPY overnight C2C VIX calm filters",
        "family": "equity_qs",
        "status": "weak",
        "sharpe": 0.64,
        "cagr_pct": 3.12,
        "max_dd_pct": -7.2,
        "total_return_pct": 37.9,
        "rho_spy": null,
        "why": "Calm VIX RSI / below weekly-monthly highs / trend filter reduces DD but concentrates on below-average overnight magnitude",
        "description": "SPY overnight C2C VIX calm filters (equity_qs) \u2014 Calm VIX RSI / below weekly-monthly highs / trend filter reduces DD but concentrates on below-ave\u2026",
        "window_start": "2016-01-04",
        "window_end": "2026-06-18"
      },
      "rule": "Hold SPY overnight only on nights the VIX looks calm (a low RSI, or VIX below recent weekly and monthly highs, or a trend filter). Compared with holding every night."
    },
    {
      "token": "spy_ovn_fear_hard_rules",
      "name": "SPY overnight VIX-fear hard rules",
      "chat": "Overnight SPY strategy",
      "bucket": "weak",
      "note": "Higher mean C2C but DD \u221223% / Sh 0.44. Edge exists; risk not better than always-in.",
      "ledger": {
        "id": "ovn_fear_hard_rules",
        "token": "spy_ovn_fear_hard_rules",
        "name": "SPY overnight VIX fear hard rules",
        "family": "equity_overnight",
        "status": "promising",
        "sharpe": 0.44,
        "cagr_pct": 4.8,
        "max_dd_pct": -23.3,
        "total_return_pct": 63.2,
        "rho_spy": null,
        "why": "Fear nights have higher mean C2C (+6bps vs all) but deeper DD.",
        "description": "SPY overnight VIX fear hard rules (equity_overnight) \u2014 Fear nights have higher mean C2C (+6bps vs all) but deeper DD.",
        "window_start": "2016-01-04",
        "window_end": "2026-06-18"
      },
      "rule": "The opposite filter: hold SPY overnight only when a hard VIX rule says the night is a \"fear\" night. Compared with all nights and with the calm filter."
    },
    {
      "token": "buy_on_gap",
      "name": "Chan buy-on-gap (SP100)",
      "chat": "Algorithmic trading strategy testing",
      "bucket": "weak",
      "note": "Edge largely decayed (+2.3% / Sh 0.21) vs the book narrative.",
      "ledger": {
        "id": "stk_buy_gap",
        "token": "buy_on_gap",
        "name": "Buy-on-gap SP100",
        "family": "equity_dip",
        "status": "weak",
        "sharpe": 0.21,
        "cagr_pct": 0.22,
        "max_dd_pct": -2.75,
        "total_return_pct": 2.3,
        "rho_spy": null,
        "why": "Chan Ex 4.1 SP100; edge largely decayed (+2.3% Sh0.21) vs book narrative.",
        "description": "Buy-on-gap SP100 (equity_dip) \u2014 Chan Ex 4.1 SP100; edge largely decayed (+2.3% Sh0.21) vs book narrative.",
        "window_start": "",
        "window_end": ""
      },
      "rule": "Chan's buy-on-gap: in the S&P 100, buy names that gap down at the open and show a bounce, and sell them the same day. A mean-reversion open, not an overnight hold."
    },
    {
      "token": "connors_rsi_spy",
      "name": "Connors RSI pullback (SPY / QQQ)",
      "chat": "Algorithmic trading strategy testing",
      "bucket": "weak",
      "note": "Not in Chan. SPY Sh 0.66, QQQ 0.39. Do not add beside QS IBS/RSI.",
      "ledger": {
        "id": "chan_connors_rsi_spy",
        "token": "connors_rsi_spy",
        "name": "Connors RSI pullback on SPY (NOT in Chan)",
        "family": "equity_chan",
        "status": "weak",
        "sharpe": 0.662,
        "cagr_pct": 3.94,
        "max_dd_pct": -11.19,
        "total_return_pct": 48.39,
        "rho_spy": null,
        "why": "Chan Algorithmic Trading suite (\u2014; fidelity=nan).",
        "description": "Connors RSI pullback on SPY (NOT in Chan) (equity_chan) \u2014 Chan Algorithmic Trading suite (\u2014; fidelity=nan).",
        "window_start": "2016-01-04",
        "window_end": "2026-04-02"
      },
      "rule": "Larry Connors' RSI pullback on SPY: buy after a short-term RSI washout in an uptrend, and sell when RSI recovers. Tested because it is often bundled with the Chan examples even though it is not in that book."
    },
    {
      "token": "industry_trend_spdr31",
      "name": "Timing Industry on 31 SPDR ETFs (2005\u20132024)",
      "chat": "French MOM",
      "bucket": "weak",
      "note": "Tracks French shape, lags SPY CAGR, cuts DD ~half. Era, not \u201cETF brokenness.\u201d",
      "ledger": {
        "id": "res_industry_spdr31",
        "token": "industry_trend_spdr31",
        "name": "Timing Industry 31 SPDR ETFs",
        "family": "equity_trend",
        "status": "weak",
        "sharpe": 0.51,
        "cagr_pct": 7.8,
        "max_dd_pct": -23.3,
        "total_return_pct": 320.1,
        "rho_spy": null,
        "why": "Tracks French shape; lags SPY return; cuts DD ~half; no commissions in run",
        "description": "Timing Industry 31 SPDR ETFs (equity_trend) \u2014 Tracks French shape; lags SPY return; cuts DD ~half; no commissions in run",
        "window_start": "2005-01-03",
        "window_end": "2024-03-28"
      },
      "rule": "The same industry-trend idea as the French 48-industry test, but on the 31 sector and industry ETFs you can actually trade. Hold the ones trending up."
    },
    {
      "token": "rth_xlp_bollinger",
      "name": "RTH/XLP Bollinger spread",
      "chat": "Algorithmic trading strategy testing",
      "bucket": "weak",
      "note": "Chan Ch.4. Sh 0.36. Same family as failed GLD/GDX.",
      "ledger": {
        "id": "chan_rth_xlp_bollinger",
        "token": "rth_xlp_bollinger",
        "name": "RTH/XLP Bollinger spread",
        "family": "equity_chan",
        "status": "weak",
        "sharpe": 0.36,
        "cagr_pct": 4.06,
        "max_dd_pct": -20.88,
        "total_return_pct": 50.21,
        "rho_spy": null,
        "why": "Chan Algorithmic Trading suite (Ch.4; fidelity=book).",
        "description": "RTH/XLP Bollinger spread (equity_chan) \u2014 Chan Algorithmic Trading suite (Ch.4; fidelity=book).",
        "window_start": "2016-01-04",
        "window_end": "2026-04-02"
      },
      "rule": "Retail stocks (RTH) versus consumer staples (XLP). When their spread stretches outside a Bollinger band, bet it reverts. From Chan's pairs chapter."
    },
    {
      "token": "tsmom_spy_250_25",
      "name": "Chan single-name TSMOM (SPY/GLD 250d)",
      "chat": "Algorithmic trading strategy testing",
      "bucket": "weak",
      "note": "Sh 0.31\u20130.37. The 8-asset vol-norm book (tsmom) is the one that worked.",
      "ledger": {
        "id": "chan_tsmom_spy_250_25",
        "token": "tsmom_spy_250_25",
        "name": "TSMOM SPY (250d/25d)",
        "family": "equity_chan",
        "status": "weak",
        "sharpe": 0.372,
        "cagr_pct": 4.73,
        "max_dd_pct": -34.36,
        "total_return_pct": 60.48,
        "rho_spy": null,
        "why": "Chan Algorithmic Trading suite (Ch.6; fidelity=book).",
        "description": "TSMOM SPY (250d/25d) (equity_chan) \u2014 Chan Algorithmic Trading suite (Ch.6; fidelity=book).",
        "window_start": "2016-01-04",
        "window_end": "2026-04-02"
      },
      "rule": "Time-series momentum on SPY alone: sign of the 250-day return, held or refreshed on a 25-day clock. Long or flat/short with the trend. Chan's single-asset version, not the eight-market futures book."
    },
    {
      "token": "r3k_momentum",
      "name": "Russell 3000 SPMO-style quintile",
      "chat": "Momentum ETF strategy development",
      "bucket": "weak",
      "note": "Broader universe dilutes rocket edge vs S&P PIT.",
      "ledger": {
        "id": "stk_r3k_momentum_quintile",
        "token": "r3k_momentum",
        "name": "Russell 3000 SPMO-style quintile (snapshot, price cap)",
        "family": "equity_momentum",
        "status": "weak",
        "sharpe": 0.63,
        "cagr_pct": 11.5,
        "max_dd_pct": -35.3,
        "total_return_pct": 203.6,
        "rho_spy": null,
        "why": "Broader universe dilutes rocket edge vs S&P PIT; more fake midcap momentum",
        "description": "Russell 3000 SPMO-style quintile (snapshot, price cap) (equity_momentum) \u2014 Broader universe dilutes rocket edge vs S&P PIT; more fake midcap momentum",
        "window_start": "2016-01-04",
        "window_end": "2026-04-02"
      },
      "rule": "The ride-rockets ranking applied to a Russell 3000 snapshot instead of point-in-time S&P membership. A test of whether a broader, mid-cap-heavier universe helps."
    },
    {
      "token": "ride_champ",
      "name": "Ride-rockets champ (near-high + 6m-kill stacked)",
      "chat": "Momentum ETF strategy development",
      "bucket": "weak",
      "note": "Over-filters. Loses to near-only and ten_rockets. Do not stack gates on a tight book.",
      "ledger": {
        "id": "stk_ride_champ_stack_overfilter",
        "token": "ride_champ",
        "name": "Ride-rockets champ (top10-15 + near-high + 6m-kill stacked)",
        "family": "equity_momentum",
        "status": "weak",
        "sharpe": 0.64,
        "cagr_pct": 11.0,
        "max_dd_pct": -25.5,
        "total_return_pct": 190.3,
        "rho_spy": null,
        "why": "Stacking near-high + 6m-kill on tight book OVER-FILTERS; loses to near-only top25 and ten_rockets; do not stack gates aggressively",
        "description": "Ride-rockets champ (top10-15 + near-high + 6m-kill stacked) (equity_momentum) \u2014 Stacking near-high + 6m-kill on tight book OVER-FILTERS; loses to near-only top25 and ten_rockets\u2026",
        "window_start": "2016-01-04",
        "window_end": "2026-04-02"
      },
      "rule": "A tighter ride-rockets stack: only 10 to 15 names, and only if they are near a high and have not already failed a six-month \"kill\" filter. A test of stacking every good filter at once."
    },
    {
      "token": "macro_aw_stacked",
      "name": "Macro AW stacked (~8\u00d7 notional)",
      "chat": "Option strategies for uncorrelated instruments",
      "bucket": "weak",
      "note": "~5\u00d7 deeper DD vs equal-weight without Sharpe gain. Research sizing, not live.",
      "ledger": {
        "id": "opt_macro_aw_stacked",
        "token": "macro_aw_stacked",
        "name": "Macro AW options stacked (~8x notional)",
        "family": "options_macro",
        "status": "weak",
        "sharpe": null,
        "cagr_pct": 8.87,
        "max_dd_pct": -4.75,
        "total_return_pct": 134.0,
        "rho_spy": null,
        "why": "~5x deeper DD vs equal-weight without Sharpe gain",
        "description": "Macro AW options stacked (~8x notional) (options_macro) \u2014 ~5x deeper DD vs equal-weight without Sharpe gain",
        "window_start": "2016-04-01",
        "window_end": "2026-04-01"
      },
      "rule": "The same eight macro option sleeves as the equal-weight book, but each one is funded at full size and the profits are added. That is roughly eight times the notional of the averaged version."
    },
    {
      "token": "vxx_3way_allocation_sweep",
      "name": "VXX-only 3-way allocation (bear/put/call weights)",
      "chat": "VXX options trading strategies",
      "bucket": "weak",
      "note": "Best Sharpe only 0.40. Allocation does not rescue a VXX-only book.",
      "ledger": {
        "id": "vxx_3way_sweep_parent",
        "token": "vxx_3way_allocation_sweep",
        "name": "VXX 3-way allocation sweep (231 weight combos)",
        "family": "options_vxx",
        "status": "weak",
        "sharpe": null,
        "cagr_pct": null,
        "max_dd_pct": null,
        "total_return_pct": null,
        "rho_spy": null,
        "why": "Best Sharpe only 0.40 \u2014 allocation alone does not rescue VXX-only book.",
        "description": "VXX 3-way allocation sweep (231 weight combos) (options_vxx) \u2014 Best Sharpe only 0.40 \u2014 allocation alone does not rescue VXX-only book.",
        "window_start": "",
        "window_end": ""
      },
      "rule": "Three VXX strategies (short calls, long calls, and a third sleeve) mixed across 231 weight combinations. A test of whether the mix, rather than a new rule, fixes a VXX-only book."
    },
    {
      "token": "ma_slope_intraday_5bps",
      "name": "confirm_4b with 5 bps entry slippage",
      "chat": "Trading strategy based on SMA and EMA slopes",
      "bucket": "weak",
      "note": "Still positive (+459% / Sh 0.95) but a reminder the book number is frictionless.",
      "ledger": {
        "id": "ma_slope_intraday_confirm4b_5bps",
        "token": "ma_slope_intraday_5bps",
        "name": "MA slope confirm_4b top-10 @ 5bps entry slippage",
        "family": "equity_intraday",
        "status": "weak",
        "sharpe": 0.95,
        "cagr_pct": 30.6,
        "max_dd_pct": -34.0,
        "total_return_pct": 459.4,
        "rho_spy": null,
        "why": "Same names as confirm_4b; 5bps on gross exposure increases cuts return to +459% Sh0.95. Execution quality matters; still positive.",
        "description": "MA slope confirm_4b top-10 @ 5bps entry slippage (equity_intraday) \u2014 Same names as confirm_4b; 5bps on gross exposure increases cuts return to +459% Sh0.95. Execution\u2026",
        "window_start": "2020-01-02",
        "window_end": "2026-06-26"
      },
      "rule": "The intraday moving-average-slope book (top ten this time) with 5 basis points of slippage charged on entry. Same signals; a cost stress test."
    },
    {
      "token": "zarattini_orb_or30",
      "name": "Zarattini ORB 30-minute opening range",
      "chat": "Five-minute opening range breakout",
      "bucket": "weak",
      "note": "5m \u226b 10m \u226b 15m \u226b 30m. Longer OR is not the paper.",
      "ledger": {
        "id": "orb_or30_2020_2023",
        "token": "zarattini_orb_or30",
        "name": "Zarattini ORB OR=30m (2020-2023 full universe)",
        "family": "equity_intraday",
        "status": "weak",
        "sharpe": 1.01,
        "cagr_pct": 25.34,
        "max_dd_pct": -44.04,
        "total_return_pct": 140.29,
        "rho_spy": null,
        "why": "ORB OR=30m on ~4060 symbols 2020-2023; paper headline much higher than tradable standard.",
        "description": "Zarattini ORB OR=30m (2020-2023 full universe) (equity_intraday) \u2014 ORB OR=30m on ~4060 symbols 2020-2023; paper headline much higher than tradable standard.",
        "window_start": "2020-01-02",
        "window_end": "2023-12-29"
      },
      "rule": "Stocks-in-play opening-range breakout with a 30-minute opening range instead of 5 minutes, on the full symbol list for 2020\u20132023."
    },
    {
      "token": "orb_qqq_zarattini",
      "name": "QQQ 5m ORB (Zarattini & Aziz 2023, SSRN 4416622)",
      "chat": "Zarattini QQQ ORB catalog",
      "bucket": "weak",
      "note": "Different paper from book orb_zarattini (SIP SSRN 4729284). Enter at the open of the second 5m bar, stop at first-candle extreme, 10R or MOC, 1% risk, 4x cap. Local Alpaca 1m starts 2020 (paper was 2016\u21922023-02). QQQ 0-slip 2020-01-02\u21922026-06-24: +256% / Sh 0.81 / DD \u221227% / WR 24% / mean +0.13R vs QQQ BH +229% / Sh 0.86. Edge is 2022 (+40% vs BH \u221233%); 10R almost never hits (33/1620). 2.2\u00a2/share slippage cuts Sharpe to 0.50. Upgrade path: orb_qqq_or_break (promising). Gap-agree helps DD. Failed on this tape: SPY first-candle confirm, skip-if-leverage-capped, TQQQ, paper ATR 5% / EOD grid. Do not promote the paper rule beside SIP ORB.\n",
      "ledger": {
        "id": "orb_qqq_zarattini_2020_2026",
        "token": "orb_qqq_zarattini",
        "name": "QQQ 5m ORB (Zarattini & Aziz 2023 SSRN 4416622)",
        "family": "equity_intraday",
        "status": "weak",
        "sharpe": 0.81,
        "cagr_pct": 21.75,
        "max_dd_pct": -27.18,
        "total_return_pct": 256.1,
        "rho_spy": -0.01,
        "why": "24% WR / +0.13R is real; 2020-2026 Sh 0.81 loses to QQQ BH Sh 0.86; lags SIP ORB already in book. Do not promote.",
        "description": "First 5m candle sets long/short; enter next bar open; stop at OR extreme; 10R or MOC; 1% risk; 4x cap; $0.0005/share. Distinct from Stocks-in-Play orb_zarattini (SSRN 4729284). Paper: https://ssrn.com/abstract=4416622",
        "window_start": "2020-01-02",
        "window_end": "2026-06-24"
      },
      "rule": "QQQ only, following the Zarattini and Aziz 5-minute opening-range paper. The first candle sets long or short, entry is the next bar's open, stop is the other side of the range, and the target is 10 times the risk or the close. One percent of capital at risk."
    },
    {
      "token": "move_gate",
      "name": "MOVE 80th-pct SPY/SHY risk-off gate",
      "chat": "Replicate Horizon improvement loop",
      "bucket": "weak",
      "note": "^MOVE is not VIX (\u03c1 0.27). p80 +173% / Sh 0.97 / DD \u221220% vs SPY +236% / 0.85 / \u221234%; OOS Sh 0.86 vs 0.58. Lags CAGR. MOVE>100 OOS fails. Same D4 shape \u2014 not a book sleeve.\n",
      "ledger": {
        "id": "move_bond_vol_gate_p80_2016_2024",
        "token": "move_gate",
        "name": "MOVE 252d 80th-pct SPY/SHY gate",
        "family": "equity_vol",
        "status": "weak",
        "sharpe": 0.973,
        "cagr_pct": 11.85,
        "max_dd_pct": -20.19,
        "total_return_pct": 173.35,
        "rho_spy": 0.675,
        "why": "Not a VIX alias (rho VIX>20=0.27). +173%/Sh 0.97/DD -20 vs SPY +236%/0.85/-34. OOS Sh 0.86 vs 0.58. Lags CAGR. MOVE>100 OOS fails. Same D4 shape \u2014 not a book sleeve.",
        "description": "Prior ICE BofA MOVE above 252d 80th percentile \u2192 SHY else SPY. Daily close, no costs.",
        "window_start": "2016-01-04",
        "window_end": "2024-12-31"
      },
      "rule": "If the MOVE index (bond-market volatility) is above its own one-year 80th percentile, hold short-term Treasuries instead of SPY. Otherwise hold SPY. Uses the prior close."
    },
    {
      "token": "kalman_snr_overlay",
      "name": "Kalman SNR size overlay on confirm_4b",
      "chat": "CERN Kalman noise filter",
      "bucket": "weak",
      "note": "Beats ungated Sh 1.481\u21921.524 but mean weight 0.99 and OOS DD worse. Amplifies, does not de-risk. Keep the ungated book. See kalman_confirm_z_resize for the per-name 5m residual overlay.\n",
      "ledger": {
        "id": "kalman_snr_size_overlay_confirm4b",
        "token": "kalman_snr_overlay",
        "name": "Kalman SNR size overlay on confirm_4b",
        "family": "equity_intraday",
        "status": "weak",
        "sharpe": 1.524,
        "cagr_pct": 53.23,
        "max_dd_pct": -33.54,
        "total_return_pct": 1459.47,
        "rho_spy": null,
        "why": "Beats ungated Sh 1.481->1.524 but mean weight 0.99 and OOS 2024 DD worse (-24 vs -18). Amplifies, does not de-risk. Not a book change.",
        "description": "Multiply confirm_4b daily returns by lagged SPY 15m TV-R Kalman gain, clip 0.25-1.5. Size, do not skip.",
        "window_start": "2020-01-03",
        "window_end": "2026-06-18"
      },
      "rule": "Keep every trade from the intraday moving-average-slope book, but scale that day's profit and loss by a lagged Kalman \"how clean is the trend\" score on SPY. A size overlay, not a new entry rule."
    },
    {
      "token": "curve_carry",
      "name": "Isolated curve carry",
      "chat": "Replicate Horizon improvement loop",
      "bucket": "fail",
      "note": "Sh 0.01 / DD \u221244%. New vs TLT SMA (\u03c1 \u22120.05) but inversion lagged 2022.",
      "ledger": {
        "id": "curve_carry_tlt_shy_2016_2024",
        "token": "curve_carry",
        "name": "Isolated 10y-3m curve carry TLT/SHY",
        "family": "equity_macro",
        "status": "fail",
        "sharpe": 0.01,
        "cagr_pct": -0.53,
        "max_dd_pct": -44.14,
        "total_return_pct": -4.64,
        "rho_spy": -0.15,
        "why": "New info vs bond-trend (pos \u03c1=-0.05) but fail as a sleeve: Sh 0.01 DD -44%; inversion flipped to SHY only 2022-12-01 after TLT crash. OOS Sh -0.74.",
        "description": "Month-end ^TNX>^IRX \u2192 next month TLT else SHY. No TLT SMA, no SPY gate. First DiscoverySpec D2 test.",
        "window_start": "2016-01-04",
        "window_end": "2024-12-31"
      },
      "rule": "At each month-end, if the 10-year yield is above the 3-month yield, hold long bonds (TLT) for the next month. If the curve is inverted, hold short-term Treasuries (SHY). No stock gate and no moving-average filter."
    },
    {
      "token": "qs_lookahead",
      "name": "QS S42/S45/S44/Faber same-bar look-ahead",
      "chat": "Replicate Horizon improvement loop",
      "bucket": "fail",
      "note": "Sharpe 3+ collapsed after 1-bar lag. Live pack (S01/S03/S14/S17) is clean. Do not reopen.",
      "ledger": {
        "id": "qs_lookahead_audit_2026_08",
        "token": "qs_lookahead",
        "name": "QS registry look-ahead audit + fix (8 sleeves)",
        "family": "qs_equity",
        "status": "fail",
        "sharpe": null,
        "cagr_pct": null,
        "max_dd_pct": null,
        "total_return_pct": null,
        "rho_spy": null,
        "why": "8/50 QS sleeves applied a day-t close/VIX/SMA mask to day-t close-to-close return; S42 Sharpe 3.43->0.95, S45 3.14->1.06, S44 2.12->0.92 after lagging mask one session",
        "description": "Causality perturbation test: shock day-t close, check if position on day t flips. Fixed via _c2c_on_data_mask (mask.shift(1)) + prior-session decision in _month_start_pick/dual_momentum. Live qs_actionable_4 (S01,S03,S14,S17) unaffected - all clean.",
        "window_start": "2016-01-04",
        "window_end": "2026-08-07"
      },
      "rule": "An audit, not a new strategy. Shock today's close and check whether any \"quant seasonality\" position for today flips. That would mean the rule was peeking at the same bar it traded. The live four-edge SPY set was included."
    },
    {
      "token": "qs_rank50_hard_fails",
      "name": "QS rank-50 hard fails (S47 gap-up fade, S06 OPEX Friday, S30 Connors 3-up)",
      "chat": "Trading strategies evaluation",
      "bucket": "fail",
      "note": "S47 Sh \u22124.15. Calendar fade / OPEX Friday / 3-up fade did not survive the same Yahoo harness.",
      "ledger": {},
      "rule": "The bottom of a 50-rule seasonality ranking: calendar and overnight ideas that failed a hard hurdle (too little return, too much drawdown, or a broken assumption). Recorded so they are not retested as if new."
    },
    {
      "token": "sector_ls",
      "name": "Sector L/S momentum",
      "chat": "Long short portfolio development",
      "bucket": "fail",
      "note": "\u221213.7% / Sh \u22120.01 / DD \u221229%. Does not beat dip. Family equity_ls blocked.",
      "ledger": {
        "id": "stk_sector_ls",
        "token": "sector_ls",
        "name": "Sector L/S momentum prototype",
        "family": "equity_ls",
        "status": "fail",
        "sharpe": -0.01,
        "cagr_pct": -1.43,
        "max_dd_pct": -29.0,
        "total_return_pct": -13.7,
        "rho_spy": null,
        "why": "Does not beat dip; experimental not in book",
        "description": "Sector L/S momentum prototype (equity_ls) \u2014 Does not beat dip; experimental not in book",
        "window_start": "2016-01-04",
        "window_end": "2026-04-02"
      },
      "rule": "Sector momentum with a short side: buy the strongest SPDR sectors and short the weakest, so the book is closer to market-neutral than long-only sector rotation."
    },
    {
      "token": "cnn_lstm_ls",
      "name": "CNN-LSTM long/short",
      "chat": "Benefits of pre-filtering with cnn lstm",
      "bucket": "fail",
      "note": "Short leg drags. Long-only top-10 only usable.",
      "ledger": {
        "id": "stk_cnn_lstm_ls",
        "token": "cnn_lstm_ls",
        "name": "CNN-LSTM long-short cross-section",
        "family": "equity_ml",
        "status": "fail",
        "sharpe": null,
        "cagr_pct": null,
        "max_dd_pct": null,
        "total_return_pct": null,
        "rho_spy": null,
        "why": "Short leg drags; L/S fails OOS; long-only top-10 only usable",
        "description": "CNN-LSTM long-short cross-section (equity_ml) \u2014 Short leg drags; L/S fails OOS; long-only top-10 only usable",
        "window_start": "",
        "window_end": ""
      },
      "rule": "A neural net (a convolutional layer in front of an LSTM) reads recent price sequences and ranks stocks long and short. Tested as a cross-section, then with the short side removed."
    },
    {
      "token": "timesfm_zeroshot",
      "name": "TimesFM zero-shot price/crypto predictor (viral)",
      "chat": "TimesFM viral forecast model",
      "bucket": "fail",
      "note": "Google Research ICML 2024 decoder-only TSFM (not a silent drop). TimesFM-3 (330M, Aug 2026) is SOTA on GIFT-Eval / fev-bench / TIME for seasonal series, pretrained on GiftEval + Wiki pageviews + Google Trends + synthetic (~1T points) \u2014 not market prices. Zero-shot price prediction underperforms chance on 4/7 horizons (Fu et al. 2024). TimesFM-3 weights are non-commercial/non-production; 2.5 remains Apache-2.0. In-repo PIT gate on confirm_entry_4b also failed \u2014 see timesfm_gate. Do not reopen as a new L/S (same family as cnn_lstm_ls).\n",
      "ledger": {
        "id": "stk_timesfm_zeroshot",
        "token": "timesfm_zeroshot",
        "name": "TimesFM zero-shot price/crypto predictor (viral)",
        "family": "equity_ml",
        "status": "fail",
        "sharpe": null,
        "cagr_pct": null,
        "max_dd_pct": null,
        "total_return_pct": null,
        "rho_spy": null,
        "why": "Viral zero-shot market-price pitch is literature-killed: Fu 2024 vanilla TimesFM underperforms chance on 4/7 price horizons; S&P500 MN Sh 0.42 vs AR1 1.58; crypto -0.03. SSRN 2026 TimesFM-500M dir.acc <50% R2 -2.8% loses to GBMs. TimesFM-3 weights non-commercial. Do not reopen as L/S (cnn_lstm_ls already fail).",
        "description": "Google Research decoder-only TSFM (ICML 2024; TimesFM-3 Aug 2026). Pretrain GiftEval+Wiki+Trends+synthetic, not prices. Zero-shot works on seasonal TS benchmarks, not raw prices/returns.",
        "window_start": "",
        "window_end": ""
      },
      "rule": "Google's TimesFM forecasting model, used with no fine-tuning, to predict the next move in prices and crypto. The model was trained on generic time series, not on markets. This test asked whether that zero-shot forecast is tradable."
    },
    {
      "token": "timesfm_gate",
      "name": "TimesFM-2.5 PIT gate on confirm_entry_4b",
      "chat": "TimesFM viral forecast model",
      "bucket": "fail",
      "note": "Apache-2.0 2.5 on confirm_entry_4b top-5 cap20, 2024-01-02\u21922026-06-26. Daily T-1 spy_median +143%/Sh 1.54 vs ungated +275%/1.94 \u2014 skipped days had *higher* mean PnL and 12/32 tail winners. Improvement loop: 5m rest-of-session SPY at j2, corr=0.0; \u221230bp \u201cOOS Sharpe 1.85\u201d is one day (2025-11-20 \u221210.45%); unskip it \u2192 OOS Sh 1.51, worse than ungated 1.66. Do not deploy TimesFM. Live sleeve stays ungated confirm_entry_4b.\n",
      "ledger": {
        "id": "stk_timesfm_gate",
        "token": "timesfm_gate",
        "name": "TimesFM-2.5 PIT gate on confirm_entry_4b",
        "family": "equity_ml",
        "status": "fail",
        "sharpe": 1.94,
        "cagr_pct": 70.96,
        "max_dd_pct": -17.87,
        "total_return_pct": 274.91,
        "rho_spy": null,
        "why": "Improvement loop failed. Daily T-1 skip culled tail winners. 5m rest-of-session corr=0; -30bp OOS Sharpe lift is 2025-11-20 (-10.45%) \u2014 unskip -> OOS Sh 1.51 vs ungated 1.66. Do not deploy. Live remains ungated confirm_entry_4b.",
        "description": "TimesFM-2.5 overlay on confirm_entry_4b. Headline metrics are the UNGATED book (the overlay loses). Daily + 5m encodings tested PIT.",
        "window_start": "2024-01-02",
        "window_end": "2026-06-26"
      },
      "rule": "Use TimesFM's forecast as a filter on the intraday moving-average-slope book: take the trade only when the model agrees. Daily and 5-minute encodings, scored without looking ahead."
    },
    {
      "token": "johansen_sp500",
      "name": "Johansen S&P stock triplets",
      "chat": "Algorithmic trading strategy testing",
      "bucket": "fail",
      "note": "Chan warning confirmed \u2014 names break OOS. ETF triplets survived.",
      "ledger": {
        "id": "stk_johansen_sp500",
        "token": "johansen_sp500",
        "name": "Johansen SP500 stock triplets no story",
        "family": "equity_statarb",
        "status": "fail",
        "sharpe": -0.56,
        "cagr_pct": null,
        "max_dd_pct": null,
        "total_return_pct": -35.0,
        "rho_spy": null,
        "why": "Stock triplets break OOS (Chan warning)",
        "description": "Johansen SP500 stock triplets no story (equity_statarb) \u2014 Stock triplets break OOS (Chan warning)",
        "window_start": "",
        "window_end": ""
      },
      "rule": "The same cointegration triplet idea as the ETF version, but on random S&P 500 stocks with no economic story tying the three names together."
    },
    {
      "token": "ewa_ewc_linear",
      "name": "EWA/EWC linear z-score (no Kalman)",
      "chat": "Algorithmic trading strategy testing",
      "bucket": "fail",
      "note": "Sh \u22120.05. Kalman hedge is the one that worked.",
      "ledger": {
        "id": "chan_ewa_ewc_linear",
        "token": "ewa_ewc_linear",
        "name": "EWA/EWC linear z-score",
        "family": "equity_chan",
        "status": "fail",
        "sharpe": -0.053,
        "cagr_pct": -2.78,
        "max_dd_pct": -50.73,
        "total_return_pct": -25.02,
        "rho_spy": null,
        "why": "Chan Algorithmic Trading suite (Ch.2\u20133; fidelity=book).",
        "description": "EWA/EWC linear z-score (equity_chan) \u2014 Chan Algorithmic Trading suite (Ch.2\u20133; fidelity=book).",
        "window_start": "2016-01-04",
        "window_end": "2026-04-02"
      },
      "rule": "Australia versus Canada (EWA/EWC) using a simple rolling hedge and a z-score: short the spread when it is rich, buy it when it is cheap. Chan's linear version, before the Kalman hedge."
    },
    {
      "token": "ewa_ewc_bollinger",
      "name": "EWA/EWC Bollinger spread",
      "chat": "Algorithmic trading strategy testing",
      "bucket": "fail",
      "note": "Sh 0.02. Same pair, worse encoder.",
      "ledger": {
        "id": "chan_ewa_ewc_bollinger",
        "token": "ewa_ewc_bollinger",
        "name": "EWA/EWC Bollinger spread",
        "family": "equity_chan",
        "status": "fail",
        "sharpe": 0.018,
        "cagr_pct": -1.17,
        "max_dd_pct": -42.98,
        "total_return_pct": -11.31,
        "rho_spy": null,
        "why": "Chan Algorithmic Trading suite (Ch.3; fidelity=book).",
        "description": "EWA/EWC Bollinger spread (equity_chan) \u2014 Chan Algorithmic Trading suite (Ch.3; fidelity=book).",
        "window_start": "2016-01-04",
        "window_end": "2026-04-02"
      },
      "rule": "The same Australia\u2013Canada spread, but entries come from a Bollinger band on the spread instead of a Kalman filter or a linear z-score."
    },
    {
      "token": "gld_gdx_bb",
      "name": "GLD/GDX Bollinger pair",
      "chat": "Algorithmic trading strategy testing",
      "bucket": "fail",
      "note": "Cointegration broke ~2008. USO-gate and Johansen-linear cousins also fail.",
      "ledger": {
        "id": "stk_gld_gdx_bb",
        "token": "gld_gdx_bb",
        "name": "GLD/GDX Bollinger pair",
        "family": "equity_statarb",
        "status": "fail",
        "sharpe": null,
        "cagr_pct": null,
        "max_dd_pct": null,
        "total_return_pct": -24.0,
        "rho_spy": null,
        "why": "Cointegration broke ~2008",
        "description": "GLD/GDX Bollinger pair (equity_statarb) \u2014 Cointegration broke ~2008",
        "window_start": "",
        "window_end": ""
      },
      "rule": "Gold bullion (GLD) versus gold miners (GDX). Trade the spread when it leaves a Bollinger band, betting the two stay tied."
    },
    {
      "token": "short_on_gap",
      "name": "Chan short-on-gap (SP100)",
      "chat": "Algorithmic trading strategy testing",
      "bucket": "fail",
      "note": "Mirror of decaying buy-on-gap. Sh \u22120.29.",
      "ledger": {
        "id": "chan_short_on_gap",
        "token": "short_on_gap",
        "name": "Short-on-gap mirror O\u2192C (sp100)",
        "family": "equity_chan",
        "status": "fail",
        "sharpe": -0.288,
        "cagr_pct": -0.31,
        "max_dd_pct": -3.97,
        "total_return_pct": -3.09,
        "rho_spy": null,
        "why": "Chan Algorithmic Trading suite (Ch.4; fidelity=book).",
        "description": "Short-on-gap mirror O\u2192C (sp100) (equity_chan) \u2014 Chan Algorithmic Trading suite (Ch.4; fidelity=book).",
        "window_start": "2016-01-04",
        "window_end": "2026-04-02"
      },
      "rule": "The mirror of buy-on-gap: short S&P 100 names that gap up at the open and cover them the same day. A test of whether the gap edge is symmetric."
    },
    {
      "token": "tsmom_tlt_250_25",
      "name": "Chan TSMOM on TLT only",
      "chat": "Algorithmic trading strategy testing",
      "bucket": "fail",
      "note": "Sh \u22120.15. Do not run single-bond TSMOM; use the 8-asset book.",
      "ledger": {
        "id": "chan_tsmom_tlt_250_25",
        "token": "tsmom_tlt_250_25",
        "name": "TSMOM TLT (250d/25d)",
        "family": "equity_chan",
        "status": "fail",
        "sharpe": -0.154,
        "cagr_pct": -3.08,
        "max_dd_pct": -38.87,
        "total_return_pct": -27.36,
        "rho_spy": null,
        "why": "Chan Algorithmic Trading suite (Ch.6; fidelity=book).",
        "description": "TSMOM TLT (250d/25d) (equity_chan) \u2014 Chan Algorithmic Trading suite (Ch.6; fidelity=book).",
        "window_start": "2016-01-04",
        "window_end": "2026-04-02"
      },
      "rule": "Time-series momentum on long bonds alone: the sign of TLT's 250-day return, updated on a 25-day clock. Chan's single-asset bond version."
    },
    {
      "token": "shannon_entropy",
      "name": "Viral Shannon entropy coil 0.3/20/1.5ATR",
      "chat": "Shannon entropy in trading",
      "bucket": "fail",
      "note": "Does not work as a stock signal. H<0.3 never fires on SPY daily (n=0; min H=0.47). The 69% claim is the unconditional 5-bar 1.5-ATR base rate (~62%). Causal p10+mom Sharpe 0.22 vs SPY 0.65. Stay-out-of-chop 0.41. Encoding is the strategy; none of sign/hist8/perm3/mag4 timed expansions.\n",
      "ledger": {
        "id": "shannon_entropy_viral_0p3",
        "token": "shannon_entropy",
        "name": "Shannon entropy coil (viral 0.3 / 20 / 1.5 ATR / 5-bar / 69%)",
        "family": "equity_info_theory",
        "status": "fail",
        "sharpe": 0.0,
        "cagr_pct": 0.0,
        "max_dd_pct": 0.0,
        "total_return_pct": null,
        "rho_spy": null,
        "why": "0.3 never fires on SPY daily 2004-2026 (n=0; p05 of sign H=0.81). Uncond P(5-bar range>1.5 ATR)=62.5%, so 69% is the base rate. Causal p10 mom Sharpe 0.22 vs SPY BH 0.65. Unsigned expansion is not a direction.",
        "description": "Normalized Shannon entropy of a 20-bar window (sign / hist8 / mag4 / perm3). Viral rule: H<0.3 then expect |move|>1.5 ATR within 5 bars ~69%. Traded as 20-bar momentum hold-5 when H<threshold. Yahoo daily, no costs.",
        "window_start": "2004-01-02",
        "window_end": "2026-09-03"
      },
      "rule": "Measure how \"random\" the last 20 bars are with a Shannon entropy score. The viral claim was that a very low score predicts a large move within five bars. We traded it as: when entropy is low, take the 20-bar momentum direction and hold five days. Daily prices, no costs."
    },
    {
      "token": "kalman_15m_fade",
      "name": "Viral Kalman 15m mean-reversion (CERN noise filter)",
      "chat": "CERN Kalman noise filter",
      "bucket": "fail",
      "note": "1d Kalman on price is an EMA (resid corr 1.0). SPY 15m fade WR 51.9% / Sh 0.11 / DD \u221225%, not 63% / 4.2%. Heavy-smooth = slow EMA, 151 trades. Chan pair Kalman is the version that worked. No local L2.\n",
      "ledger": {
        "id": "kalman_15m_fade_spy_2020_2026",
        "token": "kalman_15m_fade",
        "name": "Viral Kalman 15m mean-reversion (CERN noise filter)",
        "family": "equity_intraday",
        "status": "fail",
        "sharpe": 0.1077,
        "cagr_pct": 0.57,
        "max_dd_pct": -24.99,
        "total_return_pct": 3.76,
        "rho_spy": null,
        "why": "1d Kalman on price is an EMA (resid corr 1.0). SPY 15m fade WR 51.9% / Sh 0.11 / DD -25%, not 63% / 4.2%. 2bp RT Sh -0.74. Chan pair Kalman is the version that worked.",
        "description": "Fade |Kalman innovation z|>2 on 15m log-price; hold 2 bars (~30m); flatten EOD. Public Alpaca 1m resampled. Controls: EMA with same K*, rolling z, 2-state velocity.",
        "window_start": "2020-01-02",
        "window_end": "2026-06-18"
      },
      "rule": "On 15-minute bars, fade a move when a Kalman filter says price has jumped more than two standard errors from its estimate. Hold about 30 minutes and flatten by the close. Compared with a plain moving-average fade and a rolling z-score using the same data."
    },
    {
      "token": "shannon_entropy_basket",
      "name": "Entropy gate on TSMOM / sectors",
      "chat": "Shannon entropy in trading",
      "bucket": "fail",
      "note": "Entropy is not a participation overlay for a broad ETF book. Hard H gates raise DD to \u221225/\u221228%. Size \u221d (1\u2212H) +0.05 Sharpe, still loses to long-only TSMOM 0.84. Use the existing TSMOM sleeve.\n",
      "ledger": {
        "id": "shannon_entropy_basket",
        "token": "shannon_entropy_basket",
        "name": "Shannon entropy as TSMOM participation gate (ETF basket)",
        "family": "equity_info_theory",
        "status": "fail",
        "sharpe": 0.585,
        "cagr_pct": 3.96,
        "max_dd_pct": -14.7,
        "total_return_pct": null,
        "rho_spy": 0.17,
        "why": "Hard H gates raise DD (-28%) and cut Sharpe. Size-by-1H +0.05 Sharpe on tsmom8 perm3, loses on sectors. Long-only TSMOM 0.84 beats every entropy overlay. Entropy is not the engine for a broad ETF book.",
        "description": "TSMOM 3/6/12m L/S vol-norm monthly on 8 ETFs; entropy (perm3, 63d) scales weight by 1 minus trailing-year percentile. Not the viral 0.3/5-bar rule.",
        "window_start": "2011-01-03",
        "window_end": "2026-09-03"
      },
      "rule": "The eight-market trend book (stocks, bonds, gold, commodities, dollar), but shrink a market's weight when its recent entropy is high (noisier) and keep weight when the path looks more ordered. Monthly, not the five-bar viral rule."
    },
    {
      "token": "shannon_demon_twins",
      "name": "Demon on inverse-ETF twins",
      "chat": "Shannon's Demon backtesting script",
      "bucket": "fail",
      "note": "TSLA/SH and TQQQ/SQQQ lose to buy-and-hold. CRP sells the winner.",
      "ledger": {},
      "rule": "Shannon's rebalancing idea on two pairs that are built to move opposite each other: Tesla versus an inverse Tesla fund, and triple-long Nasdaq versus triple-short Nasdaq. Rebalance back toward 50/50."
    },
    {
      "token": "mu_wk_overlay",
      "name": "MU weekly short-call overlay on LEAPS",
      "chat": "Overnight MU trading",
      "bucket": "fail",
      "note": "Overlay lost vs naked LEAPS except 2022. Net short delta. No local MU chains.",
      "ledger": {
        "id": "mu_weekly_call_overlay_2026_08",
        "token": "mu_wk_overlay",
        "name": "MU weekly short-call overlay on ITM LEAPS (calendar butterfly)",
        "family": "options_single_name_overlay",
        "status": "fail",
        "sharpe": null,
        "cagr_pct": null,
        "max_dd_pct": null,
        "total_return_pct": null,
        "rho_spy": null,
        "why": "Selling 2 near-ATM weeklies per 0.85-delta LEAPS is net SHORT delta (-377 sh vs +747 sh); overlay alpha -19,446% over 10y on MU and account is ruined in every trending window. Only positive when MU goes sideways (+61% alpha 2020-2022).",
        "description": "Long deep-ITM LEAPS + sell short_mult weekly bodies + long upper wing same weekly expiry (PMCC stacked with bear call spread, not a true butterfly). BS-priced off EWMA realized vol - no single-name chains locally. Best config (1x body +10% OTM) still -5,026% alpha over 10y. High win rate 80-87% masks fat left tail (worst week -219k).",
        "window_start": "2016-01-04",
        "window_end": "2026-08-13"
      },
      "rule": "On Micron, hold a deep-in-the-money long-dated call and sell weekly calls against it, with a further-out weekly call as a cap. Priced from a volatility estimate because we do not have single-name option history. A covered-call overlay, not a pure butterfly."
    },
    {
      "token": "atm_straddle_vrp",
      "name": "ATM straddle/strangle on VRP",
      "chat": "Unique option trading strategies outline",
      "bucket": "fail",
      "note": "Did not clear Sharpe \u22651.5 under bid/ask. Literature winners were RR/put-write.",
      "ledger": {
        "id": "opt_lit_atm_straddle",
        "token": "atm_straddle_vrp",
        "name": "ATM straddles/strangles on VRP/VIX filters",
        "family": "options_theta",
        "status": "fail",
        "sharpe": null,
        "cagr_pct": null,
        "max_dd_pct": null,
        "total_return_pct": null,
        "rho_spy": null,
        "why": "Did not clear Sharpe>=1.5 under bid/ask",
        "description": "ATM straddles/strangles on VRP/VIX filters (options_theta) \u2014 Did not clear Sharpe>=1.5 under bid/ask",
        "window_start": "2016-01-04",
        "window_end": "2022-12-30"
      },
      "rule": "Sell a short-dated at-the-money SPY straddle when implied volatility exceeds recent realized volatility, and buy it back under the same bid/ask rules as the other option tests. The classic variance-risk bet with no regime switch."
    },
    {
      "token": "iv_calendar",
      "name": "IV calendar overlay",
      "chat": "Multi-sleeve portfolio architecture for trading bot",
      "bucket": "fail",
      "note": "Lost ~$10.5k; removing improved portfolio Sharpe. Dropped.",
      "ledger": {
        "id": "opt_iv_calendar",
        "token": "iv_calendar",
        "name": "IV calendar spread overlay",
        "family": "options_iv",
        "status": "fail",
        "sharpe": -5.61,
        "cagr_pct": null,
        "max_dd_pct": null,
        "total_return_pct": null,
        "rho_spy": null,
        "why": "Lost ~$10.5k; removing improved portfolio Sharpe; DROPPED",
        "description": "IV calendar spread overlay (options_iv) \u2014 Lost ~$10.5k; removing improved portfolio Sharpe; DROPPED",
        "window_start": "",
        "window_end": ""
      },
      "rule": "SPY calendar or diagonal spreads that sell near-term implied volatility and buy longer-dated volatility, entered from the same 15:45 chain."
    },
    {
      "token": "agentic_lit_family_collapse",
      "name": "Agentic lit loop \u2014 non-putwrite families OOS",
      "chat": "Replicate Horizon improvement loop",
      "bucket": "fail",
      "note": "Under IS/OOS floors all 14 promotions were putwrite. Preferred RR/mild-VIX families failed the OOS gate in that loop.",
      "ledger": {
        "id": "agentic_lit_non_putwrite_oos_fail",
        "token": "agentic_lit_family_collapse",
        "name": "Agentic lit: non-putwrite families fail OOS",
        "family": "options_literature",
        "status": "fail",
        "sharpe": null,
        "cagr_pct": null,
        "max_dd_pct": null,
        "total_return_pct": null,
        "rho_spy": null,
        "why": "Under IS Sh\u22650.8 / OOS Sh\u22650.5 floors, all 14 promotions were putwrite. Preferred RR/mild-VIX putvert seeds did not survive OOS in this mutate loop \u2014 family collapse / need stronger diversity injection.",
        "description": "Agentic lit: non-putwrite families fail OOS (options_literature) \u2014 Under IS Sh\u22650.8 / OOS Sh\u22650.5 floors, all 14 promotions were putwrite. Preferred RR/mild-VIX putve\u2026",
        "window_start": "2022-01-03",
        "window_end": "2024-12-31"
      },
      "rule": "An automated search over published SPY option rules. Many parameter variants of the same family (short skew, put writes) passed a Sharpe screen. The test was whether that is one idea repeated, or several independent edges."
    },
    {
      "token": "nasdaq_ma_breakout",
      "name": "NASDAQ MA breakout (broad)",
      "chat": "Trading strategy based on SMA and EMA slopes",
      "bucket": "fail",
      "note": "All years 2020\u201324 negative on broad universe.",
      "ledger": {
        "id": "stk_nasdaq_ma_brk",
        "token": "nasdaq_ma_breakout",
        "name": "NASDAQ MA breakout broad universe",
        "family": "equity_intraday",
        "status": "fail",
        "sharpe": -0.79,
        "cagr_pct": null,
        "max_dd_pct": null,
        "total_return_pct": null,
        "rho_spy": null,
        "why": "All years 2020-24 negative on broad universe",
        "description": "NASDAQ MA breakout broad universe (equity_intraday) \u2014 All years 2020-24 negative on broad universe",
        "window_start": "2020-01-01",
        "window_end": "2024-12-31"
      },
      "rule": "Intraday moving-average breakout on Nasdaq names: enter when price clears the average in the direction of the slope and flatten the same day. Scored from a large trade log of small per-trade gains."
    },
    {
      "token": "cm_intraday_dip",
      "name": "CrackingMarkets intraday dip",
      "chat": "Buying short-term dips in stocks",
      "bucket": "fail",
      "note": "Deeply negative even after tweaks (PDL long, relative washout, VWAP reclaim).",
      "ledger": {
        "id": "stk_cm_intraday_dip",
        "token": "cm_intraday_dip",
        "name": "CM intraday dip SP100",
        "family": "equity_intraday",
        "status": "fail",
        "sharpe": null,
        "cagr_pct": null,
        "max_dd_pct": null,
        "total_return_pct": -97.0,
        "rho_spy": null,
        "why": "Deeply negative even after tweaks",
        "description": "CM intraday dip SP100 (equity_intraday) \u2014 Deeply negative even after tweaks",
        "window_start": "",
        "window_end": ""
      },
      "rule": "The Cracking Markets dip rule moved inside the session: buy S&P 100 names after a sharp intraday drop, with the same trend and range filters, and flatten by the close."
    },
    {
      "token": "pdl_touch_long",
      "name": "Prior-day-low touch LONG (mirror)",
      "chat": "Buying short-term dips in stocks",
      "bucket": "fail",
      "note": "Mirror of the successful PDL short \u2014 long side destroyed (Sh \u22121.62).",
      "ledger": {
        "id": "dt_pdl_touch_long",
        "token": "pdl_touch_long",
        "name": "Prior-day-low touch LONG (mirror)",
        "family": "equity_intraday",
        "status": "fail",
        "sharpe": -1.62,
        "cagr_pct": -66.93,
        "max_dd_pct": null,
        "total_return_pct": -98.8,
        "rho_spy": null,
        "why": "Mirror of successful PDL short \u2014 long side destroyed.",
        "description": "Prior-day-low touch LONG (mirror) (equity_intraday) \u2014 Mirror of successful PDL short \u2014 long side destroyed.",
        "window_start": "2022-01-01",
        "window_end": "2025-12-31"
      },
      "rule": "The mirror of the prior-day-low short. Buy when price touches yesterday's low, betting it holds as support. Same mega-cap universe, flat by the close."
    },
    {
      "token": "vwap_reclaim_long",
      "name": "VWAP reclaim long SP100",
      "chat": "Buying short-term dips in stocks",
      "bucket": "fail",
      "note": "Learned failure. VWAP-fail short remains ideation only.",
      "ledger": {
        "id": "dt_vwap_reclaim",
        "token": "vwap_reclaim_long",
        "name": "VWAP reclaim long SP100",
        "family": "equity_intraday",
        "status": "fail",
        "sharpe": null,
        "cagr_pct": null,
        "max_dd_pct": null,
        "total_return_pct": -99.9,
        "rho_spy": null,
        "why": "Learned failure; try VWAP fail short as ideation only.",
        "description": "VWAP reclaim long SP100 (equity_intraday) \u2014 Learned failure; try VWAP fail short as ideation only.",
        "window_start": "",
        "window_end": ""
      },
      "rule": "On S&P 100 names, buy when price loses the session VWAP and then reclaims it. Flat by the close."
    },
    {
      "token": "atr_breakout_sp100",
      "name": "ATR breakout SP100 (no filters)",
      "chat": "Buying short-term dips in stocks",
      "bucket": "fail",
      "note": "Sh \u22121.84. Early+VIX+mega5 is the only cousin that worked.",
      "ledger": {
        "id": "dt_atr_breakout_sp100",
        "token": "atr_breakout_sp100",
        "name": "ATR breakout SP100 universe",
        "family": "equity_intraday",
        "status": "fail",
        "sharpe": -1.84,
        "cagr_pct": null,
        "max_dd_pct": null,
        "total_return_pct": -72.0,
        "rho_spy": null,
        "why": "Broad universe fails; mega5 + filters required.",
        "description": "ATR breakout SP100 universe (equity_intraday) \u2014 Broad universe fails; mega5 + filters required.",
        "window_start": "",
        "window_end": ""
      },
      "rule": "The average-true-range breakout used on five mega-caps, rerun on the whole S&P 100 without the early-session and low-VIX filters."
    },
    {
      "token": "yartseva_proxy",
      "name": "Yartseva multibagger factor proxy",
      "chat": "Trading ideas from multibagger stocks paper",
      "bucket": "fail",
      "note": "Weak/negative on random 80-name L/S \u2014 not paper fundamentals. Data challenge.",
      "ledger": {
        "id": "res_yartseva",
        "token": "yartseva_proxy",
        "name": "Yartseva multibagger factor crude proxy",
        "family": "equity_factor",
        "status": "fail",
        "sharpe": null,
        "cagr_pct": null,
        "max_dd_pct": null,
        "total_return_pct": null,
        "rho_spy": null,
        "why": "Weak/negative on random 80-name L/S \u2014 not paper fundamentals",
        "description": "Yartseva multibagger factor crude proxy (equity_factor) \u2014 Weak/negative on random 80-name L/S \u2014 not paper fundamentals",
        "window_start": "",
        "window_end": ""
      },
      "rule": "A rough stand-in for an academic \"multibagger\" factor (traits of stocks that later rise many-fold). Built from price and size data we have, not from the paper's fundamental fields, and tested long/short on a random 80-name sample."
    },
    {
      "token": "french_factor_family",
      "name": "French MOM / vol-target / factor grids",
      "chat": "French MOM",
      "bucket": "fail",
      "note": "2/83 discovery passers. 500+ grid cells. Do not reopen generic long-only factor sorts (ledger family equity_factor). Paper-era Timing Industry is the exception (promising, not live).",
      "ledger": {},
      "rule": "Ken French's published factor portfolios (market, size, value, and related sorts) held as a family. A baseline for whether a homemade factor mix beats just owning the market, using his data rather than a new signal."
    },
    {
      "token": "rl_options_ppo",
      "name": "RL options PPO / SB3 agent",
      "chat": "Options trading agent project structure",
      "bucket": "fail",
      "note": "No validated novel strategies. Segfaults on Mac in early runs.",
      "ledger": {
        "id": "opt_rl_ppo",
        "token": "rl_options_ppo",
        "name": "RL options agent SB3/PPO",
        "family": "options_rl",
        "status": "fail",
        "sharpe": null,
        "cagr_pct": null,
        "max_dd_pct": null,
        "total_return_pct": null,
        "rho_spy": null,
        "why": "Segfaults on Mac; no validated novel strategies",
        "description": "RL options agent SB3/PPO (options_rl) \u2014 Segfaults on Mac; no validated novel strategies",
        "window_start": "",
        "window_end": ""
      },
      "rule": "A reinforcement-learning agent (PPO) chooses SPY option structures inside a simulator. The run was a training attempt, not a finished rule with a locked test window."
    },
    {
      "token": "sim_actor",
      "name": "PPO actor on real Theta simulator",
      "chat": "World Model Agent",
      "bucket": "fail",
      "note": "Simulator-as-WM works; PPO-from-scratch does not (Sh \u22120.70 vs teacher +0.44). Churns Open/Close daily. Next try is BC then PPO, not more random PPO.",
      "ledger": {
        "id": "sim_actor_ppo_theta_2025v2",
        "token": "sim_actor",
        "name": "PPO actor on real Theta simulator (one-position)",
        "family": "options_wm",
        "status": "fail",
        "sharpe": -0.7,
        "cagr_pct": -3.4,
        "max_dd_pct": -6.3,
        "total_return_pct": null,
        "rho_spy": null,
        "why": "PPO-from-scratch on PortfolioSimulator+next-chain MTM churns daily (146 Open / 145 Close / 8 Hold) and loses to cash and RuleTeacher on 2025-2026. Actor -4.1% Sharpe -0.70 DD -6.3%. Teacher +5.3% Sharpe 0.44. Teacher 2016-2024 was -62% Sharpe -0.44 \u2014 the old imagination-actor teacher Sharpe ~3 was not this env. Simulator-as-WM wiring works; random 6D Gaussian PPO does not find a book.",
        "description": "6D Gaussian PPO, 80x60d windows, train 2016-2024, one-position credit structures, bid/ask, reward=next-session MTM/capital. No RSSM.",
        "window_start": "2025-01-02",
        "window_end": "2026-04-02"
      },
      "rule": "A small PPO policy on real SPY option chains: one credit structure at a time, trained on 2016\u20132024, rewarded on the next session's mark. No world model. A check of whether a learned policy beats the hand-built rules."
    },
    {
      "token": "wm_persist",
      "name": "Single-symbol SPY persistence teacher",
      "chat": "World Model Agent",
      "bucket": "fail",
      "note": "Base MA-slope SPY teacher is structurally negative (IS \u221260%). Filters shrink a loss; they cannot create an edge.",
      "ledger": {
        "id": "wm_trend_persistence_classifier_spy",
        "token": "wm_persist",
        "name": "Trend-persistence WM classifier (entry+exit gate)",
        "family": "equity_world_model",
        "status": "research_only",
        "sharpe": -5.34,
        "cagr_pct": null,
        "max_dd_pct": -17.77,
        "total_return_pct": null,
        "rho_spy": null,
        "why": "MA-slope single-symbol SPY teacher is structurally negative-edge (2020-2023 in-sample -60%, 2024 OOS -20%, 2025-26 OOS -31%); persistence/vol filters cut loss+DD ~10-20% but can't flip it positive. Persistence classifier itself has genuine skill (AUC 0.67-0.69 incl. zero-shot on QQQ/AAPL) vs raw direction prediction (~0 corr) -- validates trend-persistence as a WM target, but needs to gate a positive-edge base rule (e.g. cross-sectional confirm_entry), not single-symbol SPY.",
        "description": "OneStepReturnWM(vol)+PersistenceClassifier gating MaSlopeSingleSymbolTeacher entries/exits on SPY 5m bars. Vol forecast val_corr=0.077, persistence AUC=0.669 (SPY val), 0.678 (QQQ zero-shot), 0.690 (AAPL zero-shot).",
        "window_start": "2024-01-01",
        "window_end": "2024-12-31"
      },
      "rule": "A small model forecasts next-bar volatility and a second model scores whether a trend is likely to persist. Those scores gate entries and exits of the moving-average-slope teacher on 5-minute SPY."
    },
    {
      "token": "wm_persist_wf",
      "name": "Cross-sectional persistence gate (walk-forward)",
      "chat": "World Model Agent",
      "bucket": "fail",
      "note": "Ensemble mean below ungated confirm_entry. Seed noise dominated protocol differences. Predicting persistence \u2260 predicting payoff.",
      "ledger": {
        "id": "ml_persistence_gate_walkforward_alpha500",
        "token": "wm_persist_wf",
        "name": "ML persistence gate on confirm_entry_4b: walk-forward + seed-stability verdict",
        "family": "equity_world_model",
        "status": "fail",
        "sharpe": 1.6,
        "cagr_pct": null,
        "max_dd_pct": -24.0,
        "total_return_pct": null,
        "rho_spy": null,
        "why": "KILLS the earlier 'promising' claim. Proper walk-forward (each fold scored only by models trained on prior data, probabilities stitched into one causal panel) over 2023-01-03..2026-06-26 on alpha500: ungated confirm_entry_4b baseline ret+457.8% Sharpe1.75 DD-28.0% gross0.787. NO gate config beats it in expectation. Seed study (3 seeds): static-fit keep0.15 Sharpe 1.65+-0.06 (0/3 beat baseline), static keep0.3 1.64+-0.22 (1/3), 6m-retrain keep0.15 1.80+-0.13 (2/3), 6m-retrain keep0.3 1.60+-0.11 (0/3). 5-model seed ENSEMBLES (best-case variance reduction) collapse dispersion and converge BELOW baseline: keep0.15 1.60+-0.08, keep0.3 1.46+-0.04, 0/3 beat baseline -> true expected effect of the gate is NEGATIVE. Single lucky draws explain every prior positive: static seed17 hit 1.88 and 6m seed41 keep0.15 hit 1.95. Sub-window split shows why the original claim looked good: gate helps only when the base signal is degraded (2025-2026 baseline Sharpe 1.63 -> gated 2.23) and hurts when it is strong (2023-2024 baseline 1.85 -> best gate 1.68); the original holdout was exactly the favorable window. Adaptive switching (use gated book only while trailing baseline Sharpe < cut, 5 lookbacks x 4 cuts x 9 variants = 180 cells) gives no robust lift over always-gated. Retrain cadence/window (6m vs 3m vs rolling 2y vs static) is indistinguishable under +-0.1-0.2 Sharpe fit noise. Mechanism: gate AUC is genuinely 0.63-0.67 on the persistence label, but the confirm_entry book is positive-skew/tail-driven (median name ~0%), so raising average persistence probability does not raise expected PnL - filtering culls rare large winners along with losers. Also fixed: absolute prob thresholds are non-stationary (label base rate falls 0.36->0.26 from 2023-24 to 2025-26 folds, silently making a fixed 0.55 cut far stricter); use per-fold quantile-calibrated (keep-frac) thresholds instead.",
        "description": "Walk-forward retrain protocol for CrossSectionalPersistenceGate over the confirm_entry_4b MA-slope intraday book (alpha500, top-10). Harness builds panels/dataset once, trains per fold on trailing data only with an inner time-ordered val split, stitches per-fold probability slices into one causal panel, and supports fixed or per-fold quantile-calibrated thresholds, multi-seed and seed-ensembled fits. Verdict: no reliable improvement over the ungated book; gate is a de-risking lever whose value is regime-conditional, not alpha.",
        "window_start": "2023-01-03",
        "window_end": "2026-06-26"
      },
      "rule": "The same persistence gate, retrained on a walk-forward schedule so the model only sees data available at the time, then applied to the intraday slope book."
    },
    {
      "token": "spx_regime_ss_v2",
      "name": "SPX Regime State Space v2",
      "chat": "Trading strategy development",
      "bucket": "fail",
      "note": "~97% cash / whipsaw. Blocked in approach_catalog.",
      "ledger": {
        "id": "opt_spx_regime_v2",
        "token": "spx_regime_ss_v2",
        "name": "SPX Regime State Space v2 theta router",
        "family": "options_theta",
        "status": "fail",
        "sharpe": -2.2,
        "cagr_pct": null,
        "max_dd_pct": null,
        "total_return_pct": -15.9,
        "rho_spy": null,
        "why": "~97% days cash; anti-Hurst + short hold = whipsaw",
        "description": "SPX Regime State Space v2 theta router (options_theta) \u2014 ~97% days cash; anti-Hurst + short hold = whipsaw",
        "window_start": "",
        "window_end": ""
      },
      "rule": "A regime model labels each day and routes SPY option structures (which spread to sell, or cash). The tested version sat in cash on most days and flipped quickly when it did trade."
    },
    {
      "token": "ma_slope_intraday_vwap",
      "name": "confirm_4b + require above VWAP",
      "chat": "Trading strategy based on SMA and EMA slopes",
      "bucket": "fail",
      "note": "\u2212734pp vs confirm_4b. Over-filters good trades.",
      "ledger": {
        "id": "ma_slope_intraday_vwap_on_confirm4b",
        "token": "ma_slope_intraday_vwap",
        "name": "MA slope confirm_4b + require_above_vwap",
        "family": "equity_intraday",
        "status": "fail",
        "sharpe": 0.94,
        "cagr_pct": 29.3,
        "max_dd_pct": -37.1,
        "total_return_pct": 425.2,
        "rho_spy": null,
        "why": "VWAP filter on confirm_4b hurts badly: +425% vs +1159% ref (\u2212734pp). Over-filters good trades.",
        "description": "MA slope confirm_4b + require_above_vwap (equity_intraday) \u2014 VWAP filter on confirm_4b hurts badly: +425% vs +1159% ref (\u2212734pp). Over-filters good trades.",
        "window_start": "2020-01-02",
        "window_end": "2026-06-26"
      },
      "rule": "The intraday slope book, but a name is allowed only if it is also above the session VWAP. Same confirmation window, top-five cap, out by the close."
    },
    {
      "token": "ma_slope_intraday_liq",
      "name": "confirm_4b + $10/$20M ADV floor",
      "chat": "Trading strategy based on SMA and EMA slopes",
      "bucket": "fail",
      "note": "Universe collapses; return +26% / Sh 0.28. Size caps beat universe cuts.",
      "ledger": {
        "id": "ma_slope_intraday_liq10_adv20m",
        "token": "ma_slope_intraday_liq",
        "name": "MA slope confirm_4b + liquidity floor $10 / $20M ADV",
        "family": "equity_intraday",
        "status": "fail",
        "sharpe": 0.28,
        "cagr_pct": 3.6,
        "max_dd_pct": -38.8,
        "total_return_pct": 26.0,
        "rho_spy": null,
        "why": "Liquidity filters remove most edge: universe \u219248 names, return +26% Sh0.28. Confirms explosive winners live in micro/low-ADV names. Prefer size caps over hard liquidity cuts for this sleeve.",
        "description": "MA slope confirm_4b + liquidity floor $10 / $20M ADV (equity_intraday) \u2014 Liquidity filters remove most edge: universe \u219248 names, return +26% Sh0.28. Confirms explosive wi\u2026",
        "window_start": "2020-01-02",
        "window_end": "2026-06-26"
      },
      "rule": "The intraday slope book restricted to names above a price floor and a dollar-volume floor ($10, or $20 million average daily volume). A test of whether the edge lives in liquid names."
    },
    {
      "token": "ma_slope_intraday_rising",
      "name": "confirm_4b + price must rise during confirm",
      "chat": "Trading strategy based on SMA and EMA slopes",
      "bucket": "fail",
      "note": "Over-filters; worse DD \u221244%.",
      "ledger": {
        "id": "ma_slope_intraday_rising_confirm",
        "token": "ma_slope_intraday_rising",
        "name": "MA slope confirm_4b + price rising during confirm window",
        "family": "equity_intraday",
        "status": "fail",
        "sharpe": 1.11,
        "cagr_pct": 43.6,
        "max_dd_pct": -43.6,
        "total_return_pct": 935.4,
        "rho_spy": null,
        "why": "require close[j2]>close[j1] over-filters: +935% vs +1159%, worse DD \u221243.6%.",
        "description": "MA slope confirm_4b + price rising during confirm window (equity_intraday) \u2014 require close[j2]>close[j1] over-filters: +935% vs +1159%, worse DD \u221243.6%.",
        "window_start": "2020-01-02",
        "window_end": "2026-06-26"
      },
      "rule": "The intraday slope book with one extra demand: price itself must be higher at the end of the confirmation window than at the start."
    },
    {
      "token": "ride_bad_knobs",
      "name": "Ride-rockets acceleration / raw-rank / sticky-buffer",
      "chat": "Momentum ETF strategy development",
      "bucket": "fail",
      "note": "Acceleration too short, raw price rank favors vol rockets, sticky buffer hurts. Dump fade names.",
      "ledger": {
        "id": "stk_ride_accel_raw_sticky_fail",
        "token": "ride_bad_knobs",
        "name": "Ride-rockets acceleration / raw-rank / sticky-buffer",
        "family": "equity_momentum",
        "status": "fail",
        "sharpe": 0.42,
        "cagr_pct": 7.8,
        "max_dd_pct": -36.4,
        "total_return_pct": 116.4,
        "rho_spy": null,
        "why": "Acceleration (too short), raw price rank (vol rockets), and sticky buffer all hurt; dump fade names, keep risk-adj rank",
        "description": "Ride-rockets acceleration / raw-rank / sticky-buffer (equity_momentum) \u2014 Acceleration (too short), raw price rank (vol rockets), and sticky buffer all hurt; dump fade nam\u2026",
        "window_start": "2016-01-04",
        "window_end": "2026-04-02"
      },
      "rule": "Three ride-rockets variants that were expected to help and did not: rank by short-term acceleration, rank by raw price change with no volatility adjustment, and keep last month's names unless they fall far (a sticky buffer)."
    },
    {
      "token": "spmo_enhanced7",
      "name": "SPMO enhanced all-7 filters",
      "chat": "Momentum ETF strategy development",
      "bucket": "fail",
      "note": "Starves exposure (~20% gross); cash-yield Sharpe artifact. Do not stack 1\u20137 together.",
      "ledger": {
        "id": "stk_spmo_enhanced7_starve",
        "token": "spmo_enhanced7",
        "name": "SPMO enhanced all-7 filters (starved exposure)",
        "family": "equity_momentum",
        "status": "fail",
        "sharpe": 0.72,
        "cagr_pct": 15.0,
        "max_dd_pct": -39.7,
        "total_return_pct": 318.9,
        "rho_spy": null,
        "why": "Filters stacked too hard (~1.4 names, ~20% gross); cash yield inflates path; do not stack 1-7 together",
        "description": "SPMO enhanced all-7 filters (starved exposure) (equity_momentum) \u2014 Filters stacked too hard (~1.4 names, ~20% gross); cash yield inflates path; do not stack 1-7 tog\u2026",
        "window_start": "2016-01-04",
        "window_end": "2026-04-02"
      },
      "rule": "The S&P momentum ranking with all seven quality and trend filters turned on at once. The stack left the book holding about one name and mostly cash."
    },
    {
      "token": "vxx_only_5strat",
      "name": "Standalone VXX-only 5-strategy book",
      "chat": "VXX options trading strategies",
      "bucket": "fail",
      "note": "No sleeve hit Sharpe \u22651.5 over a full decade. 2020 hurt wide short calls.",
      "ledger": {
        "id": "opt_vxx_only_decade",
        "token": "vxx_only_5strat",
        "name": "Standalone VXX-only 5-strategy book",
        "family": "options_vxx",
        "status": "fail",
        "sharpe": null,
        "cagr_pct": null,
        "max_dd_pct": null,
        "total_return_pct": null,
        "rho_spy": null,
        "why": "No sleeve hit Sharpe>=1.5 over full decade; 2020 hurt wide short calls",
        "description": "Standalone VXX-only 5-strategy book (options_vxx) \u2014 No sleeve hit Sharpe>=1.5 over full decade; 2020 hurt wide short calls",
        "window_start": "2016-01-01",
        "window_end": "2026-01-01"
      },
      "rule": "Five VXX option strategies run as their own book, with no SPY premium and no stock sleeves. Includes short calls and long hedges across the decade."
    },
    {
      "token": "vxx_long_put_roll_carry_sweep",
      "name": "VXX long-put roll-carry",
      "chat": "VXX options trading strategies",
      "bucket": "fail",
      "note": "144 configs; median Sh 0.08; max 0.54. Thesis under-monetized.",
      "ledger": {
        "id": "vxx_long_put_sweep_parent",
        "token": "vxx_long_put_roll_carry_sweep",
        "name": "VXX long put roll-carry parameter sweep (144 configs)",
        "family": "options_vxx",
        "status": "fail",
        "sharpe": null,
        "cagr_pct": null,
        "max_dd_pct": null,
        "total_return_pct": null,
        "rho_spy": null,
        "why": "Sweep n=144; median Sharpe=0.08; max=0.54; thesis under-monetized.",
        "description": "VXX long put roll-carry parameter sweep (144 configs) (options_vxx) \u2014 Sweep n=144; median Sharpe=0.08; max=0.54; thesis under-monetized.",
        "window_start": "",
        "window_end": ""
      },
      "rule": "Buy VXX puts and roll them, across 144 combinations of strike, tenor, and roll timing, looking for a carry that pays more than the decay. A parameter sweep of one hedge idea."
    },
    {
      "token": "equity_beta_option_sleeves",
      "name": "QQQ/IWM/GLD option structures as VRP complements",
      "chat": "Option strategies for uncorrelated instruments",
      "bucket": "fail",
      "note": "Screen was looking for low-SPY-\u03c1. QQQ/IWM (equity beta) and most GLD structures failed or were weak. Canonical 8 sleeves dropped them on purpose.",
      "ledger": {},
      "rule": "SPY option structures chosen because they behave like owning stock (call spreads, risk reversals that are long delta). A test of whether \"equity beta in options\" adds anything beyond holding the ETF."
    },
    {
      "token": "zarattini_orb_or60",
      "name": "Zarattini ORB 60-minute opening range",
      "chat": "Five-minute opening range breakout",
      "bucket": "fail",
      "note": "Negative return. Longer opening range hurts.",
      "ledger": {
        "id": "orb_or60_2020_2023",
        "token": "zarattini_orb_or60",
        "name": "Zarattini ORB OR=60m (2020-2023 full universe)",
        "family": "equity_intraday",
        "status": "fail",
        "sharpe": -0.23,
        "cagr_pct": -6.95,
        "max_dd_pct": -38.48,
        "total_return_pct": -24.39,
        "rho_spy": null,
        "why": "OR60 negative \u2014 longer opening range hurts.",
        "description": "Zarattini ORB OR=60m (2020-2023 full universe) (equity_intraday) \u2014 OR60 negative \u2014 longer opening range hurts.",
        "window_start": "2020-01-02",
        "window_end": "2023-12-29"
      },
      "rule": "Stocks-in-play opening-range breakout with a 60-minute opening range instead of 5 or 30 minutes, on the 2020\u20132023 universe."
    },
    {
      "token": "orb_tqqq_zarattini",
      "name": "TQQQ 5m ORB (paper leverage workaround)",
      "chat": "Zarattini QQQ ORB catalog",
      "bucket": "fail",
      "note": "Paper punchline (+1,484%, Sh 1.18, zero slip, 2016\u20132023). Local 0-slip 2020\u20132026 is still +251% / Sh 0.71, but 2.2\u00a2/share (independent replication break-even) \u2192 \u221243% / Sh \u22120.06 / DD \u221268%. Tight OR stops plus 3x ETF make the headline unusable. Keep QQQ 0-slip as the pedagogical weak row; do not size this with TQQQ.\n",
      "ledger": {
        "id": "orb_tqqq_zarattini_slip22_2020_2026",
        "token": "orb_tqqq_zarattini",
        "name": "TQQQ 5m ORB with 2.2c/share slippage",
        "family": "equity_intraday",
        "status": "fail",
        "sharpe": -0.06,
        "cagr_pct": -8.24,
        "max_dd_pct": -67.74,
        "total_return_pct": -42.6,
        "rho_spy": -0.04,
        "why": "Paper +1484% assumes zero slip. 2.2c/share (replication break-even) \u2192 -43% / Sh -0.06 / DD -68% on 2020-2026. Do not size ORB in TQQQ.",
        "description": "Same 5m ORB rules as orb_qqq_zarattini on TQQQ. Paper used TQQQ to dodge 4x PDT leverage caps. Tight OR stops plus 3x ETF make fills the whole story.",
        "window_start": "2020-01-02",
        "window_end": "2026-06-24"
      },
      "rule": "The QQQ 5-minute opening-range rule applied to TQQQ, the triple-levered Nasdaq ETF the paper used to avoid pattern-day-trader leverage caps. Extra per-share cost, because the tight stops meet a 3x product."
    },
    {
      "token": "orb_qqq_spy_or_agree",
      "name": "QQQ ORB requires SPY first-candle agreement",
      "chat": "Zarattini QQQ ORB catalog",
      "bucket": "fail",
      "note": "Independent NQ 09:25 filter does not transfer to SPY 5m OR. Sh 0.60 vs 0.81 baseline (0-slip); 2.2\u00a2 Sh 0.34. Do not use SPY as an NQ proxy.\n",
      "ledger": {
        "id": "orb_qqq_spy_or_agree_2020_2026",
        "token": "orb_qqq_spy_or_agree",
        "name": "QQQ ORB requires SPY first-candle agreement",
        "family": "equity_intraday",
        "status": "fail",
        "sharpe": 0.6,
        "cagr_pct": 12.83,
        "max_dd_pct": -29.15,
        "total_return_pct": 117.9,
        "rho_spy": null,
        "why": "SPY 5m OR is a bad NQ proxy. Sh 0.60 vs 0.81; 2.2c Sh 0.34. Do not reopen.",
        "description": "Require SPY first 5m candle direction to match QQQ before taking the paper ORB.",
        "window_start": "2020-01-02",
        "window_end": "2026-06-24"
      },
      "rule": "Take the QQQ opening-range trade only when SPY's first 5-minute candle points the same way."
    },
    {
      "token": "zarattini_orb_or_quality",
      "name": "ORB range/body quality filters",
      "chat": "Five-minute opening range breakout",
      "bucket": "fail",
      "note": "min_or_range_atr and min_body_frac hurt Sharpe and worsen DD. Do not re-propose.",
      "ledger": {
        "id": "orb_q_smoke_quality_filters",
        "token": "zarattini_orb_or_quality",
        "name": "ORB quality: OR range/body filters (400-sym smoke)",
        "family": "equity_intraday",
        "status": "fail",
        "sharpe": 1.81,
        "cagr_pct": 84.17,
        "max_dd_pct": -30.33,
        "total_return_pct": 962.1,
        "rho_spy": null,
        "why": "min_or_range_atr/max + min_body_frac hurt Sharpe and worsen DD vs unfiltered. Do not re-propose as default quality gate.",
        "description": "ORB quality: OR range/body filters (400-sym smoke) (equity_intraday) \u2014 min_or_range_atr/max + min_body_frac hurt Sharpe and worsen DD vs unfiltered. Do not re-propose a\u2026",
        "window_start": "2020-01-02",
        "window_end": "2023-12-29"
      },
      "rule": "Stocks-in-play opening-range breakout, but skip ranges that are too small, too large, or mostly wick rather than body. A 400-symbol sample."
    },
    {
      "token": "zarattini_orb_stop15",
      "name": "ORB 15% ATR stop (vs paper 10%)",
      "chat": "Five-minute opening range breakout",
      "bucket": "fail",
      "note": "Wider stop cuts Sharpe 2.22\u21921.19. Keep paper 10% ATR stop.",
      "ledger": {
        "id": "orb_q_smoke_stop15",
        "token": "zarattini_orb_stop15",
        "name": "ORB quality: 15% ATR stop (400-sym smoke)",
        "family": "equity_intraday",
        "status": "fail",
        "sharpe": 1.19,
        "cagr_pct": 36.61,
        "max_dd_pct": -22.35,
        "total_return_pct": 235.5,
        "rho_spy": null,
        "why": "Wider stop (0.15 ATR) cuts Sharpe hard (2.22\u21921.19 baseline). Keep paper 10% ATR stop.",
        "description": "ORB quality: 15% ATR stop (400-sym smoke) (equity_intraday) \u2014 Wider stop (0.15 ATR) cuts Sharpe hard (2.22\u21921.19 baseline). Keep paper 10% ATR stop.",
        "window_start": "2020-01-02",
        "window_end": "2023-12-29"
      },
      "rule": "The same opening-range breakout with a wider stop (15% of the average true range instead of the paper's 10%). A 400-symbol sample."
    },
    {
      "token": "qs_top15_book_fit",
      "name": "QS top-15 \u201cbook-fit\u201d portfolio",
      "chat": "Trading strategies evaluation",
      "bucket": "fail",
      "note": "Smooth high Sharpe with high SPY beta \u2014 not an orthogonal diversifier. Look-ahead inflated the early ranking.",
      "ledger": {
        "id": "qs_top15_book_fit",
        "token": "qs_top15_book_fit",
        "name": "QS top-15 book-fit portfolio",
        "family": "equity_qs_port",
        "status": "research_only",
        "sharpe": 2.05,
        "cagr_pct": 11.54,
        "max_dd_pct": -5.6,
        "total_return_pct": 206.0,
        "rho_spy": null,
        "why": "Smooth trend stack with high SPY beta \u2014 not an orthogonal diversifier.",
        "description": "QS top-15 book-fit portfolio (equity_qs_port) \u2014 Smooth trend stack with high SPY beta \u2014 not an orthogonal diversifier.",
        "window_start": "2016-01-04",
        "window_end": "2026-04-02"
      },
      "rule": "The 15 seasonality and overnight rules that best fit the existing book, held together. A portfolio test of \"more calendar edges,\" scored for whether they diversify SPY or just clone it."
    },
    {
      "token": "spy_ovn_i14_vix_cooling",
      "name": "Overnight I14 elevated-VIX + RSI cooling",
      "chat": "Overnight SPY strategy",
      "bucket": "fail",
      "note": "Sharpe \u22120.28. Fear baseline still 0.44 \u2014 cooling filter killed the edge.",
      "ledger": {},
      "rule": "One overnight SPY rule from the 25-idea grid: hold the close-to-open only when a short VIX indicator is cooling off (fear easing), not merely when VIX is low."
    },
    {
      "token": "sector_dip_rsi",
      "name": "Legacy SPDR sector RSI dip",
      "chat": "Buying short-term dips in stocks",
      "bucket": "fail",
      "note": "Deprecated; replaced by CrackingMarkets SP100 dip.",
      "ledger": {
        "id": "stk_sector_dip_legacy",
        "token": "sector_dip_rsi",
        "name": "Legacy SPDR sector RSI dip",
        "family": "equity_dip",
        "status": "deprecated",
        "sharpe": null,
        "cagr_pct": null,
        "max_dd_pct": null,
        "total_return_pct": null,
        "rho_spy": null,
        "why": "Replaced by CrackingMarkets SP100 dip",
        "description": "Legacy SPDR sector RSI dip (equity_dip) \u2014 Replaced by CrackingMarkets SP100 dip",
        "window_start": "",
        "window_end": ""
      },
      "rule": "The older dip rule: buy a SPDR sector ETF after its RSI washes out, and sell on a rebound or a time stop. Replaced later by the single-stock Cracking Markets dip."
    },
    {
      "token": "vxx_legacy_9010",
      "name": "Legacy VXX 90/10 bear-call + long-call JSONL",
      "chat": "VXX options regime strategy",
      "bucket": "fail",
      "note": "Deprecated. Long-call path dominated by rare large winners. Use vxx_regime_stack.",
      "ledger": {
        "id": "opt_vxx_legacy_9010",
        "token": "vxx_legacy_9010",
        "name": "Legacy VXX bear-call + long-call 90/10 JSONL",
        "family": "options_vxx",
        "status": "deprecated",
        "sharpe": null,
        "cagr_pct": null,
        "max_dd_pct": null,
        "total_return_pct": null,
        "rho_spy": null,
        "why": "Replaced by dynamic regime stack; long-call path dominated by rare large winners",
        "description": "Legacy VXX bear-call + long-call 90/10 JSONL (options_vxx) \u2014 Replaced by dynamic regime stack; long-call path dominated by rare large winners",
        "window_start": "2016-01-01",
        "window_end": "2026-12-31"
      },
      "rule": "The older VXX pair: 90% of the risk in short call spreads and 10% in long calls, merged from trade logs. Kept as the baseline the regime stack replaced."
    },
    {
      "token": "lit_sum_mode",
      "name": "Lit stack sum-mode / exit-day combine",
      "chat": "Multi-sleeve portfolio architecture for trading bot",
      "bucket": "fail",
      "note": "Methodology fail \u2014 understates DD (~3% vs ~15% MTM). Never cite as headline risk.",
      "ledger": {
        "id": "cmb_sum_mode_lit",
        "token": "lit_sum_mode",
        "name": "Lit stack sum-mode / exit-day combine",
        "family": "combine",
        "status": "deprecated",
        "sharpe": null,
        "cagr_pct": null,
        "max_dd_pct": -3.0,
        "total_return_pct": null,
        "rho_spy": null,
        "why": "Understates DD vs MTM; do not cite for headline risk",
        "description": "Lit stack sum-mode / exit-day combine (combine) \u2014 Understates DD vs MTM; do not cite for headline risk",
        "window_start": "",
        "window_end": ""
      },
      "rule": "Not a strategy. A way of adding option-sleeve profits only on the day a trade closes, which hides the drawdown while the position is open. Scored so that path is not quoted as the risk of the book."
    },
    {
      "token": "spmo_cap_mom",
      "name": "Legacy SPMO bob50 / cap-weighted momentum",
      "chat": "Momentum ETF strategy development",
      "bucket": "fail",
      "note": "Deprecated; superseded by ride_rockets 50/50. Sharpe partly a cash/low-gross artifact.",
      "ledger": {
        "id": "res_spmo",
        "token": "spmo_cap_mom",
        "name": "SPMO best-of-best top50 (legacy bob50)",
        "family": "equity_momentum",
        "status": "deprecated",
        "sharpe": 0.85,
        "cagr_pct": 15.3,
        "max_dd_pct": -32.2,
        "total_return_pct": 329.6,
        "rho_spy": null,
        "why": "Superseded by ride_rockets 50/50; bob50 Sharpe partly cash/low-gross artifact (~20% invested)",
        "description": "SPMO best-of-best top50 (legacy bob50) (equity_momentum) \u2014 Superseded by ride_rockets 50/50; bob50 Sharpe partly cash/low-gross artifact (~20% invested)",
        "window_start": "2016-01-04",
        "window_end": "2026-04-02"
      },
      "rule": "An older S&P momentum book: the 50 names with the best blended momentum, often only partly invested. The predecessor of the ride-rockets mix."
    },
    {
      "token": "kalman_tv_r",
      "name": "Time-varying R Kalman 15m fade",
      "chat": "CERN Kalman noise filter",
      "bucket": "fail",
      "note": "K actually moves (not AMA clone) and still loses. Best mega5 cell Sh \u22120.34 / OOS 0.53 vs BH OOS 0.95 after 2 bp. Do not reopen 15m fades.\n",
      "ledger": {
        "id": "kalman_tv_r_mega5_15m_2020_2026",
        "token": "kalman_tv_r",
        "name": "Time-varying R Kalman 15m fade (mega5)",
        "family": "equity_intraday",
        "status": "fail",
        "sharpe": -0.345,
        "cagr_pct": -2.66,
        "max_dd_pct": -37.15,
        "total_return_pct": -15.99,
        "rho_spy": null,
        "why": "K actually moves (vs AMA resid corr 0.69, not a clone) and still loses after 2bp. Best cell tvr_fade top-n Sh -0.34 / OOS 0.53 / DD -37 vs BH OOS 0.95. Do not reopen 15m Kalman fades.",
        "description": "1m-range R_t Kalman fade on AAPL/MSFT/NVDA/AMZN/GOOGL 15m; 2bp RT; flatten EOD. AMA control.",
        "window_start": "2020-01-02",
        "window_end": "2026-06-18"
      },
      "rule": "On 15-minute bars of five mega-caps, a Kalman filter whose noise estimate changes with the last minute's range. Fade the residual when it stretches, and flatten by the close. Charged 2 basis points round trip."
    },
    {
      "token": "kalman_pullback",
      "name": "Kalman-velocity pullback in trend",
      "chat": "CERN Kalman noise filter",
      "bucket": "fail",
      "note": "mega5 15m 2d_tvr_pullback top-n Sh \u22120.27 / OOS \u22120.49. Not a confirm_4b skip either.",
      "ledger": {
        "id": "kalman_pullback_mega5_15m_2020_2026",
        "token": "kalman_pullback",
        "name": "Kalman-velocity pullback in trend (mega5 15m)",
        "family": "equity_intraday",
        "status": "fail",
        "sharpe": -0.269,
        "cagr_pct": -1.72,
        "max_dd_pct": -18.9,
        "total_return_pct": -10.61,
        "rho_spy": null,
        "why": "Buy dip when Kalman vel>0. 2d_tvr_pullback top-n WR 52% Sh -0.27 / OOS -0.49 / DD -19 after 2bp. EOD and mom variants worse.",
        "description": "Long residual < -z only when Kalman velocity > 0; mega5 15m; 2bp RT.",
        "window_start": "2020-01-02",
        "window_end": "2026-06-18"
      },
      "rule": "On the same 15-minute mega-caps, buy a dip in the Kalman residual only when the filter's velocity is still up (a pullback inside a trend, not a fade of every extreme)."
    },
    {
      "token": "qs_double_seven",
      "name": "Connors Double Seven",
      "chat": "Trading strategies evaluation",
      "bucket": "fail",
      "note": "15 SPY days 2016\u20132024, +2% / Sh 0.07. OOS never fires. Sparse, not a sleeve.",
      "ledger": {
        "id": "qs_pdf_double_seven_2016_2024",
        "token": "qs_double_seven",
        "name": "Connors Double Seven (7 down \u2192 long SPY 7d)",
        "family": "equity_qs",
        "status": "fail",
        "sharpe": 0.073,
        "cagr_pct": 0.23,
        "max_dd_pct": -12.35,
        "total_return_pct": 2.08,
        "rho_spy": 0.262,
        "why": "15 SPY sessions 2016-2024, +2% / Sh 0.07 / invested 0.7% of days. OOS 2022-24 never fires. Too sparse to be a sleeve.",
        "description": "After 7 consecutive SPY down closes, long 7 sessions else cash.",
        "window_start": "2016-01-04",
        "window_end": "2024-12-31"
      },
      "rule": "Connors' Double Seven: after seven SPY down closes in a row, buy and hold for seven sessions. Otherwise cash."
    },
    {
      "token": "vwap_fail_short",
      "name": "VWAP-fail short",
      "chat": "Buying short-term dips in stocks",
      "bucket": "fail",
      "note": "mega5 2022\u201325 Sh \u22121.89 / \u221283% / 6,154 trades. Mirror of failed VWAP reclaim long.",
      "ledger": {
        "id": "vwap_fail_short_mega5_2022_2025",
        "token": "vwap_fail_short",
        "name": "VWAP-fail short (day-trading idea 54)",
        "family": "equity_intraday",
        "status": "fail",
        "sharpe": -1.892,
        "cagr_pct": null,
        "max_dd_pct": null,
        "total_return_pct": -83.5,
        "rho_spy": null,
        "why": "mega5 2022-2025: 6154 trades, Sh -1.89, -83.5%, avg -0.10%/trade. Mirror of failed VWAP reclaim long.",
        "description": "Short VWAP fail on mega5; flatten EOD. Idea 54 from the complementary day-trading list.",
        "window_start": "2022-01-03",
        "window_end": "2025-12-31"
      },
      "rule": "On five mega-caps, short when price tries to reclaim the session VWAP and fails. Cover by the close. The mirror of the VWAP-reclaim long."
    },
    {
      "token": "delta_hedged_vrp",
      "name": "Delta-hedged ATM 30d short straddle",
      "chat": "Volatility risk premium strategies in options trading",
      "bucket": "fail",
      "note": "Theta SPY 15:45 2016\u20132017 smoke \u22125.6% / Sh \u22120.86 / DD \u221211%, 26 opens. Daily delta hedge does not rescue ATM VRP. Stay with 4-regime VRP engine.\n",
      "ledger": {
        "id": "delta_hedged_vrp_atm30_2016_2017",
        "token": "delta_hedged_vrp",
        "name": "Delta-hedged short ATM 30d straddle (Tilgenkamp smoke)",
        "family": "options_theta",
        "status": "fail",
        "sharpe": -0.856,
        "cagr_pct": -3.75,
        "max_dd_pct": -10.77,
        "total_return_pct": -5.56,
        "rho_spy": null,
        "why": "Daily share-hedge to ~0 delta does not rescue ATM VRP. Theta SPY 15:45 2016-01-04 to 2017-06-30: 26 opens, always in, -5.6% / Sh -0.86 / DD -11%. Do not extend.",
        "description": "Short 1 ATM ~30 DTE straddle at bid; daily hedge SPY shares so 100*(dc+dp)+shares~0; flatten <7 DTE at ask. MTM mid.",
        "window_start": "2016-01-04",
        "window_end": "2017-06-30"
      },
      "rule": "Sell a one-month at-the-money SPY straddle, then each day trade SPY shares so the option delta is about flat. Close before the last week. A test of whether the variance premium survives once directional risk is hedged."
    },
    {
      "token": "intrad_vrp",
      "name": "Remaining-session VRP in VIXY/SVXY",
      "chat": "Intraday vol arb",
      "bucket": "fail",
      "note": "Active 15m reeval, flatten EOD, 5bp, 2020\u20132026: \u221255% / Sh \u22120.36 / DD \u221269%. Daily round-trip on vol ETNs eats the IV\u2212RV gap. Not a substitute for the daily 4-regime VRP engine.\n",
      "ledger": {
        "id": "stk_intrad_vrp",
        "token": "intrad_vrp",
        "name": "Remaining-session VRP (VIXY/SVXY, flatten EOD)",
        "family": "equity_vol",
        "status": "fail",
        "sharpe": -0.3639,
        "cagr_pct": -11.62,
        "max_dd_pct": -69.09,
        "total_return_pct": -55.06,
        "rho_spy": null,
        "why": "Active 15m IV-RV day-trade in VIXY/SVXY dies on daily round-trip; 5bp 2020-2026 -55% / Sh -0.36 / DD -69%. Not a substitute for 4-regime VRP or vol_edge.",
        "description": "After 30m SPY RV vs prior-close VIX9D, long VIXY or SVXY, reeval every 15m, flatten 15:55.",
        "window_start": "2020-01-02",
        "window_end": "2026-06-25"
      },
      "rule": "After the first 30 minutes, compare SPY's realized move with a short-dated VIX reading. If implied volatility is rich, buy the inverse-vol ETF; if it is cheap, buy the long-vol ETF. Recheck every 15 minutes and flatten before the close."
    },
    {
      "token": "jets_vix_straddle",
      "name": "Jason Jets synthetic VIX 1m straddle",
      "chat": "Intraday vol arb",
      "bucket": "fail",
      "note": "Clip\u2019s filtered 4\u00d7 book lags SPY (Sh 0.30 vs 0.62, DD \u221275%). Always-short 4\u00d7 only matches SPY Sharpe via leverage and has \u221270% DD. Synthetic VIX marks, daily close hedge \u2014 not listed options and not intraday.\n",
      "ledger": {
        "id": "stk_jets_vix_straddle",
        "token": "jets_vix_straddle",
        "name": "Jason Jets synthetic VIX ATM straddle (daily hedge)",
        "family": "options_vrp",
        "status": "fail",
        "sharpe": 0.2997,
        "cagr_pct": 4.39,
        "max_dd_pct": -75.02,
        "total_return_pct": 131.01,
        "rho_spy": null,
        "why": "Clip filtered 4x lags SPY (Sh 0.30 vs 0.62, DD -75%). Always-short 4x is leveraged short-vol with SPY Sharpe. Synthetic VIX marks, daily close hedge, not listed options.",
        "description": "21d ATM BS straddle, IV=0.9*VIX, daily close hedge; sell if IV/max(RV10,RV21,EWMA)>1.20 and VIX3M>VIX. 4x share-notional.",
        "window_start": "2007-01-03",
        "window_end": "2026-06-25"
      },
      "rule": "Jason Jets' synthetic short: each day price a 21-day at-the-money straddle from the VIX, hedge it with shares, and sell only when implied volatility is rich versus recent realized volatility and the VIX curve is in contango. A daily hedge, not a listed-option fill."
    },
    {
      "token": "pl5_pro",
      "name": "PL5 Pro 1:2:2 put ratio (SPY proxy)",
      "chat": "PL5 Pro SPX backtest",
      "bucket": "weak",
      "note": "No SPX chains locally, so this is SPY 15:45 iv-filled puts, 2016-01-04 \u2192 2026-04-02. 10 units on $125k \u2248 one SPX lot and a $10,400 margin budget. Best tested rule: new package every 21 days, +1\u00d7\u221230\u0394 / \u22122\u00d7\u221218\u0394 / +2\u00d7\u22123\u0394, ~100 DTE, take $150 per unit ($1,500 on the 10-lot), stop at $250 per unit ($2,500), hard exit at 21 DTE. +40.8% to $176k, CAGR 3.4%, Sharpe 0.57, max DD \u22125.8%, win rate 48% (152 trades, 76-day hold, in the market 92% of days). Yearly equity: 2016 \u22120.1, 2017 \u22122.3, 2018 +11.8, 2019 \u22120.5, 2020 +15.8, 2021 +0.7, 2022 +11.1, 2023 \u22120.6, 2024 \u22120.1, 2025 \u22122.7, 2026 YTD +3.8. Profit is 2018, 2020, and 2022. A 50%-of-debit stop finished near flat. Holding to 21 DTE with no dollar stop drew down about \u221244%. Every 30 days made +29% (DD \u22126.9%); every 14 days made +25% (DD \u221212%, 2025 \u2212$11.8k). Win rate is 48%, not the advertised 70\u201390%. Weak. Still needs a real SPX tape.\n",
      "ledger": {
        "id": "pl5_pro_spy_pt150_stop250_every21",
        "token": "pl5_pro",
        "name": "PL5 Pro 1:2:2 SPY proxy, $150 target / $250 stop, every 21d",
        "family": "options_ratio",
        "status": "weak",
        "sharpe": 0.57,
        "cagr_pct": 3.4,
        "max_dd_pct": -5.8,
        "total_return_pct": 40.8,
        "rho_spy": null,
        "why": "Best tested SPY rule: every 21d, $150/unit target, $250/unit stop, out by 21 DTE. +40.8% / CAGR 3.4% / Sharpe 0.57 / DD -5.8% / win 48% on $125k, 2016-01-04 to 2026-04-02. Dollars are 2018, 2020, 2022. Debit-percent stops and a bare 21-DTE hold do not match it. SPY proxy, not SPX.",
        "description": "10 SPY 15:45 puts, +1 x -30d / -2 x -18d / +2 x -3d, ~100 DTE, new unit every 21 days. Exit at $150 per unit, $250 per unit, or 21 DTE. 10 units approximate one SPX lot and a $10,400 margin budget.",
        "window_start": "2016-01-04",
        "window_end": "2026-04-02"
      },
      "rule": "A put ratio shaped like a broken-wing butterfly: buy one put near a 30-delta, sell two near 18-delta, and buy two near 3-delta, about 100 days from expiration. Enter a new one every 21 days at the mid price. Take profit at $150 per SPY unit, cut it at $250, or get out with 21 days left. Ten SPY units stand in for one SPX position. There is no SPX history in the archive, so SPY option chains were used."
    }
  ],
  "queue": [
    {
      "id": "kalman_l2_microstructure",
      "name": "Kalman / particle filter on L2 order book",
      "chat": "CERN Kalman noise filter",
      "blocker": "15m midprice Kalman is not a proxy for L2. Need historical depth (MBO/ITCH). TV-R / pullback fades failed; z-resize overlay is OHLCV.\n",
      "rule": "Run a Kalman or particle filter on the order book (bid and ask sizes by price level) to fade or follow short-lived imbalances. Needs a full depth-of-book history we do not have locally."
    },
    {
      "id": "kalman_confirm_z_resize_500_paper",
      "name": "Kalman-z resize on full confirm_4b universe + IBKR paper",
      "chat": "CERN Kalman noise filter",
      "blocker": "250-name 1 bp result is promising. Book uses ~500 names. Live path is 5m rebalance on existing IBKR confirm_4b runner \u2014 paper first, never unattended NAV. Freeze-at-entry already failed as alpha.\n",
      "rule": "The per-name Kalman size overlay on the full intraday slope universe (not just a sample), then the same orders in a paper brokerage account. Research resize exists; the full-universe paper run does not."
    },
    {
      "id": "intrad_gamma_scalp_opra",
      "name": "Intraday gamma scalp on PCP-clean / 0DTE chains",
      "chat": "Intraday vol arb",
      "blocker": "Theta 15:45 ATM weeklies are not a vol-arb tape (PCP error ~$27, unscaled-strike deltas). Need OPRA or 0DTE minute quotes. Do not proxy with VIXY/SVXY day-trades (already failed as intrad_vrp).\n",
      "rule": "The intraday long-gamma scalp on option quotes that pass a put-call parity check, including zero-day options. Blocked on intraday chain history; the 15:45 daily chain is the wrong tape."
    },
    {
      "id": "breadth_thrust_spy_gate",
      "name": "NYSE breadth-thrust gate",
      "chat": "Replicate Horizon improvement loop",
      "blocker": "Need advancing/declining issues series (not on Yahoo). Do not proxy RSP/SPY.",
      "rule": "Use a NYSE advance/decline thrust as a switch between SPY and short-term Treasuries. Specified, not yet run on a clean breadth series."
    },
    {
      "id": "acad_xs_iv_hv",
      "name": "Cross-sectional IV\u2212HV (Goyal\u2013Saretto)",
      "chat": "Unique option trading strategies outline",
      "blocker": "ideation_only. Paper ~0.70 Sharpe. Single-name IV vs realized; no single-name chains locally.",
      "rule": "Cross-sectional variance premium from Goyal and Saretto: rank stocks by implied volatility minus historical volatility and trade the cheap versus rich names. Needs single-name option history."
    },
    {
      "id": "qs_pdf_survey_untested",
      "name": "Remaining QS PDF extras (put/call, TRIN, weekly rotation)",
      "chat": "Trading strategies evaluation",
      "blocker": "Double Seven tested fail. Yahoo put/call (^CPCE/^CPC/^PCALL/^CPCI) 404. ^TRIN/^XARMS 404; bare TRIN is Trinity Capital \u2014 do not treat as Arms index. Weekly rotation still untested. Promote ONE item.\n",
      "rule": "Seasonality ideas from the Quantpedia-style survey that were never coded: put/call ratios, the TRIN, and a weekly sector rotation. Still a reading list, not a backtest."
    },
    {
      "id": "day_trading_100_complement",
      "name": "100 complementary day-trading ideas",
      "chat": "Buying short-term dips in stocks",
      "blocker": "Explicitly not backtested as that list. Idea 54 VWAP-fail short failed. PDL short / ATR+VIX / confirm_4b already pulled the winners.\n",
      "rule": "A list of about 100 intraday ideas meant to be uncorrelated with the moving-average-slope book. A few were tested (VWAP fail, prior-day low); the rest of the list has not been run."
    },
    {
      "id": "options_100_brainstorm",
      "name": "100 unique option strategies brainstorm",
      "chat": "Unique option trading strategies outline",
      "blocker": "Themes catalogued; backtested subset is D000\u2013D099 + literature S###. Do not treat the brainstorm as tested.",
      "rule": "A brainstorm of about 100 option structures that are not another short SPY put or short skew variant. Not yet turned into backtests."
    },
    {
      "id": "covered_overlay_sideways",
      "name": "Weekly short-call overlay on a sideways high-IV host",
      "chat": "Overnight MU trading",
      "blocker": "MU failed because it was a 67\u00d7 trend. Spec said it could work on IV/RV>1, short_mult=1, body \u2265+10% OTM. Needs real single-name chains.",
      "rule": "Sell weekly calls against a high-implied-volatility stock that is stuck in a range, financed by a long-dated in-the-money call. The Micron trial was one host; a sideways universe has not been screened."
    },
    {
      "id": "bc_then_ppo_theta",
      "name": "Behavior-clone a sparse winning book, then PPO fine-tune",
      "chat": "World Model Agent",
      "blocker": "Follow-up to sim_actor fail. Do not train another imagination actor on the RSSM. Needs lit/VRP trade logs as teacher.",
      "rule": "First copy the trades of a sparse winning option book (behavior cloning), then let a reinforcement-learning policy adjust. The simulator exists; this two-stage training has not been run."
    }
  ],
  "counts": {
    "exercises": 30,
    "strong": 14,
    "promising": 24,
    "weak": 30,
    "fail": 59,
    "queue": 10
  }
}
