{
  "version": "v3-theory-driven",
  "generated": "2026-03-04",
  "description": "5 Holm-Bonferroni survivors from theory-driven scenario mining (43 combos, 99 tests, alpha=0.05). Plus 10 secondary rules (raw p<0.05, not corrected) for forward-tracking only.",
  "correction": "Holm-Bonferroni (m=99, alpha=0.05)",
  "data_period": "2025-01-02 to 2026-02-26 (284 days, IS=198, OOS=86)",
  "condition_notes": {
    "tail_asym_high": "Tail asymmetry > session median (put-heavy skew)",
    "mom_up": "60-min price momentum > 0 (median split near zero)",
    "mom_down": "60-min price momentum < 0",
    "delta_pos": "Session cumulative delta > 0 (net buying)",
    "delta_neg": "Session cumulative delta < 0 (net selling)",
    "recent_buying": "Last 30-min delta > 0",
    "recent_selling": "Last 30-min delta < 0",
    "gex_pos": "Net GEX > 0 (dealers long gamma)",
    "gex_strong_pos": "Net GEX > p75 (extreme positive gamma)",
    "gex_neg": "Net GEX < 0 (dealers short gamma)",
    "range_upper": "Price in top 50% of session range",
    "range_lower": "Price in bottom 50% of session range",
    "vol_below": "30-min volume below session average",
    "morning": "10:00-11:30 ET (7:00-8:30 PT)",
    "midday": "11:30-13:30 ET (8:30-10:30 PT)",
    "afternoon": "13:30-15:00 ET (10:30-12:00 PT)",
    "vix_spike": "VIX change from open > +1.0pt"
  },
  "rules": [
    {
      "id": "VALIDATED_001",
      "name": "afternoon_mean_revert",
      "conditions": {"afternoon": true, "range_upper": true, "gex_pos": true},
      "direction": "SHORT",
      "horizon": "eod",
      "theory": "Afternoon near highs + positive GEX = last hour mean reversion (dealers sell rips)",
      "hit_rate_is": 0.396,
      "hit_rate_oos": 0.680,
      "n_total": 320,
      "n_oos": 122,
      "avg_return_bps": -6.0,
      "pval_raw": 0.0000,
      "pval_holm": 0.0042,
      "holm_survives": true,
      "tier": "VALIDATED",
      "alert": true
    },
    {
      "id": "VALIDATED_002",
      "name": "tail_asym_bullish",
      "conditions": {"tail_asym_high": true, "mom_up": true},
      "direction": "LONG",
      "horizon": "2h",
      "theory": "Heavy put skew (hedging) + price rising = hedges being closed, bullish continuation",
      "hit_rate_is": 0.561,
      "hit_rate_oos": 0.630,
      "n_total": 498,
      "n_oos": 227,
      "avg_return_bps": 4.6,
      "pval_raw": 0.0001,
      "pval_holm": 0.0053,
      "holm_survives": true,
      "tier": "VALIDATED",
      "alert": true
    },
    {
      "id": "VALIDATED_003",
      "name": "low_vol_gex_trap",
      "conditions": {"vol_below": true, "gex_strong_pos": true, "range_upper": true},
      "direction": "SHORT",
      "horizon": "eod",
      "theory": "Low volume + extreme GEX + near highs = pinned market, mean reversion into close",
      "hit_rate_is": 0.425,
      "hit_rate_oos": 0.642,
      "n_total": 346,
      "n_oos": 173,
      "avg_return_bps": -4.6,
      "pval_raw": 0.0001,
      "pval_holm": 0.0117,
      "holm_survives": true,
      "tier": "VALIDATED",
      "alert": true
    },
    {
      "id": "VALIDATED_004",
      "name": "flow_acceleration_buy",
      "conditions": {"delta_pos": true, "recent_buying": true, "mom_up": true},
      "direction": "LONG",
      "horizon": "2h",
      "theory": "Consistent buying pressure + price following = trend continuation",
      "hit_rate_is": 0.558,
      "hit_rate_oos": 0.615,
      "n_total": 553,
      "n_oos": 218,
      "avg_return_bps": 3.7,
      "pval_raw": 0.0004,
      "pval_holm": 0.0414,
      "holm_survives": true,
      "tier": "VALIDATED",
      "alert": true
    },
    {
      "id": "VALIDATED_005",
      "name": "tail_asym_bullish_morning",
      "conditions": {"tail_asym_high": true, "mom_up": true, "morning": true},
      "direction": "LONG",
      "horizon": "2h",
      "theory": "Morning: heavy put skew + uptrend = hedges unwinding into strength",
      "hit_rate_is": 0.590,
      "hit_rate_oos": 0.678,
      "n_total": 207,
      "n_oos": 90,
      "avg_return_bps": 3.4,
      "pval_raw": 0.0005,
      "pval_holm": 0.0462,
      "holm_survives": true,
      "tier": "VALIDATED",
      "alert": true
    },
    {
      "id": "SECONDARY_001",
      "name": "morning_continuation",
      "conditions": {"morning": true, "mom_up": true, "delta_pos": true},
      "direction": "LONG",
      "horizon": "2h",
      "theory": "Morning strength + buying flow = institutional opening orders, continues",
      "hit_rate_is": 0.549,
      "hit_rate_oos": 0.650,
      "n_total": 278,
      "n_oos": 103,
      "avg_return_bps": 4.6,
      "pval_raw": 0.0015,
      "pval_holm": 0.1377,
      "holm_survives": false,
      "tier": "SECONDARY",
      "alert": false
    },
    {
      "id": "SECONDARY_002",
      "name": "tail_asym_bullish_3h",
      "conditions": {"tail_asym_high": true, "mom_up": true},
      "direction": "LONG",
      "horizon": "3h",
      "theory": "Heavy put skew (hedging) + price rising = hedges being closed, bullish continuation (3h)",
      "hit_rate_is": 0.640,
      "hit_rate_oos": 0.602,
      "n_total": 381,
      "n_oos": 181,
      "avg_return_bps": 3.5,
      "pval_raw": 0.0036,
      "pval_holm": 0.3351,
      "holm_survives": false,
      "tier": "SECONDARY",
      "alert": false
    },
    {
      "id": "SECONDARY_003",
      "name": "tail_asym_bullish_morning_3h",
      "conditions": {"tail_asym_high": true, "mom_up": true, "morning": true},
      "direction": "LONG",
      "horizon": "3h",
      "theory": "Morning: heavy put skew + uptrend = hedges unwinding into strength (3h horizon)",
      "hit_rate_is": 0.612,
      "hit_rate_oos": 0.651,
      "n_total": 202,
      "n_oos": 86,
      "avg_return_bps": 3.2,
      "pval_raw": 0.0033,
      "pval_holm": 0.3103,
      "holm_survives": false,
      "tier": "SECONDARY",
      "alert": false
    },
    {
      "id": "SECONDARY_004",
      "name": "morning_continuation_3h",
      "conditions": {"morning": true, "mom_up": true, "delta_pos": true},
      "direction": "LONG",
      "horizon": "3h",
      "theory": "Morning strength + buying flow = institutional opening orders, continues (3h)",
      "hit_rate_is": 0.566,
      "hit_rate_oos": 0.636,
      "n_total": 274,
      "n_oos": 99,
      "avg_return_bps": 6.1,
      "pval_raw": 0.0043,
      "pval_holm": 0.3928,
      "holm_survives": false,
      "tier": "SECONDARY",
      "alert": false
    },
    {
      "id": "SECONDARY_005",
      "name": "full_bull_setup",
      "conditions": {"gex_pos": true, "tail_asym_high": true, "mom_up": true, "delta_pos": true},
      "direction": "LONG",
      "horizon": "2h",
      "theory": "All bullish: +GEX + put hedging + momentum + buying flow = high-confidence long",
      "hit_rate_is": 0.547,
      "hit_rate_oos": 0.623,
      "n_total": 159,
      "n_oos": 106,
      "avg_return_bps": 4.6,
      "pval_raw": 0.0074,
      "pval_holm": 0.6651,
      "holm_survives": false,
      "tier": "SECONDARY",
      "alert": false
    },
    {
      "id": "SECONDARY_006",
      "name": "0dte_pin_morning",
      "conditions": {"gex_strong_pos": true, "morning": true, "range_lower": true},
      "direction": "LONG",
      "horizon": "1h",
      "theory": "Extreme +GEX morning dip → strong dealer buy-back → revert to pin",
      "hit_rate_is": 0.517,
      "hit_rate_oos": 0.625,
      "n_total": 98,
      "n_oos": 40,
      "avg_return_bps": 5.8,
      "pval_raw": 0.0769,
      "pval_holm": 1.0,
      "holm_survives": false,
      "tier": "SECONDARY",
      "alert": false
    },
    {
      "id": "SECONDARY_007",
      "name": "vix_spike_gex_pos",
      "conditions": {"vix_spike": true, "gex_pos": true},
      "direction": "LONG",
      "horizon": "2h",
      "theory": "VIX spike dampened by dealer +GEX → mean revert",
      "hit_rate_is": 0.532,
      "hit_rate_oos": 0.580,
      "n_total": 309,
      "n_oos": 119,
      "avg_return_bps": 4.3,
      "pval_raw": 0.0493,
      "pval_holm": 1.0,
      "holm_survives": false,
      "tier": "SECONDARY",
      "alert": false
    },
    {
      "id": "SECONDARY_008",
      "name": "GEX_MR_afternoon",
      "conditions": {"gex_pos": true, "mom_up": true, "afternoon": true},
      "direction": "SHORT",
      "horizon": "eod",
      "theory": "+GEX suppresses moves; afternoon rip fades into close",
      "hit_rate_is": 0.355,
      "hit_rate_oos": 0.595,
      "n_total": 247,
      "n_oos": 116,
      "avg_return_bps": -3.9,
      "pval_raw": 0.0254,
      "pval_holm": 1.0,
      "holm_survives": false,
      "tier": "SECONDARY",
      "alert": false
    },
    {
      "id": "SECONDARY_009",
      "name": "low_vol_up_fake",
      "conditions": {"vol_below": true, "mom_up": true, "afternoon": true},
      "direction": "SHORT",
      "horizon": "eod",
      "theory": "Low volume afternoon rally = no conviction, fades into close",
      "hit_rate_is": 0.476,
      "hit_rate_oos": 0.578,
      "n_total": 375,
      "n_oos": 166,
      "avg_return_bps": -4.4,
      "pval_raw": 0.0260,
      "pval_holm": 1.0,
      "holm_survives": false,
      "tier": "SECONDARY",
      "alert": false
    },
    {
      "id": "SECONDARY_010",
      "name": "flow_div_bear_gex",
      "conditions": {"div_bear": true, "gex_neg": true},
      "direction": "SHORT",
      "horizon": "eod",
      "theory": "Distribution + negative gamma = amplified reversal down",
      "hit_rate_is": 0.331,
      "hit_rate_oos": 0.667,
      "n_total": 187,
      "n_oos": 42,
      "avg_return_bps": -13.6,
      "pval_raw": 0.0218,
      "pval_holm": 1.0,
      "holm_survives": false,
      "tier": "SECONDARY",
      "alert": false
    }
  ]
}
