{
  "baseline": {
    "rho": 0.3206284880109878,
    "pval": 1.160929504703144e-41,
    "n": 1688,
    "win_rate": 0.6447661469933185,
    "green_n": 898
  },
  "tests": {
    "test1_gex_regime": {
      "description": "GEX Regime (NEG vs POS)",
      "baseline_subset": {
        "rho": 0.37973425901874197,
        "n": 424
      },
      "subgroups": [
        {
          "label": "NEG_GEX",
          "n": 45,
          "rho": 0.3345191040843214,
          "pval": 0.024702881368595463,
          "win_rate": 0.72,
          "green_n": 25
        },
        {
          "label": "POS_GEX",
          "n": 379,
          "rho": 0.38425990217408074,
          "pval": 8.77842814870774e-15,
          "win_rate": 0.6262626262626263,
          "green_n": 198
        }
      ]
    },
    "test2_options_rvol": {
      "description": "Options RVOL (HIGH >1.1 vs LOW <0.9)",
      "baseline_subset": {
        "rho": 0.37442126002627,
        "n": 416
      },
      "subgroups": [
        {
          "label": "HIGH_RVOL>1.1",
          "n": 108,
          "rho": 0.2390560842931588,
          "pval": 0.012714254672357903,
          "win_rate": 0.3888888888888889,
          "green_n": 36
        },
        {
          "label": "MID_RVOL_0.9-1.1",
          "n": 219,
          "rho": 0.4424806059844391,
          "pval": 6.488709421672714e-12,
          "win_rate": 0.6929133858267716,
          "green_n": 127
        },
        {
          "label": "LOW_RVOL<0.9",
          "n": 89,
          "rho": 0.31115083418454204,
          "pval": 0.0029980166960348145,
          "win_rate": 0.6226415094339622,
          "green_n": 53
        }
      ]
    },
    "test3_orb_spread": {
      "description": "ORB Spread (skipped - no ORB spread data; proxied by test 11 sector spread)",
      "skipped": true,
      "reason": "No per-day ORB spread data available. Sector spread covered in Test 11."
    },
    "test4_gap_direction": {
      "description": "Gap Direction (ES gap up vs gap down)",
      "baseline_subset": {
        "rho": 0.31851138254139605,
        "n": 753
      },
      "subgroups": [
        {
          "label": "GAP_UP",
          "n": 426,
          "rho": 0.3056811068920757,
          "pval": 1.1516526127614638e-10,
          "win_rate": 0.5866666666666667,
          "green_n": 225
        },
        {
          "label": "GAP_DOWN",
          "n": 327,
          "rho": 0.32744249066850434,
          "pval": 1.306714611422562e-09,
          "win_rate": 0.6551724137931034,
          "green_n": 174
        },
        {
          "label": "GAP_UP+Growth_GREEN",
          "n": 225,
          "rho": 0.19017804466919513,
          "pval": 0.00419707883762584,
          "win_rate": 0.5866666666666667,
          "green_n": 225
        },
        {
          "label": "GAP_DOWN+Growth_RED",
          "n": 153,
          "rho": 0.27604773967003066,
          "pval": 0.0005525813866828016,
          "win_rate": NaN,
          "green_n": 0
        },
        {
          "label": "GAP_DIVERGES_Growth",
          "n": 375,
          "rho": 0.36653407668676763,
          "pval": 2.286214744169729e-13,
          "win_rate": 0.6551724137931034,
          "green_n": 174
        }
      ]
    },
    "test5_hyg_confirmation": {
      "description": "HYG Confirmation (same vs diverging direction)",
      "baseline_subset": {
        "rho": 0.3205573460867324,
        "n": 1685
      },
      "subgroups": [
        {
          "label": "HYG_CONFIRMS_Growth",
          "n": 1060,
          "rho": 0.41097396813511,
          "pval": 1.8641604486542147e-44,
          "win_rate": 0.7198515769944341,
          "green_n": 539
        },
        {
          "label": "HYG_DIVERGES_Growth",
          "n": 625,
          "rho": 0.11455944949619071,
          "pval": 0.004134682365918623,
          "win_rate": 0.5322128851540616,
          "green_n": 357
        }
      ]
    },
    "test6_tlt_signal": {
      "description": "TLT Signal (yields up=risk-on vs yields down=defensive)",
      "baseline_subset": {
        "rho": 0.3206284880109878,
        "n": 1688
      },
      "subgroups": [
        {
          "label": "TLT_DOWN_yields_up",
          "n": 822,
          "rho": 0.3432975215745741,
          "pval": 3.776744260258613e-24,
          "win_rate": 0.6295503211991434,
          "green_n": 467
        },
        {
          "label": "TLT_UP_yields_down",
          "n": 866,
          "rho": 0.2988568321027668,
          "pval": 2.5124334585872153e-19,
          "win_rate": 0.6612529002320185,
          "green_n": 431
        },
        {
          "label": "RISK_ON_TLT_dn+Growth_grn",
          "n": 467,
          "rho": 0.2459184108695647,
          "pval": 7.326124794890498e-08,
          "win_rate": 0.6295503211991434,
          "green_n": 467
        },
        {
          "label": "DEFENSIVE_TLT_up+Growth_grn",
          "n": 431,
          "rho": 0.1915229290694677,
          "pval": 6.289529020499023e-05,
          "win_rate": 0.6612529002320185,
          "green_n": 431
        }
      ]
    },
    "test7_iwm_confirmation": {
      "description": "IWM Small Caps Confirmation",
      "baseline_subset": {
        "rho": 0.3206284880109878,
        "n": 1688
      },
      "subgroups": [
        {
          "label": "IWM_CONFIRMS_Growth",
          "n": 1029,
          "rho": 0.4128716248476108,
          "pval": 1.2600079343854641e-43,
          "win_rate": 0.6878504672897197,
          "green_n": 535
        },
        {
          "label": "IWM_DIVERGES_Growth",
          "n": 659,
          "rho": 0.11278084263587768,
          "pval": 0.0037440985895468653,
          "win_rate": 0.581267217630854,
          "green_n": 363
        }
      ]
    },
    "test8_vix_direction": {
      "description": "VIX Direction (falling=compression vs rising=hedging)",
      "baseline_subset": {
        "rho": 0.38895024553664775,
        "n": 352
      },
      "subgroups": [
        {
          "label": "VIX_FALLING",
          "n": 182,
          "rho": 0.373488028138875,
          "pval": 2.0684888095576158e-07,
          "win_rate": 0.7889908256880734,
          "green_n": 109
        },
        {
          "label": "VIX_RISING",
          "n": 170,
          "rho": 0.3151605083017324,
          "pval": 2.8384473083053385e-05,
          "win_rate": 0.40789473684210525,
          "green_n": 76
        },
        {
          "label": "VIX_FALL+Growth_GREEN",
          "n": 109,
          "rho": 0.23262904272078583,
          "pval": 0.014924248020878035,
          "win_rate": 0.7889908256880734,
          "green_n": 109
        },
        {
          "label": "VIX_RISE+Growth_GREEN",
          "n": 76,
          "rho": 0.2937252221462748,
          "pval": 0.010016068870105367,
          "win_rate": 0.40789473684210525,
          "green_n": 76
        }
      ]
    },
    "test9_es_cvd": {
      "description": "ES Cumulative Delta (positive vs negative CVD 9:30-10:00)",
      "baseline_subset": {
        "rho": 0.31570775270250034,
        "n": 755
      },
      "subgroups": [
        {
          "label": "POSITIVE_CVD",
          "n": 392,
          "rho": 0.21143472324210136,
          "pval": 2.436135748840553e-05,
          "win_rate": 0.628158844765343,
          "green_n": 277
        },
        {
          "label": "NEGATIVE_CVD",
          "n": 363,
          "rho": 0.31485867221678376,
          "pval": 8.521113668813509e-10,
          "win_rate": 0.5806451612903226,
          "green_n": 124
        },
        {
          "label": "CVD_POS+Growth_GREEN",
          "n": 277,
          "rho": 0.17080487234760924,
          "pval": 0.004359789704089888,
          "win_rate": 0.628158844765343,
          "green_n": 277
        },
        {
          "label": "CVD_NEG+Growth_GREEN",
          "n": 124,
          "rho": 0.2446262785208497,
          "pval": 0.006177903619795595,
          "win_rate": 0.5806451612903226,
          "green_n": 124
        }
      ]
    },
    "test10_gex_shift": {
      "description": "TRACE GEX Intraday Shift (becoming more negative vs positive)",
      "baseline_subset": {
        "rho": 0.38107138304531385,
        "n": 423
      },
      "subgroups": [
        {
          "label": "GEX_SHIFT_MORE_NEG",
          "n": 214,
          "rho": 0.3828298196044338,
          "pval": 7.0558945672935085e-09,
          "win_rate": 0.5959595959595959,
          "green_n": 99
        },
        {
          "label": "GEX_SHIFT_MORE_POS",
          "n": 209,
          "rho": 0.362062937062937,
          "pval": 7.173469307836877e-08,
          "win_rate": 0.6747967479674797,
          "green_n": 123
        }
      ]
    },
    "test11_sector_spread": {
      "description": "Sector Spread (wide >1.5% vs narrow <0.5%)",
      "baseline_subset": {
        "rho": 0.3206284880109878,
        "n": 1688
      },
      "subgroups": [
        {
          "label": "WIDE_SPREAD>1.5%",
          "n": 622,
          "rho": 0.3404220438936759,
          "pval": 2.430879639675069e-18,
          "win_rate": 0.6358024691358025,
          "green_n": 324
        },
        {
          "label": "MID_SPREAD",
          "n": 1041,
          "rho": 0.30641720962747926,
          "pval": 4.553991845330888e-24,
          "win_rate": 0.6516245487364621,
          "green_n": 554
        },
        {
          "label": "NARROW_SPREAD<0.5%",
          "n": 25,
          "rho": 0.42076923076923073,
          "pval": 0.036215723483100655,
          "win_rate": 0.6,
          "green_n": 20
        }
      ]
    },
    "test12_momentum_accel": {
      "description": "Growth Momentum Acceleration (9:45 \u2192 10:00)",
      "baseline_subset": {
        "rho": 0.3206284880109878,
        "n": 1688
      },
      "subgroups": [
        {
          "label": "ACCELERATING",
          "n": 880,
          "rho": 0.2496246297275224,
          "pval": 5.743473490025515e-14,
          "win_rate": 0.6749226006191951,
          "green_n": 646
        },
        {
          "label": "DECELERATING",
          "n": 808,
          "rho": 0.26105492876820413,
          "pval": 4.6918721547784956e-14,
          "win_rate": 0.5674603174603174,
          "green_n": 252
        },
        {
          "label": "ACCEL+Growth_GREEN",
          "n": 646,
          "rho": 0.20560442626196243,
          "pval": 1.3490298915377535e-07,
          "win_rate": 0.6749226006191951,
          "green_n": 646
        },
        {
          "label": "DECEL+Growth_GREEN",
          "n": 252,
          "rho": 0.15033035559624855,
          "pval": 0.016933751931544113,
          "win_rate": 0.5674603174603174,
          "green_n": 252
        }
      ]
    },
    "test13_overnight_es": {
      "description": "Overnight ES vs Cash Open (18:00 prior \u2192 9:30 AM)",
      "baseline_subset": {
        "rho": 0.31851138254139605,
        "n": 753
      },
      "subgroups": [
        {
          "label": "OVERNIGHT_UP",
          "n": 426,
          "rho": 0.3056811068920757,
          "pval": 1.1516526127614638e-10,
          "win_rate": 0.5866666666666667,
          "green_n": 225
        },
        {
          "label": "OVERNIGHT_DOWN",
          "n": 327,
          "rho": 0.32744249066850434,
          "pval": 1.306714611422562e-09,
          "win_rate": 0.6551724137931034,
          "green_n": 174
        },
        {
          "label": "OVERNIGHT_UP+Growth_GREEN",
          "n": 225,
          "rho": 0.19017804466919513,
          "pval": 0.00419707883762584,
          "win_rate": 0.5866666666666667,
          "green_n": 225
        },
        {
          "label": "OVERNIGHT_UP+Growth_RED",
          "n": 201,
          "rho": 0.16722328949312845,
          "pval": 0.017656442293386743,
          "win_rate": NaN,
          "green_n": 0
        },
        {
          "label": "OVERNIGHT_DOWN+Growth_GREEN",
          "n": 174,
          "rho": 0.2331285059369572,
          "pval": 0.001962948256789629,
          "win_rate": 0.6551724137931034,
          "green_n": 174
        }
      ]
    }
  },
  "best_factor": {
    "test": "test2_options_rvol",
    "rho_improvement": 0.1218521179734513
  },
  "null_test": {
    "test": "test2_options_rvol",
    "condition_col": "dte0_rvol",
    "observed_rho_group1": 0.4424806059844391,
    "observed_rho_group2": 0.2390560842931588,
    "observed_diff": 0.2034245216912803,
    "null_mean": -0.00035013302232841524,
    "null_std": 0.09034593646699514,
    "p_value": 0.0258,
    "n_shuffles": 5000,
    "n": 416
  },
  "walk_forward": {
    "positive": {
      "train_rho": 0.4507873805583729,
      "train_n": 131,
      "test_rho": 0.43485611637490756,
      "test_n": 88
    },
    "negative": {
      "train_rho": 0.2939560439560439,
      "train_n": 64,
      "test_rho": 0.17068357998590555,
      "test_n": 44
    }
  },
  "metadata": {
    "run_date": "2026-03-31T22:55:42.577052",
    "core_n_days": 1819,
    "data_range_start": "2019-01-02",
    "data_range_end": "2026-03-27",
    "description": "Growth group (XLK+XLC) morning return \u2192 SPX close direction, 13 conditioning factors"
  }
}