{
  "morning": {
    "size_stats": {
      "avg_buy_mean": 2.7829167052785864,
      "avg_buy_median": 2.7762682888071937,
      "avg_sell_mean": 2.805162563512365,
      "avg_sell_median": 2.7902006157216785,
      "max_side_mean": 2.8925055175854597,
      "max_side_median": 2.8823879446588507,
      "min_side_mean": 2.6955737512054916,
      "min_side_median": 2.6995869779772312,
      "pct_max_side_ge3": 39.49357520786092
    },
    "ratio_stats": {
      "ratio_mean": 0.9973441631196853,
      "ratio_median": 0.9953406675494598,
      "ratio_std": 0.08908475355680766,
      "pct_ratio_gt1_2": 1.6250944822373394,
      "pct_ratio_gt1_3": 0.45351473922902497,
      "pct_ratio_gt1_5": 0.0,
      "ratio_p10": 0.8893793558716957,
      "ratio_p25": 0.9411076508413514,
      "ratio_p50": 0.9953406675494598,
      "ratio_p75": 1.0511837713531633,
      "ratio_p90": 1.1057261600569133
    },
    "trade_stats": {
      "n_trades_mean": 7564.52059712774,
      "n_trades_median": 6615.5,
      "n_trades_min": 117.0,
      "n_trades_max": 56538.0
    },
    "filter_stats": {
      "n_windows": 5292,
      "n_pass": 15,
      "pct_pass": 0.2834467120181406,
      "n_fail": 5277,
      "fail_decomp": {
        "fail_ratio_only": 2075,
        "fail_size_only": 9,
        "fail_both": 3193,
        "pct_fail_ratio_only": 39.321584233465984,
        "pct_fail_size_only": 0.17055144968732233,
        "pct_fail_both": 60.50786431684669
      }
    }
  },
  "midday": {
    "size_stats": {
      "avg_buy_mean": 2.9723972940511545,
      "avg_buy_median": 2.956564659427443,
      "avg_sell_mean": 2.9947222042265755,
      "avg_sell_median": 2.9663512092534177,
      "max_side_mean": 3.1226741746145197,
      "max_side_median": 3.096734059097978,
      "min_side_mean": 2.8444453236632103,
      "min_side_median": 2.8458289334741287,
      "pct_max_side_ge3": 58.20652694037707
    },
    "ratio_stats": {
      "ratio_mean": 1.0017840697952651,
      "ratio_median": 0.9983123380069944,
      "ratio_std": 0.1207404946035388,
      "pct_ratio_gt1_2": 4.9669824863623315,
      "pct_ratio_gt1_3": 1.4833955402430856,
      "pct_ratio_gt1_5": 0.16269499473633842,
      "ratio_p10": 0.8621448098587705,
      "ratio_p25": 0.9292888470579375,
      "ratio_p50": 0.9983123380069944,
      "ratio_p75": 1.068771116137101,
      "ratio_p90": 1.1442091978699
    },
    "trade_stats": {
      "n_trades_mean": 4049.566752799311,
      "n_trades_median": 3276.0,
      "n_trades_min": 41.0,
      "n_trades_max": 47818.0
    },
    "filter_stats": {
      "n_windows": 10449,
      "n_pass": 144,
      "pct_pass": 1.3781223083548666,
      "n_fail": 10305,
      "fail_decomp": {
        "fail_ratio_only": 5938,
        "fail_size_only": 11,
        "fail_both": 4356,
        "pct_fail_ratio_only": 57.62251334303736,
        "pct_fail_size_only": 0.10674429888403687,
        "pct_fail_both": 42.2707423580786
      }
    }
  },
  "afternoon": {
    "size_stats": {
      "avg_buy_mean": 3.1441348015499293,
      "avg_buy_median": 3.115025346102514,
      "avg_sell_mean": 3.1053513952974705,
      "avg_sell_median": 3.0720207580204306,
      "max_side_mean": 3.279793533211389,
      "max_side_median": 3.256556492313078,
      "min_side_mean": 2.969692663636011,
      "min_side_median": 2.9648809196077353,
      "pct_max_side_ge3": 67.10570753123945
    },
    "ratio_stats": {
      "ratio_mean": 1.019936273595574,
      "ratio_median": 1.011034427459804,
      "ratio_std": 0.128196640073178,
      "pct_ratio_gt1_2": 7.548125633232017,
      "pct_ratio_gt1_3": 2.3640661938534278,
      "pct_ratio_gt1_5": 0.4728132387706856,
      "ratio_p10": 0.8705787166555169,
      "ratio_p25": 0.9361729807916321,
      "ratio_p50": 1.011034427459804,
      "ratio_p75": 1.0935259880384716,
      "ratio_p90": 1.1756740313518446
    },
    "trade_stats": {
      "n_trades_mean": 3766.936676798379,
      "n_trades_median": 2939.0,
      "n_trades_min": 783.0,
      "n_trades_max": 42341.0
    },
    "filter_stats": {
      "n_windows": 5922,
      "n_pass": 139,
      "pct_pass": 2.347180006754475,
      "n_fail": 5783,
      "fail_decomp": {
        "fail_ratio_only": 3835,
        "fail_size_only": 1,
        "fail_both": 1947,
        "pct_fail_ratio_only": 66.31506138682344,
        "pct_fail_size_only": 0.017292062943109116,
        "pct_fail_both": 33.66764655023344
      }
    }
  },
  "morning_sub_windows": [
    {
      "time": "09:30",
      "n_windows": 294,
      "avg_buy_mean": 2.772728255522806,
      "avg_sell_mean": 2.7738354277761545,
      "ratio_mean": 1.0024321857840532,
      "max_side_mean": 2.8537765652368496,
      "n_pass_filter": 0,
      "pct_pass": 0.0
    },
    {
      "time": "09:35",
      "n_windows": 294,
      "avg_buy_mean": 2.619616626844673,
      "avg_sell_mean": 2.6497879788805663,
      "ratio_mean": 0.9928354682618735,
      "max_side_mean": 2.721113256376158,
      "n_pass_filter": 1,
      "pct_pass": 0.3401360544217687
    },
    {
      "time": "09:40",
      "n_windows": 294,
      "avg_buy_mean": 2.7268417235624804,
      "avg_sell_mean": 2.745407620014148,
      "ratio_mean": 0.997444111231916,
      "max_side_mean": 2.827267233715876,
      "n_pass_filter": 1,
      "pct_pass": 0.3401360544217687
    },
    {
      "time": "09:45",
      "n_windows": 294,
      "avg_buy_mean": 2.7189161262896184,
      "avg_sell_mean": 2.7378710173230227,
      "ratio_mean": 0.9969010247726291,
      "max_side_mean": 2.823131101647536,
      "n_pass_filter": 0,
      "pct_pass": 0.0
    },
    {
      "time": "09:50",
      "n_windows": 294,
      "avg_buy_mean": 2.726428584151783,
      "avg_sell_mean": 2.737681510984729,
      "ratio_mean": 1.0004932671269775,
      "max_side_mean": 2.822551953796904,
      "n_pass_filter": 0,
      "pct_pass": 0.0
    },
    {
      "time": "09:55",
      "n_windows": 294,
      "avg_buy_mean": 2.710165207122329,
      "avg_sell_mean": 2.7457480920594874,
      "ratio_mean": 0.9932366070059073,
      "max_side_mean": 2.829655406192575,
      "n_pass_filter": 0,
      "pct_pass": 0.0
    },
    {
      "time": "10:00",
      "n_windows": 294,
      "avg_buy_mean": 2.676657404013264,
      "avg_sell_mean": 2.6979644867555925,
      "ratio_mean": 0.9971596896461011,
      "max_side_mean": 2.775749214362852,
      "n_pass_filter": 0,
      "pct_pass": 0.0
    },
    {
      "time": "10:05",
      "n_windows": 294,
      "avg_buy_mean": 2.7051153634573937,
      "avg_sell_mean": 2.7197325833156873,
      "ratio_mean": 1.0004992572412328,
      "max_side_mean": 2.8016305351956428,
      "n_pass_filter": 0,
      "pct_pass": 0.0
    },
    {
      "time": "10:10",
      "n_windows": 294,
      "avg_buy_mean": 2.716897625890491,
      "avg_sell_mean": 2.743753629501266,
      "ratio_mean": 0.9961486854794392,
      "max_side_mean": 2.824807117467547,
      "n_pass_filter": 0,
      "pct_pass": 0.0
    },
    {
      "time": "10:15",
      "n_windows": 294,
      "avg_buy_mean": 2.7951802473335827,
      "avg_sell_mean": 2.824426801502859,
      "ratio_mean": 0.995302188237088,
      "max_side_mean": 2.9053468406804055,
      "n_pass_filter": 1,
      "pct_pass": 0.3401360544217687
    },
    {
      "time": "10:20",
      "n_windows": 294,
      "avg_buy_mean": 2.770385069999644,
      "avg_sell_mean": 2.829639381160531,
      "ratio_mean": 0.9855664911657054,
      "max_side_mean": 2.9053193098897663,
      "n_pass_filter": 0,
      "pct_pass": 0.0
    },
    {
      "time": "10:25",
      "n_windows": 294,
      "avg_buy_mean": 2.826032829141924,
      "avg_sell_mean": 2.8566034392573783,
      "ratio_mean": 0.9955762208210225,
      "max_side_mean": 2.9432028301911948,
      "n_pass_filter": 1,
      "pct_pass": 0.3401360544217687
    },
    {
      "time": "10:30",
      "n_windows": 294,
      "avg_buy_mean": 2.861610311365219,
      "avg_sell_mean": 2.8746780051817975,
      "ratio_mean": 1.001115706212342,
      "max_side_mean": 2.9664026093568903,
      "n_pass_filter": 1,
      "pct_pass": 0.3401360544217687
    },
    {
      "time": "10:35",
      "n_windows": 294,
      "avg_buy_mean": 2.8603041388346906,
      "avg_sell_mean": 2.8857921658846513,
      "ratio_mean": 0.9969354291296838,
      "max_side_mean": 2.979445757881257,
      "n_pass_filter": 3,
      "pct_pass": 1.0204081632653061
    },
    {
      "time": "10:40",
      "n_windows": 294,
      "avg_buy_mean": 2.8853781259141487,
      "avg_sell_mean": 2.9064593224272497,
      "ratio_mean": 0.998731598035741,
      "max_side_mean": 3.004397986205287,
      "n_pass_filter": 1,
      "pct_pass": 0.3401360544217687
    },
    {
      "time": "10:45",
      "n_windows": 294,
      "avg_buy_mean": 2.9349076817885127,
      "avg_sell_mean": 2.9488865607974413,
      "ratio_mean": 1.0001232682786882,
      "max_side_mean": 3.0487223264598335,
      "n_pass_filter": 3,
      "pct_pass": 1.0204081632653061
    },
    {
      "time": "10:50",
      "n_windows": 294,
      "avg_buy_mean": 2.8684949803238706,
      "avg_sell_mean": 2.9032042969895233,
      "ratio_mean": 0.9943779434033658,
      "max_side_mean": 2.9966672346757846,
      "n_pass_filter": 0,
      "pct_pass": 0.0
    },
    {
      "time": "10:55",
      "n_windows": 294,
      "avg_buy_mean": 2.9168403934581217,
      "avg_sell_mean": 2.911453823410484,
      "ratio_mean": 1.007315794320567,
      "max_side_mean": 3.035912037205914,
      "n_pass_filter": 3,
      "pct_pass": 1.0204081632653061
    }
  ]
}