{
  "all_gap_down_>0.5%": {
    "stats": {
      "label": "all_gap_down_>0.5%",
      "n": 87,
      "gap_pct_mean": -1.069,
      "gap_pct_median": -0.905,
      "otc_mean": -0.0207,
      "otc_median": -0.0762,
      "otc_std": 0.7857,
      "otl_mean": -0.6201,
      "oth_mean": 0.5695,
      "fill_rate": 19.5,
      "partial_fill_rate": 41.4,
      "continuation_rate": 54.0,
      "reversal_rate": 46.0,
      "entry_timing": {
        "09:35:00": {
          "mean_ret": 0.0069,
          "median_ret": -0.0166,
          "win_rate": 47.1,
          "avg_winner": 0.6034,
          "avg_loser": -0.5248,
          "n": 87
        },
        "10:00:00": {
          "mean_ret": 0.0308,
          "median_ret": 0.0311,
          "win_rate": 51.7,
          "avg_winner": 0.5087,
          "avg_loser": -0.4813,
          "n": 87
        },
        "10:30:00": {
          "mean_ret": 0.022,
          "median_ret": 0.05,
          "win_rate": 54.0,
          "avg_winner": 0.506,
          "avg_loser": -0.5467,
          "n": 87
        },
        "11:00:00": {
          "mean_ret": 0.0041,
          "median_ret": 0.0613,
          "win_rate": 50.6,
          "avg_winner": 0.4839,
          "avg_loser": -0.4869,
          "n": 87
        },
        "11:30:00": {
          "mean_ret": -0.022,
          "median_ret": -0.0545,
          "win_rate": 44.8,
          "avg_winner": 0.51,
          "avg_loser": -0.4543,
          "n": 87
        },
        "12:00:00": {
          "mean_ret": -0.0233,
          "median_ret": -0.0062,
          "win_rate": 49.4,
          "avg_winner": 0.3929,
          "avg_loser": -0.4301,
          "n": 87
        },
        "13:00:00": {
          "mean_ret": -0.0566,
          "median_ret": -0.0481,
          "win_rate": 40.2,
          "avg_winner": 0.3359,
          "avg_loser": -0.3208,
          "n": 87
        },
        "14:00:00": {
          "mean_ret": 0.001,
          "median_ret": -0.0375,
          "win_rate": 47.1,
          "avg_winner": 0.2971,
          "avg_loser": -0.2629,
          "n": 87
        }
      },
      "vix_conditioning": {
        "low_vix_<=20": {
          "n": 54,
          "mean_otc": -0.0462,
          "reversal_rate": 46.3,
          "fill_rate": 11.1,
          "continuation_rate": 53.7
        },
        "mid_vix_20-25": {
          "n": 23,
          "mean_otc": 0.0945,
          "reversal_rate": 47.8,
          "fill_rate": 34.8,
          "continuation_rate": 52.2
        },
        "high_vix_>25": {
          "n": 10,
          "mean_otc": -0.148,
          "reversal_rate": 40.0,
          "fill_rate": 30.0,
          "continuation_rate": 60.0
        }
      },
      "hour_of_low_dist": {
        "15": 5,
        "14": 21,
        "10": 15,
        "11": 8,
        "13": 7,
        "9": 22,
        "12": 8,
        "16": 1
      },
      "first_30_predicts_day": {
        "corr": 0.396,
        "p_value": 0.0001
      },
      "first_hour_predicts_day": {
        "corr": 0.452,
        "p_value": 0.0
      },
      "max_dd_from_open_mean": -0.6201,
      "vix_open_mean": 20.04
    },
    "patterns": {
      "morning_stabilize_then_rally": {
        "description": "Gap down but first 30 min holds (ret > -0.1%)",
        "n": 44,
        "reversal_rate": 70.5,
        "avg_otc_reversal": 0.6854
      },
      "morning_continuation": {
        "description": "Gap down AND first 30 min drops further (>-0.3%)",
        "n": 17,
        "continuation_rate": 88.2,
        "avg_otc": -0.4698,
        "avg_max_dd": -0.9186
      },
      "vix_spike_gap": {
        "description": "VIX overnight change >10% + gap down",
        "n": 18,
        "reversal_rate": 50.0,
        "avg_otc": 0.0359,
        "fill_rate": 27.8
      },
      "gap_size_buckets": {
        "extreme_<-1.5%": {
          "n": 10,
          "reversal_rate": 40.0,
          "fill_rate": 0.0,
          "avg_otc": -0.2553
        },
        "moderate_-0.75_to_-1.5%": {
          "n": 49,
          "reversal_rate": 46.9,
          "fill_rate": 18.4,
          "avg_otc": 0.098
        },
        "small_-0.5_to_-0.75%": {
          "n": 28,
          "reversal_rate": 46.4,
          "fill_rate": 28.6,
          "avg_otc": -0.1446
        }
      },
      "late_day_recovery": {
        "description": "Low before noon + power hour rally (>0.2%)",
        "n": 1,
        "pct_of_total": 1.1,
        "avg_power_ret": 0.3874,
        "avg_otc": 0.7244
      },
      "shape_classification": {
        "v_shape": {
          "n": 23,
          "avg_otc": 0.8718
        },
        "l_shape": {
          "n": 31,
          "avg_otc": -0.7864
        },
        "other": {
          "n": 33
        }
      },
      "consecutive_gap_down": {
        "description": "Second gap-down day in a row",
        "n": 27,
        "reversal_rate": 51.9,
        "avg_otc": 0.0905
      }
    },
    "momentum": {
      "checkpoint_to_close_correlation": {
        "09:45:00": {
          "corr": 0.537,
          "p": 0.0,
          "n": 87
        },
        "10:00:00": {
          "corr": 0.396,
          "p": 0.0001,
          "n": 87
        },
        "10:15:00": {
          "corr": 0.366,
          "p": 0.0005,
          "n": 87
        },
        "10:30:00": {
          "corr": 0.452,
          "p": 0.0,
          "n": 87
        },
        "11:00:00": {
          "corr": 0.562,
          "p": 0.0,
          "n": 87
        },
        "11:30:00": {
          "corr": 0.648,
          "p": 0.0,
          "n": 87
        }
      },
      "interpretation": "How well does return at each checkpoint predict the day's close"
    },
    "n_days": 87,
    "sample_days": [
      {
        "date": "2023-02-16",
        "gap_pct": -0.792,
        "gap_pts": -32.85,
        "open": 4114.75,
        "prev_close": 4147.6,
        "day_close": 4090.41,
        "day_high": 4136.54,
        "day_low": 4089.49,
        "open_to_close_pct": -0.5915,
        "open_to_low_pct": -0.6139,
        "open_to_high_pct": 0.5296,
        "gap_filled": "False",
        "partial_fill": "True",
        "continued_down": "True",
        "reversed_up": "False",
        "time_of_low": "2023-02-16 15:55:00",
        "time_of_high": "2023-02-16 14:35:00",
        "first_30_ret": -0.4537,
        "first_30_low": -0.5755,
        "first_hour_ret": 0.0194,
        "lunch_ret": 0.1659,
        "power_ret": -0.9548,
        "entry_returns": {
          "09:35:00": -0.2176,
          "10:00:00": -0.1528,
          "10:30:00": -0.5468,
          "11:00:00": -0.75,
          "11:30:00": -0.762,
          "12:00:00": -0.7746,
          "13:00:00": -0.9365,
          "14:00:00": -0.9392
        },
        "max_dd_from_open": -0.6139,
        "vix_open": 18.39,
        "vix_close": 19.02,
        "vix_high": 20.0,
        "vix_intraday_change": 3.43,
        "vix_prior_close": 18.35,
        "vix_overnight_change": 0.22
      },
      {
        "date": "2023-02-21",
        "gap_pct": -0.656,
        "gap_pts": -26.74,
        "open": 4052.35,
        "prev_close": 4079.09,
        "day_close": 3997.34,
        "day_high": 4052.35,
        "day_low": 3995.19,
        "open_to_close_pct": -1.3575,
        "open_to_low_pct": -1.4105,
        "open_to_high_pct": 0.0,
        "gap_filled": "False",
        "partial_fill": "False",
        "continued_down": "True",
        "reversed_up": "False",
        "time_of_low": "2023-02-21 14:25:00",
        "time_of_high": "2023-02-21 09:30:00",
        "first_30_ret": -0.4987,
        "first_30_low": -0.5893,
        "first_hour_ret": -0.6562,
        "lunch_ret": 0.0252,
        "power_ret": -0.1591,
        "entry_returns": {
          "09:35:00": -1.1797,
          "10:00:00": -0.8682,
          "10:30:00": -0.6591,
          "11:00:00": -0.5728,
          "11:30:00": -0.4265,
          "12:00:00": -0.3599,
          "13:00:00": -0.4604,
          "14:00:00": -0.1466
        },
        "max_dd_from_open": -1.4105,
        "vix_open": 22.4,
        "vix_close": 22.79,
        "vix_high": 22.88,
        "vix_intraday_change": 1.74,
        "vix_prior_close": 21.24,
        "vix_overnight_change": 5.46
      },
      {
        "date": "2023-02-24",
        "gap_pct": -0.974,
        "gap_pts": -39.08,
        "open": 3973.24,
        "prev_close": 4012.32,
        "day_close": 3970.04,
        "day_high": 3978.25,
        "day_low": 3943.08,
        "open_to_close_pct": -0.0805,
        "open_to_low_pct": -0.7591,
        "open_to_high_pct": 0.1261,
        "gap_filled": "False",
        "partial_fill": "False",
        "continued_down": "True",
        "reversed_up": "False",
        "time_of_low": "2023-02-24 10:55:00",
        "time_of_high": "2023-02-24 15:00:00",
        "first_30_ret": -0.4324,
        "first_30_low": -0.6388,
        "first_hour_ret": -0.6171,
        "lunch_ret": -0.176,
        "power_ret": -0.0994,
        "entry_returns": {
          "09:35:00": 0.1445,
          "10:00:00": 0.4816,
          "10:30:00": 0.5348,
          "11:00:00": 0.583,
          "11:30:00": 0.2576,
          "12:00:00": 0.1291,
          "13:00:00": 0.4405,
          "14:00:00": 0.2087
        },
        "max_dd_from_open": -0.7591,
        "vix_open": 21.4,
        "vix_close": 22.74,
        "vix_high": 22.9,
        "vix_intraday_change": 6.26,
        "vix_prior_close": 21.55,
        "vix_overnight_change": -0.7
      },
      {
        "date": "2023-03-15",
        "gap_pct": -1.518,
        "gap_pts": -59.51,
        "open": 3861.05,
        "prev_close": 3920.56,
        "day_close": 3891.93,
        "day_high": 3894.26,
        "day_low": 3838.24,
        "open_to_close_pct": 0.7998,
        "open_to_low_pct": -0.5908,
        "open_to_high_pct": 0.8601,
        "gap_filled": "False",
        "partial_fill": "True",
        "continued_down": "False",
        "reversed_up": "True",
        "time_of_low": "2023-03-15 11:55:00",
        "time_of_high": "2023-03-15 14:00:00",
        "first_30_ret": 0.037,
        "first_30_low": -0.4271,
        "first_hour_ret": 0.0536,
        "lunch_ret": 0.3211,
        "power_ret": -0.0329,
        "entry_returns": {
          "09:35:00": 1.024,
          "10:00:00": 0.758,
          "10:30:00": 0.7288,
          "11:00:00": 0.8672,
          "11:30:00": 1.1033,
          "12:00:00": 1.2827,
          "13:00:00": 0.6832,
          "14:00:00": 0.1096
        },
        "max_dd_from_open": -0.5908,
        "vix_open": 24.22,
        "vix_close": 28.13,
        "vix_high": 28.55,
        "vix_intraday_change": 16.14,
        "vix_prior_close": 22.67,
        "vix_overnight_change": 6.84
      },
      {
        "date": "2023-03-17",
        "gap_pct": -0.837,
        "gap_pts": -33.16,
        "open": 3927.12,
        "prev_close": 3960.28,
        "day_close": 3916.64,
        "day_high": 3932.47,
        "day_low": 3901.27,
        "open_to_close_pct": -0.2669,
        "open_to_low_pct": -0.6582,
        "open_to_high_pct": 0.1362,
        "gap_filled": "False",
        "partial_fill": "False",
        "continued_down": "True",
        "reversed_up": "False",
        "time_of_low": "2023-03-17 13:50:00",
        "time_of_high": "2023-03-17 11:30:00",
        "first_30_ret": -0.3606,
        "first_30_low": -0.4395,
        "first_hour_ret": -0.248,
        "lunch_ret": 0.0079,
        "power_ret": -0.0059,
        "entry_returns": {
          "09:35:00": -0.0617,
          "10:00:00": -0.036,
          "10:30:00": 0.1457,
          "11:00:00": 0.1488,
          "11:30:00": -0.1468,
          "12:00:00": -0.0549,
          "13:00:00": -0.216,
          "14:00:00": 0.1227
        },
        "max_dd_from_open": -0.6582,
        "vix_open": 22.94,
        "vix_close": 24.95,
        "vix_high": 25.83,
        "vix_intraday_change": 8.76,
        "vix_prior_close": 23.89,
        "vix_overnight_change": -3.98
      }
    ]
  },
  "gap_down_>0.75%": {
    "stats": {
      "label": "gap_down_>0.75%",
      "n": 59,
      "gap_pct_mean": -1.286,
      "gap_pct_median": -1.012,
      "otc_mean": 0.0381,
      "otc_median": -0.0767,
      "otc_std": 0.8449,
      "otl_mean": -0.6541,
      "oth_mean": 0.6484,
      "fill_rate": 15.3,
      "partial_fill_rate": 39.0,
      "continuation_rate": 54.2,
      "reversal_rate": 45.8,
      "entry_timing": {
        "09:35:00": {
          "mean_ret": 0.0594,
          "median_ret": -0.0166,
          "win_rate": 49.2,
          "avg_winner": 0.6717,
          "avg_loser": -0.5326,
          "n": 59
        },
        "10:00:00": {
          "mean_ret": 0.1111,
          "median_ret": 0.0189,
          "win_rate": 50.8,
          "avg_winner": 0.6384,
          "avg_loser": -0.4342,
          "n": 59
        },
        "10:30:00": {
          "mean_ret": 0.0579,
          "median_ret": 0.0321,
          "win_rate": 50.8,
          "avg_winner": 0.6455,
          "avg_loser": -0.5499,
          "n": 59
        },
        "11:00:00": {
          "mean_ret": 0.0442,
          "median_ret": 0.0771,
          "win_rate": 52.5,
          "avg_winner": 0.5716,
          "avg_loser": -0.5397,
          "n": 59
        },
        "11:30:00": {
          "mean_ret": 0.0173,
          "median_ret": -0.0142,
          "win_rate": 45.8,
          "avg_winner": 0.6153,
          "avg_loser": -0.4873,
          "n": 59
        },
        "12:00:00": {
          "mean_ret": 0.0363,
          "median_ret": -0.0062,
          "win_rate": 49.2,
          "avg_winner": 0.5119,
          "avg_loser": -0.4234,
          "n": 59
        },
        "13:00:00": {
          "mean_ret": -0.0268,
          "median_ret": -0.0459,
          "win_rate": 40.7,
          "avg_winner": 0.4125,
          "avg_loser": -0.328,
          "n": 59
        },
        "14:00:00": {
          "mean_ret": 0.0358,
          "median_ret": -0.0375,
          "win_rate": 47.5,
          "avg_winner": 0.3525,
          "avg_loser": -0.2503,
          "n": 59
        }
      },
      "vix_conditioning": {
        "low_vix_<=20": {
          "n": 33,
          "mean_otc": 0.0333,
          "reversal_rate": 45.5,
          "fill_rate": 6.1,
          "continuation_rate": 54.5
        },
        "mid_vix_20-25": {
          "n": 16,
          "mean_otc": 0.1642,
          "reversal_rate": 50.0,
          "fill_rate": 25.0,
          "continuation_rate": 50.0
        },
        "high_vix_>25": {
          "n": 10,
          "mean_otc": -0.148,
          "reversal_rate": 40.0,
          "fill_rate": 30.0,
          "continuation_rate": 60.0
        }
      },
      "hour_of_low_dist": {
        "15": 4,
        "10": 13,
        "11": 5,
        "13": 5,
        "9": 13,
        "14": 15,
        "12": 4
      },
      "first_30_predicts_day": {
        "corr": 0.326,
        "p_value": 0.0117
      },
      "first_hour_predicts_day": {
        "corr": 0.371,
        "p_value": 0.0038
      },
      "max_dd_from_open_mean": -0.6541,
      "vix_open_mean": 21.35
    },
    "patterns": {
      "morning_stabilize_then_rally": {
        "description": "Gap down but first 30 min holds (ret > -0.1%)",
        "n": 26,
        "reversal_rate": 76.9,
        "avg_otc_reversal": 0.819
      },
      "morning_continuation": {
        "description": "Gap down AND first 30 min drops further (>-0.3%)",
        "n": 11,
        "continuation_rate": 81.8,
        "avg_otc": -0.3238,
        "avg_max_dd": -0.8263
      },
      "vix_spike_gap": {
        "description": "VIX overnight change >10% + gap down",
        "n": 16,
        "reversal_rate": 56.2,
        "avg_otc": 0.0882,
        "fill_rate": 25.0
      },
      "gap_size_buckets": {
        "extreme_<-1.5%": {
          "n": 10,
          "reversal_rate": 40.0,
          "fill_rate": 0.0,
          "avg_otc": -0.2553
        },
        "moderate_-0.75_to_-1.5%": {
          "n": 49,
          "reversal_rate": 46.9,
          "fill_rate": 18.4,
          "avg_otc": 0.098
        },
        "small_-0.5_to_-0.75%": {
          "n": 0,
          "reversal_rate": 0,
          "fill_rate": 0,
          "avg_otc": 0
        }
      },
      "late_day_recovery": {
        "description": "Low before noon + power hour rally (>0.2%)",
        "n": 1,
        "pct_of_total": 1.7,
        "avg_power_ret": 0.3874,
        "avg_otc": 0.7244
      },
      "shape_classification": {
        "v_shape": {
          "n": 16,
          "avg_otc": 1.0308
        },
        "l_shape": {
          "n": 20,
          "avg_otc": -0.7708
        },
        "other": {
          "n": 23
        }
      },
      "consecutive_gap_down": {
        "description": "Second gap-down day in a row",
        "n": 13,
        "reversal_rate": 46.2,
        "avg_otc": 0.0139
      }
    },
    "momentum": {
      "checkpoint_to_close_correlation": {
        "09:45:00": {
          "corr": 0.562,
          "p": 0.0,
          "n": 59
        },
        "10:00:00": {
          "corr": 0.326,
          "p": 0.0117,
          "n": 59
        },
        "10:15:00": {
          "corr": 0.278,
          "p": 0.0331,
          "n": 59
        },
        "10:30:00": {
          "corr": 0.371,
          "p": 0.0038,
          "n": 59
        },
        "11:00:00": {
          "corr": 0.534,
          "p": 0.0,
          "n": 59
        },
        "11:30:00": {
          "corr": 0.622,
          "p": 0.0,
          "n": 59
        }
      },
      "interpretation": "How well does return at each checkpoint predict the day's close"
    },
    "n_days": 59,
    "sample_days": [
      {
        "date": "2023-02-16",
        "gap_pct": -0.792,
        "gap_pts": -32.85,
        "open": 4114.75,
        "prev_close": 4147.6,
        "day_close": 4090.41,
        "day_high": 4136.54,
        "day_low": 4089.49,
        "open_to_close_pct": -0.5915,
        "open_to_low_pct": -0.6139,
        "open_to_high_pct": 0.5296,
        "gap_filled": "False",
        "partial_fill": "True",
        "continued_down": "True",
        "reversed_up": "False",
        "time_of_low": "2023-02-16 15:55:00",
        "time_of_high": "2023-02-16 14:35:00",
        "first_30_ret": -0.4537,
        "first_30_low": -0.5755,
        "first_hour_ret": 0.0194,
        "lunch_ret": 0.1659,
        "power_ret": -0.9548,
        "entry_returns": {
          "09:35:00": -0.2176,
          "10:00:00": -0.1528,
          "10:30:00": -0.5468,
          "11:00:00": -0.75,
          "11:30:00": -0.762,
          "12:00:00": -0.7746,
          "13:00:00": -0.9365,
          "14:00:00": -0.9392
        },
        "max_dd_from_open": -0.6139,
        "vix_open": 18.39,
        "vix_close": 19.02,
        "vix_high": 20.0,
        "vix_intraday_change": 3.43,
        "vix_prior_close": 18.35,
        "vix_overnight_change": 0.22
      },
      {
        "date": "2023-02-24",
        "gap_pct": -0.974,
        "gap_pts": -39.08,
        "open": 3973.24,
        "prev_close": 4012.32,
        "day_close": 3970.04,
        "day_high": 3978.25,
        "day_low": 3943.08,
        "open_to_close_pct": -0.0805,
        "open_to_low_pct": -0.7591,
        "open_to_high_pct": 0.1261,
        "gap_filled": "False",
        "partial_fill": "False",
        "continued_down": "True",
        "reversed_up": "False",
        "time_of_low": "2023-02-24 10:55:00",
        "time_of_high": "2023-02-24 15:00:00",
        "first_30_ret": -0.4324,
        "first_30_low": -0.6388,
        "first_hour_ret": -0.6171,
        "lunch_ret": -0.176,
        "power_ret": -0.0994,
        "entry_returns": {
          "09:35:00": 0.1445,
          "10:00:00": 0.4816,
          "10:30:00": 0.5348,
          "11:00:00": 0.583,
          "11:30:00": 0.2576,
          "12:00:00": 0.1291,
          "13:00:00": 0.4405,
          "14:00:00": 0.2087
        },
        "max_dd_from_open": -0.7591,
        "vix_open": 21.4,
        "vix_close": 22.74,
        "vix_high": 22.9,
        "vix_intraday_change": 6.26,
        "vix_prior_close": 21.55,
        "vix_overnight_change": -0.7
      },
      {
        "date": "2023-03-15",
        "gap_pct": -1.518,
        "gap_pts": -59.51,
        "open": 3861.05,
        "prev_close": 3920.56,
        "day_close": 3891.93,
        "day_high": 3894.26,
        "day_low": 3838.24,
        "open_to_close_pct": 0.7998,
        "open_to_low_pct": -0.5908,
        "open_to_high_pct": 0.8601,
        "gap_filled": "False",
        "partial_fill": "True",
        "continued_down": "False",
        "reversed_up": "True",
        "time_of_low": "2023-03-15 11:55:00",
        "time_of_high": "2023-03-15 14:00:00",
        "first_30_ret": 0.037,
        "first_30_low": -0.4271,
        "first_hour_ret": 0.0536,
        "lunch_ret": 0.3211,
        "power_ret": -0.0329,
        "entry_returns": {
          "09:35:00": 1.024,
          "10:00:00": 0.758,
          "10:30:00": 0.7288,
          "11:00:00": 0.8672,
          "11:30:00": 1.1033,
          "12:00:00": 1.2827,
          "13:00:00": 0.6832,
          "14:00:00": 0.1096
        },
        "max_dd_from_open": -0.5908,
        "vix_open": 24.22,
        "vix_close": 28.13,
        "vix_high": 28.55,
        "vix_intraday_change": 16.14,
        "vix_prior_close": 22.67,
        "vix_overnight_change": 6.84
      },
      {
        "date": "2023-03-17",
        "gap_pct": -0.837,
        "gap_pts": -33.16,
        "open": 3927.12,
        "prev_close": 3960.28,
        "day_close": 3916.64,
        "day_high": 3932.47,
        "day_low": 3901.27,
        "open_to_close_pct": -0.2669,
        "open_to_low_pct": -0.6582,
        "open_to_high_pct": 0.1362,
        "gap_filled": "False",
        "partial_fill": "False",
        "continued_down": "True",
        "reversed_up": "False",
        "time_of_low": "2023-03-17 13:50:00",
        "time_of_high": "2023-03-17 11:30:00",
        "first_30_ret": -0.3606,
        "first_30_low": -0.4395,
        "first_hour_ret": -0.248,
        "lunch_ret": 0.0079,
        "power_ret": -0.0059,
        "entry_returns": {
          "09:35:00": -0.0617,
          "10:00:00": -0.036,
          "10:30:00": 0.1457,
          "11:00:00": 0.1488,
          "11:30:00": -0.1468,
          "12:00:00": -0.0549,
          "13:00:00": -0.216,
          "14:00:00": 0.1227
        },
        "max_dd_from_open": -0.6582,
        "vix_open": 22.94,
        "vix_close": 24.95,
        "vix_high": 25.83,
        "vix_intraday_change": 8.76,
        "vix_prior_close": 23.89,
        "vix_overnight_change": -3.98
      },
      {
        "date": "2023-05-02",
        "gap_pct": -1.142,
        "gap_pts": -47.58,
        "open": 4120.29,
        "prev_close": 4167.87,
        "day_close": 4119.58,
        "day_high": 4126.56,
        "day_low": 4089.72,
        "open_to_close_pct": -0.0172,
        "open_to_low_pct": -0.7419,
        "open_to_high_pct": 0.1522,
        "gap_filled": "False",
        "partial_fill": "False",
        "continued_down": "True",
        "reversed_up": "False",
        "time_of_low": "2023-05-02 10:30:00",
        "time_of_high": "2023-05-02 14:10:00",
        "first_30_ret": -0.5199,
        "first_30_low": -0.6563,
        "first_hour_ret": -0.6313,
        "lunch_ret": 0.2878,
        "power_ret": -0.0027,
        "entry_returns": {
          "09:35:00": 0.1629,
          "10:00:00": 0.43,
          "10:30:00": 0.5909,
          "11:00:00": 0.5168,
          "11:30:00": 0.3782,
          "12:00:00": 0.2794,
          "13:00:00": -0.001,
          "14:00:00": -0.0614
        },
        "max_dd_from_open": -0.7419,
        "vix_open": 16.58,
        "vix_close": 19.07,
        "vix_high": 19.81,
        "vix_intraday_change": 15.02,
        "vix_prior_close": 15.73,
        "vix_overnight_change": 5.4
      }
    ]
  },
  "gap_down_>1.0%": {
    "stats": {
      "label": "gap_down_>1.0%",
      "n": 31,
      "gap_pct_mean": -1.644,
      "gap_pct_median": -1.325,
      "otc_mean": 0.0055,
      "otc_median": -0.2343,
      "otc_std": 0.9403,
      "otl_mean": -0.8049,
      "oth_mean": 0.7041,
      "fill_rate": 12.9,
      "partial_fill_rate": 32.3,
      "continuation_rate": 54.8,
      "reversal_rate": 45.2,
      "entry_timing": {
        "09:35:00": {
          "mean_ret": -0.0044,
          "median_ret": -0.1439,
          "win_rate": 41.9,
          "avg_winner": 0.8596,
          "avg_loser": -0.6285,
          "n": 31
        },
        "10:00:00": {
          "mean_ret": 0.0449,
          "median_ret": -0.0744,
          "win_rate": 45.2,
          "avg_winner": 0.749,
          "avg_loser": -0.535,
          "n": 31
        },
        "10:30:00": {
          "mean_ret": 0.0,
          "median_ret": 0.0321,
          "win_rate": 51.6,
          "avg_winner": 0.6905,
          "avg_loser": -0.7365,
          "n": 31
        },
        "11:00:00": {
          "mean_ret": -0.0051,
          "median_ret": -0.0717,
          "win_rate": 48.4,
          "avg_winner": 0.6625,
          "avg_loser": -0.6309,
          "n": 31
        },
        "11:30:00": {
          "mean_ret": -0.0047,
          "median_ret": -0.065,
          "win_rate": 41.9,
          "avg_winner": 0.8015,
          "avg_loser": -0.5869,
          "n": 31
        },
        "12:00:00": {
          "mean_ret": 0.0562,
          "median_ret": 0.0299,
          "win_rate": 51.6,
          "avg_winner": 0.6123,
          "avg_loser": -0.537,
          "n": 31
        },
        "13:00:00": {
          "mean_ret": 0.0059,
          "median_ret": -0.0041,
          "win_rate": 45.2,
          "avg_winner": 0.4702,
          "avg_loser": -0.3764,
          "n": 31
        },
        "14:00:00": {
          "mean_ret": 0.1003,
          "median_ret": 0.0788,
          "win_rate": 51.6,
          "avg_winner": 0.3946,
          "avg_loser": -0.2137,
          "n": 31
        }
      },
      "vix_conditioning": {
        "low_vix_<=20": {
          "n": 16,
          "mean_otc": 0.0805,
          "reversal_rate": 43.8,
          "fill_rate": 6.2,
          "continuation_rate": 56.2
        },
        "mid_vix_20-25": {
          "n": 7,
          "mean_otc": 0.4424,
          "reversal_rate": 71.4,
          "fill_rate": 28.6,
          "continuation_rate": 28.6
        },
        "high_vix_>25": {
          "n": 8,
          "mean_otc": -0.5268,
          "reversal_rate": 25.0,
          "fill_rate": 12.5,
          "continuation_rate": 75.0
        }
      },
      "hour_of_low_dist": {
        "11": 2,
        "10": 6,
        "13": 3,
        "12": 2,
        "15": 3,
        "9": 7,
        "14": 8
      },
      "first_30_predicts_day": {
        "corr": 0.272,
        "p_value": 0.1389
      },
      "first_hour_predicts_day": {
        "corr": 0.319,
        "p_value": 0.0798
      },
      "max_dd_from_open_mean": -0.8049,
      "vix_open_mean": 22.85
    },
    "patterns": {
      "morning_stabilize_then_rally": {
        "description": "Gap down but first 30 min holds (ret > -0.1%)",
        "n": 14,
        "reversal_rate": 78.6,
        "avg_otc_reversal": 0.909
      },
      "morning_continuation": {
        "description": "Gap down AND first 30 min drops further (>-0.3%)",
        "n": 6,
        "continuation_rate": 83.3,
        "avg_otc": -0.4247,
        "avg_max_dd": -0.9145
      },
      "vix_spike_gap": {
        "description": "VIX overnight change >10% + gap down",
        "n": 11,
        "reversal_rate": 63.6,
        "avg_otc": 0.1103,
        "fill_rate": 18.2
      },
      "gap_size_buckets": {
        "extreme_<-1.5%": {
          "n": 10,
          "reversal_rate": 40.0,
          "fill_rate": 0.0,
          "avg_otc": -0.2553
        },
        "moderate_-0.75_to_-1.5%": {
          "n": 21,
          "reversal_rate": 47.6,
          "fill_rate": 19.0,
          "avg_otc": 0.1296
        },
        "small_-0.5_to_-0.75%": {
          "n": 0,
          "reversal_rate": 0,
          "fill_rate": 0,
          "avg_otc": 0
        }
      },
      "late_day_recovery": {
        "description": "Low before noon + power hour rally (>0.2%)",
        "n": 1,
        "pct_of_total": 3.2,
        "avg_power_ret": 0.3874,
        "avg_otc": 0.7244
      },
      "shape_classification": {
        "v_shape": {
          "n": 10,
          "avg_otc": 1.0294
        },
        "l_shape": {
          "n": 12,
          "avg_otc": -0.8665
        },
        "other": {
          "n": 9
        }
      },
      "consecutive_gap_down": {
        "description": "Second gap-down day in a row",
        "n": 6,
        "reversal_rate": 50.0,
        "avg_otc": -0.0398
      }
    },
    "momentum": {
      "checkpoint_to_close_correlation": {
        "09:45:00": {
          "corr": 0.471,
          "p": 0.0075,
          "n": 31
        },
        "10:00:00": {
          "corr": 0.272,
          "p": 0.1389,
          "n": 31
        },
        "10:15:00": {
          "corr": 0.22,
          "p": 0.2349,
          "n": 31
        },
        "10:30:00": {
          "corr": 0.319,
          "p": 0.0798,
          "n": 31
        },
        "11:00:00": {
          "corr": 0.508,
          "p": 0.0035,
          "n": 31
        },
        "11:30:00": {
          "corr": 0.588,
          "p": 0.0005,
          "n": 31
        }
      },
      "interpretation": "How well does return at each checkpoint predict the day's close"
    },
    "n_days": 31,
    "sample_days": [
      {
        "date": "2023-03-15",
        "gap_pct": -1.518,
        "gap_pts": -59.51,
        "open": 3861.05,
        "prev_close": 3920.56,
        "day_close": 3891.93,
        "day_high": 3894.26,
        "day_low": 3838.24,
        "open_to_close_pct": 0.7998,
        "open_to_low_pct": -0.5908,
        "open_to_high_pct": 0.8601,
        "gap_filled": "False",
        "partial_fill": "True",
        "continued_down": "False",
        "reversed_up": "True",
        "time_of_low": "2023-03-15 11:55:00",
        "time_of_high": "2023-03-15 14:00:00",
        "first_30_ret": 0.037,
        "first_30_low": -0.4271,
        "first_hour_ret": 0.0536,
        "lunch_ret": 0.3211,
        "power_ret": -0.0329,
        "entry_returns": {
          "09:35:00": 1.024,
          "10:00:00": 0.758,
          "10:30:00": 0.7288,
          "11:00:00": 0.8672,
          "11:30:00": 1.1033,
          "12:00:00": 1.2827,
          "13:00:00": 0.6832,
          "14:00:00": 0.1096
        },
        "max_dd_from_open": -0.5908,
        "vix_open": 24.22,
        "vix_close": 28.13,
        "vix_high": 28.55,
        "vix_intraday_change": 16.14,
        "vix_prior_close": 22.67,
        "vix_overnight_change": 6.84
      },
      {
        "date": "2023-05-02",
        "gap_pct": -1.142,
        "gap_pts": -47.58,
        "open": 4120.29,
        "prev_close": 4167.87,
        "day_close": 4119.58,
        "day_high": 4126.56,
        "day_low": 4089.72,
        "open_to_close_pct": -0.0172,
        "open_to_low_pct": -0.7419,
        "open_to_high_pct": 0.1522,
        "gap_filled": "False",
        "partial_fill": "False",
        "continued_down": "True",
        "reversed_up": "False",
        "time_of_low": "2023-05-02 10:30:00",
        "time_of_high": "2023-05-02 14:10:00",
        "first_30_ret": -0.5199,
        "first_30_low": -0.6563,
        "first_hour_ret": -0.6313,
        "lunch_ret": 0.2878,
        "power_ret": -0.0027,
        "entry_returns": {
          "09:35:00": 0.1629,
          "10:00:00": 0.43,
          "10:30:00": 0.5909,
          "11:00:00": 0.5168,
          "11:30:00": 0.3782,
          "12:00:00": 0.2794,
          "13:00:00": -0.001,
          "14:00:00": -0.0614
        },
        "max_dd_from_open": -0.7419,
        "vix_open": 16.58,
        "vix_close": 19.07,
        "vix_high": 19.81,
        "vix_intraday_change": 15.02,
        "vix_prior_close": 15.73,
        "vix_overnight_change": 5.4
      },
      {
        "date": "2023-07-06",
        "gap_pct": -1.228,
        "gap_pts": -54.61,
        "open": 4392.21,
        "prev_close": 4446.82,
        "day_close": 4411.59,
        "day_high": 4415.57,
        "day_low": 4385.05,
        "open_to_close_pct": 0.4412,
        "open_to_low_pct": -0.163,
        "open_to_high_pct": 0.5319,
        "gap_filled": "False",
        "partial_fill": "False",
        "continued_down": "False",
        "reversed_up": "True",
        "time_of_low": "2023-07-06 10:25:00",
        "time_of_high": "2023-07-06 14:00:00",
        "first_30_ret": -0.0546,
        "first_30_low": -0.1391,
        "first_hour_ret": -0.0162,
        "lunch_ret": 0.1604,
        "power_ret": -0.0002,
        "entry_returns": {
          "09:35:00": 0.473,
          "10:00:00": 0.5674,
          "10:30:00": 0.5383,
          "11:00:00": 0.3535,
          "11:30:00": 0.2031,
          "12:00:00": 0.1146,
          "13:00:00": -0.0041,
          "14:00:00": -0.0863
        },
        "max_dd_from_open": -0.163,
        "vix_open": 14.97,
        "vix_close": 16.5,
        "vix_high": 17.08,
        "vix_intraday_change": 10.22,
        "vix_prior_close": 14.14,
        "vix_overnight_change": 5.87
      },
      {
        "date": "2023-10-03",
        "gap_pct": -1.127,
        "gap_pts": -48.35,
        "open": 4240.04,
        "prev_close": 4288.39,
        "day_close": 4229.45,
        "day_high": 4245.41,
        "day_low": 4216.45,
        "open_to_close_pct": -0.2498,
        "open_to_low_pct": -0.5564,
        "open_to_high_pct": 0.1266,
        "gap_filled": "False",
        "partial_fill": "False",
        "continued_down": "True",
        "reversed_up": "False",
        "time_of_low": "2023-10-03 13:15:00",
        "time_of_high": "2023-10-03 09:35:00",
        "first_30_ret": -0.2637,
        "first_30_low": -0.2646,
        "first_hour_ret": -0.363,
        "lunch_ret": -0.4197,
        "power_ret": -0.0187,
        "entry_returns": {
          "09:35:00": -0.2888,
          "10:00:00": -0.0744,
          "10:30:00": -0.0147,
          "11:00:00": 0.0771,
          "11:30:00": -0.2173,
          "12:00:00": -0.1704,
          "13:00:00": 0.1406,
          "14:00:00": 0.0795
        },
        "max_dd_from_open": -0.5564,
        "vix_open": 17.68,
        "vix_close": 19.6,
        "vix_high": 20.07,
        "vix_intraday_change": 10.86,
        "vix_prior_close": 17.99,
        "vix_overnight_change": -1.72
      },
      {
        "date": "2023-10-25",
        "gap_pct": -1.009,
        "gap_pts": -42.88,
        "open": 4204.8,
        "prev_close": 4247.68,
        "day_close": 4186.77,
        "day_high": 4225.37,
        "day_low": 4181.42,
        "open_to_close_pct": -0.4288,
        "open_to_low_pct": -0.556,
        "open_to_high_pct": 0.4892,
        "gap_filled": "False",
        "partial_fill": "False",
        "continued_down": "True",
        "reversed_up": "False",
        "time_of_low": "2023-10-25 12:50:00",
        "time_of_high": "2023-10-25 10:05:00",
        "first_30_ret": 0.4112,
        "first_30_low": -0.0321,
        "first_hour_ret": 0.2583,
        "lunch_ret": -0.3825,
        "power_ret": 0.0007,
        "entry_returns": {
          "09:35:00": -0.5206,
          "10:00:00": -0.6191,
          "10:30:00": -0.8079,
          "11:00:00": -0.4761,
          "11:30:00": -0.4013,
          "12:00:00": -0.2492,
          "13:00:00": -0.0365,
          "14:00:00": -0.0375
        },
        "max_dd_from_open": -0.556,
        "vix_open": 19.21,
        "vix_close": 20.04,
        "vix_high": 20.08,
        "vix_intraday_change": 4.32,
        "vix_prior_close": 19.44,
        "vix_overnight_change": -1.18
      }
    ]
  },
  "gap_down_>1.5%": {
    "stats": {
      "label": "gap_down_>1.5%",
      "n": 10,
      "gap_pct_mean": -2.572,
      "gap_pct_median": -2.236,
      "otc_mean": -0.2553,
      "otc_median": -0.2502,
      "otc_std": 0.8613,
      "otl_mean": -1.153,
      "oth_mean": 0.7092,
      "fill_rate": 0.0,
      "partial_fill_rate": 10.0,
      "continuation_rate": 60.0,
      "reversal_rate": 40.0,
      "entry_timing": {
        "09:35:00": {
          "mean_ret": -0.332,
          "median_ret": -0.271,
          "win_rate": 30.0,
          "avg_winner": 0.6315,
          "avg_loser": -0.7449,
          "n": 10
        },
        "10:00:00": {
          "mean_ret": -0.1559,
          "median_ret": -0.0441,
          "win_rate": 40.0,
          "avg_winner": 0.4291,
          "avg_loser": -0.5458,
          "n": 10
        },
        "10:30:00": {
          "mean_ret": -0.2198,
          "median_ret": 0.0464,
          "win_rate": 60.0,
          "avg_winner": 0.3268,
          "avg_loser": -1.0396,
          "n": 10
        },
        "11:00:00": {
          "mean_ret": -0.1371,
          "median_ret": -0.0868,
          "win_rate": 50.0,
          "avg_winner": 0.6148,
          "avg_loser": -0.889,
          "n": 10
        },
        "11:30:00": {
          "mean_ret": -0.0299,
          "median_ret": -0.1626,
          "win_rate": 50.0,
          "avg_winner": 0.9361,
          "avg_loser": -0.9959,
          "n": 10
        },
        "12:00:00": {
          "mean_ret": 0.0611,
          "median_ret": 0.2089,
          "win_rate": 60.0,
          "avg_winner": 0.6193,
          "avg_loser": -0.776,
          "n": 10
        },
        "13:00:00": {
          "mean_ret": 0.0265,
          "median_ret": 0.1718,
          "win_rate": 70.0,
          "avg_winner": 0.4496,
          "avg_loser": -0.9608,
          "n": 10
        },
        "14:00:00": {
          "mean_ret": 0.1545,
          "median_ret": 0.192,
          "win_rate": 70.0,
          "avg_winner": 0.4247,
          "avg_loser": -0.476,
          "n": 10
        }
      },
      "vix_conditioning": {
        "low_vix_<=20": {
          "n": 2,
          "mean_otc": 0.245,
          "reversal_rate": 50.0,
          "fill_rate": 0.0,
          "continuation_rate": 50.0
        },
        "mid_vix_20-25": {
          "n": 2,
          "mean_otc": 0.6394,
          "reversal_rate": 100.0,
          "fill_rate": 0.0,
          "continuation_rate": 0.0
        },
        "high_vix_>25": {
          "n": 6,
          "mean_otc": -0.7203,
          "reversal_rate": 16.7,
          "fill_rate": 0.0,
          "continuation_rate": 83.3
        }
      },
      "hour_of_low_dist": {
        "11": 2,
        "10": 1,
        "9": 2,
        "14": 3,
        "13": 2
      },
      "first_30_predicts_day": {
        "corr": 0,
        "p_value": 1
      },
      "first_hour_predicts_day": {
        "corr": 0,
        "p_value": 1
      },
      "max_dd_from_open_mean": -1.153,
      "vix_open_mean": 27.8
    },
    "patterns": {
      "morning_stabilize_then_rally": {
        "description": "Gap down but first 30 min holds (ret > -0.1%)",
        "n": 4,
        "reversal_rate": 75.0,
        "avg_otc_reversal": 0.6606
      },
      "morning_continuation": {
        "description": "Gap down AND first 30 min drops further (>-0.3%)",
        "n": 1,
        "continuation_rate": 100.0,
        "avg_otc": -1.0036,
        "avg_max_dd": -1.108
      },
      "vix_spike_gap": {
        "description": "VIX overnight change >10% + gap down",
        "n": 6,
        "reversal_rate": 50.0,
        "avg_otc": -0.2731,
        "fill_rate": 0.0
      },
      "gap_size_buckets": {
        "extreme_<-1.5%": {
          "n": 10,
          "reversal_rate": 40.0,
          "fill_rate": 0.0,
          "avg_otc": -0.2553
        },
        "moderate_-0.75_to_-1.5%": {
          "n": 0,
          "reversal_rate": 0,
          "fill_rate": 0,
          "avg_otc": 0
        },
        "small_-0.5_to_-0.75%": {
          "n": 0,
          "reversal_rate": 0,
          "fill_rate": 0,
          "avg_otc": 0
        }
      },
      "late_day_recovery": {
        "description": "Low before noon + power hour rally (>0.2%)",
        "n": 1,
        "pct_of_total": 10.0,
        "avg_power_ret": 0.3874,
        "avg_otc": 0.7244
      },
      "shape_classification": {
        "v_shape": {
          "n": 3,
          "avg_otc": 0.5536
        },
        "l_shape": {
          "n": 4,
          "avg_otc": -1.1283
        },
        "other": {
          "n": 3
        }
      },
      "consecutive_gap_down": {
        "description": "Second gap-down day in a row",
        "n": 2,
        "reversal_rate": 50.0,
        "avg_otc": -0.8019
      }
    },
    "momentum": {
      "checkpoint_to_close_correlation": {},
      "interpretation": "How well does return at each checkpoint predict the day's close"
    },
    "n_days": 10,
    "sample_days": [
      {
        "date": "2023-03-15",
        "gap_pct": -1.518,
        "gap_pts": -59.51,
        "open": 3861.05,
        "prev_close": 3920.56,
        "day_close": 3891.93,
        "day_high": 3894.26,
        "day_low": 3838.24,
        "open_to_close_pct": 0.7998,
        "open_to_low_pct": -0.5908,
        "open_to_high_pct": 0.8601,
        "gap_filled": "False",
        "partial_fill": "True",
        "continued_down": "False",
        "reversed_up": "True",
        "time_of_low": "2023-03-15 11:55:00",
        "time_of_high": "2023-03-15 14:00:00",
        "first_30_ret": 0.037,
        "first_30_low": -0.4271,
        "first_hour_ret": 0.0536,
        "lunch_ret": 0.3211,
        "power_ret": -0.0329,
        "entry_returns": {
          "09:35:00": 1.024,
          "10:00:00": 0.758,
          "10:30:00": 0.7288,
          "11:00:00": 0.8672,
          "11:30:00": 1.1033,
          "12:00:00": 1.2827,
          "13:00:00": 0.6832,
          "14:00:00": 0.1096
        },
        "max_dd_from_open": -0.5908,
        "vix_open": 24.22,
        "vix_close": 28.13,
        "vix_high": 28.55,
        "vix_intraday_change": 16.14,
        "vix_prior_close": 22.67,
        "vix_overnight_change": 6.84
      },
      {
        "date": "2024-08-02",
        "gap_pct": -2.306,
        "gap_pts": -125.6,
        "open": 5321.08,
        "prev_close": 5446.68,
        "day_close": 5346.56,
        "day_high": 5350.71,
        "day_low": 5302.03,
        "open_to_close_pct": 0.4789,
        "open_to_low_pct": -0.358,
        "open_to_high_pct": 0.5568,
        "gap_filled": "False",
        "partial_fill": "False",
        "continued_down": "False",
        "reversed_up": "True",
        "time_of_low": "2024-08-02 10:20:00",
        "time_of_high": "2024-08-02 11:40:00",
        "first_30_ret": -0.2984,
        "first_30_low": -0.3216,
        "first_hour_ret": -0.0789,
        "lunch_ret": -0.5524,
        "power_ret": 0.0108,
        "entry_returns": {
          "09:35:00": 0.5261,
          "10:00:00": 0.7278,
          "10:30:00": 0.6898,
          "11:00:00": 0.1694,
          "11:30:00": 0.0554,
          "12:00:00": 0.3342,
          "13:00:00": 0.531,
          "14:00:00": 0.4015
        },
        "max_dd_from_open": -0.358,
        "vix_open": 20.38,
        "vix_close": 25.64,
        "vix_high": 29.66,
        "vix_intraday_change": 25.81,
        "vix_prior_close": 17.76,
        "vix_overnight_change": 14.75
      },
      {
        "date": "2024-08-05",
        "gap_pct": -3.439,
        "gap_pts": -183.85,
        "open": 5162.71,
        "prev_close": 5346.56,
        "day_close": 5186.33,
        "day_high": 5250.89,
        "day_low": 5162.4,
        "open_to_close_pct": 0.4575,
        "open_to_low_pct": -0.006,
        "open_to_high_pct": 1.708,
        "gap_filled": "False",
        "partial_fill": "False",
        "continued_down": "False",
        "reversed_up": "True",
        "time_of_low": "2024-08-05 09:30:00",
        "time_of_high": "2024-08-05 11:25:00",
        "first_30_ret": 0.3454,
        "first_30_low": -0.006,
        "first_hour_ret": 1.0485,
        "lunch_ret": -1.0551,
        "power_ret": -0.0199,
        "entry_returns": {
          "09:35:00": -0.0166,
          "10:00:00": 0.1363,
          "10:30:00": -0.5086,
          "11:00:00": -0.6376,
          "11:30:00": -1.2271,
          "12:00:00": -0.3505,
          "13:00:00": -0.3677,
          "14:00:00": 0.2745
        },
        "max_dd_from_open": -0.006,
        "vix_open": 42.87,
        "vix_close": 33.6,
        "vix_high": 65.73,
        "vix_intraday_change": -21.62,
        "vix_prior_close": 25.64,
        "vix_overnight_change": 67.2
      },
      {
        "date": "2025-01-27",
        "gap_pct": -2.167,
        "gap_pts": -132.2,
        "open": 5969.04,
        "prev_close": 6101.24,
        "day_close": 6012.28,
        "day_high": 6017.17,
        "day_low": 5962.92,
        "open_to_close_pct": 0.7244,
        "open_to_low_pct": -0.1025,
        "open_to_high_pct": 0.8063,
        "gap_filled": "False",
        "partial_fill": "False",
        "continued_down": "False",
        "reversed_up": "True",
        "time_of_low": "2025-01-27 09:30:00",
        "time_of_high": "2025-01-27 10:40:00",
        "first_30_ret": 0.4537,
        "first_30_low": -0.1025,
        "first_hour_ret": 0.7732,
        "lunch_ret": -0.0175,
        "power_ret": 0.3874,
        "entry_returns": {
          "09:35:00": 0.3443,
          "10:00:00": 0.0942,
          "10:30:00": 0.0321,
          "11:00:00": 0.1833,
          "11:30:00": 0.46,
          "12:00:00": 0.3999,
          "13:00:00": 0.5221,
          "14:00:00": 0.4466
        },
        "max_dd_from_open": -0.1025,
        "vix_open": 18.98,
        "vix_close": 18.4,
        "vix_high": 22.51,
        "vix_intraday_change": -3.06,
        "vix_prior_close": 14.74,
        "vix_overnight_change": 28.77
      },
      {
        "date": "2025-03-10",
        "gap_pct": -1.856,
        "gap_pts": -107.09,
        "open": 5663.11,
        "prev_close": 5770.2,
        "day_close": 5614.56,
        "day_high": 5673.95,
        "day_low": 5564.02,
        "open_to_close_pct": -0.8573,
        "open_to_low_pct": -1.7497,
        "open_to_high_pct": 0.1914,
        "gap_filled": "False",
        "partial_fill": "False",
        "continued_down": "True",
        "reversed_up": "False",
        "time_of_low": "2025-03-10 14:10:00",
        "time_of_high": "2025-03-10 10:35:00",
        "first_30_ret": -0.1504,
        "first_30_low": -0.4286,
        "first_hour_ret": 0.0863,
        "lunch_ret": -0.6522,
        "power_ret": -0.0207,
        "entry_returns": {
          "09:35:00": -0.7099,
          "10:00:00": -0.5803,
          "10:30:00": -0.7872,
          "11:00:00": -0.5662,
          "11:30:00": -0.5452,
          "12:00:00": -0.4113,
          "13:00:00": 0.0426,
          "14:00:00": 0.6102
        },
        "max_dd_from_open": -1.7497,
        "vix_open": 25.53,
        "vix_close": 26.62,
        "vix_high": 27.12,
        "vix_intraday_change": 4.27,
        "vix_prior_close": 24.95,
        "vix_overnight_change": 2.32
      }
    ]
  },
  "gap_down_>2.0%": {
    "stats": {
      "label": "gap_down_>2.0%",
      "n": 7,
      "gap_pct_mean": -2.967,
      "gap_pct_median": -2.887,
      "otc_mean": -0.323,
      "otc_median": -0.2661,
      "otc_std": 0.9188,
      "otl_mean": -1.2215,
      "oth_mean": 0.8264,
      "fill_rate": 0.0,
      "partial_fill_rate": 0.0,
      "continuation_rate": 57.1,
      "reversal_rate": 42.9,
      "entry_timing": {
        "09:35:00": {
          "mean_ret": -0.4742,
          "median_ret": -0.2271,
          "win_rate": 28.6,
          "avg_winner": 0.4352,
          "avg_loser": -0.8379,
          "n": 7
        },
        "10:00:00": {
          "mean_ret": -0.2466,
          "median_ret": -0.0779,
          "win_rate": 42.9,
          "avg_winner": 0.3194,
          "avg_loser": -0.671,
          "n": 7
        },
        "10:30:00": {
          "mean_ret": -0.3143,
          "median_ret": 0.0321,
          "win_rate": 57.1,
          "avg_winner": 0.2929,
          "avg_loser": -1.1238,
          "n": 7
        },
        "11:00:00": {
          "mean_ret": -0.1898,
          "median_ret": 0.1694,
          "win_rate": 57.1,
          "avg_winner": 0.5517,
          "avg_loser": -1.1786,
          "n": 7
        },
        "11:30:00": {
          "mean_ret": -0.068,
          "median_ret": 0.0554,
          "win_rate": 57.1,
          "avg_winner": 0.8944,
          "avg_loser": -1.3511,
          "n": 7
        },
        "12:00:00": {
          "mean_ret": -0.0491,
          "median_ret": 0.3342,
          "win_rate": 57.1,
          "avg_winner": 0.5873,
          "avg_loser": -0.8976,
          "n": 7
        },
        "13:00:00": {
          "mean_ret": -0.0957,
          "median_ret": 0.1351,
          "win_rate": 57.1,
          "avg_winner": 0.5532,
          "avg_loser": -0.9608,
          "n": 7
        },
        "14:00:00": {
          "mean_ret": 0.1066,
          "median_ret": 0.2745,
          "win_rate": 57.1,
          "avg_winner": 0.5436,
          "avg_loser": -0.476,
          "n": 7
        }
      },
      "vix_conditioning": {
        "low_vix_<=20": {
          "n": 1,
          "mean_otc": 0.7244,
          "reversal_rate": 100.0,
          "fill_rate": 0.0,
          "continuation_rate": 0.0
        },
        "mid_vix_20-25": {
          "n": 1,
          "mean_otc": 0.4789,
          "reversal_rate": 100.0,
          "fill_rate": 0.0,
          "continuation_rate": 0.0
        },
        "high_vix_>25": {
          "n": 5,
          "mean_otc": -0.6929,
          "reversal_rate": 20.0,
          "fill_rate": 0.0,
          "continuation_rate": 80.0
        }
      },
      "hour_of_low_dist": {
        "10": 1,
        "9": 2,
        "14": 2,
        "11": 1,
        "13": 1
      },
      "first_30_predicts_day": {
        "corr": 0,
        "p_value": 1
      },
      "first_hour_predicts_day": {
        "corr": 0,
        "p_value": 1
      },
      "max_dd_from_open_mean": -1.2215,
      "vix_open_mean": 29.94
    },
    "patterns": {
      "morning_stabilize_then_rally": {
        "description": "Gap down but first 30 min holds (ret > -0.1%)",
        "n": 3,
        "reversal_rate": 66.7,
        "avg_otc_reversal": 0.591
      },
      "morning_continuation": {
        "description": "Gap down AND first 30 min drops further (>-0.3%)",
        "n": 1,
        "continuation_rate": 100.0,
        "avg_otc": -1.0036,
        "avg_max_dd": -1.108
      },
      "vix_spike_gap": {
        "description": "VIX overnight change >10% + gap down",
        "n": 5,
        "reversal_rate": 60.0,
        "avg_otc": -0.2808,
        "fill_rate": 0.0
      },
      "gap_size_buckets": {
        "extreme_<-1.5%": {
          "n": 7,
          "reversal_rate": 42.9,
          "fill_rate": 0.0,
          "avg_otc": -0.323
        },
        "moderate_-0.75_to_-1.5%": {
          "n": 0,
          "reversal_rate": 0,
          "fill_rate": 0,
          "avg_otc": 0
        },
        "small_-0.5_to_-0.75%": {
          "n": 0,
          "reversal_rate": 0,
          "fill_rate": 0,
          "avg_otc": 0
        }
      },
      "late_day_recovery": {
        "description": "Low before noon + power hour rally (>0.2%)",
        "n": 1,
        "pct_of_total": 14.3,
        "avg_power_ret": 0.3874,
        "avg_otc": 0.7244
      },
      "shape_classification": {
        "v_shape": {
          "n": 3,
          "avg_otc": 0.5536
        },
        "l_shape": {
          "n": 3,
          "avg_otc": -1.2186
        },
        "other": {
          "n": 1
        }
      },
      "consecutive_gap_down": {
        "description": "Second gap-down day in a row",
        "n": 2,
        "reversal_rate": 50.0,
        "avg_otc": -0.8019
      }
    },
    "momentum": {
      "checkpoint_to_close_correlation": {},
      "interpretation": "How well does return at each checkpoint predict the day's close"
    },
    "n_days": 7,
    "sample_days": [
      {
        "date": "2024-08-02",
        "gap_pct": -2.306,
        "gap_pts": -125.6,
        "open": 5321.08,
        "prev_close": 5446.68,
        "day_close": 5346.56,
        "day_high": 5350.71,
        "day_low": 5302.03,
        "open_to_close_pct": 0.4789,
        "open_to_low_pct": -0.358,
        "open_to_high_pct": 0.5568,
        "gap_filled": "False",
        "partial_fill": "False",
        "continued_down": "False",
        "reversed_up": "True",
        "time_of_low": "2024-08-02 10:20:00",
        "time_of_high": "2024-08-02 11:40:00",
        "first_30_ret": -0.2984,
        "first_30_low": -0.3216,
        "first_hour_ret": -0.0789,
        "lunch_ret": -0.5524,
        "power_ret": 0.0108,
        "entry_returns": {
          "09:35:00": 0.5261,
          "10:00:00": 0.7278,
          "10:30:00": 0.6898,
          "11:00:00": 0.1694,
          "11:30:00": 0.0554,
          "12:00:00": 0.3342,
          "13:00:00": 0.531,
          "14:00:00": 0.4015
        },
        "max_dd_from_open": -0.358,
        "vix_open": 20.38,
        "vix_close": 25.64,
        "vix_high": 29.66,
        "vix_intraday_change": 25.81,
        "vix_prior_close": 17.76,
        "vix_overnight_change": 14.75
      },
      {
        "date": "2024-08-05",
        "gap_pct": -3.439,
        "gap_pts": -183.85,
        "open": 5162.71,
        "prev_close": 5346.56,
        "day_close": 5186.33,
        "day_high": 5250.89,
        "day_low": 5162.4,
        "open_to_close_pct": 0.4575,
        "open_to_low_pct": -0.006,
        "open_to_high_pct": 1.708,
        "gap_filled": "False",
        "partial_fill": "False",
        "continued_down": "False",
        "reversed_up": "True",
        "time_of_low": "2024-08-05 09:30:00",
        "time_of_high": "2024-08-05 11:25:00",
        "first_30_ret": 0.3454,
        "first_30_low": -0.006,
        "first_hour_ret": 1.0485,
        "lunch_ret": -1.0551,
        "power_ret": -0.0199,
        "entry_returns": {
          "09:35:00": -0.0166,
          "10:00:00": 0.1363,
          "10:30:00": -0.5086,
          "11:00:00": -0.6376,
          "11:30:00": -1.2271,
          "12:00:00": -0.3505,
          "13:00:00": -0.3677,
          "14:00:00": 0.2745
        },
        "max_dd_from_open": -0.006,
        "vix_open": 42.87,
        "vix_close": 33.6,
        "vix_high": 65.73,
        "vix_intraday_change": -21.62,
        "vix_prior_close": 25.64,
        "vix_overnight_change": 67.2
      },
      {
        "date": "2025-01-27",
        "gap_pct": -2.167,
        "gap_pts": -132.2,
        "open": 5969.04,
        "prev_close": 6101.24,
        "day_close": 6012.28,
        "day_high": 6017.17,
        "day_low": 5962.92,
        "open_to_close_pct": 0.7244,
        "open_to_low_pct": -0.1025,
        "open_to_high_pct": 0.8063,
        "gap_filled": "False",
        "partial_fill": "False",
        "continued_down": "False",
        "reversed_up": "True",
        "time_of_low": "2025-01-27 09:30:00",
        "time_of_high": "2025-01-27 10:40:00",
        "first_30_ret": 0.4537,
        "first_30_low": -0.1025,
        "first_hour_ret": 0.7732,
        "lunch_ret": -0.0175,
        "power_ret": 0.3874,
        "entry_returns": {
          "09:35:00": 0.3443,
          "10:00:00": 0.0942,
          "10:30:00": 0.0321,
          "11:00:00": 0.1833,
          "11:30:00": 0.46,
          "12:00:00": 0.3999,
          "13:00:00": 0.5221,
          "14:00:00": 0.4466
        },
        "max_dd_from_open": -0.1025,
        "vix_open": 18.98,
        "vix_close": 18.4,
        "vix_high": 22.51,
        "vix_intraday_change": -3.06,
        "vix_prior_close": 14.74,
        "vix_overnight_change": 28.77
      },
      {
        "date": "2025-04-03",
        "gap_pct": -3.875,
        "gap_pts": -219.74,
        "open": 5451.23,
        "prev_close": 5670.97,
        "day_close": 5396.52,
        "day_high": 5483.05,
        "day_low": 5390.83,
        "open_to_close_pct": -1.0036,
        "open_to_low_pct": -1.108,
        "open_to_high_pct": 0.5837,
        "gap_filled": "False",
        "partial_fill": "False",
        "continued_down": "True",
        "reversed_up": "False",
        "time_of_low": "2025-04-03 14:55:00",
        "time_of_high": "2025-04-03 11:30:00",
        "first_30_ret": -0.4562,
        "first_30_low": -0.5648,
        "first_hour_ret": -0.0462,
        "lunch_ret": -0.7364,
        "power_ret": 0.0111,
        "entry_returns": {
          "09:35:00": -0.9351,
          "10:00:00": -0.4652,
          "10:30:00": -0.7681,
          "11:00:00": -1.0866,
          "11:30:00": -1.5079,
          "12:00:00": -1.0697,
          "13:00:00": -0.7876,
          "14:00:00": -0.7841
        },
        "max_dd_from_open": -1.108,
        "vix_open": 25.57,
        "vix_close": 27.35,
        "vix_high": 29.26,
        "vix_intraday_change": 6.96,
        "vix_prior_close": 21.93,
        "vix_overnight_change": 16.6
      },
      {
        "date": "2025-04-04",
        "gap_pct": -3.996,
        "gap_pts": -215.64,
        "open": 5180.88,
        "prev_close": 5396.52,
        "day_close": 5074.08,
        "day_high": 5243.5,
        "day_low": 5069.9,
        "open_to_close_pct": -2.0614,
        "open_to_low_pct": -2.1421,
        "open_to_high_pct": 1.2087,
        "gap_filled": "False",
        "partial_fill": "False",
        "continued_down": "True",
        "reversed_up": "False",
        "time_of_low": "2025-04-04 14:55:00",
        "time_of_high": "2025-04-04 10:15:00",
        "first_30_ret": 0.7912,
        "first_30_low": -1.1986,
        "first_hour_ret": 0.0423,
        "lunch_ret": 0.4564,
        "power_ret": 0.0158,
        "entry_returns": {
          "09:35:00": -1.9289,
          "10:00:00": -1.9065,
          "10:30:00": -2.0947,
          "11:00:00": -1.8116,
          "11:30:00": -1.3184,
          "12:00:00": -1.2727,
          "13:00:00": -1.727,
          "14:00:00": -0.429
        },
        "max_dd_from_open": -2.1421,
        "vix_open": 31.11,
        "vix_close": 39.71,
        "vix_high": 45.56,
        "vix_intraday_change": 27.64,
        "vix_prior_close": 27.35,
        "vix_overnight_change": 13.75
      }
    ]
  }
}