{
  "meta": {
    "script": "trace_cluster_combined_score.py",
    "description": "Combined gamma+OI scoring model for SPX cluster reach prediction",
    "date_run": "2026-03-22",
    "n_events": 12744,
    "n_dates": 337,
    "overall_reach": 0.6351,
    "overall_null": 0.6179,
    "date_range": [
      "2024-06-24",
      "2026-03-20"
    ],
    "oi_available_pct": 1.0,
    "medians": {
      "mm_total_oi": 1509289.5,
      "cust_net_oi": -14603.5,
      "firm_net_oi": -7757.5
    }
  },
  "step1_factor_ranking": [
    {
      "factor": "total_gamma",
      "best_bin": "> 300M",
      "label": "> 300M",
      "N": 3541,
      "reach_rate": 0.8074,
      "null_rate": 0.7458,
      "lift": 0.0616,
      "p_value": 0.0
    },
    {
      "factor": "cust_net_oi",
      "best_bin": "Cust net short (< median)",
      "label": "Cust net short (< median)",
      "N": 6372,
      "reach_rate": 0.661,
      "null_rate": 0.6254,
      "lift": 0.0356,
      "p_value": 0.0
    },
    {
      "factor": "two_sided",
      "best_bin": "One-sided",
      "label": "One-sided",
      "N": 7719,
      "reach_rate": 0.8083,
      "null_rate": 0.7747,
      "lift": 0.0336,
      "p_value": 0.0
    },
    {
      "factor": "mm_total_oi",
      "best_bin": "High MM OI (>= median)",
      "label": "High MM OI (>= median)",
      "N": 6372,
      "reach_rate": 0.7426,
      "null_rate": 0.712,
      "lift": 0.0306,
      "p_value": 0.0
    },
    {
      "factor": "time_of_day",
      "best_bin": "Afternoon (14:00-16:00)",
      "label": "Afternoon (14:00-16:00)",
      "N": 3613,
      "reach_rate": 0.6657,
      "null_rate": 0.636,
      "lift": 0.0296,
      "p_value": 0.000106
    },
    {
      "factor": "abs_dist",
      "best_bin": "5\u201315pts",
      "label": "5\u201315pts",
      "N": 3608,
      "reach_rate": 0.7888,
      "null_rate": 0.7594,
      "lift": 0.0294,
      "p_value": 1.5e-05
    },
    {
      "factor": "neg_gamma_in_path",
      "best_bin": "No neg gamma in path",
      "label": "No neg gamma in path",
      "N": 5355,
      "reach_rate": 0.7107,
      "null_rate": 0.6835,
      "lift": 0.0273,
      "p_value": 8e-06
    },
    {
      "factor": "trend",
      "best_bin": "Growing",
      "label": "Growing",
      "N": 5120,
      "reach_rate": 0.718,
      "null_rate": 0.6914,
      "lift": 0.0266,
      "p_value": 1.8e-05
    },
    {
      "factor": "firm_net_oi",
      "best_bin": "Firm net short (< median)",
      "label": "Firm net short (< median)",
      "N": 6372,
      "reach_rate": 0.6472,
      "null_rate": 0.6213,
      "lift": 0.0259,
      "p_value": 1e-05
    },
    {
      "factor": "call_oi_share",
      "best_bin": "40\u201370% calls",
      "label": "40\u201370% calls",
      "N": 8894,
      "reach_rate": 0.6944,
      "null_rate": 0.6715,
      "lift": 0.0229,
      "p_value": 2e-06
    },
    {
      "factor": "dte0_gamma_ratio",
      "best_bin": "20\u201350%",
      "label": "20\u201350%",
      "N": 10431,
      "reach_rate": 0.6696,
      "null_rate": 0.647,
      "lift": 0.0226,
      "p_value": 1e-06
    },
    {
      "factor": "is_persistent",
      "best_bin": "Transient",
      "label": "Transient",
      "N": 3867,
      "reach_rate": 0.647,
      "null_rate": 0.6266,
      "lift": 0.0204,
      "p_value": 0.004418
    }
  ],
  "step1_factor_details": {
    "total_gamma": [
      {
        "label": "< 100M",
        "N": 4577,
        "reach_rate": 0.5023,
        "null_rate": 0.5073,
        "lift": -0.005,
        "p_value": 0.756416
      },
      {
        "label": "100M\u2013300M",
        "N": 4626,
        "reach_rate": 0.6347,
        "null_rate": 0.6295,
        "lift": 0.0052,
        "p_value": 0.23737
      },
      {
        "label": "> 300M",
        "N": 3541,
        "reach_rate": 0.8074,
        "null_rate": 0.7458,
        "lift": 0.0616,
        "p_value": 0.0
      }
    ],
    "abs_dist": [
      {
        "label": "5\u201315pts",
        "N": 3608,
        "reach_rate": 0.7888,
        "null_rate": 0.7594,
        "lift": 0.0294,
        "p_value": 1.5e-05
      },
      {
        "label": "15\u201330pts",
        "N": 5503,
        "reach_rate": 0.6629,
        "null_rate": 0.6366,
        "lift": 0.0263,
        "p_value": 2.3e-05
      },
      {
        "label": "30\u201350pts",
        "N": 3633,
        "reach_rate": 0.4404,
        "null_rate": 0.4492,
        "lift": -0.0088,
        "p_value": 0.860842
      }
    ],
    "is_persistent": [
      {
        "label": "Transient",
        "N": 3867,
        "reach_rate": 0.647,
        "null_rate": 0.6266,
        "lift": 0.0204,
        "p_value": 0.004418
      },
      {
        "label": "Persistent",
        "N": 8877,
        "reach_rate": 0.6299,
        "null_rate": 0.6142,
        "lift": 0.0158,
        "p_value": 0.001149
      }
    ],
    "trend": [
      {
        "label": "Growing",
        "N": 5120,
        "reach_rate": 0.718,
        "null_rate": 0.6914,
        "lift": 0.0266,
        "p_value": 1.8e-05
      },
      {
        "label": "Stable",
        "N": 6096,
        "reach_rate": 0.6371,
        "null_rate": 0.6204,
        "lift": 0.0167,
        "p_value": 0.003619
      },
      {
        "label": "Shrinking",
        "N": 1528,
        "reach_rate": 0.3495,
        "null_rate": 0.3619,
        "lift": -0.0124,
        "p_value": 0.850432
      }
    ],
    "direction": [
      {
        "label": "Above spot",
        "N": 7494,
        "reach_rate": 0.635,
        "null_rate": 0.6089,
        "lift": 0.0262,
        "p_value": 2e-06
      },
      {
        "label": "Below spot",
        "N": 5250,
        "reach_rate": 0.6352,
        "null_rate": 0.6309,
        "lift": 0.0044,
        "p_value": 0.260193
      }
    ],
    "dte0_gamma_ratio": [
      {
        "label": "< 20%",
        "N": 1098,
        "reach_rate": 0.2596,
        "null_rate": 0.2632,
        "lift": -0.0036,
        "p_value": 0.619229
      },
      {
        "label": "20\u201350%",
        "N": 10431,
        "reach_rate": 0.6696,
        "null_rate": 0.647,
        "lift": 0.0226,
        "p_value": 1e-06
      },
      {
        "label": "> 50%",
        "N": 1215,
        "reach_rate": 0.6782,
        "null_rate": 0.6889,
        "lift": -0.0107,
        "p_value": 0.798916
      }
    ],
    "two_sided": [
      {
        "label": "One-sided",
        "N": 7719,
        "reach_rate": 0.8083,
        "null_rate": 0.7747,
        "lift": 0.0336,
        "p_value": 0.0
      },
      {
        "label": "Two-sided",
        "N": 5025,
        "reach_rate": 0.3692,
        "null_rate": 0.3771,
        "lift": -0.008,
        "p_value": 0.880859
      }
    ],
    "n_strikes": [
      {
        "label": "1\u20136 strikes",
        "N": 5094,
        "reach_rate": 0.4798,
        "null_rate": 0.4849,
        "lift": -0.0051,
        "p_value": 0.771216
      },
      {
        "label": "7\u201311 strikes",
        "N": 3511,
        "reach_rate": 0.6218,
        "null_rate": 0.5995,
        "lift": 0.0222,
        "p_value": 0.003717
      },
      {
        "label": "> 11 strikes",
        "N": 4139,
        "reach_rate": 0.8376,
        "null_rate": 0.7973,
        "lift": 0.0403,
        "p_value": 0.0
      }
    ],
    "neg_gamma_in_path": [
      {
        "label": "No neg gamma in path",
        "N": 5355,
        "reach_rate": 0.7107,
        "null_rate": 0.6835,
        "lift": 0.0273,
        "p_value": 8e-06
      },
      {
        "label": "Neg gamma in path",
        "N": 7389,
        "reach_rate": 0.5803,
        "null_rate": 0.5704,
        "lift": 0.0099,
        "p_value": 0.044104
      }
    ],
    "mm_total_oi": [
      {
        "label": "Low MM OI (< median)",
        "N": 6372,
        "reach_rate": 0.5276,
        "null_rate": 0.5239,
        "lift": 0.0038,
        "p_value": 0.277821
      },
      {
        "label": "High MM OI (>= median)",
        "N": 6372,
        "reach_rate": 0.7426,
        "null_rate": 0.712,
        "lift": 0.0306,
        "p_value": 0.0
      }
    ],
    "cust_net_oi": [
      {
        "label": "Cust net short (< median)",
        "N": 6372,
        "reach_rate": 0.661,
        "null_rate": 0.6254,
        "lift": 0.0356,
        "p_value": 0.0
      },
      {
        "label": "Cust net long (>= median)",
        "N": 6372,
        "reach_rate": 0.6092,
        "null_rate": 0.6105,
        "lift": -0.0013,
        "p_value": 0.586777
      }
    ],
    "firm_net_oi": [
      {
        "label": "Firm net short (< median)",
        "N": 6372,
        "reach_rate": 0.6472,
        "null_rate": 0.6213,
        "lift": 0.0259,
        "p_value": 1e-05
      },
      {
        "label": "Firm net long (>= median)",
        "N": 6372,
        "reach_rate": 0.623,
        "null_rate": 0.6146,
        "lift": 0.0085,
        "p_value": 0.084106
      }
    ],
    "call_oi_share": [
      {
        "label": "< 30% calls",
        "N": 710,
        "reach_rate": 0.5577,
        "null_rate": 0.5676,
        "lift": -0.0099,
        "p_value": 0.715413
      },
      {
        "label": "30\u201340% calls",
        "N": 1229,
        "reach_rate": 0.6745,
        "null_rate": 0.6737,
        "lift": 0.0008,
        "p_value": 0.489271
      },
      {
        "label": "40\u201370% calls",
        "N": 8894,
        "reach_rate": 0.6944,
        "null_rate": 0.6715,
        "lift": 0.0229,
        "p_value": 2e-06
      },
      {
        "label": "> 70% calls",
        "N": 1911,
        "reach_rate": 0.3626,
        "null_rate": 0.3516,
        "lift": 0.011,
        "p_value": 0.162998
      }
    ],
    "gex_regime": [
      {
        "label": "Positive GEX",
        "N": 10542,
        "reach_rate": 0.6267,
        "null_rate": 0.6055,
        "lift": 0.0212,
        "p_value": 4e-06
      },
      {
        "label": "Negative GEX",
        "N": 1702,
        "reach_rate": 0.735,
        "null_rate": 0.7315,
        "lift": 0.0035,
        "p_value": 0.383249
      }
    ],
    "time_of_day": [
      {
        "label": "Morning (9:40-11:00)",
        "N": 2678,
        "reach_rate": 0.6292,
        "null_rate": 0.618,
        "lift": 0.0112,
        "p_value": 0.120226
      },
      {
        "label": "Midday (11:00-14:00)",
        "N": 6453,
        "reach_rate": 0.6205,
        "null_rate": 0.6078,
        "lift": 0.0127,
        "p_value": 0.018712
      },
      {
        "label": "Afternoon (14:00-16:00)",
        "N": 3613,
        "reach_rate": 0.6657,
        "null_rate": 0.636,
        "lift": 0.0296,
        "p_value": 0.000106
      }
    ]
  },
  "step2_score_bins": [
    {
      "label": "0-3 (Low)",
      "N": 5977,
      "reach_rate": 0.4777,
      "null_rate": 0.4808,
      "lift": -0.0032,
      "p_value": 0.693114
    },
    {
      "label": "4-6 (Medium)",
      "N": 1923,
      "reach_rate": 0.662,
      "null_rate": 0.6505,
      "lift": 0.0114,
      "p_value": 0.151872
    },
    {
      "label": "7-9 (High)",
      "N": 2246,
      "reach_rate": 0.768,
      "null_rate": 0.7329,
      "lift": 0.0352,
      "p_value": 7.4e-05
    },
    {
      "label": "10+ (Very High)",
      "N": 2598,
      "reach_rate": 0.8626,
      "null_rate": 0.8099,
      "lift": 0.0527,
      "p_value": 0.0
    }
  ],
  "step2_score_detail": [
    {
      "score": -9,
      "N": 23,
      "reach_rate": 0.3043,
      "null_rate": 0.3478
    },
    {
      "score": -8,
      "N": 101,
      "reach_rate": 0.2079,
      "null_rate": 0.2772
    },
    {
      "score": -7,
      "N": 248,
      "reach_rate": 0.2863,
      "null_rate": 0.2742
    },
    {
      "score": -6,
      "N": 355,
      "reach_rate": 0.3042,
      "null_rate": 0.3268
    },
    {
      "score": -5,
      "N": 438,
      "reach_rate": 0.3493,
      "null_rate": 0.3653
    },
    {
      "score": -4,
      "N": 501,
      "reach_rate": 0.3832,
      "null_rate": 0.4032
    },
    {
      "score": -3,
      "N": 515,
      "reach_rate": 0.4621,
      "null_rate": 0.4757
    },
    {
      "score": -2,
      "N": 609,
      "reach_rate": 0.4516,
      "null_rate": 0.4663
    },
    {
      "score": -1,
      "N": 576,
      "reach_rate": 0.5243,
      "null_rate": 0.5312
    },
    {
      "score": 0,
      "N": 654,
      "reach_rate": 0.4954,
      "null_rate": 0.5015
    },
    {
      "score": 1,
      "N": 648,
      "reach_rate": 0.5694,
      "null_rate": 0.5525
    },
    {
      "score": 2,
      "N": 578,
      "reach_rate": 0.6211,
      "null_rate": 0.5986
    },
    {
      "score": 3,
      "N": 728,
      "reach_rate": 0.5989,
      "null_rate": 0.5838
    },
    {
      "score": 4,
      "N": 645,
      "reach_rate": 0.6527,
      "null_rate": 0.6202
    },
    {
      "score": 5,
      "N": 646,
      "reach_rate": 0.6115,
      "null_rate": 0.6176
    },
    {
      "score": 6,
      "N": 632,
      "reach_rate": 0.7231,
      "null_rate": 0.7152
    },
    {
      "score": 7,
      "N": 720,
      "reach_rate": 0.7208,
      "null_rate": 0.6875
    },
    {
      "score": 8,
      "N": 778,
      "reach_rate": 0.7905,
      "null_rate": 0.7506
    },
    {
      "score": 9,
      "N": 748,
      "reach_rate": 0.7901,
      "null_rate": 0.758
    },
    {
      "score": 10,
      "N": 822,
      "reach_rate": 0.8504,
      "null_rate": 0.8175
    },
    {
      "score": 11,
      "N": 688,
      "reach_rate": 0.8343,
      "null_rate": 0.7776
    },
    {
      "score": 12,
      "N": 515,
      "reach_rate": 0.8757,
      "null_rate": 0.8194
    },
    {
      "score": 13,
      "N": 396,
      "reach_rate": 0.8939,
      "null_rate": 0.851
    },
    {
      "score": 14,
      "N": 177,
      "reach_rate": 0.9209,
      "null_rate": 0.7797
    }
  ],
  "step3_kill_conditions": [
    {
      "label": "Shrinking + Far (>30pt)",
      "N": 681,
      "reach_rate": 0.2085,
      "null_rate": 0.2173,
      "lift": -0.0088,
      "p_value": 0.30696
    },
    {
      "label": "Neg gamma in path + Shrinking",
      "N": 886,
      "reach_rate": 0.2438,
      "null_rate": 0.2607,
      "lift": -0.0169,
      "p_value": 0.133262
    },
    {
      "label": "Shrinking + Low MM OI",
      "N": 1065,
      "reach_rate": 0.2573,
      "null_rate": 0.2714,
      "lift": -0.0141,
      "p_value": 0.158835
    },
    {
      "label": "Two-sided + Far (>30pt)",
      "N": 2214,
      "reach_rate": 0.2864,
      "null_rate": 0.3058,
      "lift": -0.0194,
      "p_value": 0.024461
    },
    {
      "label": "Small gamma (<100M) + Shrinking",
      "N": 1051,
      "reach_rate": 0.3178,
      "null_rate": 0.3245,
      "lift": -0.0067,
      "p_value": 0.335389
    },
    {
      "label": "Neg gamma in path + Two-sided",
      "N": 3588,
      "reach_rate": 0.3632,
      "null_rate": 0.3712,
      "lift": -0.0081,
      "p_value": 0.162371
    },
    {
      "label": "Low MM OI + Two-sided",
      "N": 3826,
      "reach_rate": 0.3651,
      "null_rate": 0.3714,
      "lift": -0.0063,
      "p_value": 0.216009
    },
    {
      "label": "Score <= -2",
      "N": 2793,
      "reach_rate": 0.3813,
      "null_rate": 0.3978,
      "lift": -0.0165,
      "p_value": 0.03904
    }
  ],
  "step4_high_conviction": [
    {
      "label": "Growing + Big (>300M) + Close (<15pt)",
      "N": 677,
      "reach_rate": 0.9084,
      "null_rate": 0.8287,
      "lift": 0.0798,
      "p_value": 1.0
    },
    {
      "label": "Big (>300M) + Persistent + Close (<15pt)",
      "N": 934,
      "reach_rate": 0.9004,
      "null_rate": 0.8266,
      "lift": 0.0739,
      "p_value": 1.0
    },
    {
      "label": "Score >= 12",
      "N": 1088,
      "reach_rate": 0.8897,
      "null_rate": 0.8244,
      "lift": 0.0653,
      "p_value": 1.0
    },
    {
      "label": ">300M gamma + Close (<15pt) + Cust short",
      "N": 1213,
      "reach_rate": 0.8879,
      "null_rate": 0.8112,
      "lift": 0.0767,
      "p_value": 1.0
    },
    {
      "label": "Score >= 10",
      "N": 2598,
      "reach_rate": 0.8626,
      "null_rate": 0.8099,
      "lift": 0.0527,
      "p_value": 1.0
    },
    {
      "label": "Score >= 8",
      "N": 4124,
      "reach_rate": 0.8358,
      "null_rate": 0.7893,
      "lift": 0.0466,
      "p_value": 1.0
    },
    {
      "label": "Growing + One-sided + No neg path",
      "N": 1688,
      "reach_rate": 0.8312,
      "null_rate": 0.7915,
      "lift": 0.0397,
      "p_value": 0.999983
    },
    {
      "label": "High OI + No neg path + Close",
      "N": 1994,
      "reach_rate": 0.8305,
      "null_rate": 0.7823,
      "lift": 0.0481,
      "p_value": 1.0
    },
    {
      "label": "One-sided + Persistent + High MM OI",
      "N": 3514,
      "reach_rate": 0.8298,
      "null_rate": 0.792,
      "lift": 0.0378,
      "p_value": 1.0
    },
    {
      "label": "Growing + No neg path + Close (<15pt)",
      "N": 1016,
      "reach_rate": 0.8209,
      "null_rate": 0.7815,
      "lift": 0.0394,
      "p_value": 0.999159
    }
  ],
  "step5_is_oos": [
    {
      "bin": "0-3 (Low)",
      "is_N": 2890,
      "is_reach": 0.5543,
      "oos_N": 3087,
      "oos_reach": 0.4059,
      "stable": false
    },
    {
      "bin": "4-6 (Medium)",
      "is_N": 1107,
      "is_reach": 0.6522,
      "oos_N": 816,
      "oos_reach": 0.6752,
      "stable": true
    },
    {
      "bin": "7-9 (High)",
      "is_N": 1331,
      "is_reach": 0.7693,
      "oos_N": 915,
      "oos_reach": 0.7661,
      "stable": true
    },
    {
      "bin": "10+ (Very High)",
      "is_N": 1608,
      "is_reach": 0.8308,
      "oos_N": 990,
      "oos_reach": 0.9141,
      "stable": true
    }
  ]
}