{
  "generated_at": "2026-09-02T18:06:29Z",
  "methodology": {
    "horizon_candles": 20,
    "natr_multiplier": 1.0,
    "analysis_version": 4,
    "outcome_classes": [
      "breakout",
      "breakdown",
      "sideways",
      "forming"
    ],
    "breakout_definition": "Exclusive class: upside clears +1\u00d7 natr_14 within 20 candles before downside.",
    "breakdown_definition": "Exclusive class: downside clears \u22121\u00d7 natr_14 within 20 candles before upside.",
    "sideways_definition": "Pattern-end (terminal) unresolved class: neither +1\u00d7 nor \u22121\u00d7 natr_14 cleared within 20 candles after the breached candle. Headline KPIs, ranks, and geometry bins use this sample; Forming is not in that formula. Sideways is not a zero-move class; typical wick travel inside the bands is reported as \u00d7NATR max-up / max-down.",
    "forming_definition": "Trendline families only, and only on non-terminal snapshots still inside the lines: neither side tagged within 20 candles. Age-balanced Fuel / RSI / point-in-time bins add Forming so four exclusive classes sum to 100%. Forming-only trees (live still-inside matches) use breakout + breakdown + forming = 100%.",
    "sideways_katex": "\\mathrm{Sideways}\\iff\\text{terminal and no }\\pm 1.0\\times\\mathrm{NATR}\\text{ tag within }20\\text{ candles}",
    "forming_katex": "\\mathrm{Forming}\\iff\\text{still inside trendlines and no }\\pm 1.0\\times\\mathrm{NATR}\\text{ tag within }20\\text{ candles}",
    "classification_note": "Labels use ground-truth path outcomes (outcome_label / target_first_hit from full kline OHLC path). Trendline families evaluate confirmed candle closes against projected support/resistance bands. Unresolved non-terminal trendline snapshots are Forming; unresolved terminal snapshots are Sideways. Double/triple bottoms require breaking the bottom support floor for breakdown. Head & shoulders evaluate from neckline confirmation. Same-bar dual clears resolve via open proximity, then candle body polarity, then return sign. Pattern-end headline rates: breakout + breakdown + sideways = 100%. Forming+terminal Fuel/RSI bins: breakout + breakdown + sideways + forming = 100%.",
    "correlation_method": "Spearman rank correlation with Benjamini\u2013Hochberg FDR q-values; stars require q < 0.05 and |\u03c1| \u2265 0.05",
    "significance_levels": {
      "*": "q < 0.05 and |\u03c1| \u2265 0.05",
      "**": "q < 0.01 and |\u03c1| \u2265 0.05",
      "***": "q < 0.001 and |\u03c1| \u2265 0.05"
    },
    "min_corr_n": 30,
    "min_correlation_n": 30,
    "min_abs_rho_for_stars": 0.05,
    "temporal_holdout_cutoff": "2024-01-01T00:00:00Z",
    "validation_contract": {
      "split": "chronological holdout",
      "purge": "Training rows whose 20-candle label horizon crosses the holdout cutoff are removed.",
      "grouping": "Results are reported separately by pattern and timeframe.",
      "calibration_metrics": [
        "Brier score",
        "log loss"
      ]
    },
    "null_baseline_permutations": 50,
    "correlation_exclusions": {
      "breakout_success": [
        "natr_14"
      ],
      "breakdown_success": [
        "natr_14"
      ]
    },
    "public_feature_policy": "Public research pages show Fuel volume/momentum scores, geometry, volume trend, momentum (RSI, BTC RSI when available), RSI-divergence geometry, and BTC mean distance. Fuel and RSI stay on fixed domain zones. geom_width and HS symmetry use mean\u00b1\u03c3 bands (below typical / typical / elevated / extreme). geom_height and extension use log then \u00b1\u03c3. Remaining numeric features stay on quartiles. Bins are never pooled across timeframes.",
    "dedupe_keys": [
      "symbol",
      "timeframe",
      "pattern_type",
      "pattern_start_idx"
    ],
    "dedupe_rule": "One row per formation start; keep the longest pattern_end_idx (then latest end, then higher confidence).",
    "label_contract": {
      "rows_input": 662498,
      "rows_path_labeled": 662498,
      "rows_rejected_legacy": 0
    },
    "strict_path_labels": true,
    "terminal_snapshot_rule": "max_extension_then_latest_end",
    "dynamic_snapshot_rule": "one_snapshot_per_formation_age_band",
    "source_hashes": {
      "pattern_detector_sha256": "84c5c6932f86399bcfd647b63d7c60ee1daaed78a23b1e3f323f03ebc55171c6",
      "outcome_labels_sha256": "9849e60b9acec33a07ecee002e920ea8be36c2eb959b9c063269c03be1be2052",
      "analysis_sha256": "032a2cf1dd3165ad135d072a0893e555efce17c48cbbcaf525bce82d54d3c481"
    },
    "data_source": {
      "exchange": "Binance",
      "market": "USD-M Futures (perpetual contracts)",
      "quote": "USDT",
      "instrument_type": "crypto perpetual futures",
      "ohlcv": "Public Binance Futures kline (candlestick) API",
      "detector": "ChartDatabase AdvancedPatternDetector (geometry + RSI divergence detectors; confidence/recency filters off during dataset build)",
      "windowing": "Sliding window size 200 candles, step 100 candles",
      "snapshot": "One row per pattern at pattern_end_idx with 20 forward candles required",
      "timeframes": [
        "15m",
        "1h",
        "4h",
        "1d"
      ],
      "notes": [
        "Symbols are Binance USD-M perpetual pairs (e.g. BTCUSDT).",
        "Breakout, breakdown, and sideways are mutually exclusive on pattern-end snapshots and sum to 100%. Forming is the still-inside class on non-terminal trendline snapshots (Fuel/RSI mixed bins add it as a fourth class).",
        "Multiple detections on the same coin over time are included after deduplication on formation start."
      ]
    },
    "bullish_patterns": [
      "ascending_triangle",
      "bullish_flag",
      "bullish_pennant",
      "channel_descending",
      "cup_and_handle",
      "descending_broadening_wedge",
      "double_bottom",
      "falling_wedge",
      "reverse_head_and_shoulders",
      "rsi_hidden_bullish_divergence",
      "rsi_regular_bullish_divergence",
      "triple_bottom"
    ],
    "bearish_patterns": [
      "ascending_broadening_wedge",
      "bearish_flag",
      "bearish_pennant",
      "channel_ascending",
      "descending_triangle",
      "double_top",
      "head_and_shoulders",
      "inverted_cup_and_handle",
      "rising_wedge",
      "rsi_hidden_bearish_divergence",
      "rsi_regular_bearish_divergence",
      "triple_top"
    ],
    "generated_at_utc": "2026-09-02T18:06:29Z",
    "rows_before_dedupe": 662498,
    "rows_after_dedupe": 134463,
    "timestamp_min_iso": "2017-09-12T00:00:00Z",
    "timestamp_max_iso": "2026-07-31T18:45:00Z",
    "n_symbols": 670,
    "n_pattern_types": 24,
    "n_pattern_timeframe_groups": 94,
    "symbols_sample": [
      "0GUSDT",
      "1000000BOBUSDT",
      "1000000MOGUSDT",
      "1000BONKUSDT",
      "1000BTTCUSDT",
      "1000CATUSDT",
      "1000CHEEMSUSDT",
      "1000FLOKIUSDT",
      "1000LUNCUSDT",
      "1000PEPEUSDT",
      "1000RATSUSDT",
      "1000SATSUSDT",
      "1000SHIBUSDT",
      "1000WHYUSDT",
      "1000XECUSDT",
      "1000XUSDT",
      "1INCHUSDT",
      "1MBABYDOGEUSDT",
      "2ZUSDT",
      "42USDT"
    ],
    "symbols_total": 670,
    "features_analyzed": [
      "volume_score",
      "momentum_score",
      "rsi_14",
      "geom_height",
      "geom_width",
      "geom_breakout_potential",
      "geom_resistance_slope",
      "geom_support_slope",
      "geom_cup_depth",
      "geom_cup_width",
      "geom_handle_depth",
      "geom_handle_width",
      "geom_hs_symmetry_score",
      "geom_hs_completion_score",
      "current_scale_number",
      "extension_candle_offset",
      "extension_progress",
      "rsi_div_span",
      "rsi_div_price_delta_pct",
      "rsi_div_rsi_delta",
      "rsi_div_price_divergence",
      "rsi_div_rsi_divergence",
      "btc_dist14_mean"
    ],
    "features_analyzed_count": 23
  },
  "dataset": {
    "name": "pattern_datasets_v11",
    "rows_raw": 662498,
    "rows_deduped": 134463,
    "symbols": 670,
    "pattern_types": 24,
    "timeframes": [
      "15m",
      "1h",
      "4h",
      "1d"
    ],
    "timestamp_min": "2017-09-12T00:00:00Z",
    "timestamp_max": "2026-07-31T18:45:00Z",
    "symbols_sample": [
      "0GUSDT",
      "1000000BOBUSDT",
      "1000000MOGUSDT",
      "1000BONKUSDT",
      "1000BTTCUSDT",
      "1000CATUSDT",
      "1000CHEEMSUSDT",
      "1000FLOKIUSDT",
      "1000LUNCUSDT",
      "1000PEPEUSDT",
      "1000RATSUSDT",
      "1000SATSUSDT",
      "1000SHIBUSDT",
      "1000WHYUSDT",
      "1000XECUSDT",
      "1000XUSDT",
      "1INCHUSDT",
      "1MBABYDOGEUSDT",
      "2ZUSDT",
      "42USDT"
    ],
    "label_contract": {
      "rows_input": 662498,
      "rows_path_labeled": 662498,
      "rows_rejected_legacy": 0
    },
    "strict_path_labels": true,
    "terminal_snapshot_rule": "max_extension_then_latest_end",
    "dynamic_snapshot_rule": "one_snapshot_per_formation_age_band",
    "hub_reservoir_n": 10000,
    "source_hashes": {
      "pattern_detector_sha256": "84c5c6932f86399bcfd647b63d7c60ee1daaed78a23b1e3f323f03ebc55171c6",
      "outcome_labels_sha256": "9849e60b9acec33a07ecee002e920ea8be36c2eb959b9c063269c03be1be2052",
      "analysis_sha256": "032a2cf1dd3165ad135d072a0893e555efce17c48cbbcaf525bce82d54d3c481"
    }
  },
  "pooled": {
    "n": 134463,
    "n_symbols": 670,
    "breakout_success_rate": 49.22,
    "breakdown_success_rate": 45.26,
    "sideways_rate": 5.52,
    "forming_rate": 0.0,
    "both_cleared_rate": 38.24,
    "both_sides_rate": 38.24,
    "breakout_success_rate_ci95": [
      48.95,
      49.48
    ],
    "breakdown_success_rate_ci95": [
      45.0,
      45.53
    ],
    "sideways_rate_ci95": [
      5.4,
      5.64
    ],
    "forming_rate_ci95": [
      0.0,
      0.0
    ],
    "expected_hit_rate": 72.21,
    "expected_hit_rate_ci95": [
      71.96,
      72.46
    ],
    "mean_ret_10c": 0.264,
    "median_ret_10c": -0.056,
    "std_ret_10c": 10.1,
    "win_rate_ret_gt0": 49.06,
    "p25_ret_10c": -2.738,
    "p75_ret_10c": 2.659,
    "mean_mfe": 5.81,
    "mean_mae": -4.807,
    "mfe_mae_ratio": 1.209,
    "timestamp_min": 1505174400000,
    "timestamp_max": 1785523500000,
    "timestamp_min_iso": "2017-09-12T00:00:00Z",
    "timestamp_max_iso": "2026-07-31T18:45:00Z",
    "quantile_sample_n": 10000,
    "quantile_method": "uniform_terminal_snapshot_reservoir"
  },
  "by_timeframe": [
    {
      "timeframe": "15m",
      "n": 28417,
      "expected_hit_rate": 69.02,
      "breakout_success_rate": 49.55,
      "breakdown_success_rate": 45.49,
      "sideways_rate": 4.96
    },
    {
      "timeframe": "1h",
      "n": 80342,
      "expected_hit_rate": 68.54,
      "breakout_success_rate": 48.43,
      "breakdown_success_rate": 45.86,
      "sideways_rate": 5.72
    },
    {
      "timeframe": "4h",
      "n": 22681,
      "expected_hit_rate": 66.33,
      "breakout_success_rate": 50.76,
      "breakdown_success_rate": 43.61,
      "sideways_rate": 5.63
    },
    {
      "timeframe": "1d",
      "n": 3023,
      "expected_hit_rate": 68.08,
      "breakout_success_rate": 55.54,
      "breakdown_success_rate": 39.76,
      "sideways_rate": 4.7
    }
  ],
  "by_pattern": [
    {
      "pattern_type": "falling_wedge",
      "pattern_name": "Falling Wedge",
      "bias": "bullish",
      "n": 21502,
      "n_symbols": 667,
      "breakout_success_rate": 72.28,
      "breakdown_success_rate": 24.83,
      "sideways_rate": 2.89,
      "forming_rate": 0.0,
      "both_cleared_rate": 33.22,
      "breakout_success_rate_ci95": [
        71.67,
        72.87
      ],
      "breakdown_success_rate_ci95": [
        24.26,
        25.41
      ],
      "sideways_rate_ci95": [
        2.68,
        3.13
      ],
      "forming_rate_ci95": [
        0.0,
        0.02
      ],
      "both_sides_rate": 33.22,
      "expected_hit_rate": 72.28,
      "expected_hit_rate_ci95": [
        71.67,
        72.87
      ],
      "mean_ret_10c": 0.559,
      "median_ret_10c": 0.556,
      "std_ret_10c": 8.703,
      "win_rate_ret_gt0": 56.51,
      "p25_ret_10c": -2.1,
      "p75_ret_10c": 3.156,
      "mean_mfe": 6.717,
      "mean_mae": -4.618,
      "mfe_mae_ratio": 1.455,
      "max_up_natr": {
        "n": 21502,
        "mean": 2.997,
        "median": 2.217,
        "p25": 1.117,
        "p75": 3.711,
        "hist": {
          "bin_edges": [
            0.0,
            0.25,
            0.5,
            0.75,
            1.0,
            1.25,
            1.5,
            1.75,
            2.0,
            2.25,
            2.5,
            2.75,
            3.0,
            3.25,
            3.5,
            3.75,
            4.0
          ],
          "counts": [
            1790,
            1023,
            990,
            1063,
            1161,
            1238,
            1250,
            1169,
            1230,
            1066,
            1019,
            943,
            865,
            753,
            650,
            5292
          ],
          "bin_centers": [
            0.125,
            0.375,
            0.625,
            0.875,
            1.125,
            1.375,
            1.625,
            1.875,
            2.125,
            2.375,
            2.625,
            2.875,
            3.125,
            3.375,
            3.625,
            3.875
          ],
          "clip_lo": 0.0,
          "clip_hi": 4.0
        }
      },
      "max_down_natr": {
        "n": 21502,
        "mean": -2.328,
        "median": -1.234,
        "p25": -3.099,
        "p75": -0.338,
        "hist": {
          "bin_edges": [
            -4.0,
            -3.75,
            -3.5,
            -3.25,
            -3.0,
            -2.75,
            -2.5,
            -2.25,
            -2.0,
            -1.75,
            -1.5,
            -1.25,
            -1.0,
            -0.75,
            -0.5,
            -0.25,
            0.0
          ],
          "counts": [
            4225,
            407,
            473,
            499,
            541,
            599,
            647,
            706,
            763,
            862,
            961,
            1105,
            1297,
            1627,
            2353,
            4437
          ],
          "bin_centers": [
            -3.875,
            -3.625,
            -3.375,
            -3.125,
            -2.875,
            -2.625,
            -2.375,
            -2.125,
            -1.875,
            -1.625,
            -1.375,
            -1.125,
            -0.875,
            -0.625,
            -0.375,
            -0.125
          ],
          "clip_lo": -4.0,
          "clip_hi": 0.0
        }
      },
      "median_max_up_natr": 2.217,
      "median_max_down_natr": -1.234,
      "mean_max_up_natr": 2.997,
      "mean_max_down_natr": -2.328,
      "p25_max_up_natr": 1.117,
      "p75_max_up_natr": 3.711,
      "p25_max_down_natr": -3.099,
      "p75_max_down_natr": -0.338,
      "outcome_natr_moves": {
        "breakout": {
          "n": 15541,
          "max_up_natr": {
            "n": 15541,
            "mean": 3.685,
            "median": 2.761,
            "p25": 1.78,
            "p75": 4.202,
            "hist": {
              "bin_edges": [
                0.0,
                0.25,
                0.5,
                0.75,
                1.0,
                1.25,
                1.5,
                1.75,
                2.0,
                2.25,
                2.5,
                2.75,
                3.0,
                3.25,
                3.5,
                3.75,
                4.0
              ],
              "counts": [
                0,
                0,
                234,
                619,
                842,
                1007,
                1059,
                1019,
                1073,
                956,
                930,
                864,
                777,
                695,
                592,
                4874
              ],
              "bin_centers": [
                0.125,
                0.375,
                0.625,
                0.875,
                1.125,
                1.375,
                1.625,
                1.875,
                2.125,
                2.375,
                2.625,
                2.875,
                3.125,
                3.375,
                3.625,
                3.875
              ],
              "clip_lo": 0.0,
              "clip_hi": 4.0
            }
          },
          "max_down_natr": {
            "n": 15541,
            "mean": -1.412,
            "median": -0.648,
            "p25": -1.702,
            "p75": -0.208,
            "hist": {
              "bin_edges": [
                -4.0,
                -3.75,
                -3.5,
                -3.25,
                -3.0,
                -2.75,
                -2.5,
                -2.25,
                -2.0,
                -1.75,
                -1.5,
                -1.25,
                -1.0,
                -0.75,
                -0.5,
                -0.25,
                0.0
              ],
              "counts": [
                1320,
                153,
                220,
                217,
                270,
                323,
                346,
                407,
                513,
                614,
                750,
                911,
                1185,
                1555,
                2335,
                4422
              ],
              "bin_centers": [
                -3.875,
                -3.625,
                -3.375,
                -3.125,
                -2.875,
                -2.625,
                -2.375,
                -2.125,
                -1.875,
                -1.625,
                -1.375,
                -1.125,
                -0.875,
                -0.625,
                -0.375,
                -0.125
              ],
              "clip_lo": -4.0,
              "clip_hi": 0.0
            }
          }
        },
        "breakdown": {
          "n": 5339,
          "max_up_natr": {
            "n": 5339,
            "mean": 1.259,
            "median": 0.52,
            "p25": 0.166,
            "p75": 1.519,
            "hist": {
              "bin_edges": [
                0.0,
                0.25,
                0.5,
                0.75,
                1.0,
                1.25,
                1.5,
                1.75,
                2.0,
                2.25,
                2.5,
                2.75,
                3.0,
                3.25,
                3.5,
                3.75,
                4.0
              ],
              "counts": [
                1758,
                853,
                557,
                330,
                271,
                212,
                178,
                141,
                151,
                108,
                86,
                78,
                86,
                57,
                57,
                416
              ],
              "bin_centers": [
                0.125,
                0.375,
                0.625,
                0.875,
                1.125,
                1.375,
                1.625,
                1.875,
                2.125,
                2.375,
                2.625,
                2.875,
                3.125,
                3.375,
                3.625,
                3.875
              ],
              "clip_lo": 0.0,
              "clip_hi": 4.0
            }
          },
          "max_down_natr": {
            "n": 5339,
            "mean": -5.06,
            "median": -4.012,
            "p25": -6.144,
            "p75": -2.605,
            "hist": {
              "bin_edges": [
                -4.0,
                -3.75,
                -3.5,
                -3.25,
                -3.0,
                -2.75,
                -2.5,
                -2.25,
                -2.0,
                -1.75,
                -1.5,
                -1.25,
                -1.0,
                -0.75,
                -0.5,
                -0.25,
                0.0
              ],
              "counts": [
                2879,
                236,
                236,
                270,
                247,
                240,
                260,
                248,
                190,
                183,
                142,
                129,
                55,
                24,
                0,
                0
              ],
              "bin_centers": [
                -3.875,
                -3.625,
                -3.375,
                -3.125,
                -2.875,
                -2.625,
                -2.375,
                -2.125,
                -1.875,
                -1.625,
                -1.375,
                -1.125,
                -0.875,
                -0.625,
                -0.375,
                -0.125
              ],
              "clip_lo": -4.0,
              "clip_hi": 0.0
            }
          }
        },
        "sideways": {
          "n": 622,
          "max_up_natr": {
            "n": 622,
            "mean": 0.734,
            "median": 0.62,
            "p25": 0.457,
            "p75": 0.852,
            "hist": {
              "bin_edges": [
                0.0,
                0.25,
                0.5,
                0.75,
                1.0,
                1.25,
                1.5,
                1.75,
                2.0,
                2.25,
                2.5,
                2.75,
                3.0,
                3.25,
                3.5,
                3.75,
                4.0
              ],
              "counts": [
                32,
                170,
                199,
                114,
                48,
                19,
                13,
                9,
                6,
                2,
                3,
                1,
                2,
                1,
                1,
                2
              ],
              "bin_centers": [
                0.125,
                0.375,
                0.625,
                0.875,
                1.125,
                1.375,
                1.625,
                1.875,
                2.125,
                2.375,
                2.625,
                2.875,
                3.125,
                3.375,
                3.625,
                3.875
              ],
              "clip_lo": 0.0,
              "clip_hi": 4.0
            }
          },
          "max_down_natr": {
            "n": 622,
            "mean": -1.792,
            "median": -1.649,
            "p25": -2.323,
            "p75": -1.057,
            "hist": {
              "bin_edges": [
                -4.0,
                -3.75,
                -3.5,
                -3.25,
                -3.0,
                -2.75,
                -2.5,
                -2.25,
                -2.0,
                -1.75,
                -1.5,
                -1.25,
                -1.0,
                -0.75,
                -0.5,
                -0.25,
                0.0
              ],
              "counts": [
                26,
                18,
                17,
                12,
                24,
                36,
                41,
                51,
                60,
                65,
                69,
                65,
                57,
                48,
                18,
                15
              ],
              "bin_centers": [
                -3.875,
                -3.625,
                -3.375,
                -3.125,
                -2.875,
                -2.625,
                -2.375,
                -2.125,
                -1.875,
                -1.625,
                -1.375,
                -1.125,
                -0.875,
                -0.625,
                -0.375,
                -0.125
              ],
              "clip_lo": -4.0,
              "clip_hi": 0.0
            }
          }
        },
        "forming": {
          "n": 0,
          "max_up_natr": {
            "n": 0,
            "mean": null,
            "median": null,
            "p25": null,
            "p75": null
          },
          "max_down_natr": {
            "n": 0,
            "mean": null,
            "median": null,
            "p25": null,
            "p75": null
          }
        }
      },
      "max_up_natr_hist": {
        "bin_edges": [
          0.0,
          0.25,
          0.5,
          0.75,
          1.0,
          1.25,
          1.5,
          1.75,
          2.0,
          2.25,
          2.5,
          2.75,
          3.0,
          3.25,
          3.5,
          3.75,
          4.0
        ],
        "counts": [
          1790,
          1023,
          990,
          1063,
          1161,
          1238,
          1250,
          1169,
          1230,
          1066,
          1019,
          943,
          865,
          753,
          650,
          5292
        ],
        "bin_centers": [
          0.125,
          0.375,
          0.625,
          0.875,
          1.125,
          1.375,
          1.625,
          1.875,
          2.125,
          2.375,
          2.625,
          2.875,
          3.125,
          3.375,
          3.625,
          3.875
        ],
        "clip_lo": 0.0,
        "clip_hi": 4.0
      },
      "max_down_natr_hist": {
        "bin_edges": [
          -4.0,
          -3.75,
          -3.5,
          -3.25,
          -3.0,
          -2.75,
          -2.5,
          -2.25,
          -2.0,
          -1.75,
          -1.5,
          -1.25,
          -1.0,
          -0.75,
          -0.5,
          -0.25,
          0.0
        ],
        "counts": [
          4225,
          407,
          473,
          499,
          541,
          599,
          647,
          706,
          763,
          862,
          961,
          1105,
          1297,
          1627,
          2353,
          4437
        ],
        "bin_centers": [
          -3.875,
          -3.625,
          -3.375,
          -3.125,
          -2.875,
          -2.625,
          -2.375,
          -2.125,
          -1.875,
          -1.625,
          -1.375,
          -1.125,
          -0.875,
          -0.625,
          -0.375,
          -0.125
        ],
        "clip_lo": -4.0,
        "clip_hi": 0.0
      },
      "timestamp_min": 1521388800000,
      "timestamp_max": 1785523500000,
      "timestamp_min_iso": "2018-03-18T16:00:00Z",
      "timestamp_max_iso": "2026-07-31T18:45:00Z"
    },
    {
      "pattern_type": "descending_broadening_wedge",
      "pattern_name": "Descending Broadening Wedge",
      "bias": "bullish",
      "n": 18428,
      "n_symbols": 665,
      "breakout_success_rate": 75.9,
      "breakdown_success_rate": 10.9,
      "sideways_rate": 13.2,
      "forming_rate": 0.0,
      "both_cleared_rate": 36.14,
      "breakout_success_rate_ci95": [
        75.27,
        76.51
      ],
      "breakdown_success_rate_ci95": [
        10.45,
        11.35
      ],
      "sideways_rate_ci95": [
        12.73,
        13.7
      ],
      "forming_rate_ci95": [
        0.0,
        0.02
      ],
      "both_sides_rate": 36.14,
      "expected_hit_rate": 75.9,
      "expected_hit_rate_ci95": [
        75.27,
        76.51
      ],
      "mean_ret_10c": 1.133,
      "median_ret_10c": 0.765,
      "std_ret_10c": 9.045,
      "win_rate_ret_gt0": 58.64,
      "p25_ret_10c": -1.768,
      "p75_ret_10c": 3.532,
      "mean_mfe": 6.691,
      "mean_mae": -4.029,
      "mfe_mae_ratio": 1.661,
      "max_up_natr": {
        "n": 18428,
        "mean": 3.316,
        "median": 2.464,
        "p25": 1.337,
        "p75": 4.157,
        "hist": {
          "bin_edges": [
            0.0,
            0.25,
            0.5,
            0.75,
            1.0,
            1.25,
            1.5,
            1.75,
            2.0,
            2.25,
            2.5,
            2.75,
            3.0,
            3.25,
            3.5,
            3.75,
            4.0
          ],
          "counts": [
            768,
            659,
            792,
            1012,
            1016,
            1039,
            1090,
            997,
            1019,
            939,
            844,
            797,
            776,
            684,
            570,
            5426
          ],
          "bin_centers": [
            0.125,
            0.375,
            0.625,
            0.875,
            1.125,
            1.375,
            1.625,
            1.875,
            2.125,
            2.375,
            2.625,
            2.875,
            3.125,
            3.375,
            3.625,
            3.875
          ],
          "clip_lo": 0.0,
          "clip_hi": 4.0
        }
      },
      "max_down_natr": {
        "n": 18428,
        "mean": -2.166,
        "median": -1.137,
        "p25": -2.639,
        "p75": -0.302,
        "hist": {
          "bin_edges": [
            -4.0,
            -3.75,
            -3.5,
            -3.25,
            -3.0,
            -2.75,
            -2.5,
            -2.25,
            -2.0,
            -1.75,
            -1.5,
            -1.25,
            -1.0,
            -0.75,
            -0.5,
            -0.25,
            0.0
          ],
          "counts": [
            2914,
            324,
            326,
            394,
            457,
            496,
            593,
            667,
            816,
            900,
            904,
            956,
            1142,
            1432,
            2010,
            4097
          ],
          "bin_centers": [
            -3.875,
            -3.625,
            -3.375,
            -3.125,
            -2.875,
            -2.625,
            -2.375,
            -2.125,
            -1.875,
            -1.625,
            -1.375,
            -1.125,
            -0.875,
            -0.625,
            -0.375,
            -0.125
          ],
          "clip_lo": -4.0,
          "clip_hi": 0.0
        }
      },
      "median_max_up_natr": 2.464,
      "median_max_down_natr": -1.137,
      "mean_max_up_natr": 3.316,
      "mean_max_down_natr": -2.166,
      "p25_max_up_natr": 1.337,
      "p75_max_up_natr": 4.157,
      "p25_max_down_natr": -2.639,
      "p75_max_down_natr": -0.302,
      "outcome_natr_moves": {
        "breakout": {
          "n": 13986,
          "max_up_natr": {
            "n": 13986,
            "mean": 3.903,
            "median": 2.963,
            "p25": 1.873,
            "p75": 4.672,
            "hist": {
              "bin_edges": [
                0.0,
                0.25,
                0.5,
                0.75,
                1.0,
                1.25,
                1.5,
                1.75,
                2.0,
                2.25,
                2.5,
                2.75,
                3.0,
                3.25,
                3.5,
                3.75,
                4.0
              ],
              "counts": [
                0,
                1,
                152,
                529,
                701,
                831,
                895,
                822,
                872,
                834,
                748,
                710,
                701,
                629,
                518,
                5043
              ],
              "bin_centers": [
                0.125,
                0.375,
                0.625,
                0.875,
                1.125,
                1.375,
                1.625,
                1.875,
                2.125,
                2.375,
                2.625,
                2.875,
                3.125,
                3.375,
                3.625,
                3.875
              ],
              "clip_lo": 0.0,
              "clip_hi": 4.0
            }
          },
          "max_down_natr": {
            "n": 13986,
            "mean": -1.314,
            "median": -0.703,
            "p25": -1.792,
            "p75": -0.204,
            "hist": {
              "bin_edges": [
                -4.0,
                -3.75,
                -3.5,
                -3.25,
                -3.0,
                -2.75,
                -2.5,
                -2.25,
                -2.0,
                -1.75,
                -1.5,
                -1.25,
                -1.0,
                -0.75,
                -0.5,
                -0.25,
                0.0
              ],
              "counts": [
                1005,
                177,
                194,
                226,
                277,
                303,
                376,
                472,
                573,
                674,
                696,
                804,
                991,
                1302,
                1912,
                4004
              ],
              "bin_centers": [
                -3.875,
                -3.625,
                -3.375,
                -3.125,
                -2.875,
                -2.625,
                -2.375,
                -2.125,
                -1.875,
                -1.625,
                -1.375,
                -1.125,
                -0.875,
                -0.625,
                -0.375,
                -0.125
              ],
              "clip_lo": -4.0,
              "clip_hi": 0.0
            }
          }
        },
        "breakdown": {
          "n": 2008,
          "max_up_natr": {
            "n": 2008,
            "mean": 1.617,
            "median": 0.647,
            "p25": 0.204,
            "p75": 2.033,
            "hist": {
              "bin_edges": [
                0.0,
                0.25,
                0.5,
                0.75,
                1.0,
                1.25,
                1.5,
                1.75,
                2.0,
                2.25,
                2.5,
                2.75,
                3.0,
                3.25,
                3.5,
                3.75,
                4.0
              ],
              "counts": [
                572,
                312,
                200,
                131,
                91,
                70,
                60,
                64,
                62,
                41,
                37,
                34,
                34,
                27,
                26,
                247
              ],
              "bin_centers": [
                0.125,
                0.375,
                0.625,
                0.875,
                1.125,
                1.375,
                1.625,
                1.875,
                2.125,
                2.375,
                2.625,
                2.875,
                3.125,
                3.375,
                3.625,
                3.875
              ],
              "clip_lo": 0.0,
              "clip_hi": 4.0
            }
          },
          "max_down_natr": {
            "n": 2008,
            "mean": -7.764,
            "median": -5.938,
            "p25": -9.274,
            "p75": -3.57,
            "hist": {
              "bin_edges": [
                -4.0,
                -3.75,
                -3.5,
                -3.25,
                -3.0,
                -2.75,
                -2.5,
                -2.25,
                -2.0,
                -1.75,
                -1.5,
                -1.25,
                -1.0,
                -0.75,
                -0.5,
                -0.25,
                0.0
              ],
              "counts": [
                1461,
                64,
                48,
                59,
                61,
                64,
                62,
                45,
                50,
                35,
                37,
                14,
                6,
                2,
                0,
                0
              ],
              "bin_centers": [
                -3.875,
                -3.625,
                -3.375,
                -3.125,
                -2.875,
                -2.625,
                -2.375,
                -2.125,
                -1.875,
                -1.625,
                -1.375,
                -1.125,
                -0.875,
                -0.625,
                -0.375,
                -0.125
              ],
              "clip_lo": -4.0,
              "clip_hi": 0.0
            }
          }
        },
        "sideways": {
          "n": 2434,
          "max_up_natr": {
            "n": 2434,
            "mean": 1.347,
            "median": 0.902,
            "p25": 0.531,
            "p75": 1.736,
            "hist": {
              "bin_edges": [
                0.0,
                0.25,
                0.5,
                0.75,
                1.0,
                1.25,
                1.5,
                1.75,
                2.0,
                2.25,
                2.5,
                2.75,
                3.0,
                3.25,
                3.5,
                3.75,
                4.0
              ],
              "counts": [
                196,
                346,
                440,
                352,
                224,
                138,
                135,
                111,
                85,
                64,
                59,
                53,
                41,
                28,
                26,
                136
              ],
              "bin_centers": [
                0.125,
                0.375,
                0.625,
                0.875,
                1.125,
                1.375,
                1.625,
                1.875,
                2.125,
                2.375,
                2.625,
                2.875,
                3.125,
                3.375,
                3.625,
                3.875
              ],
              "clip_lo": 0.0,
              "clip_hi": 4.0
            }
          },
          "max_down_natr": {
            "n": 2434,
            "mean": -2.443,
            "median": -2.094,
            "p25": -3.274,
            "p75": -1.263,
            "hist": {
              "bin_edges": [
                -4.0,
                -3.75,
                -3.5,
                -3.25,
                -3.0,
                -2.75,
                -2.5,
                -2.25,
                -2.0,
                -1.75,
                -1.5,
                -1.25,
                -1.0,
                -0.75,
                -0.5,
                -0.25,
                0.0
              ],
              "counts": [
                448,
                83,
                84,
                109,
                119,
                129,
                155,
                150,
                193,
                191,
                171,
                138,
                145,
                128,
                98,
                93
              ],
              "bin_centers": [
                -3.875,
                -3.625,
                -3.375,
                -3.125,
                -2.875,
                -2.625,
                -2.375,
                -2.125,
                -1.875,
                -1.625,
                -1.375,
                -1.125,
                -0.875,
                -0.625,
                -0.375,
                -0.125
              ],
              "clip_lo": -4.0,
              "clip_hi": 0.0
            }
          }
        },
        "forming": {
          "n": 0,
          "max_up_natr": {
            "n": 0,
            "mean": null,
            "median": null,
            "p25": null,
            "p75": null
          },
          "max_down_natr": {
            "n": 0,
            "mean": null,
            "median": null,
            "p25": null,
            "p75": null
          }
        }
      },
      "max_up_natr_hist": {
        "bin_edges": [
          0.0,
          0.25,
          0.5,
          0.75,
          1.0,
          1.25,
          1.5,
          1.75,
          2.0,
          2.25,
          2.5,
          2.75,
          3.0,
          3.25,
          3.5,
          3.75,
          4.0
        ],
        "counts": [
          768,
          659,
          792,
          1012,
          1016,
          1039,
          1090,
          997,
          1019,
          939,
          844,
          797,
          776,
          684,
          570,
          5426
        ],
        "bin_centers": [
          0.125,
          0.375,
          0.625,
          0.875,
          1.125,
          1.375,
          1.625,
          1.875,
          2.125,
          2.375,
          2.625,
          2.875,
          3.125,
          3.375,
          3.625,
          3.875
        ],
        "clip_lo": 0.0,
        "clip_hi": 4.0
      },
      "max_down_natr_hist": {
        "bin_edges": [
          -4.0,
          -3.75,
          -3.5,
          -3.25,
          -3.0,
          -2.75,
          -2.5,
          -2.25,
          -2.0,
          -1.75,
          -1.5,
          -1.25,
          -1.0,
          -0.75,
          -0.5,
          -0.25,
          0.0
        ],
        "counts": [
          2914,
          324,
          326,
          394,
          457,
          496,
          593,
          667,
          816,
          900,
          904,
          956,
          1142,
          1432,
          2010,
          4097
        ],
        "bin_centers": [
          -3.875,
          -3.625,
          -3.375,
          -3.125,
          -2.875,
          -2.625,
          -2.375,
          -2.125,
          -1.875,
          -1.625,
          -1.375,
          -1.125,
          -0.875,
          -0.625,
          -0.375,
          -0.125
        ],
        "clip_lo": -4.0,
        "clip_hi": 0.0
      },
      "timestamp_min": 1517040000000,
      "timestamp_max": 1785523500000,
      "timestamp_min_iso": "2018-01-27T08:00:00Z",
      "timestamp_max_iso": "2026-07-31T18:45:00Z"
    },
    {
      "pattern_type": "ascending_broadening_wedge",
      "pattern_name": "Ascending Broadening Wedge",
      "bias": "bearish",
      "n": 15465,
      "n_symbols": 660,
      "breakout_success_rate": 15.79,
      "breakdown_success_rate": 74.94,
      "sideways_rate": 9.27,
      "forming_rate": 0.0,
      "both_cleared_rate": 39.6,
      "breakout_success_rate_ci95": [
        15.22,
        16.37
      ],
      "breakdown_success_rate_ci95": [
        74.25,
        75.61
      ],
      "sideways_rate_ci95": [
        8.83,
        9.74
      ],
      "forming_rate_ci95": [
        0.0,
        0.02
      ],
      "both_sides_rate": 39.6,
      "expected_hit_rate": 74.94,
      "expected_hit_rate_ci95": [
        74.25,
        75.61
      ],
      "mean_ret_10c": -0.255,
      "median_ret_10c": -0.921,
      "std_ret_10c": 10.334,
      "win_rate_ret_gt0": 39.45,
      "p25_ret_10c": -3.83,
      "p75_ret_10c": 1.8,
      "mean_mfe": 5.579,
      "mean_mae": -5.821,
      "mfe_mae_ratio": 0.958,
      "max_up_natr": {
        "n": 15465,
        "mean": 2.734,
        "median": 1.226,
        "p25": 0.306,
        "p75": 3.225,
        "hist": {
          "bin_edges": [
            0.0,
            0.25,
            0.5,
            0.75,
            1.0,
            1.25,
            1.5,
            1.75,
            2.0,
            2.25,
            2.5,
            2.75,
            3.0,
            3.25,
            3.5,
            3.75,
            4.0
          ],
          "counts": [
            3423,
            1676,
            1036,
            902,
            775,
            638,
            580,
            547,
            509,
            466,
            410,
            327,
            340,
            279,
            258,
            3299
          ],
          "bin_centers": [
            0.125,
            0.375,
            0.625,
            0.875,
            1.125,
            1.375,
            1.625,
            1.875,
            2.125,
            2.375,
            2.625,
            2.875,
            3.125,
            3.375,
            3.625,
            3.875
          ],
          "clip_lo": 0.0,
          "clip_hi": 4.0
        }
      },
      "max_down_natr": {
        "n": 15465,
        "mean": -3.139,
        "median": -2.677,
        "p25": -4.147,
        "p75": -1.525,
        "hist": {
          "bin_edges": [
            -4.0,
            -3.75,
            -3.5,
            -3.25,
            -3.0,
            -2.75,
            -2.5,
            -2.25,
            -2.0,
            -1.75,
            -1.5,
            -1.25,
            -1.0,
            -0.75,
            -0.5,
            -0.25,
            0.0
          ],
          "counts": [
            4677,
            615,
            675,
            710,
            796,
            806,
            819,
            906,
            835,
            836,
            764,
            666,
            647,
            525,
            501,
            687
          ],
          "bin_centers": [
            -3.875,
            -3.625,
            -3.375,
            -3.125,
            -2.875,
            -2.625,
            -2.375,
            -2.125,
            -1.875,
            -1.625,
            -1.375,
            -1.125,
            -0.875,
            -0.625,
            -0.375,
            -0.125
          ],
          "clip_lo": -4.0,
          "clip_hi": 0.0
        }
      },
      "median_max_up_natr": 1.226,
      "median_max_down_natr": -2.677,
      "mean_max_up_natr": 2.734,
      "mean_max_down_natr": -3.139,
      "p25_max_up_natr": 0.306,
      "p75_max_up_natr": 3.225,
      "p25_max_down_natr": -4.147,
      "p75_max_down_natr": -1.525,
      "outcome_natr_moves": {
        "breakout": {
          "n": 2442,
          "max_up_natr": {
            "n": 2442,
            "mean": 8.74,
            "median": 6.392,
            "p25": 3.762,
            "p75": 10.439,
            "hist": {
              "bin_edges": [
                0.0,
                0.25,
                0.5,
                0.75,
                1.0,
                1.25,
                1.5,
                1.75,
                2.0,
                2.25,
                2.5,
                2.75,
                3.0,
                3.25,
                3.5,
                3.75,
                4.0
              ],
              "counts": [
                0,
                0,
                3,
                7,
                23,
                32,
                49,
                45,
                60,
                61,
                61,
                70,
                61,
                62,
                69,
                1839
              ],
              "bin_centers": [
                0.125,
                0.375,
                0.625,
                0.875,
                1.125,
                1.375,
                1.625,
                1.875,
                2.125,
                2.375,
                2.625,
                2.875,
                3.125,
                3.375,
                3.625,
                3.875
              ],
              "clip_lo": 0.0,
              "clip_hi": 4.0
            }
          },
          "max_down_natr": {
            "n": 2442,
            "mean": -1.728,
            "median": -0.832,
            "p25": -2.584,
            "p75": -0.249,
            "hist": {
              "bin_edges": [
                -4.0,
                -3.75,
                -3.5,
                -3.25,
                -3.0,
                -2.75,
                -2.5,
                -2.25,
                -2.0,
                -1.75,
                -1.5,
                -1.25,
                -1.0,
                -0.75,
                -0.5,
                -0.25,
                0.0
              ],
              "counts": [
                346,
                38,
                56,
                57,
                65,
                69,
                57,
                65,
                83,
                87,
                97,
                98,
                169,
                222,
                319,
                614
              ],
              "bin_centers": [
                -3.875,
                -3.625,
                -3.375,
                -3.125,
                -2.875,
                -2.625,
                -2.375,
                -2.125,
                -1.875,
                -1.625,
                -1.375,
                -1.125,
                -0.875,
                -0.625,
                -0.375,
                -0.125
              ],
              "clip_lo": -4.0,
              "clip_hi": 0.0
            }
          }
        },
        "breakdown": {
          "n": 11589,
          "max_up_natr": {
            "n": 11589,
            "mean": 1.485,
            "median": 0.7,
            "p25": 0.195,
            "p75": 1.953,
            "hist": {
              "bin_edges": [
                0.0,
                0.25,
                0.5,
                0.75,
                1.0,
                1.25,
                1.5,
                1.75,
                2.0,
                2.25,
                2.5,
                2.75,
                3.0,
                3.25,
                3.5,
                3.75,
                4.0
              ],
              "counts": [
                3371,
                1619,
                966,
                804,
                655,
                524,
                421,
                404,
                354,
                322,
                285,
                195,
                205,
                170,
                141,
                1153
              ],
              "bin_centers": [
                0.125,
                0.375,
                0.625,
                0.875,
                1.125,
                1.375,
                1.625,
                1.875,
                2.125,
                2.375,
                2.625,
                2.875,
                3.125,
                3.375,
                3.625,
                3.875
              ],
              "clip_lo": 0.0,
              "clip_hi": 4.0
            }
          },
          "max_down_natr": {
            "n": 11589,
            "mean": -3.645,
            "median": -3.091,
            "p25": -4.546,
            "p75": -2.07,
            "hist": {
              "bin_edges": [
                -4.0,
                -3.75,
                -3.5,
                -3.25,
                -3.0,
                -2.75,
                -2.5,
                -2.25,
                -2.0,
                -1.75,
                -1.5,
                -1.25,
                -1.0,
                -0.75,
                -0.5,
                -0.25,
                0.0
              ],
              "counts": [
                4247,
                558,
                595,
                627,
                686,
                686,
                715,
                787,
                690,
                648,
                575,
                418,
                280,
                77,
                0,
                0
              ],
              "bin_centers": [
                -3.875,
                -3.625,
                -3.375,
                -3.125,
                -2.875,
                -2.625,
                -2.375,
                -2.125,
                -1.875,
                -1.625,
                -1.375,
                -1.125,
                -0.875,
                -0.625,
                -0.375,
                -0.125
              ],
              "clip_lo": -4.0,
              "clip_hi": 0.0
            }
          }
        },
        "sideways": {
          "n": 1434,
          "max_up_natr": {
            "n": 1434,
            "mean": 2.595,
            "median": 2.146,
            "p25": 1.239,
            "p75": 3.483,
            "hist": {
              "bin_edges": [
                0.0,
                0.25,
                0.5,
                0.75,
                1.0,
                1.25,
                1.5,
                1.75,
                2.0,
                2.25,
                2.5,
                2.75,
                3.0,
                3.25,
                3.5,
                3.75,
                4.0
              ],
              "counts": [
                52,
                57,
                67,
                91,
                97,
                82,
                110,
                98,
                95,
                83,
                64,
                62,
                74,
                47,
                48,
                307
              ],
              "bin_centers": [
                0.125,
                0.375,
                0.625,
                0.875,
                1.125,
                1.375,
                1.625,
                1.875,
                2.125,
                2.375,
                2.625,
                2.875,
                3.125,
                3.375,
                3.625,
                3.875
              ],
              "clip_lo": 0.0,
              "clip_hi": 4.0
            }
          },
          "max_down_natr": {
            "n": 1434,
            "mean": -1.448,
            "median": -1.057,
            "p25": -1.965,
            "p75": -0.605,
            "hist": {
              "bin_edges": [
                -4.0,
                -3.75,
                -3.5,
                -3.25,
                -3.0,
                -2.75,
                -2.5,
                -2.25,
                -2.0,
                -1.75,
                -1.5,
                -1.25,
                -1.0,
                -0.75,
                -0.5,
                -0.25,
                0.0
              ],
              "counts": [
                84,
                19,
                24,
                26,
                45,
                51,
                47,
                54,
                62,
                101,
                92,
                150,
                198,
                226,
                182,
                73
              ],
              "bin_centers": [
                -3.875,
                -3.625,
                -3.375,
                -3.125,
                -2.875,
                -2.625,
                -2.375,
                -2.125,
                -1.875,
                -1.625,
                -1.375,
                -1.125,
                -0.875,
                -0.625,
                -0.375,
                -0.125
              ],
              "clip_lo": -4.0,
              "clip_hi": 0.0
            }
          }
        },
        "forming": {
          "n": 0,
          "max_up_natr": {
            "n": 0,
            "mean": null,
            "median": null,
            "p25": null,
            "p75": null
          },
          "max_down_natr": {
            "n": 0,
            "mean": null,
            "median": null,
            "p25": null,
            "p75": null
          }
        }
      },
      "max_up_natr_hist": {
        "bin_edges": [
          0.0,
          0.25,
          0.5,
          0.75,
          1.0,
          1.25,
          1.5,
          1.75,
          2.0,
          2.25,
          2.5,
          2.75,
          3.0,
          3.25,
          3.5,
          3.75,
          4.0
        ],
        "counts": [
          3423,
          1676,
          1036,
          902,
          775,
          638,
          580,
          547,
          509,
          466,
          410,
          327,
          340,
          279,
          258,
          3299
        ],
        "bin_centers": [
          0.125,
          0.375,
          0.625,
          0.875,
          1.125,
          1.375,
          1.625,
          1.875,
          2.125,
          2.375,
          2.625,
          2.875,
          3.125,
          3.375,
          3.625,
          3.875
        ],
        "clip_lo": 0.0,
        "clip_hi": 4.0
      },
      "max_down_natr_hist": {
        "bin_edges": [
          -4.0,
          -3.75,
          -3.5,
          -3.25,
          -3.0,
          -2.75,
          -2.5,
          -2.25,
          -2.0,
          -1.75,
          -1.5,
          -1.25,
          -1.0,
          -0.75,
          -0.5,
          -0.25,
          0.0
        ],
        "counts": [
          4677,
          615,
          675,
          710,
          796,
          806,
          819,
          906,
          835,
          836,
          764,
          666,
          647,
          525,
          501,
          687
        ],
        "bin_centers": [
          -3.875,
          -3.625,
          -3.375,
          -3.125,
          -2.875,
          -2.625,
          -2.375,
          -2.125,
          -1.875,
          -1.625,
          -1.375,
          -1.125,
          -0.875,
          -0.625,
          -0.375,
          -0.125
        ],
        "clip_lo": -4.0,
        "clip_hi": 0.0
      },
      "timestamp_min": 1519185600000,
      "timestamp_max": 1785523500000,
      "timestamp_min_iso": "2018-02-21T04:00:00Z",
      "timestamp_max_iso": "2026-07-31T18:45:00Z"
    },
    {
      "pattern_type": "reverse_head_and_shoulders",
      "pattern_name": "Reverse Head & Shoulders",
      "bias": "bullish",
      "n": 13479,
      "n_symbols": 664,
      "breakout_success_rate": 70.69,
      "breakdown_success_rate": 28.0,
      "sideways_rate": 1.31,
      "forming_rate": 0.0,
      "both_cleared_rate": 38.59,
      "breakout_success_rate_ci95": [
        69.91,
        71.45
      ],
      "breakdown_success_rate_ci95": [
        27.25,
        28.76
      ],
      "sideways_rate_ci95": [
        1.13,
        1.52
      ],
      "forming_rate_ci95": [
        0.0,
        0.03
      ],
      "both_sides_rate": 38.59,
      "expected_hit_rate": 70.69,
      "expected_hit_rate_ci95": [
        69.91,
        71.45
      ],
      "mean_ret_10c": 0.151,
      "median_ret_10c": -0.131,
      "std_ret_10c": 9.036,
      "win_rate_ret_gt0": 47.61,
      "p25_ret_10c": -2.609,
      "p75_ret_10c": 2.317,
      "mean_mfe": 5.693,
      "mean_mae": -4.56,
      "mfe_mae_ratio": 1.248,
      "max_up_natr": {
        "n": 13479,
        "mean": 2.628,
        "median": 1.712,
        "p25": 0.775,
        "p75": 3.217,
        "hist": {
          "bin_edges": [
            0.0,
            0.25,
            0.5,
            0.75,
            1.0,
            1.25,
            1.5,
            1.75,
            2.0,
            2.25,
            2.5,
            2.75,
            3.0,
            3.25,
            3.5,
            3.75,
            4.0
          ],
          "counts": [
            1231,
            1018,
            1020,
            955,
            957,
            874,
            801,
            767,
            622,
            581,
            505,
            435,
            395,
            350,
            303,
            2665
          ],
          "bin_centers": [
            0.125,
            0.375,
            0.625,
            0.875,
            1.125,
            1.375,
            1.625,
            1.875,
            2.125,
            2.375,
            2.625,
            2.875,
            3.125,
            3.375,
            3.625,
            3.875
          ],
          "clip_lo": 0.0,
          "clip_hi": 4.0
        }
      },
      "max_down_natr": {
        "n": 13479,
        "mean": -2.344,
        "median": -1.658,
        "p25": -3.045,
        "p75": -0.792,
        "hist": {
          "bin_edges": [
            -4.0,
            -3.75,
            -3.5,
            -3.25,
            -3.0,
            -2.75,
            -2.5,
            -2.25,
            -2.0,
            -1.75,
            -1.5,
            -1.25,
            -1.0,
            -0.75,
            -0.5,
            -0.25,
            0.0
          ],
          "counts": [
            2373,
            304,
            370,
            398,
            418,
            504,
            613,
            685,
            779,
            845,
            907,
            1002,
            1084,
            1121,
            1072,
            1004
          ],
          "bin_centers": [
            -3.875,
            -3.625,
            -3.375,
            -3.125,
            -2.875,
            -2.625,
            -2.375,
            -2.125,
            -1.875,
            -1.625,
            -1.375,
            -1.125,
            -0.875,
            -0.625,
            -0.375,
            -0.125
          ],
          "clip_lo": -4.0,
          "clip_hi": 0.0
        }
      },
      "median_max_up_natr": 1.712,
      "median_max_down_natr": -1.658,
      "mean_max_up_natr": 2.628,
      "mean_max_down_natr": -2.344,
      "p25_max_up_natr": 0.775,
      "p75_max_up_natr": 3.217,
      "p25_max_down_natr": -3.045,
      "p75_max_down_natr": -0.792,
      "outcome_natr_moves": {
        "breakout": {
          "n": 9528,
          "max_up_natr": {
            "n": 9528,
            "mean": 3.222,
            "median": 2.192,
            "p25": 1.301,
            "p75": 3.779,
            "hist": {
              "bin_edges": [
                0.0,
                0.25,
                0.5,
                0.75,
                1.0,
                1.25,
                1.5,
                1.75,
                2.0,
                2.25,
                2.5,
                2.75,
                3.0,
                3.25,
                3.5,
                3.75,
                4.0
              ],
              "counts": [
                238,
                263,
                349,
                592,
                776,
                764,
                692,
                662,
                545,
                496,
                446,
                380,
                343,
                304,
                264,
                2414
              ],
              "bin_centers": [
                0.125,
                0.375,
                0.625,
                0.875,
                1.125,
                1.375,
                1.625,
                1.875,
                2.125,
                2.375,
                2.625,
                2.875,
                3.125,
                3.375,
                3.625,
                3.875
              ],
              "clip_lo": 0.0,
              "clip_hi": 4.0
            }
          },
          "max_down_natr": {
            "n": 9528,
            "mean": -1.942,
            "median": -1.184,
            "p25": -2.511,
            "p75": -0.572,
            "hist": {
              "bin_edges": [
                -4.0,
                -3.75,
                -3.5,
                -3.25,
                -3.0,
                -2.75,
                -2.5,
                -2.25,
                -2.0,
                -1.75,
                -1.5,
                -1.25,
                -1.0,
                -0.75,
                -0.5,
                -0.25,
                0.0
              ],
              "counts": [
                1280,
                185,
                207,
                222,
                215,
                282,
                334,
                387,
                446,
                493,
                560,
                759,
                1012,
                1091,
                1056,
                999
              ],
              "bin_centers": [
                -3.875,
                -3.625,
                -3.375,
                -3.125,
                -2.875,
                -2.625,
                -2.375,
                -2.125,
                -1.875,
                -1.625,
                -1.375,
                -1.125,
                -0.875,
                -0.625,
                -0.375,
                -0.125
              ],
              "clip_lo": -4.0,
              "clip_hi": 0.0
            }
          }
        },
        "breakdown": {
          "n": 3774,
          "max_up_natr": {
            "n": 3774,
            "mean": 1.227,
            "median": 0.571,
            "p25": 0.241,
            "p75": 1.345,
            "hist": {
              "bin_edges": [
                0.0,
                0.25,
                0.5,
                0.75,
                1.0,
                1.25,
                1.5,
                1.75,
                2.0,
                2.25,
                2.5,
                2.75,
                3.0,
                3.25,
                3.5,
                3.75,
                4.0
              ],
              "counts": [
                973,
                712,
                603,
                317,
                181,
                110,
                109,
                105,
                77,
                85,
                59,
                55,
                52,
                46,
                39,
                251
              ],
              "bin_centers": [
                0.125,
                0.375,
                0.625,
                0.875,
                1.125,
                1.375,
                1.625,
                1.875,
                2.125,
                2.375,
                2.625,
                2.875,
                3.125,
                3.375,
                3.625,
                3.875
              ],
              "clip_lo": 0.0,
              "clip_hi": 4.0
            }
          },
          "max_down_natr": {
            "n": 3774,
            "mean": -3.428,
            "median": -2.592,
            "p25": -4.012,
            "p75": -1.787,
            "hist": {
              "bin_edges": [
                -4.0,
                -3.75,
                -3.5,
                -3.25,
                -3.0,
                -2.75,
                -2.5,
                -2.25,
                -2.0,
                -1.75,
                -1.5,
                -1.25,
                -1.0,
                -0.75,
                -0.5,
                -0.25,
                0.0
              ],
              "counts": [
                1093,
                119,
                163,
                176,
                203,
                222,
                279,
                298,
                333,
                350,
                339,
                199,
                0,
                0,
                0,
                0
              ],
              "bin_centers": [
                -3.875,
                -3.625,
                -3.375,
                -3.125,
                -2.875,
                -2.625,
                -2.375,
                -2.125,
                -1.875,
                -1.625,
                -1.375,
                -1.125,
                -0.875,
                -0.625,
                -0.375,
                -0.125
              ],
              "clip_lo": -4.0,
              "clip_hi": 0.0
            }
          }
        },
        "sideways": {
          "n": 177,
          "max_up_natr": {
            "n": 177,
            "mean": 0.572,
            "median": 0.61,
            "p25": 0.403,
            "p75": 0.754,
            "hist": {
              "bin_edges": [
                0.0,
                0.25,
                0.5,
                0.75,
                1.0,
                1.25,
                1.5,
                1.75,
                2.0,
                2.25,
                2.5,
                2.75,
                3.0,
                3.25,
                3.5,
                3.75,
                4.0
              ],
              "counts": [
                20,
                43,
                68,
                46,
                0,
                0,
                0,
                0,
                0,
                0,
                0,
                0,
                0,
                0,
                0,
                0
              ],
              "bin_centers": [
                0.125,
                0.375,
                0.625,
                0.875,
                1.125,
                1.375,
                1.625,
                1.875,
                2.125,
                2.375,
                2.625,
                2.875,
                3.125,
                3.375,
                3.625,
                3.875
              ],
              "clip_lo": 0.0,
              "clip_hi": 4.0
            }
          },
          "max_down_natr": {
            "n": 177,
            "mean": -0.853,
            "median": -0.899,
            "p25": -1.05,
            "p75": -0.709,
            "hist": {
              "bin_edges": [
                -4.0,
                -3.75,
                -3.5,
                -3.25,
                -3.0,
                -2.75,
                -2.5,
                -2.25,
                -2.0,
                -1.75,
                -1.5,
                -1.25,
                -1.0,
                -0.75,
                -0.5,
                -0.25,
                0.0
              ],
              "counts": [
                0,
                0,
                0,
                0,
                0,
                0,
                0,
                0,
                0,
                2,
                8,
                44,
                72,
                30,
                16,
                5
              ],
              "bin_centers": [
                -3.875,
                -3.625,
                -3.375,
                -3.125,
                -2.875,
                -2.625,
                -2.375,
                -2.125,
                -1.875,
                -1.625,
                -1.375,
                -1.125,
                -0.875,
                -0.625,
                -0.375,
                -0.125
              ],
              "clip_lo": -4.0,
              "clip_hi": 0.0
            }
          }
        },
        "forming": {
          "n": 0,
          "max_up_natr": {
            "n": 0,
            "mean": null,
            "median": null,
            "p25": null,
            "p75": null
          },
          "max_down_natr": {
            "n": 0,
            "mean": null,
            "median": null,
            "p25": null,
            "p75": null
          }
        }
      },
      "max_up_natr_hist": {
        "bin_edges": [
          0.0,
          0.25,
          0.5,
          0.75,
          1.0,
          1.25,
          1.5,
          1.75,
          2.0,
          2.25,
          2.5,
          2.75,
          3.0,
          3.25,
          3.5,
          3.75,
          4.0
        ],
        "counts": [
          1231,
          1018,
          1020,
          955,
          957,
          874,
          801,
          767,
          622,
          581,
          505,
          435,
          395,
          350,
          303,
          2665
        ],
        "bin_centers": [
          0.125,
          0.375,
          0.625,
          0.875,
          1.125,
          1.375,
          1.625,
          1.875,
          2.125,
          2.375,
          2.625,
          2.875,
          3.125,
          3.375,
          3.625,
          3.875
        ],
        "clip_lo": 0.0,
        "clip_hi": 4.0
      },
      "max_down_natr_hist": {
        "bin_edges": [
          -4.0,
          -3.75,
          -3.5,
          -3.25,
          -3.0,
          -2.75,
          -2.5,
          -2.25,
          -2.0,
          -1.75,
          -1.5,
          -1.25,
          -1.0,
          -0.75,
          -0.5,
          -0.25,
          0.0
        ],
        "counts": [
          2373,
          304,
          370,
          398,
          418,
          504,
          613,
          685,
          779,
          845,
          907,
          1002,
          1084,
          1121,
          1072,
          1004
        ],
        "bin_centers": [
          -3.875,
          -3.625,
          -3.375,
          -3.125,
          -2.875,
          -2.625,
          -2.375,
          -2.125,
          -1.875,
          -1.625,
          -1.375,
          -1.125,
          -0.875,
          -0.625,
          -0.375,
          -0.125
        ],
        "clip_lo": -4.0,
        "clip_hi": 0.0
      },
      "timestamp_min": 1505174400000,
      "timestamp_max": 1785523500000,
      "timestamp_min_iso": "2017-09-12T00:00:00Z",
      "timestamp_max_iso": "2026-07-31T18:45:00Z"
    },
    {
      "pattern_type": "head_and_shoulders",
      "pattern_name": "Head & Shoulders",
      "bias": "bearish",
      "n": 12596,
      "n_symbols": 664,
      "breakout_success_rate": 26.02,
      "breakdown_success_rate": 72.97,
      "sideways_rate": 1.01,
      "forming_rate": 0.0,
      "both_cleared_rate": 42.01,
      "breakout_success_rate_ci95": [
        25.26,
        26.79
      ],
      "breakdown_success_rate_ci95": [
        72.19,
        73.74
      ],
      "sideways_rate_ci95": [
        0.86,
        1.21
      ],
      "forming_rate_ci95": [
        0.0,
        0.03
      ],
      "both_sides_rate": 42.01,
      "expected_hit_rate": 72.97,
      "expected_hit_rate_ci95": [
        72.19,
        73.74
      ],
      "mean_ret_10c": 0.151,
      "median_ret_10c": -0.093,
      "std_ret_10c": 14.97,
      "win_rate_ret_gt0": 48.46,
      "p25_ret_10c": -2.622,
      "p75_ret_10c": 2.193,
      "mean_mfe": 5.178,
      "mean_mae": -4.91,
      "mfe_mae_ratio": 1.055,
      "max_up_natr": {
        "n": 12596,
        "mean": 2.458,
        "median": 1.686,
        "p25": 0.772,
        "p75": 3.113,
        "hist": {
          "bin_edges": [
            0.0,
            0.25,
            0.5,
            0.75,
            1.0,
            1.25,
            1.5,
            1.75,
            2.0,
            2.25,
            2.5,
            2.75,
            3.0,
            3.25,
            3.5,
            3.75,
            4.0
          ],
          "counts": [
            993,
            1055,
            1019,
            932,
            882,
            867,
            754,
            666,
            583,
            569,
            463,
            468,
            393,
            269,
            304,
            2379
          ],
          "bin_centers": [
            0.125,
            0.375,
            0.625,
            0.875,
            1.125,
            1.375,
            1.625,
            1.875,
            2.125,
            2.375,
            2.625,
            2.875,
            3.125,
            3.375,
            3.625,
            3.875
          ],
          "clip_lo": 0.0,
          "clip_hi": 4.0
        }
      },
      "max_down_natr": {
        "n": 12596,
        "mean": -2.514,
        "median": -1.851,
        "p25": -3.215,
        "p75": -0.907,
        "hist": {
          "bin_edges": [
            -4.0,
            -3.75,
            -3.5,
            -3.25,
            -3.0,
            -2.75,
            -2.5,
            -2.25,
            -2.0,
            -1.75,
            -1.5,
            -1.25,
            -1.0,
            -0.75,
            -0.5,
            -0.25,
            0.0
          ],
          "counts": [
            2413,
            282,
            401,
            428,
            468,
            532,
            649,
            683,
            738,
            798,
            868,
            877,
            853,
            885,
            836,
            885
          ],
          "bin_centers": [
            -3.875,
            -3.625,
            -3.375,
            -3.125,
            -2.875,
            -2.625,
            -2.375,
            -2.125,
            -1.875,
            -1.625,
            -1.375,
            -1.125,
            -0.875,
            -0.625,
            -0.375,
            -0.125
          ],
          "clip_lo": -4.0,
          "clip_hi": 0.0
        }
      },
      "median_max_up_natr": 1.686,
      "median_max_down_natr": -1.851,
      "mean_max_up_natr": 2.458,
      "mean_max_down_natr": -2.514,
      "p25_max_up_natr": 0.772,
      "p75_max_up_natr": 3.113,
      "p25_max_down_natr": -3.215,
      "p75_max_down_natr": -0.907,
      "outcome_natr_moves": {
        "breakout": {
          "n": 3277,
          "max_up_natr": {
            "n": 3277,
            "mean": 3.564,
            "median": 2.745,
            "p25": 1.868,
            "p75": 4.207,
            "hist": {
              "bin_edges": [
                0.0,
                0.25,
                0.5,
                0.75,
                1.0,
                1.25,
                1.5,
                1.75,
                2.0,
                2.25,
                2.5,
                2.75,
                3.0,
                3.25,
                3.5,
                3.75,
                4.0
              ],
              "counts": [
                0,
                0,
                0,
                0,
                128,
                259,
                297,
                278,
                229,
                227,
                224,
                201,
                164,
                114,
                146,
                1010
              ],
              "bin_centers": [
                0.125,
                0.375,
                0.625,
                0.875,
                1.125,
                1.375,
                1.625,
                1.875,
                2.125,
                2.375,
                2.625,
                2.875,
                3.125,
                3.375,
                3.625,
                3.875
              ],
              "clip_lo": 0.0,
              "clip_hi": 4.0
            }
          },
          "max_down_natr": {
            "n": 3277,
            "mean": -1.35,
            "median": -0.66,
            "p25": -1.604,
            "p75": -0.299,
            "hist": {
              "bin_edges": [
                -4.0,
                -3.75,
                -3.5,
                -3.25,
                -3.0,
                -2.75,
                -2.5,
                -2.25,
                -2.0,
                -1.75,
                -1.5,
                -1.25,
                -1.0,
                -0.75,
                -0.5,
                -0.25,
                0.0
              ],
              "counts": [
                253,
                31,
                36,
                43,
                47,
                57,
                88,
                89,
                102,
                121,
                160,
                169,
                285,
                502,
                593,
                701
              ],
              "bin_centers": [
                -3.875,
                -3.625,
                -3.375,
                -3.125,
                -2.875,
                -2.625,
                -2.375,
                -2.125,
                -1.875,
                -1.625,
                -1.375,
                -1.125,
                -0.875,
                -0.625,
                -0.375,
                -0.125
              ],
              "clip_lo": -4.0,
              "clip_hi": 0.0
            }
          }
        },
        "breakdown": {
          "n": 9191,
          "max_up_natr": {
            "n": 9191,
            "mean": 2.086,
            "median": 1.234,
            "p25": 0.571,
            "p75": 2.622,
            "hist": {
              "bin_edges": [
                0.0,
                0.25,
                0.5,
                0.75,
                1.0,
                1.25,
                1.5,
                1.75,
                2.0,
                2.25,
                2.5,
                2.75,
                3.0,
                3.25,
                3.5,
                3.75,
                4.0
              ],
              "counts": [
                985,
                1045,
                998,
                884,
                723,
                598,
                457,
                388,
                354,
                342,
                239,
                267,
                229,
                155,
                158,
                1369
              ],
              "bin_centers": [
                0.125,
                0.375,
                0.625,
                0.875,
                1.125,
                1.375,
                1.625,
                1.875,
                2.125,
                2.375,
                2.625,
                2.875,
                3.125,
                3.375,
                3.625,
                3.875
              ],
              "clip_lo": 0.0,
              "clip_hi": 4.0
            }
          },
          "max_down_natr": {
            "n": 9191,
            "mean": -2.955,
            "median": -2.26,
            "p25": -3.613,
            "p75": -1.362,
            "hist": {
              "bin_edges": [
                -4.0,
                -3.75,
                -3.5,
                -3.25,
                -3.0,
                -2.75,
                -2.5,
                -2.25,
                -2.0,
                -1.75,
                -1.5,
                -1.25,
                -1.0,
                -0.75,
                -0.5,
                -0.25,
                0.0
              ],
              "counts": [
                2160,
                251,
                365,
                385,
                421,
                475,
                561,
                594,
                636,
                677,
                708,
                708,
                529,
                333,
                215,
                173
              ],
              "bin_centers": [
                -3.875,
                -3.625,
                -3.375,
                -3.125,
                -2.875,
                -2.625,
                -2.375,
                -2.125,
                -1.875,
                -1.625,
                -1.375,
                -1.125,
                -0.875,
                -0.625,
                -0.375,
                -0.125
              ],
              "clip_lo": -4.0,
              "clip_hi": 0.0
            }
          }
        },
        "sideways": {
          "n": 128,
          "max_up_natr": {
            "n": 128,
            "mean": 0.844,
            "median": 0.866,
            "p25": 0.684,
            "p75": 1.041,
            "hist": {
              "bin_edges": [
                0.0,
                0.25,
                0.5,
                0.75,
                1.0,
                1.25,
                1.5,
                1.75,
                2.0,
                2.25,
                2.5,
                2.75,
                3.0,
                3.25,
                3.5,
                3.75,
                4.0
              ],
              "counts": [
                8,
                10,
                21,
                48,
                31,
                10,
                0,
                0,
                0,
                0,
                0,
                0,
                0,
                0,
                0,
                0
              ],
              "bin_centers": [
                0.125,
                0.375,
                0.625,
                0.875,
                1.125,
                1.375,
                1.625,
                1.875,
                2.125,
                2.375,
                2.625,
                2.875,
                3.125,
                3.375,
                3.625,
                3.875
              ],
              "clip_lo": 0.0,
              "clip_hi": 4.0
            }
          },
          "max_down_natr": {
            "n": 128,
            "mean": -0.605,
            "median": -0.633,
            "p25": -0.802,
            "p75": -0.46,
            "hist": {
              "bin_edges": [
                -4.0,
                -3.75,
                -3.5,
                -3.25,
                -3.0,
                -2.75,
                -2.5,
                -2.25,
                -2.0,
                -1.75,
                -1.5,
                -1.25,
                -1.0,
                -0.75,
                -0.5,
                -0.25,
                0.0
              ],
              "counts": [
                0,
                0,
                0,
                0,
                0,
                0,
                0,
                0,
                0,
                0,
                0,
                0,
                39,
                50,
                28,
                11
              ],
              "bin_centers": [
                -3.875,
                -3.625,
                -3.375,
                -3.125,
                -2.875,
                -2.625,
                -2.375,
                -2.125,
                -1.875,
                -1.625,
                -1.375,
                -1.125,
                -0.875,
                -0.625,
                -0.375,
                -0.125
              ],
              "clip_lo": -4.0,
              "clip_hi": 0.0
            }
          }
        },
        "forming": {
          "n": 0,
          "max_up_natr": {
            "n": 0,
            "mean": null,
            "median": null,
            "p25": null,
            "p75": null
          },
          "max_down_natr": {
            "n": 0,
            "mean": null,
            "median": null,
            "p25": null,
            "p75": null
          }
        }
      },
      "max_up_natr_hist": {
        "bin_edges": [
          0.0,
          0.25,
          0.5,
          0.75,
          1.0,
          1.25,
          1.5,
          1.75,
          2.0,
          2.25,
          2.5,
          2.75,
          3.0,
          3.25,
          3.5,
          3.75,
          4.0
        ],
        "counts": [
          993,
          1055,
          1019,
          932,
          882,
          867,
          754,
          666,
          583,
          569,
          463,
          468,
          393,
          269,
          304,
          2379
        ],
        "bin_centers": [
          0.125,
          0.375,
          0.625,
          0.875,
          1.125,
          1.375,
          1.625,
          1.875,
          2.125,
          2.375,
          2.625,
          2.875,
          3.125,
          3.375,
          3.625,
          3.875
        ],
        "clip_lo": 0.0,
        "clip_hi": 4.0
      },
      "max_down_natr_hist": {
        "bin_edges": [
          -4.0,
          -3.75,
          -3.5,
          -3.25,
          -3.0,
          -2.75,
          -2.5,
          -2.25,
          -2.0,
          -1.75,
          -1.5,
          -1.25,
          -1.0,
          -0.75,
          -0.5,
          -0.25,
          0.0
        ],
        "counts": [
          2413,
          282,
          401,
          428,
          468,
          532,
          649,
          683,
          738,
          798,
          868,
          877,
          853,
          885,
          836,
          885
        ],
        "bin_centers": [
          -3.875,
          -3.625,
          -3.375,
          -3.125,
          -2.875,
          -2.625,
          -2.375,
          -2.125,
          -1.875,
          -1.625,
          -1.375,
          -1.125,
          -0.875,
          -0.625,
          -0.375,
          -0.125
        ],
        "clip_lo": -4.0,
        "clip_hi": 0.0
      },
      "timestamp_min": 1512489600000,
      "timestamp_max": 1785517200000,
      "timestamp_min_iso": "2017-12-05T16:00:00Z",
      "timestamp_max_iso": "2026-07-31T17:00:00Z"
    },
    {
      "pattern_type": "rising_wedge",
      "pattern_name": "Rising Wedge",
      "bias": "bearish",
      "n": 12338,
      "n_symbols": 656,
      "breakout_success_rate": 26.18,
      "breakdown_success_rate": 72.29,
      "sideways_rate": 1.53,
      "forming_rate": 0.0,
      "both_cleared_rate": 39.41,
      "breakout_success_rate_ci95": [
        25.41,
        26.96
      ],
      "breakdown_success_rate_ci95": [
        71.49,
        73.07
      ],
      "sideways_rate_ci95": [
        1.33,
        1.76
      ],
      "forming_rate_ci95": [
        0.0,
        0.03
      ],
      "both_sides_rate": 39.41,
      "expected_hit_rate": 72.29,
      "expected_hit_rate_ci95": [
        71.49,
        73.07
      ],
      "mean_ret_10c": -0.167,
      "median_ret_10c": -0.659,
      "std_ret_10c": 8.881,
      "win_rate_ret_gt0": 40.55,
      "p25_ret_10c": -3.002,
      "p75_ret_10c": 1.641,
      "mean_mfe": 4.335,
      "mean_mae": -4.473,
      "mfe_mae_ratio": 0.969,
      "max_up_natr": {
        "n": 12338,
        "mean": 2.544,
        "median": 1.361,
        "p25": 0.343,
        "p75": 3.402,
        "hist": {
          "bin_edges": [
            0.0,
            0.25,
            0.5,
            0.75,
            1.0,
            1.25,
            1.5,
            1.75,
            2.0,
            2.25,
            2.5,
            2.75,
            3.0,
            3.25,
            3.5,
            3.75,
            4.0
          ],
          "counts": [
            2533,
            1278,
            841,
            686,
            579,
            544,
            528,
            442,
            418,
            344,
            318,
            291,
            293,
            262,
            227,
            2754
          ],
          "bin_centers": [
            0.125,
            0.375,
            0.625,
            0.875,
            1.125,
            1.375,
            1.625,
            1.875,
            2.125,
            2.375,
            2.625,
            2.875,
            3.125,
            3.375,
            3.625,
            3.875
          ],
          "clip_lo": 0.0,
          "clip_hi": 4.0
        }
      },
      "max_down_natr": {
        "n": 12338,
        "mean": -2.844,
        "median": -2.486,
        "p25": -3.865,
        "p75": -1.391,
        "hist": {
          "bin_edges": [
            -4.0,
            -3.75,
            -3.5,
            -3.25,
            -3.0,
            -2.75,
            -2.5,
            -2.25,
            -2.0,
            -1.75,
            -1.5,
            -1.25,
            -1.0,
            -0.75,
            -0.5,
            -0.25,
            0.0
          ],
          "counts": [
            3282,
            444,
            513,
            603,
            621,
            669,
            757,
            733,
            700,
            660,
            606,
            561,
            476,
            413,
            462,
            838
          ],
          "bin_centers": [
            -3.875,
            -3.625,
            -3.375,
            -3.125,
            -2.875,
            -2.625,
            -2.375,
            -2.125,
            -1.875,
            -1.625,
            -1.375,
            -1.125,
            -0.875,
            -0.625,
            -0.375,
            -0.125
          ],
          "clip_lo": -4.0,
          "clip_hi": 0.0
        }
      },
      "median_max_up_natr": 1.361,
      "median_max_down_natr": -2.486,
      "mean_max_up_natr": 2.544,
      "mean_max_down_natr": -2.844,
      "p25_max_up_natr": 0.343,
      "p75_max_up_natr": 3.402,
      "p25_max_down_natr": -3.865,
      "p75_max_down_natr": -1.391,
      "outcome_natr_moves": {
        "breakout": {
          "n": 3230,
          "max_up_natr": {
            "n": 3230,
            "mean": 5.456,
            "median": 4.107,
            "p25": 2.541,
            "p75": 6.455,
            "hist": {
              "bin_edges": [
                0.0,
                0.25,
                0.5,
                0.75,
                1.0,
                1.25,
                1.5,
                1.75,
                2.0,
                2.25,
                2.5,
                2.75,
                3.0,
                3.25,
                3.5,
                3.75,
                4.0
              ],
              "counts": [
                0,
                0,
                14,
                34,
                74,
                106,
                140,
                127,
                150,
                134,
                128,
                139,
                154,
                131,
                106,
                1793
              ],
              "bin_centers": [
                0.125,
                0.375,
                0.625,
                0.875,
                1.125,
                1.375,
                1.625,
                1.875,
                2.125,
                2.375,
                2.625,
                2.875,
                3.125,
                3.375,
                3.625,
                3.875
              ],
              "clip_lo": 0.0,
              "clip_hi": 4.0
            }
          },
          "max_down_natr": {
            "n": 3230,
            "mean": -1.544,
            "median": -0.818,
            "p25": -2.259,
            "p75": -0.238,
            "hist": {
              "bin_edges": [
                -4.0,
                -3.75,
                -3.5,
                -3.25,
                -3.0,
                -2.75,
                -2.5,
                -2.25,
                -2.0,
                -1.75,
                -1.5,
                -1.25,
                -1.0,
                -0.75,
                -0.5,
                -0.25,
                0.0
              ],
              "counts": [
                366,
                56,
                63,
                85,
                64,
                79,
                105,
                124,
                120,
                125,
                128,
                166,
                196,
                294,
                425,
                834
              ],
              "bin_centers": [
                -3.875,
                -3.625,
                -3.375,
                -3.125,
                -2.875,
                -2.625,
                -2.375,
                -2.125,
                -1.875,
                -1.625,
                -1.375,
                -1.125,
                -0.875,
                -0.625,
                -0.375,
                -0.125
              ],
              "clip_lo": -4.0,
              "clip_hi": 0.0
            }
          }
        },
        "breakdown": {
          "n": 8919,
          "max_up_natr": {
            "n": 8919,
            "mean": 1.508,
            "median": 0.7,
            "p25": 0.209,
            "p75": 1.894,
            "hist": {
              "bin_edges": [
                0.0,
                0.25,
                0.5,
                0.75,
                1.0,
                1.25,
                1.5,
                1.75,
                2.0,
                2.25,
                2.5,
                2.75,
                3.0,
                3.25,
                3.5,
                3.75,
                4.0
              ],
              "counts": [
                2532,
                1273,
                813,
                633,
                480,
                419,
                360,
                295,
                248,
                200,
                178,
                148,
                135,
                130,
                119,
                956
              ],
              "bin_centers": [
                0.125,
                0.375,
                0.625,
                0.875,
                1.125,
                1.375,
                1.625,
                1.875,
                2.125,
                2.375,
                2.625,
                2.875,
                3.125,
                3.375,
                3.625,
                3.875
              ],
              "clip_lo": 0.0,
              "clip_hi": 4.0
            }
          },
          "max_down_natr": {
            "n": 8919,
            "mean": -3.355,
            "median": -2.914,
            "p25": -4.241,
            "p75": -1.986,
            "hist": {
              "bin_edges": [
                -4.0,
                -3.75,
                -3.5,
                -3.25,
                -3.0,
                -2.75,
                -2.5,
                -2.25,
                -2.0,
                -1.75,
                -1.5,
                -1.25,
                -1.0,
                -0.75,
                -0.5,
                -0.25,
                0.0
              ],
              "counts": [
                2916,
                388,
                450,
                518,
                556,
                589,
                650,
                597,
                576,
                528,
                464,
                379,
                244,
                64,
                0,
                0
              ],
              "bin_centers": [
                -3.875,
                -3.625,
                -3.375,
                -3.125,
                -2.875,
                -2.625,
                -2.375,
                -2.125,
                -1.875,
                -1.625,
                -1.375,
                -1.125,
                -0.875,
                -0.625,
                -0.375,
                -0.125
              ],
              "clip_lo": -4.0,
              "clip_hi": 0.0
            }
          }
        },
        "sideways": {
          "n": 189,
          "max_up_natr": {
            "n": 189,
            "mean": 1.686,
            "median": 1.604,
            "p25": 1.089,
            "p75": 2.127,
            "hist": {
              "bin_edges": [
                0.0,
                0.25,
                0.5,
                0.75,
                1.0,
                1.25,
                1.5,
                1.75,
                2.0,
                2.25,
                2.5,
                2.75,
                3.0,
                3.25,
                3.5,
                3.75,
                4.0
              ],
              "counts": [
                1,
                5,
                14,
                19,
                25,
                19,
                28,
                20,
                20,
                10,
                12,
                4,
                4,
                1,
                2,
                5
              ],
              "bin_centers": [
                0.125,
                0.375,
                0.625,
                0.875,
                1.125,
                1.375,
                1.625,
                1.875,
                2.125,
                2.375,
                2.625,
                2.875,
                3.125,
                3.375,
                3.625,
                3.875
              ],
              "clip_lo": 0.0,
              "clip_hi": 4.0
            }
          },
          "max_down_natr": {
            "n": 189,
            "mean": -0.912,
            "median": -0.744,
            "p25": -1.154,
            "p75": -0.537,
            "hist": {
              "bin_edges": [
                -4.0,
                -3.75,
                -3.5,
                -3.25,
                -3.0,
                -2.75,
                -2.5,
                -2.25,
                -2.0,
                -1.75,
                -1.5,
                -1.25,
                -1.0,
                -0.75,
                -0.5,
                -0.25,
                0.0
              ],
              "counts": [
                0,
                0,
                0,
                0,
                1,
                1,
                2,
                12,
                4,
                7,
                14,
                16,
                36,
                55,
                37,
                4
              ],
              "bin_centers": [
                -3.875,
                -3.625,
                -3.375,
                -3.125,
                -2.875,
                -2.625,
                -2.375,
                -2.125,
                -1.875,
                -1.625,
                -1.375,
                -1.125,
                -0.875,
                -0.625,
                -0.375,
                -0.125
              ],
              "clip_lo": -4.0,
              "clip_hi": 0.0
            }
          }
        },
        "forming": {
          "n": 0,
          "max_up_natr": {
            "n": 0,
            "mean": null,
            "median": null,
            "p25": null,
            "p75": null
          },
          "max_down_natr": {
            "n": 0,
            "mean": null,
            "median": null,
            "p25": null,
            "p75": null
          }
        }
      },
      "max_up_natr_hist": {
        "bin_edges": [
          0.0,
          0.25,
          0.5,
          0.75,
          1.0,
          1.25,
          1.5,
          1.75,
          2.0,
          2.25,
          2.5,
          2.75,
          3.0,
          3.25,
          3.5,
          3.75,
          4.0
        ],
        "counts": [
          2533,
          1278,
          841,
          686,
          579,
          544,
          528,
          442,
          418,
          344,
          318,
          291,
          293,
          262,
          227,
          2754
        ],
        "bin_centers": [
          0.125,
          0.375,
          0.625,
          0.875,
          1.125,
          1.375,
          1.625,
          1.875,
          2.125,
          2.375,
          2.625,
          2.875,
          3.125,
          3.375,
          3.625,
          3.875
        ],
        "clip_lo": 0.0,
        "clip_hi": 4.0
      },
      "max_down_natr_hist": {
        "bin_edges": [
          -4.0,
          -3.75,
          -3.5,
          -3.25,
          -3.0,
          -2.75,
          -2.5,
          -2.25,
          -2.0,
          -1.75,
          -1.5,
          -1.25,
          -1.0,
          -0.75,
          -0.5,
          -0.25,
          0.0
        ],
        "counts": [
          3282,
          444,
          513,
          603,
          621,
          669,
          757,
          733,
          700,
          660,
          606,
          561,
          476,
          413,
          462,
          838
        ],
        "bin_centers": [
          -3.875,
          -3.625,
          -3.375,
          -3.125,
          -2.875,
          -2.625,
          -2.375,
          -2.125,
          -1.875,
          -1.625,
          -1.375,
          -1.125,
          -0.875,
          -0.625,
          -0.375,
          -0.125
        ],
        "clip_lo": -4.0,
        "clip_hi": 0.0
      },
      "timestamp_min": 1506988800000,
      "timestamp_max": 1785523500000,
      "timestamp_min_iso": "2017-10-03T00:00:00Z",
      "timestamp_max_iso": "2026-07-31T18:45:00Z"
    },
    {
      "pattern_type": "bearish_flag",
      "pattern_name": "Bearish Flag",
      "bias": "bearish",
      "n": 8881,
      "n_symbols": 665,
      "breakout_success_rate": 15.83,
      "breakdown_success_rate": 80.63,
      "sideways_rate": 3.54,
      "forming_rate": 0.0,
      "both_cleared_rate": 37.71,
      "breakout_success_rate_ci95": [
        15.09,
        16.61
      ],
      "breakdown_success_rate_ci95": [
        79.8,
        81.44
      ],
      "sideways_rate_ci95": [
        3.17,
        3.94
      ],
      "forming_rate_ci95": [
        0.0,
        0.04
      ],
      "both_sides_rate": 37.71,
      "expected_hit_rate": 80.63,
      "expected_hit_rate_ci95": [
        79.8,
        81.44
      ],
      "mean_ret_10c": -0.756,
      "median_ret_10c": -0.507,
      "std_ret_10c": 8.641,
      "win_rate_ret_gt0": 43.38,
      "p25_ret_10c": -3.305,
      "p75_ret_10c": 1.745,
      "mean_mfe": 4.892,
      "mean_mae": -5.883,
      "mfe_mae_ratio": 0.832,
      "max_up_natr": {
        "n": 8881,
        "mean": 2.023,
        "median": 1.358,
        "p25": 0.473,
        "p75": 2.63,
        "hist": {
          "bin_edges": [
            0.0,
            0.25,
            0.5,
            0.75,
            1.0,
            1.25,
            1.5,
            1.75,
            2.0,
            2.25,
            2.5,
            2.75,
            3.0,
            3.25,
            3.5,
            3.75,
            4.0
          ],
          "counts": [
            1362,
            941,
            716,
            649,
            562,
            508,
            515,
            476,
            391,
            363,
            305,
            249,
            220,
            202,
            188,
            1234
          ],
          "bin_centers": [
            0.125,
            0.375,
            0.625,
            0.875,
            1.125,
            1.375,
            1.625,
            1.875,
            2.125,
            2.375,
            2.625,
            2.875,
            3.125,
            3.375,
            3.625,
            3.875
          ],
          "clip_lo": 0.0,
          "clip_hi": 4.0
        }
      },
      "max_down_natr": {
        "n": 8881,
        "mean": -2.705,
        "median": -2.018,
        "p25": -3.4,
        "p75": -1.106,
        "hist": {
          "bin_edges": [
            -4.0,
            -3.75,
            -3.5,
            -3.25,
            -3.0,
            -2.75,
            -2.5,
            -2.25,
            -2.0,
            -1.75,
            -1.5,
            -1.25,
            -1.0,
            -0.75,
            -0.5,
            -0.25,
            0.0
          ],
          "counts": [
            1875,
            228,
            274,
            321,
            380,
            412,
            462,
            517,
            565,
            588,
            683,
            620,
            615,
            564,
            430,
            347
          ],
          "bin_centers": [
            -3.875,
            -3.625,
            -3.375,
            -3.125,
            -2.875,
            -2.625,
            -2.375,
            -2.125,
            -1.875,
            -1.625,
            -1.375,
            -1.125,
            -0.875,
            -0.625,
            -0.375,
            -0.125
          ],
          "clip_lo": -4.0,
          "clip_hi": 0.0
        }
      },
      "median_max_up_natr": 1.358,
      "median_max_down_natr": -2.018,
      "mean_max_up_natr": 2.023,
      "mean_max_down_natr": -2.705,
      "p25_max_up_natr": 0.473,
      "p75_max_up_natr": 2.63,
      "p25_max_down_natr": -3.4,
      "p75_max_down_natr": -1.106,
      "outcome_natr_moves": {
        "breakout": {
          "n": 1406,
          "max_up_natr": {
            "n": 1406,
            "mean": 3.875,
            "median": 2.958,
            "p25": 2.054,
            "p75": 4.396,
            "hist": {
              "bin_edges": [
                0.0,
                0.25,
                0.5,
                0.75,
                1.0,
                1.25,
                1.5,
                1.75,
                2.0,
                2.25,
                2.5,
                2.75,
                3.0,
                3.25,
                3.5,
                3.75,
                4.0
              ],
              "counts": [
                11,
                10,
                16,
                18,
                42,
                65,
                82,
                90,
                100,
                102,
                102,
                85,
                71,
                69,
                57,
                486
              ],
              "bin_centers": [
                0.125,
                0.375,
                0.625,
                0.875,
                1.125,
                1.375,
                1.625,
                1.875,
                2.125,
                2.375,
                2.625,
                2.875,
                3.125,
                3.375,
                3.625,
                3.875
              ],
              "clip_lo": 0.0,
              "clip_hi": 4.0
            }
          },
          "max_down_natr": {
            "n": 1406,
            "mean": -1.332,
            "median": -0.773,
            "p25": -1.47,
            "p75": -0.401,
            "hist": {
              "bin_edges": [
                -4.0,
                -3.75,
                -3.5,
                -3.25,
                -3.0,
                -2.75,
                -2.5,
                -2.25,
                -2.0,
                -1.75,
                -1.5,
                -1.25,
                -1.0,
                -0.75,
                -0.5,
                -0.25,
                0.0
              ],
              "counts": [
                95,
                10,
                12,
                20,
                20,
                27,
                35,
                35,
                40,
                51,
                78,
                129,
                167,
                237,
                230,
                220
              ],
              "bin_centers": [
                -3.875,
                -3.625,
                -3.375,
                -3.125,
                -2.875,
                -2.625,
                -2.375,
                -2.125,
                -1.875,
                -1.625,
                -1.375,
                -1.125,
                -0.875,
                -0.625,
                -0.375,
                -0.125
              ],
              "clip_lo": -4.0,
              "clip_hi": 0.0
            }
          }
        },
        "breakdown": {
          "n": 7161,
          "max_up_natr": {
            "n": 7161,
            "mean": 1.688,
            "median": 1.034,
            "p25": 0.356,
            "p75": 2.225,
            "hist": {
              "bin_edges": [
                0.0,
                0.25,
                0.5,
                0.75,
                1.0,
                1.25,
                1.5,
                1.75,
                2.0,
                2.25,
                2.5,
                2.75,
                3.0,
                3.25,
                3.5,
                3.75,
                4.0
              ],
              "counts": [
                1335,
                912,
                672,
                594,
                485,
                404,
                381,
                349,
                268,
                248,
                200,
                158,
                147,
                131,
                130,
                747
              ],
              "bin_centers": [
                0.125,
                0.375,
                0.625,
                0.875,
                1.125,
                1.375,
                1.625,
                1.875,
                2.125,
                2.375,
                2.625,
                2.875,
                3.125,
                3.375,
                3.625,
                3.875
              ],
              "clip_lo": 0.0,
              "clip_hi": 4.0
            }
          },
          "max_down_natr": {
            "n": 7161,
            "mean": -3.059,
            "median": -2.326,
            "p25": -3.734,
            "p75": -1.451,
            "hist": {
              "bin_edges": [
                -4.0,
                -3.75,
                -3.5,
                -3.25,
                -3.0,
                -2.75,
                -2.5,
                -2.25,
                -2.0,
                -1.75,
                -1.5,
                -1.25,
                -1.0,
                -0.75,
                -0.5,
                -0.25,
                0.0
              ],
              "counts": [
                1780,
                218,
                262,
                301,
                359,
                383,
                425,
                480,
                518,
                523,
                579,
                461,
                398,
                241,
                136,
                97
              ],
              "bin_centers": [
                -3.875,
                -3.625,
                -3.375,
                -3.125,
                -2.875,
                -2.625,
                -2.375,
                -2.125,
                -1.875,
                -1.625,
                -1.375,
                -1.125,
                -0.875,
                -0.625,
                -0.375,
                -0.125
              ],
              "clip_lo": -4.0,
              "clip_hi": 0.0
            }
          }
        },
        "sideways": {
          "n": 314,
          "max_up_natr": {
            "n": 314,
            "mean": 1.369,
            "median": 1.391,
            "p25": 0.848,
            "p75": 1.835,
            "hist": {
              "bin_edges": [
                0.0,
                0.25,
                0.5,
                0.75,
                1.0,
                1.25,
                1.5,
                1.75,
                2.0,
                2.25,
                2.5,
                2.75,
                3.0,
                3.25,
                3.5,
                3.75,
                4.0
              ],
              "counts": [
                16,
                19,
                28,
                37,
                35,
                39,
                52,
                37,
                23,
                13,
                3,
                6,
                2,
                2,
                1,
                1
              ],
              "bin_centers": [
                0.125,
                0.375,
                0.625,
                0.875,
                1.125,
                1.375,
                1.625,
                1.875,
                2.125,
                2.375,
                2.625,
                2.875,
                3.125,
                3.375,
                3.625,
                3.875
              ],
              "clip_lo": 0.0,
              "clip_hi": 4.0
            }
          },
          "max_down_natr": {
            "n": 314,
            "mean": -0.782,
            "median": -0.672,
            "p25": -1.025,
            "p75": -0.44,
            "hist": {
              "bin_edges": [
                -4.0,
                -3.75,
                -3.5,
                -3.25,
                -3.0,
                -2.75,
                -2.5,
                -2.25,
                -2.0,
                -1.75,
                -1.5,
                -1.25,
                -1.0,
                -0.75,
                -0.5,
                -0.25,
                0.0
              ],
              "counts": [
                0,
                0,
                0,
                0,
                1,
                2,
                2,
                2,
                7,
                14,
                26,
                30,
                50,
                86,
                64,
                30
              ],
              "bin_centers": [
                -3.875,
                -3.625,
                -3.375,
                -3.125,
                -2.875,
                -2.625,
                -2.375,
                -2.125,
                -1.875,
                -1.625,
                -1.375,
                -1.125,
                -0.875,
                -0.625,
                -0.375,
                -0.125
              ],
              "clip_lo": -4.0,
              "clip_hi": 0.0
            }
          }
        },
        "forming": {
          "n": 0,
          "max_up_natr": {
            "n": 0,
            "mean": null,
            "median": null,
            "p25": null,
            "p75": null
          },
          "max_down_natr": {
            "n": 0,
            "mean": null,
            "median": null,
            "p25": null,
            "p75": null
          }
        }
      },
      "max_up_natr_hist": {
        "bin_edges": [
          0.0,
          0.25,
          0.5,
          0.75,
          1.0,
          1.25,
          1.5,
          1.75,
          2.0,
          2.25,
          2.5,
          2.75,
          3.0,
          3.25,
          3.5,
          3.75,
          4.0
        ],
        "counts": [
          1362,
          941,
          716,
          649,
          562,
          508,
          515,
          476,
          391,
          363,
          305,
          249,
          220,
          202,
          188,
          1234
        ],
        "bin_centers": [
          0.125,
          0.375,
          0.625,
          0.875,
          1.125,
          1.375,
          1.625,
          1.875,
          2.125,
          2.375,
          2.625,
          2.875,
          3.125,
          3.375,
          3.625,
          3.875
        ],
        "clip_lo": 0.0,
        "clip_hi": 4.0
      },
      "max_down_natr_hist": {
        "bin_edges": [
          -4.0,
          -3.75,
          -3.5,
          -3.25,
          -3.0,
          -2.75,
          -2.5,
          -2.25,
          -2.0,
          -1.75,
          -1.5,
          -1.25,
          -1.0,
          -0.75,
          -0.5,
          -0.25,
          0.0
        ],
        "counts": [
          1875,
          228,
          274,
          321,
          380,
          412,
          462,
          517,
          565,
          588,
          683,
          620,
          615,
          564,
          430,
          347
        ],
        "bin_centers": [
          -3.875,
          -3.625,
          -3.375,
          -3.125,
          -2.875,
          -2.625,
          -2.375,
          -2.125,
          -1.875,
          -1.625,
          -1.375,
          -1.125,
          -0.875,
          -0.625,
          -0.375,
          -0.125
        ],
        "clip_lo": -4.0,
        "clip_hi": 0.0
      },
      "timestamp_min": 1510646400000,
      "timestamp_max": 1785519900000,
      "timestamp_min_iso": "2017-11-14T08:00:00Z",
      "timestamp_max_iso": "2026-07-31T17:45:00Z"
    },
    {
      "pattern_type": "bullish_flag",
      "pattern_name": "Bullish Flag",
      "bias": "bullish",
      "n": 6076,
      "n_symbols": 645,
      "breakout_success_rate": 79.05,
      "breakdown_success_rate": 17.76,
      "sideways_rate": 3.19,
      "forming_rate": 0.0,
      "both_cleared_rate": 44.72,
      "breakout_success_rate_ci95": [
        78.01,
        80.05
      ],
      "breakdown_success_rate_ci95": [
        16.82,
        18.74
      ],
      "sideways_rate_ci95": [
        2.78,
        3.67
      ],
      "forming_rate_ci95": [
        0.0,
        0.06
      ],
      "both_sides_rate": 44.72,
      "expected_hit_rate": 79.05,
      "expected_hit_rate_ci95": [
        78.01,
        80.05
      ],
      "mean_ret_10c": 0.829,
      "median_ret_10c": 0.15,
      "std_ret_10c": 9.616,
      "win_rate_ret_gt0": 51.74,
      "p25_ret_10c": -2.306,
      "p75_ret_10c": 2.744,
      "mean_mfe": 6.69,
      "mean_mae": -4.345,
      "mfe_mae_ratio": 1.54,
      "max_up_natr": {
        "n": 6076,
        "mean": 3.035,
        "median": 2.114,
        "p25": 1.069,
        "p75": 3.837,
        "hist": {
          "bin_edges": [
            0.0,
            0.25,
            0.5,
            0.75,
            1.0,
            1.25,
            1.5,
            1.75,
            2.0,
            2.25,
            2.5,
            2.75,
            3.0,
            3.25,
            3.5,
            3.75,
            4.0
          ],
          "counts": [
            299,
            308,
            367,
            424,
            437,
            376,
            352,
            323,
            344,
            271,
            261,
            207,
            218,
            156,
            157,
            1576
          ],
          "bin_centers": [
            0.125,
            0.375,
            0.625,
            0.875,
            1.125,
            1.375,
            1.625,
            1.875,
            2.125,
            2.375,
            2.625,
            2.875,
            3.125,
            3.375,
            3.625,
            3.875
          ],
          "clip_lo": 0.0,
          "clip_hi": 4.0
        }
      },
      "max_down_natr": {
        "n": 6076,
        "mean": -2.107,
        "median": -1.648,
        "p25": -2.898,
        "p75": -0.711,
        "hist": {
          "bin_edges": [
            -4.0,
            -3.75,
            -3.5,
            -3.25,
            -3.0,
            -2.75,
            -2.5,
            -2.25,
            -2.0,
            -1.75,
            -1.5,
            -1.25,
            -1.0,
            -0.75,
            -0.5,
            -0.25,
            0.0
          ],
          "counts": [
            923,
            158,
            155,
            201,
            234,
            251,
            296,
            325,
            317,
            381,
            419,
            404,
            425,
            442,
            479,
            666
          ],
          "bin_centers": [
            -3.875,
            -3.625,
            -3.375,
            -3.125,
            -2.875,
            -2.625,
            -2.375,
            -2.125,
            -1.875,
            -1.625,
            -1.375,
            -1.125,
            -0.875,
            -0.625,
            -0.375,
            -0.125
          ],
          "clip_lo": -4.0,
          "clip_hi": 0.0
        }
      },
      "median_max_up_natr": 2.114,
      "median_max_down_natr": -1.648,
      "mean_max_up_natr": 3.035,
      "mean_max_down_natr": -2.107,
      "p25_max_up_natr": 1.069,
      "p75_max_up_natr": 3.837,
      "p25_max_down_natr": -2.898,
      "p75_max_down_natr": -0.711,
      "outcome_natr_moves": {
        "breakout": {
          "n": 4803,
          "max_up_natr": {
            "n": 4803,
            "mean": 3.479,
            "median": 2.495,
            "p25": 1.454,
            "p75": 4.293,
            "hist": {
              "bin_edges": [
                0.0,
                0.25,
                0.5,
                0.75,
                1.0,
                1.25,
                1.5,
                1.75,
                2.0,
                2.25,
                2.5,
                2.75,
                3.0,
                3.25,
                3.5,
                3.75,
                4.0
              ],
              "counts": [
                91,
                114,
                169,
                268,
                311,
                309,
                300,
                279,
                315,
                247,
                239,
                193,
                204,
                142,
                141,
                1481
              ],
              "bin_centers": [
                0.125,
                0.375,
                0.625,
                0.875,
                1.125,
                1.375,
                1.625,
                1.875,
                2.125,
                2.375,
                2.625,
                2.875,
                3.125,
                3.375,
                3.625,
                3.875
              ],
              "clip_lo": 0.0,
              "clip_hi": 4.0
            }
          },
          "max_down_natr": {
            "n": 4803,
            "mean": -1.851,
            "median": -1.349,
            "p25": -2.6,
            "p75": -0.546,
            "hist": {
              "bin_edges": [
                -4.0,
                -3.75,
                -3.5,
                -3.25,
                -3.0,
                -2.75,
                -2.5,
                -2.25,
                -2.0,
                -1.75,
                -1.5,
                -1.25,
                -1.0,
                -0.75,
                -0.5,
                -0.25,
                0.0
              ],
              "counts": [
                579,
                113,
                107,
                142,
                160,
                171,
                207,
                222,
                220,
                291,
                339,
                336,
                385,
                418,
                462,
                651
              ],
              "bin_centers": [
                -3.875,
                -3.625,
                -3.375,
                -3.125,
                -2.875,
                -2.625,
                -2.375,
                -2.125,
                -1.875,
                -1.625,
                -1.375,
                -1.125,
                -0.875,
                -0.625,
                -0.375,
                -0.125
              ],
              "clip_lo": -4.0,
              "clip_hi": 0.0
            }
          }
        },
        "breakdown": {
          "n": 1079,
          "max_up_natr": {
            "n": 1079,
            "mean": 1.466,
            "median": 0.836,
            "p25": 0.397,
            "p75": 1.711,
            "hist": {
              "bin_edges": [
                0.0,
                0.25,
                0.5,
                0.75,
                1.0,
                1.25,
                1.5,
                1.75,
                2.0,
                2.25,
                2.5,
                2.75,
                3.0,
                3.25,
                3.5,
                3.75,
                4.0
              ],
              "counts": [
                179,
                154,
                156,
                127,
                104,
                51,
                48,
                41,
                23,
                22,
                22,
                14,
                14,
                14,
                16,
                94
              ],
              "bin_centers": [
                0.125,
                0.375,
                0.625,
                0.875,
                1.125,
                1.375,
                1.625,
                1.875,
                2.125,
                2.375,
                2.625,
                2.875,
                3.125,
                3.375,
                3.625,
                3.875
              ],
              "clip_lo": 0.0,
              "clip_hi": 4.0
            }
          },
          "max_down_natr": {
            "n": 1079,
            "mean": -3.366,
            "median": -2.828,
            "p25": -4.204,
            "p75": -1.968,
            "hist": {
              "bin_edges": [
                -4.0,
                -3.75,
                -3.5,
                -3.25,
                -3.0,
                -2.75,
                -2.5,
                -2.25,
                -2.0,
                -1.75,
                -1.5,
                -1.25,
                -1.0,
                -0.75,
                -0.5,
                -0.25,
                0.0
              ],
              "counts": [
                342,
                44,
                46,
                58,
                66,
                76,
                79,
                90,
                81,
                69,
                48,
                39,
                20,
                11,
                4,
                6
              ],
              "bin_centers": [
                -3.875,
                -3.625,
                -3.375,
                -3.125,
                -2.875,
                -2.625,
                -2.375,
                -2.125,
                -1.875,
                -1.625,
                -1.375,
                -1.125,
                -0.875,
                -0.625,
                -0.375,
                -0.125
              ],
              "clip_lo": -4.0,
              "clip_hi": 0.0
            }
          }
        },
        "sideways": {
          "n": 194,
          "max_up_natr": {
            "n": 194,
            "mean": 0.783,
            "median": 0.69,
            "p25": 0.379,
            "p75": 1.079,
            "hist": {
              "bin_edges": [
                0.0,
                0.25,
                0.5,
                0.75,
                1.0,
                1.25,
                1.5,
                1.75,
                2.0,
                2.25,
                2.5,
                2.75,
                3.0,
                3.25,
                3.5,
                3.75,
                4.0
              ],
              "counts": [
                29,
                40,
                42,
                29,
                22,
                16,
                4,
                3,
                6,
                2,
                0,
                0,
                0,
                0,
                0,
                1
              ],
              "bin_centers": [
                0.125,
                0.375,
                0.625,
                0.875,
                1.125,
                1.375,
                1.625,
                1.875,
                2.125,
                2.375,
                2.625,
                2.875,
                3.125,
                3.375,
                3.625,
                3.875
              ],
              "clip_lo": 0.0,
              "clip_hi": 4.0
            }
          },
          "max_down_natr": {
            "n": 194,
            "mean": -1.441,
            "median": -1.383,
            "p25": -1.845,
            "p75": -0.932,
            "hist": {
              "bin_edges": [
                -4.0,
                -3.75,
                -3.5,
                -3.25,
                -3.0,
                -2.75,
                -2.5,
                -2.25,
                -2.0,
                -1.75,
                -1.5,
                -1.25,
                -1.0,
                -0.75,
                -0.5,
                -0.25,
                0.0
              ],
              "counts": [
                2,
                1,
                2,
                1,
                8,
                4,
                10,
                13,
                16,
                21,
                32,
                29,
                20,
                13,
                13,
                9
              ],
              "bin_centers": [
                -3.875,
                -3.625,
                -3.375,
                -3.125,
                -2.875,
                -2.625,
                -2.375,
                -2.125,
                -1.875,
                -1.625,
                -1.375,
                -1.125,
                -0.875,
                -0.625,
                -0.375,
                -0.125
              ],
              "clip_lo": -4.0,
              "clip_hi": 0.0
            }
          }
        },
        "forming": {
          "n": 0,
          "max_up_natr": {
            "n": 0,
            "mean": null,
            "median": null,
            "p25": null,
            "p75": null
          },
          "max_down_natr": {
            "n": 0,
            "mean": null,
            "median": null,
            "p25": null,
            "p75": null
          }
        }
      },
      "max_up_natr_hist": {
        "bin_edges": [
          0.0,
          0.25,
          0.5,
          0.75,
          1.0,
          1.25,
          1.5,
          1.75,
          2.0,
          2.25,
          2.5,
          2.75,
          3.0,
          3.25,
          3.5,
          3.75,
          4.0
        ],
        "counts": [
          299,
          308,
          367,
          424,
          437,
          376,
          352,
          323,
          344,
          271,
          261,
          207,
          218,
          156,
          157,
          1576
        ],
        "bin_centers": [
          0.125,
          0.375,
          0.625,
          0.875,
          1.125,
          1.375,
          1.625,
          1.875,
          2.125,
          2.375,
          2.625,
          2.875,
          3.125,
          3.375,
          3.625,
          3.875
        ],
        "clip_lo": 0.0,
        "clip_hi": 4.0
      },
      "max_down_natr_hist": {
        "bin_edges": [
          -4.0,
          -3.75,
          -3.5,
          -3.25,
          -3.0,
          -2.75,
          -2.5,
          -2.25,
          -2.0,
          -1.75,
          -1.5,
          -1.25,
          -1.0,
          -0.75,
          -0.5,
          -0.25,
          0.0
        ],
        "counts": [
          923,
          158,
          155,
          201,
          234,
          251,
          296,
          325,
          317,
          381,
          419,
          404,
          425,
          442,
          479,
          666
        ],
        "bin_centers": [
          -3.875,
          -3.625,
          -3.375,
          -3.125,
          -2.875,
          -2.625,
          -2.375,
          -2.125,
          -1.875,
          -1.625,
          -1.375,
          -1.125,
          -0.875,
          -0.625,
          -0.375,
          -0.125
        ],
        "clip_lo": -4.0,
        "clip_hi": 0.0
      },
      "timestamp_min": 1511150400000,
      "timestamp_max": 1785518100000,
      "timestamp_min_iso": "2017-11-20T04:00:00Z",
      "timestamp_max_iso": "2026-07-31T17:15:00Z"
    },
    {
      "pattern_type": "symmetrical_triangle",
      "pattern_name": "Symmetrical Triangle",
      "bias": "neutral",
      "n": 4327,
      "n_symbols": 636,
      "breakout_success_rate": 45.32,
      "breakdown_success_rate": 52.69,
      "sideways_rate": 1.99,
      "forming_rate": 0.0,
      "both_cleared_rate": 31.99,
      "breakout_success_rate_ci95": [
        43.84,
        46.81
      ],
      "breakdown_success_rate_ci95": [
        51.2,
        54.18
      ],
      "sideways_rate_ci95": [
        1.61,
        2.45
      ],
      "forming_rate_ci95": [
        0.0,
        0.09
      ],
      "both_sides_rate": 31.99,
      "expected_hit_rate": null,
      "expected_hit_rate_ci95": null,
      "mean_ret_10c": -0.144,
      "median_ret_10c": -0.238,
      "std_ret_10c": 8.911,
      "win_rate_ret_gt0": 45.74,
      "p25_ret_10c": -2.794,
      "p75_ret_10c": 1.949,
      "mean_mfe": 4.938,
      "mean_mae": -4.604,
      "mfe_mae_ratio": 1.073,
      "max_up_natr": {
        "n": 4327,
        "mean": 2.247,
        "median": 1.486,
        "p25": 0.518,
        "p75": 2.885,
        "hist": {
          "bin_edges": [
            0.0,
            0.25,
            0.5,
            0.75,
            1.0,
            1.25,
            1.5,
            1.75,
            2.0,
            2.25,
            2.5,
            2.75,
            3.0,
            3.25,
            3.5,
            3.75,
            4.0
          ],
          "counts": [
            704,
            357,
            284,
            295,
            272,
            268,
            250,
            218,
            176,
            175,
            160,
            143,
            121,
            98,
            89,
            717
          ],
          "bin_centers": [
            0.125,
            0.375,
            0.625,
            0.875,
            1.125,
            1.375,
            1.625,
            1.875,
            2.125,
            2.375,
            2.625,
            2.875,
            3.125,
            3.375,
            3.625,
            3.875
          ],
          "clip_lo": 0.0,
          "clip_hi": 4.0
        }
      },
      "max_down_natr": {
        "n": 4327,
        "mean": -2.187,
        "median": -1.704,
        "p25": -2.96,
        "p75": -0.751,
        "hist": {
          "bin_edges": [
            -4.0,
            -3.75,
            -3.5,
            -3.25,
            -3.0,
            -2.75,
            -2.5,
            -2.25,
            -2.0,
            -1.75,
            -1.5,
            -1.25,
            -1.0,
            -0.75,
            -0.5,
            -0.25,
            0.0
          ],
          "counts": [
            689,
            103,
            133,
            135,
            149,
            181,
            200,
            267,
            250,
            284,
            270,
            303,
            283,
            261,
            324,
            495
          ],
          "bin_centers": [
            -3.875,
            -3.625,
            -3.375,
            -3.125,
            -2.875,
            -2.625,
            -2.375,
            -2.125,
            -1.875,
            -1.625,
            -1.375,
            -1.125,
            -0.875,
            -0.625,
            -0.375,
            -0.125
          ],
          "clip_lo": -4.0,
          "clip_hi": 0.0
        }
      },
      "median_max_up_natr": 1.486,
      "median_max_down_natr": -1.704,
      "mean_max_up_natr": 2.247,
      "mean_max_down_natr": -2.187,
      "p25_max_up_natr": 0.518,
      "p75_max_up_natr": 2.885,
      "p25_max_down_natr": -2.96,
      "p75_max_down_natr": -0.751,
      "outcome_natr_moves": {
        "breakout": {
          "n": 1961,
          "max_up_natr": {
            "n": 1961,
            "mean": 3.585,
            "median": 2.629,
            "p25": 1.714,
            "p75": 4.159,
            "hist": {
              "bin_edges": [
                0.0,
                0.25,
                0.5,
                0.75,
                1.0,
                1.25,
                1.5,
                1.75,
                2.0,
                2.25,
                2.5,
                2.75,
                3.0,
                3.25,
                3.5,
                3.75,
                4.0
              ],
              "counts": [
                0,
                0,
                19,
                69,
                125,
                139,
                163,
                147,
                127,
                126,
                126,
                101,
                96,
                74,
                61,
                588
              ],
              "bin_centers": [
                0.125,
                0.375,
                0.625,
                0.875,
                1.125,
                1.375,
                1.625,
                1.875,
                2.125,
                2.375,
                2.625,
                2.875,
                3.125,
                3.375,
                3.625,
                3.875
              ],
              "clip_lo": 0.0,
              "clip_hi": 4.0
            }
          },
          "max_down_natr": {
            "n": 1961,
            "mean": -1.184,
            "median": -0.672,
            "p25": -1.539,
            "p75": -0.25,
            "hist": {
              "bin_edges": [
                -4.0,
                -3.75,
                -3.5,
                -3.25,
                -3.0,
                -2.75,
                -2.5,
                -2.25,
                -2.0,
                -1.75,
                -1.5,
                -1.25,
                -1.0,
                -0.75,
                -0.5,
                -0.25,
                0.0
              ],
              "counts": [
                113,
                24,
                30,
                31,
                34,
                31,
                42,
                50,
                69,
                85,
                109,
                135,
                180,
                223,
                315,
                490
              ],
              "bin_centers": [
                -3.875,
                -3.625,
                -3.375,
                -3.125,
                -2.875,
                -2.625,
                -2.375,
                -2.125,
                -1.875,
                -1.625,
                -1.375,
                -1.125,
                -0.875,
                -0.625,
                -0.375,
                -0.125
              ],
              "clip_lo": -4.0,
              "clip_hi": 0.0
            }
          }
        },
        "breakdown": {
          "n": 2280,
          "max_up_natr": {
            "n": 2280,
            "mean": 1.144,
            "median": 0.585,
            "p25": 0.184,
            "p75": 1.406,
            "hist": {
              "bin_edges": [
                0.0,
                0.25,
                0.5,
                0.75,
                1.0,
                1.25,
                1.5,
                1.75,
                2.0,
                2.25,
                2.5,
                2.75,
                3.0,
                3.25,
                3.5,
                3.75,
                4.0
              ],
              "counts": [
                700,
                346,
                243,
                208,
                139,
                120,
                80,
                68,
                47,
                48,
                34,
                42,
                24,
                24,
                28,
                129
              ],
              "bin_centers": [
                0.125,
                0.375,
                0.625,
                0.875,
                1.125,
                1.375,
                1.625,
                1.875,
                2.125,
                2.375,
                2.625,
                2.875,
                3.125,
                3.375,
                3.625,
                3.875
              ],
              "clip_lo": 0.0,
              "clip_hi": 4.0
            }
          },
          "max_down_natr": {
            "n": 2280,
            "mean": -3.098,
            "median": -2.487,
            "p25": -3.767,
            "p75": -1.714,
            "hist": {
              "bin_edges": [
                -4.0,
                -3.75,
                -3.5,
                -3.25,
                -3.0,
                -2.75,
                -2.5,
                -2.25,
                -2.0,
                -1.75,
                -1.5,
                -1.25,
                -1.0,
                -0.75,
                -0.5,
                -0.25,
                0.0
              ],
              "counts": [
                576,
                79,
                103,
                104,
                115,
                150,
                158,
                214,
                178,
                193,
                156,
                154,
                81,
                19,
                0,
                0
              ],
              "bin_centers": [
                -3.875,
                -3.625,
                -3.375,
                -3.125,
                -2.875,
                -2.625,
                -2.375,
                -2.125,
                -1.875,
                -1.625,
                -1.375,
                -1.125,
                -0.875,
                -0.625,
                -0.375,
                -0.125
              ],
              "clip_lo": -4.0,
              "clip_hi": 0.0
            }
          }
        },
        "sideways": {
          "n": 86,
          "max_up_natr": {
            "n": 86,
            "mean": 0.959,
            "median": 0.831,
            "p25": 0.551,
            "p75": 1.318,
            "hist": {
              "bin_edges": [
                0.0,
                0.25,
                0.5,
                0.75,
                1.0,
                1.25,
                1.5,
                1.75,
                2.0,
                2.25,
                2.5,
                2.75,
                3.0,
                3.25,
                3.5,
                3.75,
                4.0
              ],
              "counts": [
                4,
                11,
                22,
                18,
                8,
                9,
                7,
                3,
                2,
                1,
                0,
                0,
                1,
                0,
                0,
                0
              ],
              "bin_centers": [
                0.125,
                0.375,
                0.625,
                0.875,
                1.125,
                1.375,
                1.625,
                1.875,
                2.125,
                2.375,
                2.625,
                2.875,
                3.125,
                3.375,
                3.625,
                3.875
              ],
              "clip_lo": 0.0,
              "clip_hi": 4.0
            }
          },
          "max_down_natr": {
            "n": 86,
            "mean": -0.92,
            "median": -0.848,
            "p25": -1.136,
            "p75": -0.585,
            "hist": {
              "bin_edges": [
                -4.0,
                -3.75,
                -3.5,
                -3.25,
                -3.0,
                -2.75,
                -2.5,
                -2.25,
                -2.0,
                -1.75,
                -1.5,
                -1.25,
                -1.0,
                -0.75,
                -0.5,
                -0.25,
                0.0
              ],
              "counts": [
                0,
                0,
                0,
                0,
                0,
                0,
                0,
                3,
                3,
                6,
                5,
                14,
                22,
                19,
                9,
                5
              ],
              "bin_centers": [
                -3.875,
                -3.625,
                -3.375,
                -3.125,
                -2.875,
                -2.625,
                -2.375,
                -2.125,
                -1.875,
                -1.625,
                -1.375,
                -1.125,
                -0.875,
                -0.625,
                -0.375,
                -0.125
              ],
              "clip_lo": -4.0,
              "clip_hi": 0.0
            }
          }
        },
        "forming": {
          "n": 0,
          "max_up_natr": {
            "n": 0,
            "mean": null,
            "median": null,
            "p25": null,
            "p75": null
          },
          "max_down_natr": {
            "n": 0,
            "mean": null,
            "median": null,
            "p25": null,
            "p75": null
          }
        }
      },
      "max_up_natr_hist": {
        "bin_edges": [
          0.0,
          0.25,
          0.5,
          0.75,
          1.0,
          1.25,
          1.5,
          1.75,
          2.0,
          2.25,
          2.5,
          2.75,
          3.0,
          3.25,
          3.5,
          3.75,
          4.0
        ],
        "counts": [
          704,
          357,
          284,
          295,
          272,
          268,
          250,
          218,
          176,
          175,
          160,
          143,
          121,
          98,
          89,
          717
        ],
        "bin_centers": [
          0.125,
          0.375,
          0.625,
          0.875,
          1.125,
          1.375,
          1.625,
          1.875,
          2.125,
          2.375,
          2.625,
          2.875,
          3.125,
          3.375,
          3.625,
          3.875
        ],
        "clip_lo": 0.0,
        "clip_hi": 4.0
      },
      "max_down_natr_hist": {
        "bin_edges": [
          -4.0,
          -3.75,
          -3.5,
          -3.25,
          -3.0,
          -2.75,
          -2.5,
          -2.25,
          -2.0,
          -1.75,
          -1.5,
          -1.25,
          -1.0,
          -0.75,
          -0.5,
          -0.25,
          0.0
        ],
        "counts": [
          689,
          103,
          133,
          135,
          149,
          181,
          200,
          267,
          250,
          284,
          270,
          303,
          283,
          261,
          324,
          495
        ],
        "bin_centers": [
          -3.875,
          -3.625,
          -3.375,
          -3.125,
          -2.875,
          -2.625,
          -2.375,
          -2.125,
          -1.875,
          -1.625,
          -1.375,
          -1.125,
          -0.875,
          -0.625,
          -0.375,
          -0.125
        ],
        "clip_lo": -4.0,
        "clip_hi": 0.0
      },
      "timestamp_min": 1529611200000,
      "timestamp_max": 1785521700000,
      "timestamp_min_iso": "2018-06-21T20:00:00Z",
      "timestamp_max_iso": "2026-07-31T18:15:00Z"
    },
    {
      "pattern_type": "rsi_regular_bullish_divergence",
      "pattern_name": "RSI Regular Bullish Divergence",
      "bias": "bullish",
      "n": 3990,
      "n_symbols": 643,
      "breakout_success_rate": 46.92,
      "breakdown_success_rate": 52.51,
      "sideways_rate": 0.57,
      "forming_rate": 0.0,
      "both_cleared_rate": 41.83,
      "breakout_success_rate_ci95": [
        45.37,
        48.47
      ],
      "breakdown_success_rate_ci95": [
        50.96,
        54.05
      ],
      "sideways_rate_ci95": [
        0.38,
        0.86
      ],
      "forming_rate_ci95": [
        0.0,
        0.1
      ],
      "both_sides_rate": 41.83,
      "expected_hit_rate": 46.92,
      "expected_hit_rate_ci95": [
        45.37,
        48.47
      ],
      "mean_ret_10c": -0.146,
      "median_ret_10c": 0.0,
      "std_ret_10c": 9.198,
      "win_rate_ret_gt0": 49.75,
      "p25_ret_10c": -2.981,
      "p75_ret_10c": 2.822,
      "mean_mfe": 5.658,
      "mean_mae": -5.928,
      "mfe_mae_ratio": 0.954,
      "max_up_natr": {
        "n": 3990,
        "mean": 2.423,
        "median": 1.743,
        "p25": 0.838,
        "p75": 3.179,
        "hist": {
          "bin_edges": [
            0.0,
            0.25,
            0.5,
            0.75,
            1.0,
            1.25,
            1.5,
            1.75,
            2.0,
            2.25,
            2.5,
            2.75,
            3.0,
            3.25,
            3.5,
            3.75,
            4.0
          ],
          "counts": [
            301,
            299,
            292,
            310,
            295,
            260,
            247,
            236,
            209,
            169,
            136,
            129,
            144,
            127,
            86,
            750
          ],
          "bin_centers": [
            0.125,
            0.375,
            0.625,
            0.875,
            1.125,
            1.375,
            1.625,
            1.875,
            2.125,
            2.375,
            2.625,
            2.875,
            3.125,
            3.375,
            3.625,
            3.875
          ],
          "clip_lo": 0.0,
          "clip_hi": 4.0
        }
      },
      "max_down_natr": {
        "n": 3990,
        "mean": -2.72,
        "median": -1.925,
        "p25": -3.594,
        "p75": -0.839,
        "hist": {
          "bin_edges": [
            -4.0,
            -3.75,
            -3.5,
            -3.25,
            -3.0,
            -2.75,
            -2.5,
            -2.25,
            -2.0,
            -1.75,
            -1.5,
            -1.25,
            -1.0,
            -0.75,
            -0.5,
            -0.25,
            0.0
          ],
          "counts": [
            921,
            116,
            118,
            91,
            156,
            164,
            176,
            197,
            209,
            219,
            228,
            253,
            247,
            281,
            285,
            329
          ],
          "bin_centers": [
            -3.875,
            -3.625,
            -3.375,
            -3.125,
            -2.875,
            -2.625,
            -2.375,
            -2.125,
            -1.875,
            -1.625,
            -1.375,
            -1.125,
            -0.875,
            -0.625,
            -0.375,
            -0.125
          ],
          "clip_lo": -4.0,
          "clip_hi": 0.0
        }
      },
      "median_max_up_natr": 1.743,
      "median_max_down_natr": -1.925,
      "mean_max_up_natr": 2.423,
      "mean_max_down_natr": -2.72,
      "p25_max_up_natr": 0.838,
      "p75_max_up_natr": 3.179,
      "p25_max_down_natr": -3.594,
      "p75_max_down_natr": -0.839,
      "outcome_natr_moves": {
        "breakout": {
          "n": 1872,
          "max_up_natr": {
            "n": 1872,
            "mean": 3.309,
            "median": 2.607,
            "p25": 1.713,
            "p75": 4.041,
            "hist": {
              "bin_edges": [
                0.0,
                0.25,
                0.5,
                0.75,
                1.0,
                1.25,
                1.5,
                1.75,
                2.0,
                2.25,
                2.5,
                2.75,
                3.0,
                3.25,
                3.5,
                3.75,
                4.0
              ],
              "counts": [
                0,
                0,
                0,
                0,
                177,
                154,
                158,
                150,
                141,
                119,
                86,
                92,
                109,
                85,
                65,
                536
              ],
              "bin_centers": [
                0.125,
                0.375,
                0.625,
                0.875,
                1.125,
                1.375,
                1.625,
                1.875,
                2.125,
                2.375,
                2.625,
                2.875,
                3.125,
                3.375,
                3.625,
                3.875
              ],
              "clip_lo": 0.0,
              "clip_hi": 4.0
            }
          },
          "max_down_natr": {
            "n": 1872,
            "mean": -1.574,
            "median": -0.793,
            "p25": -1.93,
            "p75": -0.382,
            "hist": {
              "bin_edges": [
                -4.0,
                -3.75,
                -3.5,
                -3.25,
                -3.0,
                -2.75,
                -2.5,
                -2.25,
                -2.0,
                -1.75,
                -1.5,
                -1.25,
                -1.0,
                -0.75,
                -0.5,
                -0.25,
                0.0
              ],
              "counts": [
                204,
                31,
                25,
                20,
                34,
                45,
                48,
                49,
                58,
                75,
                81,
                83,
                234,
                274,
                284,
                327
              ],
              "bin_centers": [
                -3.875,
                -3.625,
                -3.375,
                -3.125,
                -2.875,
                -2.625,
                -2.375,
                -2.125,
                -1.875,
                -1.625,
                -1.375,
                -1.125,
                -0.875,
                -0.625,
                -0.375,
                -0.125
              ],
              "clip_lo": -4.0,
              "clip_hi": 0.0
            }
          }
        },
        "breakdown": {
          "n": 2095,
          "max_up_natr": {
            "n": 2095,
            "mean": 1.649,
            "median": 0.893,
            "p25": 0.441,
            "p75": 1.982,
            "hist": {
              "bin_edges": [
                0.0,
                0.25,
                0.5,
                0.75,
                1.0,
                1.25,
                1.5,
                1.75,
                2.0,
                2.25,
                2.5,
                2.75,
                3.0,
                3.25,
                3.5,
                3.75,
                4.0
              ],
              "counts": [
                300,
                298,
                287,
                294,
                118,
                106,
                89,
                86,
                68,
                50,
                50,
                37,
                35,
                42,
                21,
                214
              ],
              "bin_centers": [
                0.125,
                0.375,
                0.625,
                0.875,
                1.125,
                1.375,
                1.625,
                1.875,
                2.125,
                2.375,
                2.625,
                2.875,
                3.125,
                3.375,
                3.625,
                3.875
              ],
              "clip_lo": 0.0,
              "clip_hi": 4.0
            }
          },
          "max_down_natr": {
            "n": 2095,
            "mean": -3.765,
            "median": -2.822,
            "p25": -4.446,
            "p75": -1.839,
            "hist": {
              "bin_edges": [
                -4.0,
                -3.75,
                -3.5,
                -3.25,
                -3.0,
                -2.75,
                -2.5,
                -2.25,
                -2.0,
                -1.75,
                -1.5,
                -1.25,
                -1.0,
                -0.75,
                -0.5,
                -0.25,
                0.0
              ],
              "counts": [
                717,
                85,
                93,
                71,
                122,
                119,
                128,
                148,
                151,
                144,
                147,
                170,
                0,
                0,
                0,
                0
              ],
              "bin_centers": [
                -3.875,
                -3.625,
                -3.375,
                -3.125,
                -2.875,
                -2.625,
                -2.375,
                -2.125,
                -1.875,
                -1.625,
                -1.375,
                -1.125,
                -0.875,
                -0.625,
                -0.375,
                -0.125
              ],
              "clip_lo": -4.0,
              "clip_hi": 0.0
            }
          }
        },
        "sideways": {
          "n": 23,
          "max_up_natr": {
            "n": 23,
            "mean": 0.773,
            "median": 0.845,
            "p25": 0.703,
            "p75": 0.922,
            "hist": {
              "bin_edges": [
                0.0,
                0.25,
                0.5,
                0.75,
                1.0,
                1.25,
                1.5,
                1.75,
                2.0,
                2.25,
                2.5,
                2.75,
                3.0,
                3.25,
                3.5,
                3.75,
                4.0
              ],
              "counts": [
                1,
                1,
                5,
                16,
                0,
                0,
                0,
                0,
                0,
                0,
                0,
                0,
                0,
                0,
                0,
                0
              ],
              "bin_centers": [
                0.125,
                0.375,
                0.625,
                0.875,
                1.125,
                1.375,
                1.625,
                1.875,
                2.125,
                2.375,
                2.625,
                2.875,
                3.125,
                3.375,
                3.625,
                3.875
              ],
              "clip_lo": 0.0,
              "clip_hi": 4.0
            }
          },
          "max_down_natr": {
            "n": 23,
            "mean": -0.711,
            "median": -0.786,
            "p25": -0.88,
            "p75": -0.624,
            "hist": {
              "bin_edges": [
                -4.0,
                -3.75,
                -3.5,
                -3.25,
                -3.0,
                -2.75,
                -2.5,
                -2.25,
                -2.0,
                -1.75,
                -1.5,
                -1.25,
                -1.0,
                -0.75,
                -0.5,
                -0.25,
                0.0
              ],
              "counts": [
                0,
                0,
                0,
                0,
                0,
                0,
                0,
                0,
                0,
                0,
                0,
                0,
                13,
                7,
                1,
                2
              ],
              "bin_centers": [
                -3.875,
                -3.625,
                -3.375,
                -3.125,
                -2.875,
                -2.625,
                -2.375,
                -2.125,
                -1.875,
                -1.625,
                -1.375,
                -1.125,
                -0.875,
                -0.625,
                -0.375,
                -0.125
              ],
              "clip_lo": -4.0,
              "clip_hi": 0.0
            }
          }
        },
        "forming": {
          "n": 0,
          "max_up_natr": {
            "n": 0,
            "mean": null,
            "median": null,
            "p25": null,
            "p75": null
          },
          "max_down_natr": {
            "n": 0,
            "mean": null,
            "median": null,
            "p25": null,
            "p75": null
          }
        }
      },
      "max_up_natr_hist": {
        "bin_edges": [
          0.0,
          0.25,
          0.5,
          0.75,
          1.0,
          1.25,
          1.5,
          1.75,
          2.0,
          2.25,
          2.5,
          2.75,
          3.0,
          3.25,
          3.5,
          3.75,
          4.0
        ],
        "counts": [
          301,
          299,
          292,
          310,
          295,
          260,
          247,
          236,
          209,
          169,
          136,
          129,
          144,
          127,
          86,
          750
        ],
        "bin_centers": [
          0.125,
          0.375,
          0.625,
          0.875,
          1.125,
          1.375,
          1.625,
          1.875,
          2.125,
          2.375,
          2.625,
          2.875,
          3.125,
          3.375,
          3.625,
          3.875
        ],
        "clip_lo": 0.0,
        "clip_hi": 4.0
      },
      "max_down_natr_hist": {
        "bin_edges": [
          -4.0,
          -3.75,
          -3.5,
          -3.25,
          -3.0,
          -2.75,
          -2.5,
          -2.25,
          -2.0,
          -1.75,
          -1.5,
          -1.25,
          -1.0,
          -0.75,
          -0.5,
          -0.25,
          0.0
        ],
        "counts": [
          921,
          116,
          118,
          91,
          156,
          164,
          176,
          197,
          209,
          219,
          228,
          253,
          247,
          281,
          285,
          329
        ],
        "bin_centers": [
          -3.875,
          -3.625,
          -3.375,
          -3.125,
          -2.875,
          -2.625,
          -2.375,
          -2.125,
          -1.875,
          -1.625,
          -1.375,
          -1.125,
          -0.875,
          -0.625,
          -0.375,
          -0.125
        ],
        "clip_lo": -4.0,
        "clip_hi": 0.0
      },
      "timestamp_min": 1521302400000,
      "timestamp_max": 1785451500000,
      "timestamp_min_iso": "2018-03-17T16:00:00Z",
      "timestamp_max_iso": "2026-07-30T22:45:00Z"
    },
    {
      "pattern_type": "rsi_regular_bearish_divergence",
      "pattern_name": "RSI Regular Bearish Divergence",
      "bias": "bearish",
      "n": 3301,
      "n_symbols": 618,
      "breakout_success_rate": 48.99,
      "breakdown_success_rate": 50.86,
      "sideways_rate": 0.15,
      "forming_rate": 0.0,
      "both_cleared_rate": 50.14,
      "breakout_success_rate_ci95": [
        47.28,
        50.69
      ],
      "breakdown_success_rate_ci95": [
        49.16,
        52.57
      ],
      "sideways_rate_ci95": [
        0.06,
        0.35
      ],
      "forming_rate_ci95": [
        0.0,
        0.12
      ],
      "both_sides_rate": 50.14,
      "expected_hit_rate": 50.86,
      "expected_hit_rate_ci95": [
        49.16,
        52.57
      ],
      "mean_ret_10c": 0.208,
      "median_ret_10c": -0.552,
      "std_ret_10c": 10.647,
      "win_rate_ret_gt0": 44.17,
      "p25_ret_10c": -3.086,
      "p75_ret_10c": 2.23,
      "mean_mfe": 6.465,
      "mean_mae": -4.985,
      "mfe_mae_ratio": 1.297,
      "max_up_natr": {
        "n": 3301,
        "mean": 2.932,
        "median": 1.903,
        "p25": 0.874,
        "p75": 3.694,
        "hist": {
          "bin_edges": [
            0.0,
            0.25,
            0.5,
            0.75,
            1.0,
            1.25,
            1.5,
            1.75,
            2.0,
            2.25,
            2.5,
            2.75,
            3.0,
            3.25,
            3.5,
            3.75,
            4.0
          ],
          "counts": [
            265,
            222,
            240,
            202,
            203,
            218,
            189,
            175,
            136,
            145,
            123,
            116,
            98,
            73,
            85,
            811
          ],
          "bin_centers": [
            0.125,
            0.375,
            0.625,
            0.875,
            1.125,
            1.375,
            1.625,
            1.875,
            2.125,
            2.375,
            2.625,
            2.875,
            3.125,
            3.375,
            3.625,
            3.875
          ],
          "clip_lo": 0.0,
          "clip_hi": 4.0
        }
      },
      "max_down_natr": {
        "n": 3301,
        "mean": -2.548,
        "median": -2.099,
        "p25": -3.433,
        "p75": -1.124,
        "hist": {
          "bin_edges": [
            -4.0,
            -3.75,
            -3.5,
            -3.25,
            -3.0,
            -2.75,
            -2.5,
            -2.25,
            -2.0,
            -1.75,
            -1.5,
            -1.25,
            -1.0,
            -0.75,
            -0.5,
            -0.25,
            0.0
          ],
          "counts": [
            680,
            113,
            119,
            142,
            144,
            166,
            176,
            187,
            224,
            209,
            195,
            224,
            201,
            183,
            183,
            155
          ],
          "bin_centers": [
            -3.875,
            -3.625,
            -3.375,
            -3.125,
            -2.875,
            -2.625,
            -2.375,
            -2.125,
            -1.875,
            -1.625,
            -1.375,
            -1.125,
            -0.875,
            -0.625,
            -0.375,
            -0.125
          ],
          "clip_lo": -4.0,
          "clip_hi": 0.0
        }
      },
      "median_max_up_natr": 1.903,
      "median_max_down_natr": -2.099,
      "mean_max_up_natr": 2.932,
      "mean_max_down_natr": -2.548,
      "p25_max_up_natr": 0.874,
      "p75_max_up_natr": 3.694,
      "p25_max_down_natr": -3.433,
      "p75_max_down_natr": -1.124,
      "outcome_natr_moves": {
        "breakout": {
          "n": 1617,
          "max_up_natr": {
            "n": 1617,
            "mean": 4.124,
            "median": 2.917,
            "p25": 1.806,
            "p75": 4.932,
            "hist": {
              "bin_edges": [
                0.0,
                0.25,
                0.5,
                0.75,
                1.0,
                1.25,
                1.5,
                1.75,
                2.0,
                2.25,
                2.5,
                2.75,
                3.0,
                3.25,
                3.5,
                3.75,
                4.0
              ],
              "counts": [
                0,
                0,
                0,
                0,
                128,
                139,
                116,
                104,
                94,
                93,
                87,
                69,
                65,
                53,
                57,
                612
              ],
              "bin_centers": [
                0.125,
                0.375,
                0.625,
                0.875,
                1.125,
                1.375,
                1.625,
                1.875,
                2.125,
                2.375,
                2.625,
                2.875,
                3.125,
                3.375,
                3.625,
                3.875
              ],
              "clip_lo": 0.0,
              "clip_hi": 4.0
            }
          },
          "max_down_natr": {
            "n": 1617,
            "mean": -1.827,
            "median": -1.216,
            "p25": -2.535,
            "p75": -0.6,
            "hist": {
              "bin_edges": [
                -4.0,
                -3.75,
                -3.5,
                -3.25,
                -3.0,
                -2.75,
                -2.5,
                -2.25,
                -2.0,
                -1.75,
                -1.5,
                -1.25,
                -1.0,
                -0.75,
                -0.5,
                -0.25,
                0.0
              ],
              "counts": [
                194,
                39,
                42,
                43,
                49,
                51,
                50,
                78,
                84,
                83,
                76,
                111,
                196,
                183,
                183,
                155
              ],
              "bin_centers": [
                -3.875,
                -3.625,
                -3.375,
                -3.125,
                -2.875,
                -2.625,
                -2.375,
                -2.125,
                -1.875,
                -1.625,
                -1.375,
                -1.125,
                -0.875,
                -0.625,
                -0.375,
                -0.125
              ],
              "clip_lo": -4.0,
              "clip_hi": 0.0
            }
          }
        },
        "breakdown": {
          "n": 1679,
          "max_up_natr": {
            "n": 1679,
            "mean": 1.79,
            "median": 0.895,
            "p25": 0.419,
            "p75": 2.222,
            "hist": {
              "bin_edges": [
                0.0,
                0.25,
                0.5,
                0.75,
                1.0,
                1.25,
                1.5,
                1.75,
                2.0,
                2.25,
                2.5,
                2.75,
                3.0,
                3.25,
                3.5,
                3.75,
                4.0
              ],
              "counts": [
                264,
                222,
                239,
                199,
                75,
                79,
                73,
                71,
                42,
                52,
                36,
                47,
                33,
                20,
                28,
                199
              ],
              "bin_centers": [
                0.125,
                0.375,
                0.625,
                0.875,
                1.125,
                1.375,
                1.625,
                1.875,
                2.125,
                2.375,
                2.625,
                2.875,
                3.125,
                3.375,
                3.625,
                3.875
              ],
              "clip_lo": 0.0,
              "clip_hi": 4.0
            }
          },
          "max_down_natr": {
            "n": 1679,
            "mean": -3.248,
            "median": -2.732,
            "p25": -3.962,
            "p75": -1.863,
            "hist": {
              "bin_edges": [
                -4.0,
                -3.75,
                -3.5,
                -3.25,
                -3.0,
                -2.75,
                -2.5,
                -2.25,
                -2.0,
                -1.75,
                -1.5,
                -1.25,
                -1.0,
                -0.75,
                -0.5,
                -0.25,
                0.0
              ],
              "counts": [
                486,
                74,
                77,
                99,
                95,
                115,
                126,
                109,
                140,
                126,
                119,
                113,
                0,
                0,
                0,
                0
              ],
              "bin_centers": [
                -3.875,
                -3.625,
                -3.375,
                -3.125,
                -2.875,
                -2.625,
                -2.375,
                -2.125,
                -1.875,
                -1.625,
                -1.375,
                -1.125,
                -0.875,
                -0.625,
                -0.375,
                -0.125
              ],
              "clip_lo": -4.0,
              "clip_hi": 0.0
            }
          }
        },
        "sideways": {
          "n": 5,
          "max_up_natr": {
            "n": 5,
            "mean": 0.696,
            "median": 0.785,
            "p25": 0.722,
            "p75": 0.859
          },
          "max_down_natr": {
            "n": 5,
            "mean": -0.887,
            "median": -0.865,
            "p25": -0.954,
            "p75": -0.86
          }
        },
        "forming": {
          "n": 0,
          "max_up_natr": {
            "n": 0,
            "mean": null,
            "median": null,
            "p25": null,
            "p75": null
          },
          "max_down_natr": {
            "n": 0,
            "mean": null,
            "median": null,
            "p25": null,
            "p75": null
          }
        }
      },
      "max_up_natr_hist": {
        "bin_edges": [
          0.0,
          0.25,
          0.5,
          0.75,
          1.0,
          1.25,
          1.5,
          1.75,
          2.0,
          2.25,
          2.5,
          2.75,
          3.0,
          3.25,
          3.5,
          3.75,
          4.0
        ],
        "counts": [
          265,
          222,
          240,
          202,
          203,
          218,
          189,
          175,
          136,
          145,
          123,
          116,
          98,
          73,
          85,
          811
        ],
        "bin_centers": [
          0.125,
          0.375,
          0.625,
          0.875,
          1.125,
          1.375,
          1.625,
          1.875,
          2.125,
          2.375,
          2.625,
          2.875,
          3.125,
          3.375,
          3.625,
          3.875
        ],
        "clip_lo": 0.0,
        "clip_hi": 4.0
      },
      "max_down_natr_hist": {
        "bin_edges": [
          -4.0,
          -3.75,
          -3.5,
          -3.25,
          -3.0,
          -2.75,
          -2.5,
          -2.25,
          -2.0,
          -1.75,
          -1.5,
          -1.25,
          -1.0,
          -0.75,
          -0.5,
          -0.25,
          0.0
        ],
        "counts": [
          680,
          113,
          119,
          142,
          144,
          166,
          176,
          187,
          224,
          209,
          195,
          224,
          201,
          183,
          183,
          155
        ],
        "bin_centers": [
          -3.875,
          -3.625,
          -3.375,
          -3.125,
          -2.875,
          -2.625,
          -2.375,
          -2.125,
          -1.875,
          -1.625,
          -1.375,
          -1.125,
          -0.875,
          -0.625,
          -0.375,
          -0.125
        ],
        "clip_lo": -4.0,
        "clip_hi": 0.0
      },
      "timestamp_min": 1511582400000,
      "timestamp_max": 1785451500000,
      "timestamp_min_iso": "2017-11-25T04:00:00Z",
      "timestamp_max_iso": "2026-07-30T22:45:00Z"
    },
    {
      "pattern_type": "symmetrical_broadening_wedge",
      "pattern_name": "Symmetrical Broadening Wedge",
      "bias": "neutral",
      "n": 3036,
      "n_symbols": 604,
      "breakout_success_rate": 27.57,
      "breakdown_success_rate": 31.98,
      "sideways_rate": 40.45,
      "forming_rate": 0.0,
      "both_cleared_rate": 41.07,
      "breakout_success_rate_ci95": [
        26.01,
        29.19
      ],
      "breakdown_success_rate_ci95": [
        30.35,
        33.66
      ],
      "sideways_rate_ci95": [
        38.72,
        42.2
      ],
      "forming_rate_ci95": [
        0.0,
        0.13
      ],
      "both_sides_rate": 41.07,
      "expected_hit_rate": null,
      "expected_hit_rate_ci95": null,
      "mean_ret_10c": 0.522,
      "median_ret_10c": -0.315,
      "std_ret_10c": 14.618,
      "win_rate_ret_gt0": 46.81,
      "p25_ret_10c": -3.409,
      "p75_ret_10c": 2.705,
      "mean_mfe": 7.37,
      "mean_mae": -5.729,
      "mfe_mae_ratio": 1.286,
      "max_up_natr": {
        "n": 3036,
        "mean": 3.42,
        "median": 1.851,
        "p25": 0.638,
        "p75": 3.925,
        "hist": {
          "bin_edges": [
            0.0,
            0.25,
            0.5,
            0.75,
            1.0,
            1.25,
            1.5,
            1.75,
            2.0,
            2.25,
            2.5,
            2.75,
            3.0,
            3.25,
            3.5,
            3.75,
            4.0
          ],
          "counts": [
            404,
            253,
            185,
            162,
            181,
            143,
            144,
            123,
            130,
            101,
            90,
            100,
            89,
            76,
            60,
            795
          ],
          "bin_centers": [
            0.125,
            0.375,
            0.625,
            0.875,
            1.125,
            1.375,
            1.625,
            1.875,
            2.125,
            2.375,
            2.625,
            2.875,
            3.125,
            3.375,
            3.625,
            3.875
          ],
          "clip_lo": 0.0,
          "clip_hi": 4.0
        }
      },
      "max_down_natr": {
        "n": 3036,
        "mean": -2.996,
        "median": -2.141,
        "p25": -3.749,
        "p75": -0.929,
        "hist": {
          "bin_edges": [
            -4.0,
            -3.75,
            -3.5,
            -3.25,
            -3.0,
            -2.75,
            -2.5,
            -2.25,
            -2.0,
            -1.75,
            -1.5,
            -1.25,
            -1.0,
            -0.75,
            -0.5,
            -0.25,
            0.0
          ],
          "counts": [
            759,
            89,
            87,
            128,
            114,
            129,
            151,
            151,
            150,
            140,
            155,
            167,
            184,
            149,
            201,
            282
          ],
          "bin_centers": [
            -3.875,
            -3.625,
            -3.375,
            -3.125,
            -2.875,
            -2.625,
            -2.375,
            -2.125,
            -1.875,
            -1.625,
            -1.375,
            -1.125,
            -0.875,
            -0.625,
            -0.375,
            -0.125
          ],
          "clip_lo": -4.0,
          "clip_hi": 0.0
        }
      },
      "median_max_up_natr": 1.851,
      "median_max_down_natr": -2.141,
      "mean_max_up_natr": 3.42,
      "mean_max_down_natr": -2.996,
      "p25_max_up_natr": 0.638,
      "p75_max_up_natr": 3.925,
      "p25_max_down_natr": -3.749,
      "p75_max_down_natr": -0.929,
      "outcome_natr_moves": {
        "breakout": {
          "n": 837,
          "max_up_natr": {
            "n": 837,
            "mean": 7.856,
            "median": 4.973,
            "p25": 2.975,
            "p75": 8.438,
            "hist": {
              "bin_edges": [
                0.0,
                0.25,
                0.5,
                0.75,
                1.0,
                1.25,
                1.5,
                1.75,
                2.0,
                2.25,
                2.5,
                2.75,
                3.0,
                3.25,
                3.5,
                3.75,
                4.0
              ],
              "counts": [
                0,
                0,
                2,
                7,
                16,
                20,
                29,
                27,
                28,
                23,
                25,
                35,
                34,
                22,
                25,
                544
              ],
              "bin_centers": [
                0.125,
                0.375,
                0.625,
                0.875,
                1.125,
                1.375,
                1.625,
                1.875,
                2.125,
                2.375,
                2.625,
                2.875,
                3.125,
                3.375,
                3.625,
                3.875
              ],
              "clip_lo": 0.0,
              "clip_hi": 4.0
            }
          },
          "max_down_natr": {
            "n": 837,
            "mean": -1.604,
            "median": -0.957,
            "p25": -2.257,
            "p75": -0.278,
            "hist": {
              "bin_edges": [
                -4.0,
                -3.75,
                -3.5,
                -3.25,
                -3.0,
                -2.75,
                -2.5,
                -2.25,
                -2.0,
                -1.75,
                -1.5,
                -1.25,
                -1.0,
                -0.75,
                -0.5,
                -0.25,
                0.0
              ],
              "counts": [
                93,
                16,
                8,
                25,
                19,
                15,
                37,
                33,
                29,
                30,
                45,
                58,
                63,
                61,
                110,
                195
              ],
              "bin_centers": [
                -3.875,
                -3.625,
                -3.375,
                -3.125,
                -2.875,
                -2.625,
                -2.375,
                -2.125,
                -1.875,
                -1.625,
                -1.375,
                -1.125,
                -0.875,
                -0.625,
                -0.375,
                -0.125
              ],
              "clip_lo": -4.0,
              "clip_hi": 0.0
            }
          }
        },
        "breakdown": {
          "n": 971,
          "max_up_natr": {
            "n": 971,
            "mean": 1.364,
            "median": 0.636,
            "p25": 0.196,
            "p75": 1.914,
            "hist": {
              "bin_edges": [
                0.0,
                0.25,
                0.5,
                0.75,
                1.0,
                1.25,
                1.5,
                1.75,
                2.0,
                2.25,
                2.5,
                2.75,
                3.0,
                3.25,
                3.5,
                3.75,
                4.0
              ],
              "counts": [
                278,
                160,
                74,
                57,
                58,
                40,
                32,
                43,
                36,
                27,
                23,
                21,
                18,
                13,
                10,
                81
              ],
              "bin_centers": [
                0.125,
                0.375,
                0.625,
                0.875,
                1.125,
                1.375,
                1.625,
                1.875,
                2.125,
                2.375,
                2.625,
                2.875,
                3.125,
                3.375,
                3.625,
                3.875
              ],
              "clip_lo": 0.0,
              "clip_hi": 4.0
            }
          },
          "max_down_natr": {
            "n": 971,
            "mean": -5.375,
            "median": -3.909,
            "p25": -6.09,
            "p75": -2.51,
            "hist": {
              "bin_edges": [
                -4.0,
                -3.75,
                -3.5,
                -3.25,
                -3.0,
                -2.75,
                -2.5,
                -2.25,
                -2.0,
                -1.75,
                -1.5,
                -1.25,
                -1.0,
                -0.75,
                -0.5,
                -0.25,
                0.0
              ],
              "counts": [
                509,
                44,
                30,
                45,
                51,
                52,
                52,
                52,
                43,
                35,
                29,
                16,
                8,
                5,
                0,
                0
              ],
              "bin_centers": [
                -3.875,
                -3.625,
                -3.375,
                -3.125,
                -2.875,
                -2.625,
                -2.375,
                -2.125,
                -1.875,
                -1.625,
                -1.375,
                -1.125,
                -0.875,
                -0.625,
                -0.375,
                -0.125
              ],
              "clip_lo": -4.0,
              "clip_hi": 0.0
            }
          }
        },
        "sideways": {
          "n": 1228,
          "max_up_natr": {
            "n": 1228,
            "mean": 2.021,
            "median": 1.495,
            "p25": 0.712,
            "p75": 2.81,
            "hist": {
              "bin_edges": [
                0.0,
                0.25,
                0.5,
                0.75,
                1.0,
                1.25,
                1.5,
                1.75,
                2.0,
                2.25,
                2.5,
                2.75,
                3.0,
                3.25,
                3.5,
                3.75,
                4.0
              ],
              "counts": [
                126,
                93,
                109,
                98,
                107,
                83,
                83,
                53,
                66,
                51,
                42,
                44,
                37,
                41,
                25,
                170
              ],
              "bin_centers": [
                0.125,
                0.375,
                0.625,
                0.875,
                1.125,
                1.375,
                1.625,
                1.875,
                2.125,
                2.375,
                2.625,
                2.875,
                3.125,
                3.375,
                3.625,
                3.875
              ],
              "clip_lo": 0.0,
              "clip_hi": 4.0
            }
          },
          "max_down_natr": {
            "n": 1228,
            "mean": -2.063,
            "median": -1.724,
            "p25": -2.929,
            "p75": -0.858,
            "hist": {
              "bin_edges": [
                -4.0,
                -3.75,
                -3.5,
                -3.25,
                -3.0,
                -2.75,
                -2.5,
                -2.25,
                -2.0,
                -1.75,
                -1.5,
                -1.25,
                -1.0,
                -0.75,
                -0.5,
                -0.25,
                0.0
              ],
              "counts": [
                157,
                29,
                49,
                58,
                44,
                62,
                62,
                66,
                78,
                75,
                81,
                93,
                113,
                83,
                91,
                87
              ],
              "bin_centers": [
                -3.875,
                -3.625,
                -3.375,
                -3.125,
                -2.875,
                -2.625,
                -2.375,
                -2.125,
                -1.875,
                -1.625,
                -1.375,
                -1.125,
                -0.875,
                -0.625,
                -0.375,
                -0.125
              ],
              "clip_lo": -4.0,
              "clip_hi": 0.0
            }
          }
        },
        "forming": {
          "n": 0,
          "max_up_natr": {
            "n": 0,
            "mean": null,
            "median": null,
            "p25": null,
            "p75": null
          },
          "max_down_natr": {
            "n": 0,
            "mean": null,
            "median": null,
            "p25": null,
            "p75": null
          }
        }
      },
      "max_up_natr_hist": {
        "bin_edges": [
          0.0,
          0.25,
          0.5,
          0.75,
          1.0,
          1.25,
          1.5,
          1.75,
          2.0,
          2.25,
          2.5,
          2.75,
          3.0,
          3.25,
          3.5,
          3.75,
          4.0
        ],
        "counts": [
          404,
          253,
          185,
          162,
          181,
          143,
          144,
          123,
          130,
          101,
          90,
          100,
          89,
          76,
          60,
          795
        ],
        "bin_centers": [
          0.125,
          0.375,
          0.625,
          0.875,
          1.125,
          1.375,
          1.625,
          1.875,
          2.125,
          2.375,
          2.625,
          2.875,
          3.125,
          3.375,
          3.625,
          3.875
        ],
        "clip_lo": 0.0,
        "clip_hi": 4.0
      },
      "max_down_natr_hist": {
        "bin_edges": [
          -4.0,
          -3.75,
          -3.5,
          -3.25,
          -3.0,
          -2.75,
          -2.5,
          -2.25,
          -2.0,
          -1.75,
          -1.5,
          -1.25,
          -1.0,
          -0.75,
          -0.5,
          -0.25,
          0.0
        ],
        "counts": [
          759,
          89,
          87,
          128,
          114,
          129,
          151,
          151,
          150,
          140,
          155,
          167,
          184,
          149,
          201,
          282
        ],
        "bin_centers": [
          -3.875,
          -3.625,
          -3.375,
          -3.125,
          -2.875,
          -2.625,
          -2.375,
          -2.125,
          -1.875,
          -1.625,
          -1.375,
          -1.125,
          -0.875,
          -0.625,
          -0.375,
          -0.125
        ],
        "clip_lo": -4.0,
        "clip_hi": 0.0
      },
      "timestamp_min": 1533369600000,
      "timestamp_max": 1785515400000,
      "timestamp_min_iso": "2018-08-04T08:00:00Z",
      "timestamp_max_iso": "2026-07-31T16:30:00Z"
    },
    {
      "pattern_type": "channel_descending",
      "pattern_name": "Descending Channel",
      "bias": "bullish",
      "n": 2521,
      "n_symbols": 603,
      "breakout_success_rate": 73.7,
      "breakdown_success_rate": 22.09,
      "sideways_rate": 4.21,
      "forming_rate": 0.0,
      "both_cleared_rate": 38.16,
      "breakout_success_rate_ci95": [
        71.95,
        75.38
      ],
      "breakdown_success_rate_ci95": [
        20.52,
        23.76
      ],
      "sideways_rate_ci95": [
        3.49,
        5.06
      ],
      "forming_rate_ci95": [
        0.0,
        0.15
      ],
      "both_sides_rate": 38.16,
      "expected_hit_rate": 73.7,
      "expected_hit_rate_ci95": [
        71.95,
        75.38
      ],
      "mean_ret_10c": 0.404,
      "median_ret_10c": 0.49,
      "std_ret_10c": 5.064,
      "win_rate_ret_gt0": 57.75,
      "p25_ret_10c": -1.48,
      "p75_ret_10c": 2.487,
      "mean_mfe": 3.887,
      "mean_mae": -3.159,
      "mfe_mae_ratio": 1.23,
      "max_up_natr": {
        "n": 2521,
        "mean": 3.048,
        "median": 2.433,
        "p25": 1.217,
        "p75": 3.914,
        "hist": {
          "bin_edges": [
            0.0,
            0.25,
            0.5,
            0.75,
            1.0,
            1.25,
            1.5,
            1.75,
            2.0,
            2.25,
            2.5,
            2.75,
            3.0,
            3.25,
            3.5,
            3.75,
            4.0
          ],
          "counts": [
            165,
            110,
            100,
            146,
            127,
            134,
            127,
            138,
            137,
            102,
            107,
            150,
            105,
            106,
            82,
            685
          ],
          "bin_centers": [
            0.125,
            0.375,
            0.625,
            0.875,
            1.125,
            1.375,
            1.625,
            1.875,
            2.125,
            2.375,
            2.625,
            2.875,
            3.125,
            3.375,
            3.625,
            3.875
          ],
          "clip_lo": 0.0,
          "clip_hi": 4.0
        }
      },
      "max_down_natr": {
        "n": 2521,
        "mean": -2.391,
        "median": -1.374,
        "p25": -3.153,
        "p75": -0.366,
        "hist": {
          "bin_edges": [
            -4.0,
            -3.75,
            -3.5,
            -3.25,
            -3.0,
            -2.75,
            -2.5,
            -2.25,
            -2.0,
            -1.75,
            -1.5,
            -1.25,
            -1.0,
            -0.75,
            -0.5,
            -0.25,
            0.0
          ],
          "counts": [
            511,
            51,
            44,
            66,
            53,
            81,
            82,
            101,
            97,
            118,
            135,
            131,
            135,
            176,
            244,
            496
          ],
          "bin_centers": [
            -3.875,
            -3.625,
            -3.375,
            -3.125,
            -2.875,
            -2.625,
            -2.375,
            -2.125,
            -1.875,
            -1.625,
            -1.375,
            -1.125,
            -0.875,
            -0.625,
            -0.375,
            -0.125
          ],
          "clip_lo": -4.0,
          "clip_hi": 0.0
        }
      },
      "median_max_up_natr": 2.433,
      "median_max_down_natr": -1.374,
      "mean_max_up_natr": 3.048,
      "mean_max_down_natr": -2.391,
      "p25_max_up_natr": 1.217,
      "p75_max_up_natr": 3.914,
      "p25_max_down_natr": -3.153,
      "p75_max_down_natr": -0.366,
      "outcome_natr_moves": {
        "breakout": {
          "n": 1858,
          "max_up_natr": {
            "n": 1858,
            "mean": 3.615,
            "median": 2.901,
            "p25": 1.835,
            "p75": 4.363,
            "hist": {
              "bin_edges": [
                0.0,
                0.25,
                0.5,
                0.75,
                1.0,
                1.25,
                1.5,
                1.75,
                2.0,
                2.25,
                2.5,
                2.75,
                3.0,
                3.25,
                3.5,
                3.75,
                4.0
              ],
              "counts": [
                0,
                0,
                23,
                85,
                97,
                109,
                112,
                116,
                116,
                90,
                94,
                134,
                93,
                97,
                76,
                616
              ],
              "bin_centers": [
                0.125,
                0.375,
                0.625,
                0.875,
                1.125,
                1.375,
                1.625,
                1.875,
                2.125,
                2.375,
                2.625,
                2.875,
                3.125,
                3.375,
                3.625,
                3.875
              ],
              "clip_lo": 0.0,
              "clip_hi": 4.0
            }
          },
          "max_down_natr": {
            "n": 1858,
            "mean": -1.423,
            "median": -0.779,
            "p25": -1.881,
            "p75": -0.226,
            "hist": {
              "bin_edges": [
                -4.0,
                -3.75,
                -3.5,
                -3.25,
                -3.0,
                -2.75,
                -2.5,
                -2.25,
                -2.0,
                -1.75,
                -1.5,
                -1.25,
                -1.0,
                -0.75,
                -0.5,
                -0.25,
                0.0
              ],
              "counts": [
                160,
                35,
                25,
                36,
                19,
                49,
                51,
                62,
                70,
                90,
                102,
                118,
                128,
                174,
                243,
                496
              ],
              "bin_centers": [
                -3.875,
                -3.625,
                -3.375,
                -3.125,
                -2.875,
                -2.625,
                -2.375,
                -2.125,
                -1.875,
                -1.625,
                -1.375,
                -1.125,
                -0.875,
                -0.625,
                -0.375,
                -0.125
              ],
              "clip_lo": -4.0,
              "clip_hi": 0.0
            }
          }
        },
        "breakdown": {
          "n": 557,
          "max_up_natr": {
            "n": 557,
            "mean": 1.586,
            "median": 0.681,
            "p25": 0.215,
            "p75": 2.217,
            "hist": {
              "bin_edges": [
                0.0,
                0.25,
                0.5,
                0.75,
                1.0,
                1.25,
                1.5,
                1.75,
                2.0,
                2.25,
                2.5,
                2.75,
                3.0,
                3.25,
                3.5,
                3.75,
                4.0
              ],
              "counts": [
                163,
                86,
                42,
                37,
                23,
                19,
                11,
                21,
                19,
                12,
                13,
                16,
                12,
                8,
                6,
                69
              ],
              "bin_centers": [
                0.125,
                0.375,
                0.625,
                0.875,
                1.125,
                1.375,
                1.625,
                1.875,
                2.125,
                2.375,
                2.625,
                2.875,
                3.125,
                3.375,
                3.625,
                3.875
              ],
              "clip_lo": 0.0,
              "clip_hi": 4.0
            }
          },
          "max_down_natr": {
            "n": 557,
            "mean": -5.588,
            "median": -4.402,
            "p25": -7.045,
            "p75": -2.582,
            "hist": {
              "bin_edges": [
                -4.0,
                -3.75,
                -3.5,
                -3.25,
                -3.0,
                -2.75,
                -2.5,
                -2.25,
                -2.0,
                -1.75,
                -1.5,
                -1.25,
                -1.0,
                -0.75,
                -0.5,
                -0.25,
                0.0
              ],
              "counts": [
                338,
                10,
                14,
                19,
                25,
                26,
                21,
                32,
                12,
                22,
                27,
                6,
                4,
                1,
                0,
                0
              ],
              "bin_centers": [
                -3.875,
                -3.625,
                -3.375,
                -3.125,
                -2.875,
                -2.625,
                -2.375,
                -2.125,
                -1.875,
                -1.625,
                -1.375,
                -1.125,
                -0.875,
                -0.625,
                -0.375,
                -0.125
              ],
              "clip_lo": -4.0,
              "clip_hi": 0.0
            }
          }
        },
        "sideways": {
          "n": 106,
          "max_up_natr": {
            "n": 106,
            "mean": 0.791,
            "median": 0.68,
            "p25": 0.505,
            "p75": 0.949,
            "hist": {
              "bin_edges": [
                0.0,
                0.25,
                0.5,
                0.75,
                1.0,
                1.25,
                1.5,
                1.75,
                2.0,
                2.25,
                2.5,
                2.75,
                3.0,
                3.25,
                3.5,
                3.75,
                4.0
              ],
              "counts": [
                2,
                24,
                35,
                24,
                7,
                6,
                4,
                1,
                2,
                0,
                0,
                0,
                0,
                1,
                0,
                0
              ],
              "bin_centers": [
                0.125,
                0.375,
                0.625,
                0.875,
                1.125,
                1.375,
                1.625,
                1.875,
                2.125,
                2.375,
                2.625,
                2.875,
                3.125,
                3.375,
                3.625,
                3.875
              ],
              "clip_lo": 0.0,
              "clip_hi": 4.0
            }
          },
          "max_down_natr": {
            "n": 106,
            "mean": -2.554,
            "median": -2.426,
            "p25": -3.193,
            "p75": -1.809,
            "hist": {
              "bin_edges": [
                -4.0,
                -3.75,
                -3.5,
                -3.25,
                -3.0,
                -2.75,
                -2.5,
                -2.25,
                -2.0,
                -1.75,
                -1.5,
                -1.25,
                -1.0,
                -0.75,
                -0.5,
                -0.25,
                0.0
              ],
              "counts": [
                13,
                6,
                5,
                11,
                9,
                6,
                10,
                7,
                15,
                6,
                6,
                7,
                3,
                1,
                1,
                0
              ],
              "bin_centers": [
                -3.875,
                -3.625,
                -3.375,
                -3.125,
                -2.875,
                -2.625,
                -2.375,
                -2.125,
                -1.875,
                -1.625,
                -1.375,
                -1.125,
                -0.875,
                -0.625,
                -0.375,
                -0.125
              ],
              "clip_lo": -4.0,
              "clip_hi": 0.0
            }
          }
        },
        "forming": {
          "n": 0,
          "max_up_natr": {
            "n": 0,
            "mean": null,
            "median": null,
            "p25": null,
            "p75": null
          },
          "max_down_natr": {
            "n": 0,
            "mean": null,
            "median": null,
            "p25": null,
            "p75": null
          }
        }
      },
      "max_up_natr_hist": {
        "bin_edges": [
          0.0,
          0.25,
          0.5,
          0.75,
          1.0,
          1.25,
          1.5,
          1.75,
          2.0,
          2.25,
          2.5,
          2.75,
          3.0,
          3.25,
          3.5,
          3.75,
          4.0
        ],
        "counts": [
          165,
          110,
          100,
          146,
          127,
          134,
          127,
          138,
          137,
          102,
          107,
          150,
          105,
          106,
          82,
          685
        ],
        "bin_centers": [
          0.125,
          0.375,
          0.625,
          0.875,
          1.125,
          1.375,
          1.625,
          1.875,
          2.125,
          2.375,
          2.625,
          2.875,
          3.125,
          3.375,
          3.625,
          3.875
        ],
        "clip_lo": 0.0,
        "clip_hi": 4.0
      },
      "max_down_natr_hist": {
        "bin_edges": [
          -4.0,
          -3.75,
          -3.5,
          -3.25,
          -3.0,
          -2.75,
          -2.5,
          -2.25,
          -2.0,
          -1.75,
          -1.5,
          -1.25,
          -1.0,
          -0.75,
          -0.5,
          -0.25,
          0.0
        ],
        "counts": [
          511,
          51,
          44,
          66,
          53,
          81,
          82,
          101,
          97,
          118,
          135,
          131,
          135,
          176,
          244,
          496
        ],
        "bin_centers": [
          -3.875,
          -3.625,
          -3.375,
          -3.125,
          -2.875,
          -2.625,
          -2.375,
          -2.125,
          -1.875,
          -1.625,
          -1.375,
          -1.125,
          -0.875,
          -0.625,
          -0.375,
          -0.125
        ],
        "clip_lo": -4.0,
        "clip_hi": 0.0
      },
      "timestamp_min": 1533657600000,
      "timestamp_max": 1785523500000,
      "timestamp_min_iso": "2018-08-07T16:00:00Z",
      "timestamp_max_iso": "2026-07-31T18:45:00Z"
    },
    {
      "pattern_type": "channel_ascending",
      "pattern_name": "Ascending Channel",
      "bias": "bearish",
      "n": 1774,
      "n_symbols": 533,
      "breakout_success_rate": 27.4,
      "breakdown_success_rate": 69.84,
      "sideways_rate": 2.76,
      "forming_rate": 0.0,
      "both_cleared_rate": 44.48,
      "breakout_success_rate_ci95": [
        25.37,
        29.52
      ],
      "breakdown_success_rate_ci95": [
        67.67,
        71.93
      ],
      "sideways_rate_ci95": [
        2.1,
        3.63
      ],
      "forming_rate_ci95": [
        0.0,
        0.22
      ],
      "both_sides_rate": 44.48,
      "expected_hit_rate": 69.84,
      "expected_hit_rate_ci95": [
        67.67,
        71.93
      ],
      "mean_ret_10c": -0.294,
      "median_ret_10c": -0.55,
      "std_ret_10c": 5.228,
      "win_rate_ret_gt0": 41.38,
      "p25_ret_10c": -2.53,
      "p75_ret_10c": 1.541,
      "mean_mfe": 3.503,
      "mean_mae": -3.853,
      "mfe_mae_ratio": 0.909,
      "max_up_natr": {
        "n": 1774,
        "mean": 2.867,
        "median": 1.739,
        "p25": 0.412,
        "p75": 3.898,
        "hist": {
          "bin_edges": [
            0.0,
            0.25,
            0.5,
            0.75,
            1.0,
            1.25,
            1.5,
            1.75,
            2.0,
            2.25,
            2.5,
            2.75,
            3.0,
            3.25,
            3.5,
            3.75,
            4.0
          ],
          "counts": [
            325,
            165,
            105,
            90,
            62,
            77,
            67,
            64,
            80,
            52,
            57,
            45,
            39,
            42,
            45,
            459
          ],
          "bin_centers": [
            0.125,
            0.375,
            0.625,
            0.875,
            1.125,
            1.375,
            1.625,
            1.875,
            2.125,
            2.375,
            2.625,
            2.875,
            3.125,
            3.375,
            3.625,
            3.875
          ],
          "clip_lo": 0.0,
          "clip_hi": 4.0
        }
      },
      "max_down_natr": {
        "n": 1774,
        "mean": -3.122,
        "median": -2.596,
        "p25": -4.081,
        "p75": -1.419,
        "hist": {
          "bin_edges": [
            -4.0,
            -3.75,
            -3.5,
            -3.25,
            -3.0,
            -2.75,
            -2.5,
            -2.25,
            -2.0,
            -1.75,
            -1.5,
            -1.25,
            -1.0,
            -0.75,
            -0.5,
            -0.25,
            0.0
          ],
          "counts": [
            527,
            60,
            58,
            90,
            81,
            106,
            89,
            94,
            98,
            94,
            97,
            74,
            70,
            54,
            71,
            111
          ],
          "bin_centers": [
            -3.875,
            -3.625,
            -3.375,
            -3.125,
            -2.875,
            -2.625,
            -2.375,
            -2.125,
            -1.875,
            -1.625,
            -1.375,
            -1.125,
            -0.875,
            -0.625,
            -0.375,
            -0.125
          ],
          "clip_lo": -4.0,
          "clip_hi": 0.0
        }
      },
      "median_max_up_natr": 1.739,
      "median_max_down_natr": -2.596,
      "mean_max_up_natr": 2.867,
      "mean_max_down_natr": -3.122,
      "p25_max_up_natr": 0.412,
      "p75_max_up_natr": 3.898,
      "p25_max_down_natr": -4.081,
      "p75_max_down_natr": -1.419,
      "outcome_natr_moves": {
        "breakout": {
          "n": 486,
          "max_up_natr": {
            "n": 486,
            "mean": 6.015,
            "median": 4.762,
            "p25": 3.046,
            "p75": 7.209,
            "hist": {
              "bin_edges": [
                0.0,
                0.25,
                0.5,
                0.75,
                1.0,
                1.25,
                1.5,
                1.75,
                2.0,
                2.25,
                2.5,
                2.75,
                3.0,
                3.25,
                3.5,
                3.75,
                4.0
              ],
              "counts": [
                0,
                0,
                2,
                2,
                9,
                12,
                14,
                11,
                22,
                14,
                17,
                16,
                18,
                19,
                24,
                306
              ],
              "bin_centers": [
                0.125,
                0.375,
                0.625,
                0.875,
                1.125,
                1.375,
                1.625,
                1.875,
                2.125,
                2.375,
                2.625,
                2.875,
                3.125,
                3.375,
                3.625,
                3.875
              ],
              "clip_lo": 0.0,
              "clip_hi": 4.0
            }
          },
          "max_down_natr": {
            "n": 486,
            "mean": -1.963,
            "median": -1.182,
            "p25": -2.882,
            "p75": -0.297,
            "hist": {
              "bin_edges": [
                -4.0,
                -3.75,
                -3.5,
                -3.25,
                -3.0,
                -2.75,
                -2.5,
                -2.25,
                -2.0,
                -1.75,
                -1.5,
                -1.25,
                -1.0,
                -0.75,
                -0.5,
                -0.25,
                0.0
              ],
              "counts": [
                74,
                13,
                8,
                16,
                17,
                20,
                10,
                18,
                16,
                14,
                29,
                25,
                24,
                34,
                57,
                111
              ],
              "bin_centers": [
                -3.875,
                -3.625,
                -3.375,
                -3.125,
                -2.875,
                -2.625,
                -2.375,
                -2.125,
                -1.875,
                -1.625,
                -1.375,
                -1.125,
                -0.875,
                -0.625,
                -0.375,
                -0.125
              ],
              "clip_lo": -4.0,
              "clip_hi": 0.0
            }
          }
        },
        "breakdown": {
          "n": 1239,
          "max_up_natr": {
            "n": 1239,
            "mean": 1.665,
            "median": 0.848,
            "p25": 0.231,
            "p75": 2.24,
            "hist": {
              "bin_edges": [
                0.0,
                0.25,
                0.5,
                0.75,
                1.0,
                1.25,
                1.5,
                1.75,
                2.0,
                2.25,
                2.5,
                2.75,
                3.0,
                3.25,
                3.5,
                3.75,
                4.0
              ],
              "counts": [
                325,
                164,
                101,
                83,
                49,
                59,
                48,
                50,
                51,
                33,
                36,
                27,
                21,
                23,
                21,
                148
              ],
              "bin_centers": [
                0.125,
                0.375,
                0.625,
                0.875,
                1.125,
                1.375,
                1.625,
                1.875,
                2.125,
                2.375,
                2.625,
                2.875,
                3.125,
                3.375,
                3.625,
                3.875
              ],
              "clip_lo": 0.0,
              "clip_hi": 4.0
            }
          },
          "max_down_natr": {
            "n": 1239,
            "mean": -3.655,
            "median": -3.008,
            "p25": -4.564,
            "p75": -1.97,
            "hist": {
              "bin_edges": [
                -4.0,
                -3.75,
                -3.5,
                -3.25,
                -3.0,
                -2.75,
                -2.5,
                -2.25,
                -2.0,
                -1.75,
                -1.5,
                -1.25,
                -1.0,
                -0.75,
                -0.5,
                -0.25,
                0.0
              ],
              "counts": [
                453,
                46,
                49,
                72,
                64,
                85,
                77,
                74,
                81,
                78,
                64,
                46,
                36,
                14,
                0,
                0
              ],
              "bin_centers": [
                -3.875,
                -3.625,
                -3.375,
                -3.125,
                -2.875,
                -2.625,
                -2.375,
                -2.125,
                -1.875,
                -1.625,
                -1.375,
                -1.125,
                -0.875,
                -0.625,
                -0.375,
                -0.125
              ],
              "clip_lo": -4.0,
              "clip_hi": 0.0
            }
          }
        },
        "sideways": {
          "n": 49,
          "max_up_natr": {
            "n": 49,
            "mean": 2.063,
            "median": 1.913,
            "p25": 1.273,
            "p75": 2.378,
            "hist": {
              "bin_edges": [
                0.0,
                0.25,
                0.5,
                0.75,
                1.0,
                1.25,
                1.5,
                1.75,
                2.0,
                2.25,
                2.5,
                2.75,
                3.0,
                3.25,
                3.5,
                3.75,
                4.0
              ],
              "counts": [
                0,
                1,
                2,
                5,
                4,
                6,
                5,
                3,
                7,
                5,
                4,
                2,
                0,
                0,
                0,
                5
              ],
              "bin_centers": [
                0.125,
                0.375,
                0.625,
                0.875,
                1.125,
                1.375,
                1.625,
                1.875,
                2.125,
                2.375,
                2.625,
                2.875,
                3.125,
                3.375,
                3.625,
                3.875
              ],
              "clip_lo": 0.0,
              "clip_hi": 4.0
            }
          },
          "max_down_natr": {
            "n": 49,
            "mean": -1.165,
            "median": -0.885,
            "p25": -1.437,
            "p75": -0.484,
            "hist": {
              "bin_edges": [
                -4.0,
                -3.75,
                -3.5,
                -3.25,
                -3.0,
                -2.75,
                -2.5,
                -2.25,
                -2.0,
                -1.75,
                -1.5,
                -1.25,
                -1.0,
                -0.75,
                -0.5,
                -0.25,
                0.0
              ],
              "counts": [
                0,
                1,
                1,
                2,
                0,
                1,
                2,
                2,
                1,
                2,
                4,
                3,
                10,
                6,
                14,
                0
              ],
              "bin_centers": [
                -3.875,
                -3.625,
                -3.375,
                -3.125,
                -2.875,
                -2.625,
                -2.375,
                -2.125,
                -1.875,
                -1.625,
                -1.375,
                -1.125,
                -0.875,
                -0.625,
                -0.375,
                -0.125
              ],
              "clip_lo": -4.0,
              "clip_hi": 0.0
            }
          }
        },
        "forming": {
          "n": 0,
          "max_up_natr": {
            "n": 0,
            "mean": null,
            "median": null,
            "p25": null,
            "p75": null
          },
          "max_down_natr": {
            "n": 0,
            "mean": null,
            "median": null,
            "p25": null,
            "p75": null
          }
        }
      },
      "max_up_natr_hist": {
        "bin_edges": [
          0.0,
          0.25,
          0.5,
          0.75,
          1.0,
          1.25,
          1.5,
          1.75,
          2.0,
          2.25,
          2.5,
          2.75,
          3.0,
          3.25,
          3.5,
          3.75,
          4.0
        ],
        "counts": [
          325,
          165,
          105,
          90,
          62,
          77,
          67,
          64,
          80,
          52,
          57,
          45,
          39,
          42,
          45,
          459
        ],
        "bin_centers": [
          0.125,
          0.375,
          0.625,
          0.875,
          1.125,
          1.375,
          1.625,
          1.875,
          2.125,
          2.375,
          2.625,
          2.875,
          3.125,
          3.375,
          3.625,
          3.875
        ],
        "clip_lo": 0.0,
        "clip_hi": 4.0
      },
      "max_down_natr_hist": {
        "bin_edges": [
          -4.0,
          -3.75,
          -3.5,
          -3.25,
          -3.0,
          -2.75,
          -2.5,
          -2.25,
          -2.0,
          -1.75,
          -1.5,
          -1.25,
          -1.0,
          -0.75,
          -0.5,
          -0.25,
          0.0
        ],
        "counts": [
          527,
          60,
          58,
          90,
          81,
          106,
          89,
          94,
          98,
          94,
          97,
          74,
          70,
          54,
          71,
          111
        ],
        "bin_centers": [
          -3.875,
          -3.625,
          -3.375,
          -3.125,
          -2.875,
          -2.625,
          -2.375,
          -2.125,
          -1.875,
          -1.625,
          -1.375,
          -1.125,
          -0.875,
          -0.625,
          -0.375,
          -0.125
        ],
        "clip_lo": -4.0,
        "clip_hi": 0.0
      },
      "timestamp_min": 1579190400000,
      "timestamp_max": 1785520800000,
      "timestamp_min_iso": "2020-01-16T16:00:00Z",
      "timestamp_max_iso": "2026-07-31T18:00:00Z"
    },
    {
      "pattern_type": "double_bottom",
      "pattern_name": "Double Bottom",
      "bias": "bullish",
      "n": 1646,
      "n_symbols": 553,
      "breakout_success_rate": 71.69,
      "breakdown_success_rate": 14.16,
      "sideways_rate": 14.15,
      "forming_rate": 0.0,
      "both_cleared_rate": 32.75,
      "breakout_success_rate_ci95": [
        69.46,
        73.81
      ],
      "breakdown_success_rate_ci95": [
        12.55,
        15.92
      ],
      "sideways_rate_ci95": [
        12.55,
        15.92
      ],
      "forming_rate_ci95": [
        0.0,
        0.23
      ],
      "both_sides_rate": 32.75,
      "expected_hit_rate": 71.69,
      "expected_hit_rate_ci95": [
        69.46,
        73.81
      ],
      "mean_ret_10c": 3.474,
      "median_ret_10c": 1.562,
      "std_ret_10c": 12.493,
      "win_rate_ret_gt0": 67.62,
      "p25_ret_10c": -0.638,
      "p75_ret_10c": 5.045,
      "mean_mfe": 9.255,
      "mean_mae": -3.615,
      "mfe_mae_ratio": 2.56,
      "max_up_natr": {
        "n": 1646,
        "mean": 3.227,
        "median": 2.393,
        "p25": 1.225,
        "p75": 4.215,
        "hist": {
          "bin_edges": [
            0.0,
            0.25,
            0.5,
            0.75,
            1.0,
            1.25,
            1.5,
            1.75,
            2.0,
            2.25,
            2.5,
            2.75,
            3.0,
            3.25,
            3.5,
            3.75,
            4.0
          ],
          "counts": [
            55,
            86,
            87,
            101,
            92,
            92,
            87,
            83,
            88,
            91,
            89,
            62,
            49,
            47,
            40,
            497
          ],
          "bin_centers": [
            0.125,
            0.375,
            0.625,
            0.875,
            1.125,
            1.375,
            1.625,
            1.875,
            2.125,
            2.375,
            2.625,
            2.875,
            3.125,
            3.375,
            3.625,
            3.875
          ],
          "clip_lo": 0.0,
          "clip_hi": 4.0
        }
      },
      "max_down_natr": {
        "n": 1646,
        "mean": -1.406,
        "median": -0.993,
        "p25": -1.679,
        "p75": -0.46,
        "hist": {
          "bin_edges": [
            -4.0,
            -3.75,
            -3.5,
            -3.25,
            -3.0,
            -2.75,
            -2.5,
            -2.25,
            -2.0,
            -1.75,
            -1.5,
            -1.25,
            -1.0,
            -0.75,
            -0.5,
            -0.25,
            0.0
          ],
          "counts": [
            92,
            11,
            15,
            21,
            31,
            20,
            51,
            63,
            74,
            104,
            162,
            175,
            197,
            194,
            208,
            228
          ],
          "bin_centers": [
            -3.875,
            -3.625,
            -3.375,
            -3.125,
            -2.875,
            -2.625,
            -2.375,
            -2.125,
            -1.875,
            -1.625,
            -1.375,
            -1.125,
            -0.875,
            -0.625,
            -0.375,
            -0.125
          ],
          "clip_lo": -4.0,
          "clip_hi": 0.0
        }
      },
      "median_max_up_natr": 2.393,
      "median_max_down_natr": -0.993,
      "mean_max_up_natr": 3.227,
      "mean_max_down_natr": -1.406,
      "p25_max_up_natr": 1.225,
      "p75_max_up_natr": 4.215,
      "p25_max_down_natr": -1.679,
      "p75_max_down_natr": -0.46,
      "outcome_natr_moves": {
        "breakout": {
          "n": 1180,
          "max_up_natr": {
            "n": 1180,
            "mean": 4.056,
            "median": 3.045,
            "p25": 2.064,
            "p75": 4.808,
            "hist": {
              "bin_edges": [
                0.0,
                0.25,
                0.5,
                0.75,
                1.0,
                1.25,
                1.5,
                1.75,
                2.0,
                2.25,
                2.5,
                2.75,
                3.0,
                3.25,
                3.5,
                3.75,
                4.0
              ],
              "counts": [
                0,
                0,
                5,
                15,
                41,
                65,
                70,
                75,
                76,
                87,
                85,
                60,
                46,
                43,
                39,
                473
              ],
              "bin_centers": [
                0.125,
                0.375,
                0.625,
                0.875,
                1.125,
                1.375,
                1.625,
                1.875,
                2.125,
                2.375,
                2.625,
                2.875,
                3.125,
                3.375,
                3.625,
                3.875
              ],
              "clip_lo": 0.0,
              "clip_hi": 4.0
            }
          },
          "max_down_natr": {
            "n": 1180,
            "mean": -0.975,
            "median": -0.758,
            "p25": -1.267,
            "p75": -0.328,
            "hist": {
              "bin_edges": [
                -4.0,
                -3.75,
                -3.5,
                -3.25,
                -3.0,
                -2.75,
                -2.5,
                -2.25,
                -2.0,
                -1.75,
                -1.5,
                -1.25,
                -1.0,
                -0.75,
                -0.5,
                -0.25,
                0.0
              ],
              "counts": [
                24,
                4,
                4,
                7,
                9,
                4,
                19,
                35,
                39,
                52,
                107,
                126,
                163,
                167,
                196,
                224
              ],
              "bin_centers": [
                -3.875,
                -3.625,
                -3.375,
                -3.125,
                -2.875,
                -2.625,
                -2.375,
                -2.125,
                -1.875,
                -1.625,
                -1.375,
                -1.125,
                -0.875,
                -0.625,
                -0.375,
                -0.125
              ],
              "clip_lo": -4.0,
              "clip_hi": 0.0
            }
          }
        },
        "breakdown": {
          "n": 233,
          "max_up_natr": {
            "n": 233,
            "mean": 1.474,
            "median": 0.815,
            "p25": 0.377,
            "p75": 1.665,
            "hist": {
              "bin_edges": [
                0.0,
                0.25,
                0.5,
                0.75,
                1.0,
                1.25,
                1.5,
                1.75,
                2.0,
                2.25,
                2.5,
                2.75,
                3.0,
                3.25,
                3.5,
                3.75,
                4.0
              ],
              "counts": [
                35,
                39,
                33,
                34,
                20,
                8,
                7,
                7,
                8,
                4,
                4,
                2,
                3,
                4,
                1,
                24
              ],
              "bin_centers": [
                0.125,
                0.375,
                0.625,
                0.875,
                1.125,
                1.375,
                1.625,
                1.875,
                2.125,
                2.375,
                2.625,
                2.875,
                3.125,
                3.375,
                3.625,
                3.875
              ],
              "clip_lo": 0.0,
              "clip_hi": 4.0
            }
          },
          "max_down_natr": {
            "n": 233,
            "mean": -3.529,
            "median": -2.512,
            "p25": -4.007,
            "p75": -1.682,
            "hist": {
              "bin_edges": [
                -4.0,
                -3.75,
                -3.5,
                -3.25,
                -3.0,
                -2.75,
                -2.5,
                -2.25,
                -2.0,
                -1.75,
                -1.5,
                -1.25,
                -1.0,
                -0.75,
                -0.5,
                -0.25,
                0.0
              ],
              "counts": [
                67,
                7,
                8,
                11,
                14,
                10,
                20,
                15,
                17,
                21,
                19,
                9,
                6,
                5,
                2,
                2
              ],
              "bin_centers": [
                -3.875,
                -3.625,
                -3.375,
                -3.125,
                -2.875,
                -2.625,
                -2.375,
                -2.125,
                -1.875,
                -1.625,
                -1.375,
                -1.125,
                -0.875,
                -0.625,
                -0.375,
                -0.125
              ],
              "clip_lo": -4.0,
              "clip_hi": 0.0
            }
          }
        },
        "sideways": {
          "n": 233,
          "max_up_natr": {
            "n": 233,
            "mean": 0.783,
            "median": 0.75,
            "p25": 0.452,
            "p75": 1.05,
            "hist": {
              "bin_edges": [
                0.0,
                0.25,
                0.5,
                0.75,
                1.0,
                1.25,
                1.5,
                1.75,
                2.0,
                2.25,
                2.5,
                2.75,
                3.0,
                3.25,
                3.5,
                3.75,
                4.0
              ],
              "counts": [
                20,
                47,
                49,
                52,
                31,
                19,
                10,
                1,
                4,
                0,
                0,
                0,
                0,
                0,
                0,
                0
              ],
              "bin_centers": [
                0.125,
                0.375,
                0.625,
                0.875,
                1.125,
                1.375,
                1.625,
                1.875,
                2.125,
                2.375,
                2.625,
                2.875,
                3.125,
                3.375,
                3.625,
                3.875
              ],
              "clip_lo": 0.0,
              "clip_hi": 4.0
            }
          },
          "max_down_natr": {
            "n": 233,
            "mean": -1.461,
            "median": -1.374,
            "p25": -1.846,
            "p75": -0.972,
            "hist": {
              "bin_edges": [
                -4.0,
                -3.75,
                -3.5,
                -3.25,
                -3.0,
                -2.75,
                -2.5,
                -2.25,
                -2.0,
                -1.75,
                -1.5,
                -1.25,
                -1.0,
                -0.75,
                -0.5,
                -0.25,
                0.0
              ],
              "counts": [
                1,
                0,
                3,
                3,
                8,
                6,
                12,
                13,
                18,
                31,
                36,
                40,
                28,
                22,
                10,
                2
              ],
              "bin_centers": [
                -3.875,
                -3.625,
                -3.375,
                -3.125,
                -2.875,
                -2.625,
                -2.375,
                -2.125,
                -1.875,
                -1.625,
                -1.375,
                -1.125,
                -0.875,
                -0.625,
                -0.375,
                -0.125
              ],
              "clip_lo": -4.0,
              "clip_hi": 0.0
            }
          }
        },
        "forming": {
          "n": 0,
          "max_up_natr": {
            "n": 0,
            "mean": null,
            "median": null,
            "p25": null,
            "p75": null
          },
          "max_down_natr": {
            "n": 0,
            "mean": null,
            "median": null,
            "p25": null,
            "p75": null
          }
        }
      },
      "max_up_natr_hist": {
        "bin_edges": [
          0.0,
          0.25,
          0.5,
          0.75,
          1.0,
          1.25,
          1.5,
          1.75,
          2.0,
          2.25,
          2.5,
          2.75,
          3.0,
          3.25,
          3.5,
          3.75,
          4.0
        ],
        "counts": [
          55,
          86,
          87,
          101,
          92,
          92,
          87,
          83,
          88,
          91,
          89,
          62,
          49,
          47,
          40,
          497
        ],
        "bin_centers": [
          0.125,
          0.375,
          0.625,
          0.875,
          1.125,
          1.375,
          1.625,
          1.875,
          2.125,
          2.375,
          2.625,
          2.875,
          3.125,
          3.375,
          3.625,
          3.875
        ],
        "clip_lo": 0.0,
        "clip_hi": 4.0
      },
      "max_down_natr_hist": {
        "bin_edges": [
          -4.0,
          -3.75,
          -3.5,
          -3.25,
          -3.0,
          -2.75,
          -2.5,
          -2.25,
          -2.0,
          -1.75,
          -1.5,
          -1.25,
          -1.0,
          -0.75,
          -0.5,
          -0.25,
          0.0
        ],
        "counts": [
          92,
          11,
          15,
          21,
          31,
          20,
          51,
          63,
          74,
          104,
          162,
          175,
          197,
          194,
          208,
          228
        ],
        "bin_centers": [
          -3.875,
          -3.625,
          -3.375,
          -3.125,
          -2.875,
          -2.625,
          -2.375,
          -2.125,
          -1.875,
          -1.625,
          -1.375,
          -1.125,
          -0.875,
          -0.625,
          -0.375,
          -0.125
        ],
        "clip_lo": -4.0,
        "clip_hi": 0.0
      },
      "timestamp_min": 1523246400000,
      "timestamp_max": 1785456000000,
      "timestamp_min_iso": "2018-04-09T04:00:00Z",
      "timestamp_max_iso": "2026-07-31T00:00:00Z"
    },
    {
      "pattern_type": "bearish_pennant",
      "pattern_name": "Bearish Pennant",
      "bias": "bearish",
      "n": 1569,
      "n_symbols": 562,
      "breakout_success_rate": 29.0,
      "breakdown_success_rate": 68.39,
      "sideways_rate": 2.61,
      "forming_rate": 0.0,
      "both_cleared_rate": 36.46,
      "breakout_success_rate_ci95": [
        26.81,
        31.29
      ],
      "breakdown_success_rate_ci95": [
        66.04,
        70.64
      ],
      "sideways_rate_ci95": [
        1.93,
        3.53
      ],
      "forming_rate_ci95": [
        0.0,
        0.24
      ],
      "both_sides_rate": 36.46,
      "expected_hit_rate": 68.39,
      "expected_hit_rate_ci95": [
        66.04,
        70.64
      ],
      "mean_ret_10c": -0.169,
      "median_ret_10c": -0.322,
      "std_ret_10c": 15.102,
      "win_rate_ret_gt0": 45.63,
      "p25_ret_10c": -3.173,
      "p75_ret_10c": 2.059,
      "mean_mfe": 5.889,
      "mean_mae": -6.176,
      "mfe_mae_ratio": 0.954,
      "max_up_natr": {
        "n": 1569,
        "mean": 2.147,
        "median": 1.48,
        "p25": 0.55,
        "p75": 2.839,
        "hist": {
          "bin_edges": [
            0.0,
            0.25,
            0.5,
            0.75,
            1.0,
            1.25,
            1.5,
            1.75,
            2.0,
            2.25,
            2.5,
            2.75,
            3.0,
            3.25,
            3.5,
            3.75,
            4.0
          ],
          "counts": [
            189,
            178,
            115,
            112,
            95,
            100,
            93,
            92,
            71,
            65,
            53,
            51,
            48,
            37,
            35,
            235
          ],
          "bin_centers": [
            0.125,
            0.375,
            0.625,
            0.875,
            1.125,
            1.375,
            1.625,
            1.875,
            2.125,
            2.375,
            2.625,
            2.875,
            3.125,
            3.375,
            3.625,
            3.875
          ],
          "clip_lo": 0.0,
          "clip_hi": 4.0
        }
      },
      "max_down_natr": {
        "n": 1569,
        "mean": -2.515,
        "median": -1.834,
        "p25": -3.153,
        "p75": -0.929,
        "hist": {
          "bin_edges": [
            -4.0,
            -3.75,
            -3.5,
            -3.25,
            -3.0,
            -2.75,
            -2.5,
            -2.25,
            -2.0,
            -1.75,
            -1.5,
            -1.25,
            -1.0,
            -0.75,
            -0.5,
            -0.25,
            0.0
          ],
          "counts": [
            300,
            33,
            41,
            46,
            55,
            69,
            87,
            95,
            90,
            105,
            113,
            105,
            122,
            105,
            100,
            103
          ],
          "bin_centers": [
            -3.875,
            -3.625,
            -3.375,
            -3.125,
            -2.875,
            -2.625,
            -2.375,
            -2.125,
            -1.875,
            -1.625,
            -1.375,
            -1.125,
            -0.875,
            -0.625,
            -0.375,
            -0.125
          ],
          "clip_lo": -4.0,
          "clip_hi": 0.0
        }
      },
      "median_max_up_natr": 1.48,
      "median_max_down_natr": -1.834,
      "mean_max_up_natr": 2.147,
      "mean_max_down_natr": -2.515,
      "p25_max_up_natr": 0.55,
      "p75_max_up_natr": 2.839,
      "p25_max_down_natr": -3.153,
      "p75_max_down_natr": -0.929,
      "outcome_natr_moves": {
        "breakout": {
          "n": 455,
          "max_up_natr": {
            "n": 455,
            "mean": 3.415,
            "median": 2.726,
            "p25": 1.866,
            "p75": 3.894,
            "hist": {
              "bin_edges": [
                0.0,
                0.25,
                0.5,
                0.75,
                1.0,
                1.25,
                1.5,
                1.75,
                2.0,
                2.25,
                2.5,
                2.75,
                3.0,
                3.25,
                3.5,
                3.75,
                4.0
              ],
              "counts": [
                0,
                0,
                1,
                9,
                14,
                28,
                42,
                40,
                39,
                28,
                27,
                27,
                26,
                21,
                25,
                128
              ],
              "bin_centers": [
                0.125,
                0.375,
                0.625,
                0.875,
                1.125,
                1.375,
                1.625,
                1.875,
                2.125,
                2.375,
                2.625,
                2.875,
                3.125,
                3.375,
                3.625,
                3.875
              ],
              "clip_lo": 0.0,
              "clip_hi": 4.0
            }
          },
          "max_down_natr": {
            "n": 455,
            "mean": -1.246,
            "median": -0.688,
            "p25": -1.423,
            "p75": -0.308,
            "hist": {
              "bin_edges": [
                -4.0,
                -3.75,
                -3.5,
                -3.25,
                -3.0,
                -2.75,
                -2.5,
                -2.25,
                -2.0,
                -1.75,
                -1.5,
                -1.25,
                -1.0,
                -0.75,
                -0.5,
                -0.25,
                0.0
              ],
              "counts": [
                34,
                2,
                8,
                2,
                5,
                5,
                7,
                10,
                13,
                19,
                24,
                30,
                55,
                64,
                80,
                97
              ],
              "bin_centers": [
                -3.875,
                -3.625,
                -3.375,
                -3.125,
                -2.875,
                -2.625,
                -2.375,
                -2.125,
                -1.875,
                -1.625,
                -1.375,
                -1.125,
                -0.875,
                -0.625,
                -0.375,
                -0.125
              ],
              "clip_lo": -4.0,
              "clip_hi": 0.0
            }
          }
        },
        "breakdown": {
          "n": 1073,
          "max_up_natr": {
            "n": 1073,
            "mean": 1.652,
            "median": 0.916,
            "p25": 0.362,
            "p75": 2.017,
            "hist": {
              "bin_edges": [
                0.0,
                0.25,
                0.5,
                0.75,
                1.0,
                1.25,
                1.5,
                1.75,
                2.0,
                2.25,
                2.5,
                2.75,
                3.0,
                3.25,
                3.5,
                3.75,
                4.0
              ],
              "counts": [
                188,
                171,
                110,
                96,
                73,
                65,
                49,
                47,
                32,
                37,
                26,
                24,
                22,
                16,
                10,
                107
              ],
              "bin_centers": [
                0.125,
                0.375,
                0.625,
                0.875,
                1.125,
                1.375,
                1.625,
                1.875,
                2.125,
                2.375,
                2.625,
                2.875,
                3.125,
                3.375,
                3.625,
                3.875
              ],
              "clip_lo": 0.0,
              "clip_hi": 4.0
            }
          },
          "max_down_natr": {
            "n": 1073,
            "mean": -3.123,
            "median": -2.361,
            "p25": -3.728,
            "p75": -1.534,
            "hist": {
              "bin_edges": [
                -4.0,
                -3.75,
                -3.5,
                -3.25,
                -3.0,
                -2.75,
                -2.5,
                -2.25,
                -2.0,
                -1.75,
                -1.5,
                -1.25,
                -1.0,
                -0.75,
                -0.5,
                -0.25,
                0.0
              ],
              "counts": [
                266,
                31,
                33,
                44,
                50,
                64,
                80,
                85,
                77,
                85,
                87,
                72,
                61,
                27,
                7,
                4
              ],
              "bin_centers": [
                -3.875,
                -3.625,
                -3.375,
                -3.125,
                -2.875,
                -2.625,
                -2.375,
                -2.125,
                -1.875,
                -1.625,
                -1.375,
                -1.125,
                -0.875,
                -0.625,
                -0.375,
                -0.125
              ],
              "clip_lo": -4.0,
              "clip_hi": 0.0
            }
          }
        },
        "sideways": {
          "n": 41,
          "max_up_natr": {
            "n": 41,
            "mean": 1.033,
            "median": 1.031,
            "p25": 0.699,
            "p75": 1.34,
            "hist": {
              "bin_edges": [
                0.0,
                0.25,
                0.5,
                0.75,
                1.0,
                1.25,
                1.5,
                1.75,
                2.0,
                2.25,
                2.5,
                2.75,
                3.0,
                3.25,
                3.5,
                3.75,
                4.0
              ],
              "counts": [
                1,
                7,
                4,
                7,
                8,
                7,
                2,
                5,
                0,
                0,
                0,
                0,
                0,
                0,
                0,
                0
              ],
              "bin_centers": [
                0.125,
                0.375,
                0.625,
                0.875,
                1.125,
                1.375,
                1.625,
                1.875,
                2.125,
                2.375,
                2.625,
                2.875,
                3.125,
                3.375,
                3.625,
                3.875
              ],
              "clip_lo": 0.0,
              "clip_hi": 4.0
            }
          },
          "max_down_natr": {
            "n": 41,
            "mean": -0.679,
            "median": -0.651,
            "p25": -0.795,
            "p75": -0.427,
            "hist": {
              "bin_edges": [
                -4.0,
                -3.75,
                -3.5,
                -3.25,
                -3.0,
                -2.75,
                -2.5,
                -2.25,
                -2.0,
                -1.75,
                -1.5,
                -1.25,
                -1.0,
                -0.75,
                -0.5,
                -0.25,
                0.0
              ],
              "counts": [
                0,
                0,
                0,
                0,
                0,
                0,
                0,
                0,
                0,
                1,
                2,
                3,
                6,
                14,
                13,
                2
              ],
              "bin_centers": [
                -3.875,
                -3.625,
                -3.375,
                -3.125,
                -2.875,
                -2.625,
                -2.375,
                -2.125,
                -1.875,
                -1.625,
                -1.375,
                -1.125,
                -0.875,
                -0.625,
                -0.375,
                -0.125
              ],
              "clip_lo": -4.0,
              "clip_hi": 0.0
            }
          }
        },
        "forming": {
          "n": 0,
          "max_up_natr": {
            "n": 0,
            "mean": null,
            "median": null,
            "p25": null,
            "p75": null
          },
          "max_down_natr": {
            "n": 0,
            "mean": null,
            "median": null,
            "p25": null,
            "p75": null
          }
        }
      },
      "max_up_natr_hist": {
        "bin_edges": [
          0.0,
          0.25,
          0.5,
          0.75,
          1.0,
          1.25,
          1.5,
          1.75,
          2.0,
          2.25,
          2.5,
          2.75,
          3.0,
          3.25,
          3.5,
          3.75,
          4.0
        ],
        "counts": [
          189,
          178,
          115,
          112,
          95,
          100,
          93,
          92,
          71,
          65,
          53,
          51,
          48,
          37,
          35,
          235
        ],
        "bin_centers": [
          0.125,
          0.375,
          0.625,
          0.875,
          1.125,
          1.375,
          1.625,
          1.875,
          2.125,
          2.375,
          2.625,
          2.875,
          3.125,
          3.375,
          3.625,
          3.875
        ],
        "clip_lo": 0.0,
        "clip_hi": 4.0
      },
      "max_down_natr_hist": {
        "bin_edges": [
          -4.0,
          -3.75,
          -3.5,
          -3.25,
          -3.0,
          -2.75,
          -2.5,
          -2.25,
          -2.0,
          -1.75,
          -1.5,
          -1.25,
          -1.0,
          -0.75,
          -0.5,
          -0.25,
          0.0
        ],
        "counts": [
          300,
          33,
          41,
          46,
          55,
          69,
          87,
          95,
          90,
          105,
          113,
          105,
          122,
          105,
          100,
          103
        ],
        "bin_centers": [
          -3.875,
          -3.625,
          -3.375,
          -3.125,
          -2.875,
          -2.625,
          -2.375,
          -2.125,
          -1.875,
          -1.625,
          -1.375,
          -1.125,
          -0.875,
          -0.625,
          -0.375,
          -0.125
        ],
        "clip_lo": -4.0,
        "clip_hi": 0.0
      },
      "timestamp_min": 1523160000000,
      "timestamp_max": 1785492000000,
      "timestamp_min_iso": "2018-04-08T04:00:00Z",
      "timestamp_max_iso": "2026-07-31T10:00:00Z"
    },
    {
      "pattern_type": "bullish_pennant",
      "pattern_name": "Bullish Pennant",
      "bias": "bullish",
      "n": 1267,
      "n_symbols": 502,
      "breakout_success_rate": 67.4,
      "breakdown_success_rate": 30.94,
      "sideways_rate": 1.66,
      "forming_rate": 0.0,
      "both_cleared_rate": 43.57,
      "breakout_success_rate_ci95": [
        64.77,
        69.93
      ],
      "breakdown_success_rate_ci95": [
        28.45,
        33.54
      ],
      "sideways_rate_ci95": [
        1.09,
        2.52
      ],
      "forming_rate_ci95": [
        0.0,
        0.3
      ],
      "both_sides_rate": 43.57,
      "expected_hit_rate": 67.4,
      "expected_hit_rate_ci95": [
        64.77,
        69.93
      ],
      "mean_ret_10c": 0.201,
      "median_ret_10c": -0.25,
      "std_ret_10c": 8.824,
      "win_rate_ret_gt0": 46.33,
      "p25_ret_10c": -2.861,
      "p75_ret_10c": 2.4,
      "mean_mfe": 6.621,
      "mean_mae": -5.021,
      "mfe_mae_ratio": 1.319,
      "max_up_natr": {
        "n": 1267,
        "mean": 3.013,
        "median": 1.944,
        "p25": 0.896,
        "p75": 3.801,
        "hist": {
          "bin_edges": [
            0.0,
            0.25,
            0.5,
            0.75,
            1.0,
            1.25,
            1.5,
            1.75,
            2.0,
            2.25,
            2.5,
            2.75,
            3.0,
            3.25,
            3.5,
            3.75,
            4.0
          ],
          "counts": [
            96,
            88,
            81,
            89,
            77,
            82,
            79,
            54,
            51,
            64,
            43,
            41,
            31,
            37,
            29,
            325
          ],
          "bin_centers": [
            0.125,
            0.375,
            0.625,
            0.875,
            1.125,
            1.375,
            1.625,
            1.875,
            2.125,
            2.375,
            2.625,
            2.875,
            3.125,
            3.375,
            3.625,
            3.875
          ],
          "clip_lo": 0.0,
          "clip_hi": 4.0
        }
      },
      "max_down_natr": {
        "n": 1267,
        "mean": -2.346,
        "median": -1.846,
        "p25": -3.136,
        "p75": -0.853,
        "hist": {
          "bin_edges": [
            -4.0,
            -3.75,
            -3.5,
            -3.25,
            -3.0,
            -2.75,
            -2.5,
            -2.25,
            -2.0,
            -1.75,
            -1.5,
            -1.25,
            -1.0,
            -0.75,
            -0.5,
            -0.25,
            0.0
          ],
          "counts": [
            216,
            40,
            43,
            34,
            52,
            58,
            79,
            69,
            79,
            63,
            93,
            74,
            87,
            73,
            99,
            108
          ],
          "bin_centers": [
            -3.875,
            -3.625,
            -3.375,
            -3.125,
            -2.875,
            -2.625,
            -2.375,
            -2.125,
            -1.875,
            -1.625,
            -1.375,
            -1.125,
            -0.875,
            -0.625,
            -0.375,
            -0.125
          ],
          "clip_lo": -4.0,
          "clip_hi": 0.0
        }
      },
      "median_max_up_natr": 1.944,
      "median_max_down_natr": -1.846,
      "mean_max_up_natr": 3.013,
      "mean_max_down_natr": -2.346,
      "p25_max_up_natr": 0.896,
      "p75_max_up_natr": 3.801,
      "p25_max_down_natr": -3.136,
      "p75_max_down_natr": -0.853,
      "outcome_natr_moves": {
        "breakout": {
          "n": 854,
          "max_up_natr": {
            "n": 854,
            "mean": 3.671,
            "median": 2.492,
            "p25": 1.425,
            "p75": 4.418,
            "hist": {
              "bin_edges": [
                0.0,
                0.25,
                0.5,
                0.75,
                1.0,
                1.25,
                1.5,
                1.75,
                2.0,
                2.25,
                2.5,
                2.75,
                3.0,
                3.25,
                3.5,
                3.75,
                4.0
              ],
              "counts": [
                7,
                18,
                24,
                55,
                62,
                66,
                58,
                44,
                42,
                54,
                35,
                32,
                28,
                34,
                24,
                271
              ],
              "bin_centers": [
                0.125,
                0.375,
                0.625,
                0.875,
                1.125,
                1.375,
                1.625,
                1.875,
                2.125,
                2.375,
                2.625,
                2.875,
                3.125,
                3.375,
                3.625,
                3.875
              ],
              "clip_lo": 0.0,
              "clip_hi": 4.0
            }
          },
          "max_down_natr": {
            "n": 854,
            "mean": -1.948,
            "median": -1.366,
            "p25": -2.581,
            "p75": -0.548,
            "hist": {
              "bin_edges": [
                -4.0,
                -3.75,
                -3.5,
                -3.25,
                -3.0,
                -2.75,
                -2.5,
                -2.25,
                -2.0,
                -1.75,
                -1.5,
                -1.25,
                -1.0,
                -0.75,
                -0.5,
                -0.25,
                0.0
              ],
              "counts": [
                111,
                15,
                16,
                21,
                30,
                32,
                44,
                35,
                47,
                40,
                68,
                49,
                80,
                69,
                92,
                105
              ],
              "bin_centers": [
                -3.875,
                -3.625,
                -3.375,
                -3.125,
                -2.875,
                -2.625,
                -2.375,
                -2.125,
                -1.875,
                -1.625,
                -1.375,
                -1.125,
                -0.875,
                -0.625,
                -0.375,
                -0.125
              ],
              "clip_lo": -4.0,
              "clip_hi": 0.0
            }
          }
        },
        "breakdown": {
          "n": 392,
          "max_up_natr": {
            "n": 392,
            "mean": 1.703,
            "median": 0.724,
            "p25": 0.265,
            "p75": 2.087,
            "hist": {
              "bin_edges": [
                0.0,
                0.25,
                0.5,
                0.75,
                1.0,
                1.25,
                1.5,
                1.75,
                2.0,
                2.25,
                2.5,
                2.75,
                3.0,
                3.25,
                3.5,
                3.75,
                4.0
              ],
              "counts": [
                87,
                62,
                54,
                30,
                14,
                15,
                20,
                9,
                9,
                10,
                8,
                9,
                3,
                3,
                5,
                54
              ],
              "bin_centers": [
                0.125,
                0.375,
                0.625,
                0.875,
                1.125,
                1.375,
                1.625,
                1.875,
                2.125,
                2.375,
                2.625,
                2.875,
                3.125,
                3.375,
                3.625,
                3.875
              ],
              "clip_lo": 0.0,
              "clip_hi": 4.0
            }
          },
          "max_down_natr": {
            "n": 392,
            "mean": -3.284,
            "median": -2.707,
            "p25": -3.89,
            "p75": -1.978,
            "hist": {
              "bin_edges": [
                -4.0,
                -3.75,
                -3.5,
                -3.25,
                -3.0,
                -2.75,
                -2.5,
                -2.25,
                -2.0,
                -1.75,
                -1.5,
                -1.25,
                -1.0,
                -0.75,
                -0.5,
                -0.25,
                0.0
              ],
              "counts": [
                105,
                25,
                27,
                13,
                22,
                26,
                35,
                34,
                32,
                21,
                23,
                15,
                5,
                1,
                6,
                2
              ],
              "bin_centers": [
                -3.875,
                -3.625,
                -3.375,
                -3.125,
                -2.875,
                -2.625,
                -2.375,
                -2.125,
                -1.875,
                -1.625,
                -1.375,
                -1.125,
                -0.875,
                -0.625,
                -0.375,
                -0.125
              ],
              "clip_lo": -4.0,
              "clip_hi": 0.0
            }
          }
        },
        "sideways": {
          "n": 21,
          "max_up_natr": {
            "n": 21,
            "mean": 0.701,
            "median": 0.532,
            "p25": 0.368,
            "p75": 0.884,
            "hist": {
              "bin_edges": [
                0.0,
                0.25,
                0.5,
                0.75,
                1.0,
                1.25,
                1.5,
                1.75,
                2.0,
                2.25,
                2.5,
                2.75,
                3.0,
                3.25,
                3.5,
                3.75,
                4.0
              ],
              "counts": [
                2,
                8,
                3,
                4,
                1,
                1,
                1,
                1,
                0,
                0,
                0,
                0,
                0,
                0,
                0,
                0
              ],
              "bin_centers": [
                0.125,
                0.375,
                0.625,
                0.875,
                1.125,
                1.375,
                1.625,
                1.875,
                2.125,
                2.375,
                2.625,
                2.875,
                3.125,
                3.375,
                3.625,
                3.875
              ],
              "clip_lo": 0.0,
              "clip_hi": 4.0
            }
          },
          "max_down_natr": {
            "n": 21,
            "mean": -1.012,
            "median": -1.07,
            "p25": -1.215,
            "p75": -0.889,
            "hist": {
              "bin_edges": [
                -4.0,
                -3.75,
                -3.5,
                -3.25,
                -3.0,
                -2.75,
                -2.5,
                -2.25,
                -2.0,
                -1.75,
                -1.5,
                -1.25,
                -1.0,
                -0.75,
                -0.5,
                -0.25,
                0.0
              ],
              "counts": [
                0,
                0,
                0,
                0,
                0,
                0,
                0,
                0,
                0,
                2,
                2,
                10,
                2,
                3,
                1,
                1
              ],
              "bin_centers": [
                -3.875,
                -3.625,
                -3.375,
                -3.125,
                -2.875,
                -2.625,
                -2.375,
                -2.125,
                -1.875,
                -1.625,
                -1.375,
                -1.125,
                -0.875,
                -0.625,
                -0.375,
                -0.125
              ],
              "clip_lo": -4.0,
              "clip_hi": 0.0
            }
          }
        },
        "forming": {
          "n": 0,
          "max_up_natr": {
            "n": 0,
            "mean": null,
            "median": null,
            "p25": null,
            "p75": null
          },
          "max_down_natr": {
            "n": 0,
            "mean": null,
            "median": null,
            "p25": null,
            "p75": null
          }
        }
      },
      "max_up_natr_hist": {
        "bin_edges": [
          0.0,
          0.25,
          0.5,
          0.75,
          1.0,
          1.25,
          1.5,
          1.75,
          2.0,
          2.25,
          2.5,
          2.75,
          3.0,
          3.25,
          3.5,
          3.75,
          4.0
        ],
        "counts": [
          96,
          88,
          81,
          89,
          77,
          82,
          79,
          54,
          51,
          64,
          43,
          41,
          31,
          37,
          29,
          325
        ],
        "bin_centers": [
          0.125,
          0.375,
          0.625,
          0.875,
          1.125,
          1.375,
          1.625,
          1.875,
          2.125,
          2.375,
          2.625,
          2.875,
          3.125,
          3.375,
          3.625,
          3.875
        ],
        "clip_lo": 0.0,
        "clip_hi": 4.0
      },
      "max_down_natr_hist": {
        "bin_edges": [
          -4.0,
          -3.75,
          -3.5,
          -3.25,
          -3.0,
          -2.75,
          -2.5,
          -2.25,
          -2.0,
          -1.75,
          -1.5,
          -1.25,
          -1.0,
          -0.75,
          -0.5,
          -0.25,
          0.0
        ],
        "counts": [
          216,
          40,
          43,
          34,
          52,
          58,
          79,
          69,
          79,
          63,
          93,
          74,
          87,
          73,
          99,
          108
        ],
        "bin_centers": [
          -3.875,
          -3.625,
          -3.375,
          -3.125,
          -2.875,
          -2.625,
          -2.375,
          -2.125,
          -1.875,
          -1.625,
          -1.375,
          -1.125,
          -0.875,
          -0.625,
          -0.375,
          -0.125
        ],
        "clip_lo": -4.0,
        "clip_hi": 0.0
      },
      "timestamp_min": 1507406400000,
      "timestamp_max": 1785469500000,
      "timestamp_min_iso": "2017-10-07T20:00:00Z",
      "timestamp_max_iso": "2026-07-31T03:45:00Z"
    },
    {
      "pattern_type": "double_top",
      "pattern_name": "Double Top",
      "bias": "bearish",
      "n": 861,
      "n_symbols": 410,
      "breakout_success_rate": 13.94,
      "breakdown_success_rate": 76.54,
      "sideways_rate": 9.52,
      "forming_rate": 0.0,
      "both_cleared_rate": 36.24,
      "breakout_success_rate_ci95": [
        11.78,
        16.41
      ],
      "breakdown_success_rate_ci95": [
        73.59,
        79.25
      ],
      "sideways_rate_ci95": [
        7.74,
        11.67
      ],
      "forming_rate_ci95": [
        0.0,
        0.44
      ],
      "both_sides_rate": 36.24,
      "expected_hit_rate": 76.54,
      "expected_hit_rate_ci95": [
        73.59,
        79.25
      ],
      "mean_ret_10c": -2.655,
      "median_ret_10c": -2.01,
      "std_ret_10c": 6.521,
      "win_rate_ret_gt0": 25.9,
      "p25_ret_10c": -4.917,
      "p75_ret_10c": 0.12,
      "mean_mfe": 2.854,
      "mean_mae": -6.383,
      "mfe_mae_ratio": 0.447,
      "max_up_natr": {
        "n": 861,
        "mean": 1.348,
        "median": 1.007,
        "p25": 0.466,
        "p75": 1.683,
        "hist": {
          "bin_edges": [
            0.0,
            0.25,
            0.5,
            0.75,
            1.0,
            1.25,
            1.5,
            1.75,
            2.0,
            2.25,
            2.5,
            2.75,
            3.0,
            3.25,
            3.5,
            3.75,
            4.0
          ],
          "counts": [
            122,
            113,
            109,
            85,
            91,
            84,
            61,
            41,
            31,
            20,
            21,
            13,
            9,
            9,
            9,
            43
          ],
          "bin_centers": [
            0.125,
            0.375,
            0.625,
            0.875,
            1.125,
            1.375,
            1.625,
            1.875,
            2.125,
            2.375,
            2.625,
            2.875,
            3.125,
            3.375,
            3.625,
            3.875
          ],
          "clip_lo": 0.0,
          "clip_hi": 4.0
        }
      },
      "max_down_natr": {
        "n": 861,
        "mean": -3.008,
        "median": -2.552,
        "p25": -3.963,
        "p75": -1.533,
        "hist": {
          "bin_edges": [
            -4.0,
            -3.75,
            -3.5,
            -3.25,
            -3.0,
            -2.75,
            -2.5,
            -2.25,
            -2.0,
            -1.75,
            -1.5,
            -1.25,
            -1.0,
            -0.75,
            -0.5,
            -0.25,
            0.0
          ],
          "counts": [
            233,
            31,
            38,
            49,
            38,
            54,
            48,
            49,
            50,
            61,
            42,
            40,
            48,
            37,
            25,
            18
          ],
          "bin_centers": [
            -3.875,
            -3.625,
            -3.375,
            -3.125,
            -2.875,
            -2.625,
            -2.375,
            -2.125,
            -1.875,
            -1.625,
            -1.375,
            -1.125,
            -0.875,
            -0.625,
            -0.375,
            -0.125
          ],
          "clip_lo": -4.0,
          "clip_hi": 0.0
        }
      },
      "median_max_up_natr": 1.007,
      "median_max_down_natr": -2.552,
      "mean_max_up_natr": 1.348,
      "mean_max_down_natr": -3.008,
      "p25_max_up_natr": 0.466,
      "p75_max_up_natr": 1.683,
      "p25_max_down_natr": -3.963,
      "p75_max_down_natr": -1.533,
      "outcome_natr_moves": {
        "breakout": {
          "n": 120,
          "max_up_natr": {
            "n": 120,
            "mean": 3.11,
            "median": 2.615,
            "p25": 1.784,
            "p75": 3.611,
            "hist": {
              "bin_edges": [
                0.0,
                0.25,
                0.5,
                0.75,
                1.0,
                1.25,
                1.5,
                1.75,
                2.0,
                2.25,
                2.5,
                2.75,
                3.0,
                3.25,
                3.5,
                3.75,
                4.0
              ],
              "counts": [
                0,
                0,
                0,
                1,
                6,
                13,
                8,
                11,
                11,
                8,
                9,
                4,
                6,
                8,
                8,
                27
              ],
              "bin_centers": [
                0.125,
                0.375,
                0.625,
                0.875,
                1.125,
                1.375,
                1.625,
                1.875,
                2.125,
                2.375,
                2.625,
                2.875,
                3.125,
                3.375,
                3.625,
                3.875
              ],
              "clip_lo": 0.0,
              "clip_hi": 4.0
            }
          },
          "max_down_natr": {
            "n": 120,
            "mean": -1.813,
            "median": -0.914,
            "p25": -2.108,
            "p75": -0.554,
            "hist": {
              "bin_edges": [
                -4.0,
                -3.75,
                -3.5,
                -3.25,
                -3.0,
                -2.75,
                -2.5,
                -2.25,
                -2.0,
                -1.75,
                -1.5,
                -1.25,
                -1.0,
                -0.75,
                -0.5,
                -0.25,
                0.0
              ],
              "counts": [
                18,
                1,
                1,
                2,
                3,
                0,
                3,
                5,
                3,
                6,
                3,
                11,
                18,
                20,
                15,
                11
              ],
              "bin_centers": [
                -3.875,
                -3.625,
                -3.375,
                -3.125,
                -2.875,
                -2.625,
                -2.375,
                -2.125,
                -1.875,
                -1.625,
                -1.375,
                -1.125,
                -0.875,
                -0.625,
                -0.375,
                -0.125
              ],
              "clip_lo": -4.0,
              "clip_hi": 0.0
            }
          }
        },
        "breakdown": {
          "n": 659,
          "max_up_natr": {
            "n": 659,
            "mean": 1.013,
            "median": 0.734,
            "p25": 0.344,
            "p75": 1.301,
            "hist": {
              "bin_edges": [
                0.0,
                0.25,
                0.5,
                0.75,
                1.0,
                1.25,
                1.5,
                1.75,
                2.0,
                2.25,
                2.5,
                2.75,
                3.0,
                3.25,
                3.5,
                3.75,
                4.0
              ],
              "counts": [
                121,
                111,
                103,
                77,
                71,
                50,
                42,
                27,
                12,
                10,
                9,
                7,
                2,
                0,
                1,
                16
              ],
              "bin_centers": [
                0.125,
                0.375,
                0.625,
                0.875,
                1.125,
                1.375,
                1.625,
                1.875,
                2.125,
                2.375,
                2.625,
                2.875,
                3.125,
                3.375,
                3.625,
                3.875
              ],
              "clip_lo": 0.0,
              "clip_hi": 4.0
            }
          },
          "max_down_natr": {
            "n": 659,
            "mean": -3.495,
            "median": -2.993,
            "p25": -4.338,
            "p75": -2.097,
            "hist": {
              "bin_edges": [
                -4.0,
                -3.75,
                -3.5,
                -3.25,
                -3.0,
                -2.75,
                -2.5,
                -2.25,
                -2.0,
                -1.75,
                -1.5,
                -1.25,
                -1.0,
                -0.75,
                -0.5,
                -0.25,
                0.0
              ],
              "counts": [
                215,
                30,
                37,
                47,
                35,
                54,
                45,
                44,
                43,
                53,
                34,
                13,
                9,
                0,
                0,
                0
              ],
              "bin_centers": [
                -3.875,
                -3.625,
                -3.375,
                -3.125,
                -2.875,
                -2.625,
                -2.375,
                -2.125,
                -1.875,
                -1.625,
                -1.375,
                -1.125,
                -0.875,
                -0.625,
                -0.375,
                -0.125
              ],
              "clip_lo": -4.0,
              "clip_hi": 0.0
            }
          }
        },
        "sideways": {
          "n": 82,
          "max_up_natr": {
            "n": 82,
            "mean": 1.464,
            "median": 1.389,
            "p25": 1.074,
            "p75": 1.718,
            "hist": {
              "bin_edges": [
                0.0,
                0.25,
                0.5,
                0.75,
                1.0,
                1.25,
                1.5,
                1.75,
                2.0,
                2.25,
                2.5,
                2.75,
                3.0,
                3.25,
                3.5,
                3.75,
                4.0
              ],
              "counts": [
                1,
                2,
                6,
                7,
                14,
                21,
                11,
                3,
                8,
                2,
                3,
                2,
                1,
                1,
                0,
                0
              ],
              "bin_centers": [
                0.125,
                0.375,
                0.625,
                0.875,
                1.125,
                1.375,
                1.625,
                1.875,
                2.125,
                2.375,
                2.625,
                2.875,
                3.125,
                3.375,
                3.625,
                3.875
              ],
              "clip_lo": 0.0,
              "clip_hi": 4.0
            }
          },
          "max_down_natr": {
            "n": 82,
            "mean": -0.841,
            "median": -0.827,
            "p25": -1.088,
            "p75": -0.588,
            "hist": {
              "bin_edges": [
                -4.0,
                -3.75,
                -3.5,
                -3.25,
                -3.0,
                -2.75,
                -2.5,
                -2.25,
                -2.0,
                -1.75,
                -1.5,
                -1.25,
                -1.0,
                -0.75,
                -0.5,
                -0.25,
                0.0
              ],
              "counts": [
                0,
                0,
                0,
                0,
                0,
                0,
                0,
                0,
                4,
                2,
                5,
                16,
                21,
                17,
                10,
                7
              ],
              "bin_centers": [
                -3.875,
                -3.625,
                -3.375,
                -3.125,
                -2.875,
                -2.625,
                -2.375,
                -2.125,
                -1.875,
                -1.625,
                -1.375,
                -1.125,
                -0.875,
                -0.625,
                -0.375,
                -0.125
              ],
              "clip_lo": -4.0,
              "clip_hi": 0.0
            }
          }
        },
        "forming": {
          "n": 0,
          "max_up_natr": {
            "n": 0,
            "mean": null,
            "median": null,
            "p25": null,
            "p75": null
          },
          "max_down_natr": {
            "n": 0,
            "mean": null,
            "median": null,
            "p25": null,
            "p75": null
          }
        }
      },
      "max_up_natr_hist": {
        "bin_edges": [
          0.0,
          0.25,
          0.5,
          0.75,
          1.0,
          1.25,
          1.5,
          1.75,
          2.0,
          2.25,
          2.5,
          2.75,
          3.0,
          3.25,
          3.5,
          3.75,
          4.0
        ],
        "counts": [
          122,
          113,
          109,
          85,
          91,
          84,
          61,
          41,
          31,
          20,
          21,
          13,
          9,
          9,
          9,
          43
        ],
        "bin_centers": [
          0.125,
          0.375,
          0.625,
          0.875,
          1.125,
          1.375,
          1.625,
          1.875,
          2.125,
          2.375,
          2.625,
          2.875,
          3.125,
          3.375,
          3.625,
          3.875
        ],
        "clip_lo": 0.0,
        "clip_hi": 4.0
      },
      "max_down_natr_hist": {
        "bin_edges": [
          -4.0,
          -3.75,
          -3.5,
          -3.25,
          -3.0,
          -2.75,
          -2.5,
          -2.25,
          -2.0,
          -1.75,
          -1.5,
          -1.25,
          -1.0,
          -0.75,
          -0.5,
          -0.25,
          0.0
        ],
        "counts": [
          233,
          31,
          38,
          49,
          38,
          54,
          48,
          49,
          50,
          61,
          42,
          40,
          48,
          37,
          25,
          18
        ],
        "bin_centers": [
          -3.875,
          -3.625,
          -3.375,
          -3.125,
          -2.875,
          -2.625,
          -2.375,
          -2.125,
          -1.875,
          -1.625,
          -1.375,
          -1.125,
          -0.875,
          -0.625,
          -0.375,
          -0.125
        ],
        "clip_lo": -4.0,
        "clip_hi": 0.0
      },
      "timestamp_min": 1516075200000,
      "timestamp_max": 1785441600000,
      "timestamp_min_iso": "2018-01-16T04:00:00Z",
      "timestamp_max_iso": "2026-07-30T20:00:00Z"
    },
    {
      "pattern_type": "descending_triangle",
      "pattern_name": "Descending Triangle",
      "bias": "bearish",
      "n": 475,
      "n_symbols": 316,
      "breakout_success_rate": 70.53,
      "breakdown_success_rate": 28.21,
      "sideways_rate": 1.26,
      "forming_rate": 0.0,
      "both_cleared_rate": 24.63,
      "breakout_success_rate_ci95": [
        66.27,
        74.45
      ],
      "breakdown_success_rate_ci95": [
        24.35,
        32.42
      ],
      "sideways_rate_ci95": [
        0.58,
        2.73
      ],
      "forming_rate_ci95": [
        0.0,
        0.8
      ],
      "both_sides_rate": 24.63,
      "expected_hit_rate": 28.21,
      "expected_hit_rate_ci95": [
        24.35,
        32.42
      ],
      "mean_ret_10c": 1.379,
      "median_ret_10c": 0.836,
      "std_ret_10c": 7.57,
      "win_rate_ret_gt0": 62.53,
      "p25_ret_10c": -1.16,
      "p75_ret_10c": 2.926,
      "mean_mfe": 6.37,
      "mean_mae": -3.292,
      "mfe_mae_ratio": 1.935,
      "max_up_natr": {
        "n": 475,
        "mean": 3.315,
        "median": 2.306,
        "p25": 1.123,
        "p75": 3.765,
        "hist": {
          "bin_edges": [
            0.0,
            0.25,
            0.5,
            0.75,
            1.0,
            1.25,
            1.5,
            1.75,
            2.0,
            2.25,
            2.5,
            2.75,
            3.0,
            3.25,
            3.5,
            3.75,
            4.0
          ],
          "counts": [
            45,
            23,
            20,
            23,
            17,
            27,
            27,
            25,
            25,
            23,
            24,
            17,
            20,
            21,
            18,
            120
          ],
          "bin_centers": [
            0.125,
            0.375,
            0.625,
            0.875,
            1.125,
            1.375,
            1.625,
            1.875,
            2.125,
            2.375,
            2.625,
            2.875,
            3.125,
            3.375,
            3.625,
            3.875
          ],
          "clip_lo": 0.0,
          "clip_hi": 4.0
        }
      },
      "max_down_natr": {
        "n": 475,
        "mean": -1.676,
        "median": -0.827,
        "p25": -2.41,
        "p75": -0.239,
        "hist": {
          "bin_edges": [
            -4.0,
            -3.75,
            -3.5,
            -3.25,
            -3.0,
            -2.75,
            -2.5,
            -2.25,
            -2.0,
            -1.75,
            -1.5,
            -1.25,
            -1.0,
            -0.75,
            -0.5,
            -0.25,
            0.0
          ],
          "counts": [
            61,
            9,
            10,
            7,
            12,
            12,
            17,
            9,
            12,
            25,
            22,
            23,
            29,
            39,
            65,
            123
          ],
          "bin_centers": [
            -3.875,
            -3.625,
            -3.375,
            -3.125,
            -2.875,
            -2.625,
            -2.375,
            -2.125,
            -1.875,
            -1.625,
            -1.375,
            -1.125,
            -0.875,
            -0.625,
            -0.375,
            -0.125
          ],
          "clip_lo": -4.0,
          "clip_hi": 0.0
        }
      },
      "median_max_up_natr": 2.306,
      "median_max_down_natr": -0.827,
      "mean_max_up_natr": 3.315,
      "mean_max_down_natr": -1.676,
      "p25_max_up_natr": 1.123,
      "p75_max_up_natr": 3.765,
      "p25_max_down_natr": -2.41,
      "p75_max_down_natr": -0.239,
      "outcome_natr_moves": {
        "breakout": {
          "n": 335,
          "max_up_natr": {
            "n": 335,
            "mean": 4.112,
            "median": 2.972,
            "p25": 1.954,
            "p75": 4.238,
            "hist": {
              "bin_edges": [
                0.0,
                0.25,
                0.5,
                0.75,
                1.0,
                1.25,
                1.5,
                1.75,
                2.0,
                2.25,
                2.5,
                2.75,
                3.0,
                3.25,
                3.5,
                3.75,
                4.0
              ],
              "counts": [
                0,
                1,
                5,
                9,
                15,
                21,
                17,
                22,
                24,
                19,
                22,
                16,
                17,
                17,
                17,
                113
              ],
              "bin_centers": [
                0.125,
                0.375,
                0.625,
                0.875,
                1.125,
                1.375,
                1.625,
                1.875,
                2.125,
                2.375,
                2.625,
                2.875,
                3.125,
                3.375,
                3.625,
                3.875
              ],
              "clip_lo": 0.0,
              "clip_hi": 4.0
            }
          },
          "max_down_natr": {
            "n": 335,
            "mean": -0.909,
            "median": -0.405,
            "p25": -1.051,
            "p75": -0.146,
            "hist": {
              "bin_edges": [
                -4.0,
                -3.75,
                -3.5,
                -3.25,
                -3.0,
                -2.75,
                -2.5,
                -2.25,
                -2.0,
                -1.75,
                -1.5,
                -1.25,
                -1.0,
                -0.75,
                -0.5,
                -0.25,
                0.0
              ],
              "counts": [
                13,
                3,
                2,
                1,
                4,
                3,
                6,
                4,
                8,
                10,
                15,
                17,
                26,
                38,
                64,
                121
              ],
              "bin_centers": [
                -3.875,
                -3.625,
                -3.375,
                -3.125,
                -2.875,
                -2.625,
                -2.375,
                -2.125,
                -1.875,
                -1.625,
                -1.375,
                -1.125,
                -0.875,
                -0.625,
                -0.375,
                -0.125
              ],
              "clip_lo": -4.0,
              "clip_hi": 0.0
            }
          }
        },
        "breakdown": {
          "n": 134,
          "max_up_natr": {
            "n": 134,
            "mean": 1.441,
            "median": 0.548,
            "p25": 0.165,
            "p75": 1.548,
            "hist": {
              "bin_edges": [
                0.0,
                0.25,
                0.5,
                0.75,
                1.0,
                1.25,
                1.5,
                1.75,
                2.0,
                2.25,
                2.5,
                2.75,
                3.0,
                3.25,
                3.5,
                3.75,
                4.0
              ],
              "counts": [
                45,
                20,
                15,
                10,
                2,
                6,
                10,
                3,
                1,
                4,
                2,
                1,
                3,
                4,
                1,
                7
              ],
              "bin_centers": [
                0.125,
                0.375,
                0.625,
                0.875,
                1.125,
                1.375,
                1.625,
                1.875,
                2.125,
                2.375,
                2.625,
                2.875,
                3.125,
                3.375,
                3.625,
                3.875
              ],
              "clip_lo": 0.0,
              "clip_hi": 4.0
            }
          },
          "max_down_natr": {
            "n": 134,
            "mean": -3.644,
            "median": -3.089,
            "p25": -4.435,
            "p75": -2.005,
            "hist": {
              "bin_edges": [
                -4.0,
                -3.75,
                -3.5,
                -3.25,
                -3.0,
                -2.75,
                -2.5,
                -2.25,
                -2.0,
                -1.75,
                -1.5,
                -1.25,
                -1.0,
                -0.75,
                -0.5,
                -0.25,
                0.0
              ],
              "counts": [
                48,
                6,
                8,
                6,
                8,
                9,
                11,
                5,
                4,
                15,
                6,
                5,
                3,
                0,
                0,
                0
              ],
              "bin_centers": [
                -3.875,
                -3.625,
                -3.375,
                -3.125,
                -2.875,
                -2.625,
                -2.375,
                -2.125,
                -1.875,
                -1.625,
                -1.375,
                -1.125,
                -0.875,
                -0.625,
                -0.375,
                -0.125
              ],
              "clip_lo": -4.0,
              "clip_hi": 0.0
            }
          }
        },
        "sideways": {
          "n": 6,
          "max_up_natr": {
            "n": 6,
            "mean": 0.705,
            "median": 0.796,
            "p25": 0.561,
            "p75": 0.85
          },
          "max_down_natr": {
            "n": 6,
            "mean": -0.595,
            "median": -0.488,
            "p25": -0.965,
            "p75": -0.152
          }
        },
        "forming": {
          "n": 0,
          "max_up_natr": {
            "n": 0,
            "mean": null,
            "median": null,
            "p25": null,
            "p75": null
          },
          "max_down_natr": {
            "n": 0,
            "mean": null,
            "median": null,
            "p25": null,
            "p75": null
          }
        }
      },
      "max_up_natr_hist": {
        "bin_edges": [
          0.0,
          0.25,
          0.5,
          0.75,
          1.0,
          1.25,
          1.5,
          1.75,
          2.0,
          2.25,
          2.5,
          2.75,
          3.0,
          3.25,
          3.5,
          3.75,
          4.0
        ],
        "counts": [
          45,
          23,
          20,
          23,
          17,
          27,
          27,
          25,
          25,
          23,
          24,
          17,
          20,
          21,
          18,
          120
        ],
        "bin_centers": [
          0.125,
          0.375,
          0.625,
          0.875,
          1.125,
          1.375,
          1.625,
          1.875,
          2.125,
          2.375,
          2.625,
          2.875,
          3.125,
          3.375,
          3.625,
          3.875
        ],
        "clip_lo": 0.0,
        "clip_hi": 4.0
      },
      "max_down_natr_hist": {
        "bin_edges": [
          -4.0,
          -3.75,
          -3.5,
          -3.25,
          -3.0,
          -2.75,
          -2.5,
          -2.25,
          -2.0,
          -1.75,
          -1.5,
          -1.25,
          -1.0,
          -0.75,
          -0.5,
          -0.25,
          0.0
        ],
        "counts": [
          61,
          9,
          10,
          7,
          12,
          12,
          17,
          9,
          12,
          25,
          22,
          23,
          29,
          39,
          65,
          123
        ],
        "bin_centers": [
          -3.875,
          -3.625,
          -3.375,
          -3.125,
          -2.875,
          -2.625,
          -2.375,
          -2.125,
          -1.875,
          -1.625,
          -1.375,
          -1.125,
          -0.875,
          -0.625,
          -0.375,
          -0.125
        ],
        "clip_lo": -4.0,
        "clip_hi": 0.0
      },
      "timestamp_min": 1567771200000,
      "timestamp_max": 1785447000000,
      "timestamp_min_iso": "2019-09-06T12:00:00Z",
      "timestamp_max_iso": "2026-07-30T21:30:00Z"
    },
    {
      "pattern_type": "ascending_triangle",
      "pattern_name": "Ascending Triangle",
      "bias": "bullish",
      "n": 362,
      "n_symbols": 254,
      "breakout_success_rate": 26.52,
      "breakdown_success_rate": 70.72,
      "sideways_rate": 2.76,
      "forming_rate": 0.0,
      "both_cleared_rate": 29.01,
      "breakout_success_rate_ci95": [
        22.24,
        31.3
      ],
      "breakdown_success_rate_ci95": [
        65.83,
        75.17
      ],
      "sideways_rate_ci95": [
        1.51,
        5.01
      ],
      "forming_rate_ci95": [
        0.0,
        1.05
      ],
      "both_sides_rate": 29.01,
      "expected_hit_rate": 26.52,
      "expected_hit_rate_ci95": [
        22.24,
        31.3
      ],
      "mean_ret_10c": -1.172,
      "median_ret_10c": -0.658,
      "std_ret_10c": 6.663,
      "win_rate_ret_gt0": 38.67,
      "p25_ret_10c": -3.315,
      "p75_ret_10c": 1.313,
      "mean_mfe": 3.365,
      "mean_mae": -5.119,
      "mfe_mae_ratio": 0.657,
      "max_up_natr": {
        "n": 362,
        "mean": 2.135,
        "median": 0.943,
        "p25": 0.196,
        "p75": 2.663,
        "hist": {
          "bin_edges": [
            0.0,
            0.25,
            0.5,
            0.75,
            1.0,
            1.25,
            1.5,
            1.75,
            2.0,
            2.25,
            2.5,
            2.75,
            3.0,
            3.25,
            3.5,
            3.75,
            4.0
          ],
          "counts": [
            105,
            37,
            21,
            21,
            23,
            14,
            19,
            9,
            5,
            12,
            8,
            5,
            4,
            10,
            11,
            58
          ],
          "bin_centers": [
            0.125,
            0.375,
            0.625,
            0.875,
            1.125,
            1.375,
            1.625,
            1.875,
            2.125,
            2.375,
            2.625,
            2.875,
            3.125,
            3.375,
            3.625,
            3.875
          ],
          "clip_lo": 0.0,
          "clip_hi": 4.0
        }
      },
      "max_down_natr": {
        "n": 362,
        "mean": -2.758,
        "median": -2.28,
        "p25": -3.558,
        "p75": -1.142,
        "hist": {
          "bin_edges": [
            -4.0,
            -3.75,
            -3.5,
            -3.25,
            -3.0,
            -2.75,
            -2.5,
            -2.25,
            -2.0,
            -1.75,
            -1.5,
            -1.25,
            -1.0,
            -0.75,
            -0.5,
            -0.25,
            0.0
          ],
          "counts": [
            83,
            11,
            14,
            15,
            16,
            24,
            24,
            24,
            21,
            13,
            25,
            17,
            17,
            17,
            14,
            27
          ],
          "bin_centers": [
            -3.875,
            -3.625,
            -3.375,
            -3.125,
            -2.875,
            -2.625,
            -2.375,
            -2.125,
            -1.875,
            -1.625,
            -1.375,
            -1.125,
            -0.875,
            -0.625,
            -0.375,
            -0.125
          ],
          "clip_lo": -4.0,
          "clip_hi": 0.0
        }
      },
      "median_max_up_natr": 0.943,
      "median_max_down_natr": -2.28,
      "mean_max_up_natr": 2.135,
      "mean_max_down_natr": -2.758,
      "p25_max_up_natr": 0.196,
      "p75_max_up_natr": 2.663,
      "p25_max_down_natr": -3.558,
      "p75_max_down_natr": -1.142,
      "outcome_natr_moves": {
        "breakout": {
          "n": 96,
          "max_up_natr": {
            "n": 96,
            "mean": 4.593,
            "median": 3.672,
            "p25": 2.456,
            "p75": 5.341,
            "hist": {
              "bin_edges": [
                0.0,
                0.25,
                0.5,
                0.75,
                1.0,
                1.25,
                1.5,
                1.75,
                2.0,
                2.25,
                2.5,
                2.75,
                3.0,
                3.25,
                3.5,
                3.75,
                4.0
              ],
              "counts": [
                0,
                0,
                0,
                0,
                0,
                5,
                6,
                3,
                3,
                8,
                6,
                2,
                2,
                5,
                10,
                46
              ],
              "bin_centers": [
                0.125,
                0.375,
                0.625,
                0.875,
                1.125,
                1.375,
                1.625,
                1.875,
                2.125,
                2.375,
                2.625,
                2.875,
                3.125,
                3.375,
                3.625,
                3.875
              ],
              "clip_lo": 0.0,
              "clip_hi": 4.0
            }
          },
          "max_down_natr": {
            "n": 96,
            "mean": -1.22,
            "median": -0.73,
            "p25": -1.578,
            "p75": -0.222,
            "hist": {
              "bin_edges": [
                -4.0,
                -3.75,
                -3.5,
                -3.25,
                -3.0,
                -2.75,
                -2.5,
                -2.25,
                -2.0,
                -1.75,
                -1.5,
                -1.25,
                -1.0,
                -0.75,
                -0.5,
                -0.25,
                0.0
              ],
              "counts": [
                7,
                0,
                2,
                0,
                2,
                3,
                4,
                3,
                0,
                5,
                6,
                5,
                9,
                10,
                13,
                27
              ],
              "bin_centers": [
                -3.875,
                -3.625,
                -3.375,
                -3.125,
                -2.875,
                -2.625,
                -2.375,
                -2.125,
                -1.875,
                -1.625,
                -1.375,
                -1.125,
                -0.875,
                -0.625,
                -0.375,
                -0.125
              ],
              "clip_lo": -4.0,
              "clip_hi": 0.0
            }
          }
        },
        "breakdown": {
          "n": 256,
          "max_up_natr": {
            "n": 256,
            "mean": 1.241,
            "median": 0.39,
            "p25": 0.135,
            "p75": 1.133,
            "hist": {
              "bin_edges": [
                0.0,
                0.25,
                0.5,
                0.75,
                1.0,
                1.25,
                1.5,
                1.75,
                2.0,
                2.25,
                2.5,
                2.75,
                3.0,
                3.25,
                3.5,
                3.75,
                4.0
              ],
              "counts": [
                105,
                37,
                20,
                21,
                20,
                7,
                10,
                6,
                2,
                3,
                2,
                3,
                2,
                5,
                1,
                12
              ],
              "bin_centers": [
                0.125,
                0.375,
                0.625,
                0.875,
                1.125,
                1.375,
                1.625,
                1.875,
                2.125,
                2.375,
                2.625,
                2.875,
                3.125,
                3.375,
                3.625,
                3.875
              ],
              "clip_lo": 0.0,
              "clip_hi": 4.0
            }
          },
          "max_down_natr": {
            "n": 256,
            "mean": -3.412,
            "median": -2.746,
            "p25": -4.029,
            "p75": -1.971,
            "hist": {
              "bin_edges": [
                -4.0,
                -3.75,
                -3.5,
                -3.25,
                -3.0,
                -2.75,
                -2.5,
                -2.25,
                -2.0,
                -1.75,
                -1.5,
                -1.25,
                -1.0,
                -0.75,
                -0.5,
                -0.25,
                0.0
              ],
              "counts": [
                76,
                11,
                12,
                15,
                14,
                21,
                20,
                21,
                21,
                8,
                19,
                9,
                6,
                3,
                0,
                0
              ],
              "bin_centers": [
                -3.875,
                -3.625,
                -3.375,
                -3.125,
                -2.875,
                -2.625,
                -2.375,
                -2.125,
                -1.875,
                -1.625,
                -1.375,
                -1.125,
                -0.875,
                -0.625,
                -0.375,
                -0.125
              ],
              "clip_lo": -4.0,
              "clip_hi": 0.0
            }
          }
        },
        "sideways": {
          "n": 10,
          "max_up_natr": {
            "n": 10,
            "mean": 1.429,
            "median": 1.386,
            "p25": 1.137,
            "p75": 1.684
          },
          "max_down_natr": {
            "n": 10,
            "mean": -0.769,
            "median": -0.772,
            "p25": -0.991,
            "p75": -0.572
          }
        },
        "forming": {
          "n": 0,
          "max_up_natr": {
            "n": 0,
            "mean": null,
            "median": null,
            "p25": null,
            "p75": null
          },
          "max_down_natr": {
            "n": 0,
            "mean": null,
            "median": null,
            "p25": null,
            "p75": null
          }
        }
      },
      "max_up_natr_hist": {
        "bin_edges": [
          0.0,
          0.25,
          0.5,
          0.75,
          1.0,
          1.25,
          1.5,
          1.75,
          2.0,
          2.25,
          2.5,
          2.75,
          3.0,
          3.25,
          3.5,
          3.75,
          4.0
        ],
        "counts": [
          105,
          37,
          21,
          21,
          23,
          14,
          19,
          9,
          5,
          12,
          8,
          5,
          4,
          10,
          11,
          58
        ],
        "bin_centers": [
          0.125,
          0.375,
          0.625,
          0.875,
          1.125,
          1.375,
          1.625,
          1.875,
          2.125,
          2.375,
          2.625,
          2.875,
          3.125,
          3.375,
          3.625,
          3.875
        ],
        "clip_lo": 0.0,
        "clip_hi": 4.0
      },
      "max_down_natr_hist": {
        "bin_edges": [
          -4.0,
          -3.75,
          -3.5,
          -3.25,
          -3.0,
          -2.75,
          -2.5,
          -2.25,
          -2.0,
          -1.75,
          -1.5,
          -1.25,
          -1.0,
          -0.75,
          -0.5,
          -0.25,
          0.0
        ],
        "counts": [
          83,
          11,
          14,
          15,
          16,
          24,
          24,
          24,
          21,
          13,
          25,
          17,
          17,
          17,
          14,
          27
        ],
        "bin_centers": [
          -3.875,
          -3.625,
          -3.375,
          -3.125,
          -2.875,
          -2.625,
          -2.375,
          -2.125,
          -1.875,
          -1.625,
          -1.375,
          -1.125,
          -0.875,
          -0.625,
          -0.375,
          -0.125
        ],
        "clip_lo": -4.0,
        "clip_hi": 0.0
      },
      "timestamp_min": 1585195200000,
      "timestamp_max": 1785448800000,
      "timestamp_min_iso": "2020-03-26T04:00:00Z",
      "timestamp_max_iso": "2026-07-30T22:00:00Z"
    },
    {
      "pattern_type": "triple_bottom",
      "pattern_name": "Triple Bottom",
      "bias": "bullish",
      "n": 242,
      "n_symbols": 187,
      "breakout_success_rate": 78.1,
      "breakdown_success_rate": 9.5,
      "sideways_rate": 12.4,
      "forming_rate": 0.0,
      "both_cleared_rate": 28.51,
      "breakout_success_rate_ci95": [
        72.47,
        82.85
      ],
      "breakdown_success_rate_ci95": [
        6.42,
        13.86
      ],
      "sideways_rate_ci95": [
        8.82,
        17.15
      ],
      "forming_rate_ci95": [
        0.0,
        1.56
      ],
      "both_sides_rate": 28.51,
      "expected_hit_rate": 78.1,
      "expected_hit_rate_ci95": [
        72.47,
        82.85
      ],
      "mean_ret_10c": 6.378,
      "median_ret_10c": 1.846,
      "std_ret_10c": 21.909,
      "win_rate_ret_gt0": 66.12,
      "p25_ret_10c": -0.609,
      "p75_ret_10c": 8.172,
      "mean_mfe": 14.004,
      "mean_mae": -3.521,
      "mfe_mae_ratio": 3.977,
      "max_up_natr": {
        "n": 242,
        "mean": 3.517,
        "median": 2.308,
        "p25": 1.277,
        "p75": 4.232,
        "hist": {
          "bin_edges": [
            0.0,
            0.25,
            0.5,
            0.75,
            1.0,
            1.25,
            1.5,
            1.75,
            2.0,
            2.25,
            2.5,
            2.75,
            3.0,
            3.25,
            3.5,
            3.75,
            4.0
          ],
          "counts": [
            8,
            12,
            5,
            14,
            19,
            13,
            18,
            16,
            15,
            9,
            8,
            8,
            8,
            12,
            11,
            66
          ],
          "bin_centers": [
            0.125,
            0.375,
            0.625,
            0.875,
            1.125,
            1.375,
            1.625,
            1.875,
            2.125,
            2.375,
            2.625,
            2.875,
            3.125,
            3.375,
            3.625,
            3.875
          ],
          "clip_lo": 0.0,
          "clip_hi": 4.0
        }
      },
      "max_down_natr": {
        "n": 242,
        "mean": -1.132,
        "median": -0.825,
        "p25": -1.571,
        "p75": -0.409,
        "hist": {
          "bin_edges": [
            -4.0,
            -3.75,
            -3.5,
            -3.25,
            -3.0,
            -2.75,
            -2.5,
            -2.25,
            -2.0,
            -1.75,
            -1.5,
            -1.25,
            -1.0,
            -0.75,
            -0.5,
            -0.25,
            0.0
          ],
          "counts": [
            9,
            1,
            1,
            3,
            3,
            5,
            7,
            10,
            12,
            16,
            19,
            15,
            32,
            36,
            34,
            39
          ],
          "bin_centers": [
            -3.875,
            -3.625,
            -3.375,
            -3.125,
            -2.875,
            -2.625,
            -2.375,
            -2.125,
            -1.875,
            -1.625,
            -1.375,
            -1.125,
            -0.875,
            -0.625,
            -0.375,
            -0.125
          ],
          "clip_lo": -4.0,
          "clip_hi": 0.0
        }
      },
      "median_max_up_natr": 2.308,
      "median_max_down_natr": -0.825,
      "mean_max_up_natr": 3.517,
      "mean_max_down_natr": -1.132,
      "p25_max_up_natr": 1.277,
      "p75_max_up_natr": 4.232,
      "p25_max_down_natr": -1.571,
      "p75_max_down_natr": -0.409,
      "outcome_natr_moves": {
        "breakout": {
          "n": 189,
          "max_up_natr": {
            "n": 189,
            "mean": 4.269,
            "median": 3.03,
            "p25": 1.863,
            "p75": 4.779,
            "hist": {
              "bin_edges": [
                0.0,
                0.25,
                0.5,
                0.75,
                1.0,
                1.25,
                1.5,
                1.75,
                2.0,
                2.25,
                2.5,
                2.75,
                3.0,
                3.25,
                3.5,
                3.75,
                4.0
              ],
              "counts": [
                0,
                0,
                0,
                3,
                10,
                9,
                17,
                15,
                14,
                9,
                8,
                8,
                8,
                12,
                11,
                65
              ],
              "bin_centers": [
                0.125,
                0.375,
                0.625,
                0.875,
                1.125,
                1.375,
                1.625,
                1.875,
                2.125,
                2.375,
                2.625,
                2.875,
                3.125,
                3.375,
                3.625,
                3.875
              ],
              "clip_lo": 0.0,
              "clip_hi": 4.0
            }
          },
          "max_down_natr": {
            "n": 189,
            "mean": -0.896,
            "median": -0.703,
            "p25": -1.335,
            "p75": -0.344,
            "hist": {
              "bin_edges": [
                -4.0,
                -3.75,
                -3.5,
                -3.25,
                -3.0,
                -2.75,
                -2.5,
                -2.25,
                -2.0,
                -1.75,
                -1.5,
                -1.25,
                -1.0,
                -0.75,
                -0.5,
                -0.25,
                0.0
              ],
              "counts": [
                1,
                1,
                1,
                1,
                1,
                2,
                4,
                5,
                9,
                11,
                17,
                9,
                26,
                33,
                30,
                38
              ],
              "bin_centers": [
                -3.875,
                -3.625,
                -3.375,
                -3.125,
                -2.875,
                -2.625,
                -2.375,
                -2.125,
                -1.875,
                -1.625,
                -1.375,
                -1.125,
                -0.875,
                -0.625,
                -0.375,
                -0.125
              ],
              "clip_lo": -4.0,
              "clip_hi": 0.0
            }
          }
        },
        "breakdown": {
          "n": 23,
          "max_up_natr": {
            "n": 23,
            "mean": 1.052,
            "median": 0.936,
            "p25": 0.396,
            "p75": 1.189,
            "hist": {
              "bin_edges": [
                0.0,
                0.25,
                0.5,
                0.75,
                1.0,
                1.25,
                1.5,
                1.75,
                2.0,
                2.25,
                2.5,
                2.75,
                3.0,
                3.25,
                3.5,
                3.75,
                4.0
              ],
              "counts": [
                4,
                5,
                0,
                4,
                5,
                1,
                1,
                1,
                1,
                0,
                0,
                0,
                0,
                0,
                0,
                1
              ],
              "bin_centers": [
                0.125,
                0.375,
                0.625,
                0.875,
                1.125,
                1.375,
                1.625,
                1.875,
                2.125,
                2.375,
                2.625,
                2.875,
                3.125,
                3.375,
                3.625,
                3.875
              ],
              "clip_lo": 0.0,
              "clip_hi": 4.0
            }
          },
          "max_down_natr": {
            "n": 23,
            "mean": -2.927,
            "median": -2.868,
            "p25": -4.071,
            "p75": -1.995,
            "hist": {
              "bin_edges": [
                -4.0,
                -3.75,
                -3.5,
                -3.25,
                -3.0,
                -2.75,
                -2.5,
                -2.25,
                -2.0,
                -1.75,
                -1.5,
                -1.25,
                -1.0,
                -0.75,
                -0.5,
                -0.25,
                0.0
              ],
              "counts": [
                8,
                0,
                0,
                2,
                2,
                2,
                1,
                2,
                2,
                1,
                0,
                1,
                1,
                1,
                0,
                0
              ],
              "bin_centers": [
                -3.875,
                -3.625,
                -3.375,
                -3.125,
                -2.875,
                -2.625,
                -2.375,
                -2.125,
                -1.875,
                -1.625,
                -1.375,
                -1.125,
                -0.875,
                -0.625,
                -0.375,
                -0.125
              ],
              "clip_lo": -4.0,
              "clip_hi": 0.0
            }
          }
        },
        "sideways": {
          "n": 30,
          "max_up_natr": {
            "n": 30,
            "mean": 0.672,
            "median": 0.666,
            "p25": 0.348,
            "p75": 0.951,
            "hist": {
              "bin_edges": [
                0.0,
                0.25,
                0.5,
                0.75,
                1.0,
                1.25,
                1.5,
                1.75,
                2.0,
                2.25,
                2.5,
                2.75,
                3.0,
                3.25,
                3.5,
                3.75,
                4.0
              ],
              "counts": [
                4,
                7,
                5,
                7,
                4,
                3,
                0,
                0,
                0,
                0,
                0,
                0,
                0,
                0,
                0,
                0
              ],
              "bin_centers": [
                0.125,
                0.375,
                0.625,
                0.875,
                1.125,
                1.375,
                1.625,
                1.875,
                2.125,
                2.375,
                2.625,
                2.875,
                3.125,
                3.375,
                3.625,
                3.875
              ],
              "clip_lo": 0.0,
              "clip_hi": 4.0
            }
          },
          "max_down_natr": {
            "n": 30,
            "mean": -1.247,
            "median": -1.153,
            "p25": -1.682,
            "p75": -0.817,
            "hist": {
              "bin_edges": [
                -4.0,
                -3.75,
                -3.5,
                -3.25,
                -3.0,
                -2.75,
                -2.5,
                -2.25,
                -2.0,
                -1.75,
                -1.5,
                -1.25,
                -1.0,
                -0.75,
                -0.5,
                -0.25,
                0.0
              ],
              "counts": [
                0,
                0,
                0,
                0,
                0,
                1,
                2,
                3,
                1,
                4,
                2,
                5,
                5,
                2,
                4,
                1
              ],
              "bin_centers": [
                -3.875,
                -3.625,
                -3.375,
                -3.125,
                -2.875,
                -2.625,
                -2.375,
                -2.125,
                -1.875,
                -1.625,
                -1.375,
                -1.125,
                -0.875,
                -0.625,
                -0.375,
                -0.125
              ],
              "clip_lo": -4.0,
              "clip_hi": 0.0
            }
          }
        },
        "forming": {
          "n": 0,
          "max_up_natr": {
            "n": 0,
            "mean": null,
            "median": null,
            "p25": null,
            "p75": null
          },
          "max_down_natr": {
            "n": 0,
            "mean": null,
            "median": null,
            "p25": null,
            "p75": null
          }
        }
      },
      "max_up_natr_hist": {
        "bin_edges": [
          0.0,
          0.25,
          0.5,
          0.75,
          1.0,
          1.25,
          1.5,
          1.75,
          2.0,
          2.25,
          2.5,
          2.75,
          3.0,
          3.25,
          3.5,
          3.75,
          4.0
        ],
        "counts": [
          8,
          12,
          5,
          14,
          19,
          13,
          18,
          16,
          15,
          9,
          8,
          8,
          8,
          12,
          11,
          66
        ],
        "bin_centers": [
          0.125,
          0.375,
          0.625,
          0.875,
          1.125,
          1.375,
          1.625,
          1.875,
          2.125,
          2.375,
          2.625,
          2.875,
          3.125,
          3.375,
          3.625,
          3.875
        ],
        "clip_lo": 0.0,
        "clip_hi": 4.0
      },
      "max_down_natr_hist": {
        "bin_edges": [
          -4.0,
          -3.75,
          -3.5,
          -3.25,
          -3.0,
          -2.75,
          -2.5,
          -2.25,
          -2.0,
          -1.75,
          -1.5,
          -1.25,
          -1.0,
          -0.75,
          -0.5,
          -0.25,
          0.0
        ],
        "counts": [
          9,
          1,
          1,
          3,
          3,
          5,
          7,
          10,
          12,
          16,
          19,
          15,
          32,
          36,
          34,
          39
        ],
        "bin_centers": [
          -3.875,
          -3.625,
          -3.375,
          -3.125,
          -2.875,
          -2.625,
          -2.375,
          -2.125,
          -1.875,
          -1.625,
          -1.375,
          -1.125,
          -0.875,
          -0.625,
          -0.375,
          -0.125
        ],
        "clip_lo": -4.0,
        "clip_hi": 0.0
      },
      "timestamp_min": 1557504000000,
      "timestamp_max": 1784527200000,
      "timestamp_min_iso": "2019-05-10T16:00:00Z",
      "timestamp_max_iso": "2026-07-20T06:00:00Z"
    },
    {
      "pattern_type": "triple_top",
      "pattern_name": "Triple Top",
      "bias": "bearish",
      "n": 119,
      "n_symbols": 102,
      "breakout_success_rate": 10.92,
      "breakdown_success_rate": 84.03,
      "sideways_rate": 5.05,
      "forming_rate": 0.0,
      "both_cleared_rate": 26.89,
      "breakout_success_rate_ci95": [
        6.5,
        17.8
      ],
      "breakdown_success_rate_ci95": [
        76.4,
        89.53
      ],
      "sideways_rate_ci95": [
        2.33,
        10.56
      ],
      "forming_rate_ci95": [
        0.0,
        3.13
      ],
      "both_sides_rate": 26.89,
      "expected_hit_rate": 84.03,
      "expected_hit_rate_ci95": [
        76.4,
        89.53
      ],
      "mean_ret_10c": -3.378,
      "median_ret_10c": -3.202,
      "std_ret_10c": 4.887,
      "win_rate_ret_gt0": 20.17,
      "p25_ret_10c": -5.895,
      "p75_ret_10c": -0.189,
      "mean_mfe": 2.307,
      "mean_mae": -7.022,
      "mfe_mae_ratio": 0.329,
      "max_up_natr": {
        "n": 119,
        "mean": 1.02,
        "median": 0.72,
        "p25": 0.336,
        "p75": 1.477,
        "hist": {
          "bin_edges": [
            0.0,
            0.25,
            0.5,
            0.75,
            1.0,
            1.25,
            1.5,
            1.75,
            2.0,
            2.25,
            2.5,
            2.75,
            3.0,
            3.25,
            3.5,
            3.75,
            4.0
          ],
          "counts": [
            20,
            23,
            18,
            13,
            7,
            10,
            9,
            3,
            3,
            0,
            7,
            2,
            1,
            0,
            1,
            2
          ],
          "bin_centers": [
            0.125,
            0.375,
            0.625,
            0.875,
            1.125,
            1.375,
            1.625,
            1.875,
            2.125,
            2.375,
            2.625,
            2.875,
            3.125,
            3.375,
            3.625,
            3.875
          ],
          "clip_lo": 0.0,
          "clip_hi": 4.0
        }
      },
      "max_down_natr": {
        "n": 119,
        "mean": -3.248,
        "median": -2.936,
        "p25": -4.532,
        "p75": -1.724,
        "hist": {
          "bin_edges": [
            -4.0,
            -3.75,
            -3.5,
            -3.25,
            -3.0,
            -2.75,
            -2.5,
            -2.25,
            -2.0,
            -1.75,
            -1.5,
            -1.25,
            -1.0,
            -0.75,
            -0.5,
            -0.25,
            0.0
          ],
          "counts": [
            43,
            4,
            3,
            9,
            5,
            8,
            7,
            7,
            2,
            9,
            6,
            3,
            2,
            5,
            5,
            1
          ],
          "bin_centers": [
            -3.875,
            -3.625,
            -3.375,
            -3.125,
            -2.875,
            -2.625,
            -2.375,
            -2.125,
            -1.875,
            -1.625,
            -1.375,
            -1.125,
            -0.875,
            -0.625,
            -0.375,
            -0.125
          ],
          "clip_lo": -4.0,
          "clip_hi": 0.0
        }
      },
      "median_max_up_natr": 0.72,
      "median_max_down_natr": -2.936,
      "mean_max_up_natr": 1.02,
      "mean_max_down_natr": -3.248,
      "p25_max_up_natr": 0.336,
      "p75_max_up_natr": 1.477,
      "p25_max_down_natr": -4.532,
      "p75_max_down_natr": -1.724,
      "outcome_natr_moves": {
        "breakout": {
          "n": 13,
          "max_up_natr": {
            "n": 13,
            "mean": 2.551,
            "median": 2.668,
            "p25": 1.583,
            "p75": 2.747
          },
          "max_down_natr": {
            "n": 13,
            "mean": -1.095,
            "median": -0.68,
            "p25": -1.583,
            "p75": -0.333
          }
        },
        "breakdown": {
          "n": 100,
          "max_up_natr": {
            "n": 100,
            "mean": 0.791,
            "median": 0.554,
            "p25": 0.295,
            "p75": 1.028,
            "hist": {
              "bin_edges": [
                0.0,
                0.25,
                0.5,
                0.75,
                1.0,
                1.25,
                1.5,
                1.75,
                2.0,
                2.25,
                2.5,
                2.75,
                3.0,
                3.25,
                3.5,
                3.75,
                4.0
              ],
              "counts": [
                20,
                23,
                18,
                11,
                7,
                5,
                7,
                3,
                2,
                0,
                1,
                1,
                0,
                0,
                1,
                1
              ],
              "bin_centers": [
                0.125,
                0.375,
                0.625,
                0.875,
                1.125,
                1.375,
                1.625,
                1.875,
                2.125,
                2.375,
                2.625,
                2.875,
                3.125,
                3.375,
                3.625,
                3.875
              ],
              "clip_lo": 0.0,
              "clip_hi": 4.0
            }
          },
          "max_down_natr": {
            "n": 100,
            "mean": -3.67,
            "median": -3.291,
            "p25": -4.693,
            "p75": -2.281,
            "hist": {
              "bin_edges": [
                -4.0,
                -3.75,
                -3.5,
                -3.25,
                -3.0,
                -2.75,
                -2.5,
                -2.25,
                -2.0,
                -1.75,
                -1.5,
                -1.25,
                -1.0,
                -0.75,
                -0.5,
                -0.25,
                0.0
              ],
              "counts": [
                43,
                4,
                3,
                8,
                5,
                7,
                6,
                7,
                2,
                7,
                6,
                1,
                0,
                1,
                0,
                0
              ],
              "bin_centers": [
                -3.875,
                -3.625,
                -3.375,
                -3.125,
                -2.875,
                -2.625,
                -2.375,
                -2.125,
                -1.875,
                -1.625,
                -1.375,
                -1.125,
                -0.875,
                -0.625,
                -0.375,
                -0.125
              ],
              "clip_lo": -4.0,
              "clip_hi": 0.0
            }
          }
        },
        "sideways": {
          "n": 6,
          "max_up_natr": {
            "n": 6,
            "mean": 1.523,
            "median": 1.432,
            "p25": 1.314,
            "p75": 1.47
          },
          "max_down_natr": {
            "n": 6,
            "mean": -0.873,
            "median": -0.82,
            "p25": -1.167,
            "p75": -0.458
          }
        },
        "forming": {
          "n": 0,
          "max_up_natr": {
            "n": 0,
            "mean": null,
            "median": null,
            "p25": null,
            "p75": null
          },
          "max_down_natr": {
            "n": 0,
            "mean": null,
            "median": null,
            "p25": null,
            "p75": null
          }
        }
      },
      "max_up_natr_hist": {
        "bin_edges": [
          0.0,
          0.25,
          0.5,
          0.75,
          1.0,
          1.25,
          1.5,
          1.75,
          2.0,
          2.25,
          2.5,
          2.75,
          3.0,
          3.25,
          3.5,
          3.75,
          4.0
        ],
        "counts": [
          20,
          23,
          18,
          13,
          7,
          10,
          9,
          3,
          3,
          0,
          7,
          2,
          1,
          0,
          1,
          2
        ],
        "bin_centers": [
          0.125,
          0.375,
          0.625,
          0.875,
          1.125,
          1.375,
          1.625,
          1.875,
          2.125,
          2.375,
          2.625,
          2.875,
          3.125,
          3.375,
          3.625,
          3.875
        ],
        "clip_lo": 0.0,
        "clip_hi": 4.0
      },
      "max_down_natr_hist": {
        "bin_edges": [
          -4.0,
          -3.75,
          -3.5,
          -3.25,
          -3.0,
          -2.75,
          -2.5,
          -2.25,
          -2.0,
          -1.75,
          -1.5,
          -1.25,
          -1.0,
          -0.75,
          -0.5,
          -0.25,
          0.0
        ],
        "counts": [
          43,
          4,
          3,
          9,
          5,
          8,
          7,
          7,
          2,
          9,
          6,
          3,
          2,
          5,
          5,
          1
        ],
        "bin_centers": [
          -3.875,
          -3.625,
          -3.375,
          -3.125,
          -2.875,
          -2.625,
          -2.375,
          -2.125,
          -1.875,
          -1.625,
          -1.375,
          -1.125,
          -0.875,
          -0.625,
          -0.375,
          -0.125
        ],
        "clip_lo": -4.0,
        "clip_hi": 0.0
      },
      "timestamp_min": 1586106000000,
      "timestamp_max": 1785081600000,
      "timestamp_min_iso": "2020-04-05T17:00:00Z",
      "timestamp_max_iso": "2026-07-26T16:00:00Z"
    },
    {
      "pattern_type": "inverted_cup_and_handle",
      "pattern_name": "Inverted Cup & Handle",
      "bias": "bearish",
      "n": 117,
      "n_symbols": 109,
      "breakout_success_rate": 34.19,
      "breakdown_success_rate": 64.1,
      "sideways_rate": 1.71,
      "forming_rate": 0.0,
      "both_cleared_rate": 30.77,
      "breakout_success_rate_ci95": [
        26.22,
        43.16
      ],
      "breakdown_success_rate_ci95": [
        55.09,
        72.22
      ],
      "sideways_rate_ci95": [
        0.47,
        6.02
      ],
      "forming_rate_ci95": [
        0.0,
        3.18
      ],
      "both_sides_rate": 30.77,
      "expected_hit_rate": 64.1,
      "expected_hit_rate_ci95": [
        55.09,
        72.22
      ],
      "mean_ret_10c": -1.316,
      "median_ret_10c": -0.56,
      "std_ret_10c": 5.932,
      "win_rate_ret_gt0": 42.74,
      "p25_ret_10c": -3.408,
      "p75_ret_10c": 1.644,
      "mean_mfe": 2.898,
      "mean_mae": -4.81,
      "mfe_mae_ratio": 0.602,
      "max_up_natr": {
        "n": 117,
        "mean": 1.609,
        "median": 1.035,
        "p25": 0.433,
        "p75": 2.467,
        "hist": {
          "bin_edges": [
            0.0,
            0.25,
            0.5,
            0.75,
            1.0,
            1.25,
            1.5,
            1.75,
            2.0,
            2.25,
            2.5,
            2.75,
            3.0,
            3.25,
            3.5,
            3.75,
            4.0
          ],
          "counts": [
            17,
            19,
            12,
            8,
            9,
            5,
            4,
            5,
            3,
            6,
            4,
            1,
            7,
            6,
            2,
            9
          ],
          "bin_centers": [
            0.125,
            0.375,
            0.625,
            0.875,
            1.125,
            1.375,
            1.625,
            1.875,
            2.125,
            2.375,
            2.625,
            2.875,
            3.125,
            3.375,
            3.625,
            3.875
          ],
          "clip_lo": 0.0,
          "clip_hi": 4.0
        }
      },
      "max_down_natr": {
        "n": 117,
        "mean": -2.616,
        "median": -2.169,
        "p25": -3.849,
        "p75": -1.041,
        "hist": {
          "bin_edges": [
            -4.0,
            -3.75,
            -3.5,
            -3.25,
            -3.0,
            -2.75,
            -2.5,
            -2.25,
            -2.0,
            -1.75,
            -1.5,
            -1.25,
            -1.0,
            -0.75,
            -0.5,
            -0.25,
            0.0
          ],
          "counts": [
            31,
            2,
            4,
            5,
            3,
            4,
            8,
            5,
            4,
            8,
            8,
            7,
            6,
            12,
            5,
            5
          ],
          "bin_centers": [
            -3.875,
            -3.625,
            -3.375,
            -3.125,
            -2.875,
            -2.625,
            -2.375,
            -2.125,
            -1.875,
            -1.625,
            -1.375,
            -1.125,
            -0.875,
            -0.625,
            -0.375,
            -0.125
          ],
          "clip_lo": -4.0,
          "clip_hi": 0.0
        }
      },
      "median_max_up_natr": 1.035,
      "median_max_down_natr": -2.169,
      "mean_max_up_natr": 1.609,
      "mean_max_down_natr": -2.616,
      "p25_max_up_natr": 0.433,
      "p75_max_up_natr": 2.467,
      "p25_max_down_natr": -3.849,
      "p75_max_down_natr": -1.041,
      "outcome_natr_moves": {
        "breakout": {
          "n": 40,
          "max_up_natr": {
            "n": 40,
            "mean": 2.52,
            "median": 2.373,
            "p25": 1.242,
            "p75": 3.206,
            "hist": {
              "bin_edges": [
                0.0,
                0.25,
                0.5,
                0.75,
                1.0,
                1.25,
                1.5,
                1.75,
                2.0,
                2.25,
                2.5,
                2.75,
                3.0,
                3.25,
                3.5,
                3.75,
                4.0
              ],
              "counts": [
                0,
                0,
                2,
                3,
                6,
                1,
                2,
                2,
                2,
                5,
                4,
                0,
                4,
                3,
                2,
                4
              ],
              "bin_centers": [
                0.125,
                0.375,
                0.625,
                0.875,
                1.125,
                1.375,
                1.625,
                1.875,
                2.125,
                2.375,
                2.625,
                2.875,
                3.125,
                3.375,
                3.625,
                3.875
              ],
              "clip_lo": 0.0,
              "clip_hi": 4.0
            }
          },
          "max_down_natr": {
            "n": 40,
            "mean": -1.284,
            "median": -0.728,
            "p25": -2.094,
            "p75": -0.495,
            "hist": {
              "bin_edges": [
                -4.0,
                -3.75,
                -3.5,
                -3.25,
                -3.0,
                -2.75,
                -2.5,
                -2.25,
                -2.0,
                -1.75,
                -1.5,
                -1.25,
                -1.0,
                -0.75,
                -0.5,
                -0.25,
                0.0
              ],
              "counts": [
                3,
                1,
                1,
                2,
                0,
                0,
                3,
                1,
                0,
                2,
                0,
                1,
                5,
                11,
                5,
                5
              ],
              "bin_centers": [
                -3.875,
                -3.625,
                -3.375,
                -3.125,
                -2.875,
                -2.625,
                -2.375,
                -2.125,
                -1.875,
                -1.625,
                -1.375,
                -1.125,
                -0.875,
                -0.625,
                -0.375,
                -0.125
              ],
              "clip_lo": -4.0,
              "clip_hi": 0.0
            }
          }
        },
        "breakdown": {
          "n": 75,
          "max_up_natr": {
            "n": 75,
            "mean": 1.149,
            "median": 0.567,
            "p25": 0.273,
            "p75": 1.523,
            "hist": {
              "bin_edges": [
                0.0,
                0.25,
                0.5,
                0.75,
                1.0,
                1.25,
                1.5,
                1.75,
                2.0,
                2.25,
                2.5,
                2.75,
                3.0,
                3.25,
                3.5,
                3.75,
                4.0
              ],
              "counts": [
                17,
                18,
                10,
                4,
                3,
                4,
                2,
                3,
                1,
                1,
                0,
                1,
                3,
                3,
                0,
                5
              ],
              "bin_centers": [
                0.125,
                0.375,
                0.625,
                0.875,
                1.125,
                1.375,
                1.625,
                1.875,
                2.125,
                2.375,
                2.625,
                2.875,
                3.125,
                3.375,
                3.625,
                3.875
              ],
              "clip_lo": 0.0,
              "clip_hi": 4.0
            }
          },
          "max_down_natr": {
            "n": 75,
            "mean": -3.376,
            "median": -2.947,
            "p25": -4.463,
            "p75": -1.735,
            "hist": {
              "bin_edges": [
                -4.0,
                -3.75,
                -3.5,
                -3.25,
                -3.0,
                -2.75,
                -2.5,
                -2.25,
                -2.0,
                -1.75,
                -1.5,
                -1.25,
                -1.0,
                -0.75,
                -0.5,
                -0.25,
                0.0
              ],
              "counts": [
                28,
                1,
                3,
                3,
                3,
                4,
                5,
                4,
                4,
                6,
                8,
                5,
                1,
                0,
                0,
                0
              ],
              "bin_centers": [
                -3.875,
                -3.625,
                -3.375,
                -3.125,
                -2.875,
                -2.625,
                -2.375,
                -2.125,
                -1.875,
                -1.625,
                -1.375,
                -1.125,
                -0.875,
                -0.625,
                -0.375,
                -0.125
              ],
              "clip_lo": -4.0,
              "clip_hi": 0.0
            }
          }
        },
        "sideways": {
          "n": 2,
          "max_up_natr": {
            "n": 2,
            "mean": 0.637,
            "median": 0.637,
            "p25": 0.556,
            "p75": 0.719
          },
          "max_down_natr": {
            "n": 2,
            "mean": -0.765,
            "median": -0.765,
            "p25": -0.894,
            "p75": -0.635
          }
        },
        "forming": {
          "n": 0,
          "max_up_natr": {
            "n": 0,
            "mean": null,
            "median": null,
            "p25": null,
            "p75": null
          },
          "max_down_natr": {
            "n": 0,
            "mean": null,
            "median": null,
            "p25": null,
            "p75": null
          }
        }
      },
      "max_up_natr_hist": {
        "bin_edges": [
          0.0,
          0.25,
          0.5,
          0.75,
          1.0,
          1.25,
          1.5,
          1.75,
          2.0,
          2.25,
          2.5,
          2.75,
          3.0,
          3.25,
          3.5,
          3.75,
          4.0
        ],
        "counts": [
          17,
          19,
          12,
          8,
          9,
          5,
          4,
          5,
          3,
          6,
          4,
          1,
          7,
          6,
          2,
          9
        ],
        "bin_centers": [
          0.125,
          0.375,
          0.625,
          0.875,
          1.125,
          1.375,
          1.625,
          1.875,
          2.125,
          2.375,
          2.625,
          2.875,
          3.125,
          3.375,
          3.625,
          3.875
        ],
        "clip_lo": 0.0,
        "clip_hi": 4.0
      },
      "max_down_natr_hist": {
        "bin_edges": [
          -4.0,
          -3.75,
          -3.5,
          -3.25,
          -3.0,
          -2.75,
          -2.5,
          -2.25,
          -2.0,
          -1.75,
          -1.5,
          -1.25,
          -1.0,
          -0.75,
          -0.5,
          -0.25,
          0.0
        ],
        "counts": [
          31,
          2,
          4,
          5,
          3,
          4,
          8,
          5,
          4,
          8,
          8,
          7,
          6,
          12,
          5,
          5
        ],
        "bin_centers": [
          -3.875,
          -3.625,
          -3.375,
          -3.125,
          -2.875,
          -2.625,
          -2.375,
          -2.125,
          -1.875,
          -1.625,
          -1.375,
          -1.125,
          -0.875,
          -0.625,
          -0.375,
          -0.125
        ],
        "clip_lo": -4.0,
        "clip_hi": 0.0
      },
      "timestamp_min": 1602594000000,
      "timestamp_max": 1785151800000,
      "timestamp_min_iso": "2020-10-13T13:00:00Z",
      "timestamp_max_iso": "2026-07-27T11:30:00Z"
    },
    {
      "pattern_type": "cup_and_handle",
      "pattern_name": "Cup & Handle",
      "bias": "bullish",
      "n": 91,
      "n_symbols": 88,
      "breakout_success_rate": 58.24,
      "breakdown_success_rate": 41.76,
      "sideways_rate": 0.0,
      "forming_rate": 0.0,
      "both_cleared_rate": 35.16,
      "breakout_success_rate_ci95": [
        47.98,
        67.84
      ],
      "breakdown_success_rate_ci95": [
        32.16,
        52.02
      ],
      "sideways_rate_ci95": [
        0.0,
        4.05
      ],
      "forming_rate_ci95": [
        0.0,
        4.05
      ],
      "both_sides_rate": 35.16,
      "expected_hit_rate": 58.24,
      "expected_hit_rate_ci95": [
        47.98,
        67.84
      ],
      "mean_ret_10c": 0.858,
      "median_ret_10c": 0.248,
      "std_ret_10c": 5.38,
      "win_rate_ret_gt0": 52.75,
      "p25_ret_10c": -2.053,
      "p75_ret_10c": 2.919,
      "mean_mfe": 5.212,
      "mean_mae": -3.463,
      "mfe_mae_ratio": 1.505,
      "max_up_natr": {
        "n": 91,
        "mean": 2.992,
        "median": 2.105,
        "p25": 0.818,
        "p75": 4.048,
        "hist": {
          "bin_edges": [
            0.0,
            0.25,
            0.5,
            0.75,
            1.0,
            1.25,
            1.5,
            1.75,
            2.0,
            2.25,
            2.5,
            2.75,
            3.0,
            3.25,
            3.5,
            3.75,
            4.0
          ],
          "counts": [
            7,
            5,
            9,
            9,
            3,
            3,
            5,
            2,
            6,
            5,
            2,
            2,
            4,
            2,
            2,
            25
          ],
          "bin_centers": [
            0.125,
            0.375,
            0.625,
            0.875,
            1.125,
            1.375,
            1.625,
            1.875,
            2.125,
            2.375,
            2.625,
            2.875,
            3.125,
            3.375,
            3.625,
            3.875
          ],
          "clip_lo": 0.0,
          "clip_hi": 4.0
        }
      },
      "max_down_natr": {
        "n": 91,
        "mean": -1.913,
        "median": -1.6,
        "p25": -2.821,
        "p75": -0.815,
        "hist": {
          "bin_edges": [
            -4.0,
            -3.75,
            -3.5,
            -3.25,
            -3.0,
            -2.75,
            -2.5,
            -2.25,
            -2.0,
            -1.75,
            -1.5,
            -1.25,
            -1.0,
            -0.75,
            -0.5,
            -0.25,
            0.0
          ],
          "counts": [
            9,
            4,
            4,
            1,
            7,
            2,
            4,
            2,
            9,
            7,
            5,
            7,
            10,
            6,
            5,
            9
          ],
          "bin_centers": [
            -3.875,
            -3.625,
            -3.375,
            -3.125,
            -2.875,
            -2.625,
            -2.375,
            -2.125,
            -1.875,
            -1.625,
            -1.375,
            -1.125,
            -0.875,
            -0.625,
            -0.375,
            -0.125
          ],
          "clip_lo": -4.0,
          "clip_hi": 0.0
        }
      },
      "median_max_up_natr": 2.105,
      "median_max_down_natr": -1.6,
      "mean_max_up_natr": 2.992,
      "mean_max_down_natr": -1.913,
      "p25_max_up_natr": 0.818,
      "p75_max_up_natr": 4.048,
      "p25_max_down_natr": -2.821,
      "p75_max_down_natr": -0.815,
      "outcome_natr_moves": {
        "breakout": {
          "n": 53,
          "max_up_natr": {
            "n": 53,
            "mean": 3.893,
            "median": 2.842,
            "p25": 1.901,
            "p75": 4.285,
            "hist": {
              "bin_edges": [
                0.0,
                0.25,
                0.5,
                0.75,
                1.0,
                1.25,
                1.5,
                1.75,
                2.0,
                2.25,
                2.5,
                2.75,
                3.0,
                3.25,
                3.5,
                3.75,
                4.0
              ],
              "counts": [
                0,
                0,
                1,
                3,
                1,
                3,
                4,
                2,
                5,
                5,
                1,
                2,
                4,
                0,
                2,
                20
              ],
              "bin_centers": [
                0.125,
                0.375,
                0.625,
                0.875,
                1.125,
                1.375,
                1.625,
                1.875,
                2.125,
                2.375,
                2.625,
                2.875,
                3.125,
                3.375,
                3.625,
                3.875
              ],
              "clip_lo": 0.0,
              "clip_hi": 4.0
            }
          },
          "max_down_natr": {
            "n": 53,
            "mean": -1.367,
            "median": -0.937,
            "p25": -1.869,
            "p75": -0.497,
            "hist": {
              "bin_edges": [
                -4.0,
                -3.75,
                -3.5,
                -3.25,
                -3.0,
                -2.75,
                -2.5,
                -2.25,
                -2.0,
                -1.75,
                -1.5,
                -1.25,
                -1.0,
                -0.75,
                -0.5,
                -0.25,
                0.0
              ],
              "counts": [
                3,
                0,
                1,
                0,
                3,
                1,
                1,
                1,
                5,
                3,
                3,
                4,
                8,
                6,
                5,
                9
              ],
              "bin_centers": [
                -3.875,
                -3.625,
                -3.375,
                -3.125,
                -2.875,
                -2.625,
                -2.375,
                -2.125,
                -1.875,
                -1.625,
                -1.375,
                -1.125,
                -0.875,
                -0.625,
                -0.375,
                -0.125
              ],
              "clip_lo": -4.0,
              "clip_hi": 0.0
            }
          }
        },
        "breakdown": {
          "n": 38,
          "max_up_natr": {
            "n": 38,
            "mean": 1.735,
            "median": 0.672,
            "p25": 0.312,
            "p75": 1.485,
            "hist": {
              "bin_edges": [
                0.0,
                0.25,
                0.5,
                0.75,
                1.0,
                1.25,
                1.5,
                1.75,
                2.0,
                2.25,
                2.5,
                2.75,
                3.0,
                3.25,
                3.5,
                3.75,
                4.0
              ],
              "counts": [
                7,
                5,
                8,
                6,
                2,
                0,
                1,
                0,
                1,
                0,
                1,
                0,
                0,
                2,
                0,
                5
              ],
              "bin_centers": [
                0.125,
                0.375,
                0.625,
                0.875,
                1.125,
                1.375,
                1.625,
                1.875,
                2.125,
                2.375,
                2.625,
                2.875,
                3.125,
                3.375,
                3.625,
                3.875
              ],
              "clip_lo": 0.0,
              "clip_hi": 4.0
            }
          },
          "max_down_natr": {
            "n": 38,
            "mean": -2.676,
            "median": -2.451,
            "p25": -3.496,
            "p75": -1.606,
            "hist": {
              "bin_edges": [
                -4.0,
                -3.75,
                -3.5,
                -3.25,
                -3.0,
                -2.75,
                -2.5,
                -2.25,
                -2.0,
                -1.75,
                -1.5,
                -1.25,
                -1.0,
                -0.75,
                -0.5,
                -0.25,
                0.0
              ],
              "counts": [
                6,
                4,
                3,
                1,
                4,
                1,
                3,
                1,
                4,
                4,
                2,
                3,
                2,
                0,
                0,
                0
              ],
              "bin_centers": [
                -3.875,
                -3.625,
                -3.375,
                -3.125,
                -2.875,
                -2.625,
                -2.375,
                -2.125,
                -1.875,
                -1.625,
                -1.375,
                -1.125,
                -0.875,
                -0.625,
                -0.375,
                -0.125
              ],
              "clip_lo": -4.0,
              "clip_hi": 0.0
            }
          }
        },
        "sideways": {
          "n": 0,
          "max_up_natr": {
            "n": 0,
            "mean": null,
            "median": null,
            "p25": null,
            "p75": null
          },
          "max_down_natr": {
            "n": 0,
            "mean": null,
            "median": null,
            "p25": null,
            "p75": null
          }
        },
        "forming": {
          "n": 0,
          "max_up_natr": {
            "n": 0,
            "mean": null,
            "median": null,
            "p25": null,
            "p75": null
          },
          "max_down_natr": {
            "n": 0,
            "mean": null,
            "median": null,
            "p25": null,
            "p75": null
          }
        }
      },
      "max_up_natr_hist": {
        "bin_edges": [
          0.0,
          0.25,
          0.5,
          0.75,
          1.0,
          1.25,
          1.5,
          1.75,
          2.0,
          2.25,
          2.5,
          2.75,
          3.0,
          3.25,
          3.5,
          3.75,
          4.0
        ],
        "counts": [
          7,
          5,
          9,
          9,
          3,
          3,
          5,
          2,
          6,
          5,
          2,
          2,
          4,
          2,
          2,
          25
        ],
        "bin_centers": [
          0.125,
          0.375,
          0.625,
          0.875,
          1.125,
          1.375,
          1.625,
          1.875,
          2.125,
          2.375,
          2.625,
          2.875,
          3.125,
          3.375,
          3.625,
          3.875
        ],
        "clip_lo": 0.0,
        "clip_hi": 4.0
      },
      "max_down_natr_hist": {
        "bin_edges": [
          -4.0,
          -3.75,
          -3.5,
          -3.25,
          -3.0,
          -2.75,
          -2.5,
          -2.25,
          -2.0,
          -1.75,
          -1.5,
          -1.25,
          -1.0,
          -0.75,
          -0.5,
          -0.25,
          0.0
        ],
        "counts": [
          9,
          4,
          4,
          1,
          7,
          2,
          4,
          2,
          9,
          7,
          5,
          7,
          10,
          6,
          5,
          9
        ],
        "bin_centers": [
          -3.875,
          -3.625,
          -3.375,
          -3.125,
          -2.875,
          -2.625,
          -2.375,
          -2.125,
          -1.875,
          -1.625,
          -1.375,
          -1.125,
          -0.875,
          -0.625,
          -0.375,
          -0.125
        ],
        "clip_lo": -4.0,
        "clip_hi": 0.0
      },
      "timestamp_min": 1553860800000,
      "timestamp_max": 1783188000000,
      "timestamp_min_iso": "2019-03-29T12:00:00Z",
      "timestamp_max_iso": "2026-07-04T18:00:00Z"
    }
  ],
  "leaderboard": [
    {
      "pattern_type": "double_top",
      "pattern_name": "Double Top",
      "timeframe": "1d",
      "bias": "bearish",
      "n": 6,
      "n_symbols": 6,
      "breakout_success_rate": 0.0,
      "breakdown_success_rate": 100.0,
      "sideways_rate": 0.0,
      "forming_rate": 0.0,
      "both_cleared_rate": 16.67,
      "breakout_success_rate_ci95": [
        0.0,
        39.03
      ],
      "breakdown_success_rate_ci95": [
        60.97,
        100.0
      ],
      "sideways_rate_ci95": [
        0.0,
        39.03
      ],
      "forming_rate_ci95": [
        0.0,
        39.03
      ],
      "both_sides_rate": 16.67,
      "expected_hit_rate": 100.0,
      "expected_hit_rate_ci95": [
        60.97,
        100.0
      ],
      "mean_ret_10c": -14.863,
      "median_ret_10c": -15.328,
      "std_ret_10c": 8.223,
      "win_rate_ret_gt0": 0.0,
      "p25_ret_10c": -16.791,
      "p75_ret_10c": -9.861,
      "mean_mfe": 9.733,
      "mean_mae": -29.181,
      "mfe_mae_ratio": 0.334,
      "max_up_natr": {
        "n": 6,
        "mean": 0.995,
        "median": 0.698,
        "p25": 0.596,
        "p75": 0.818
      },
      "max_down_natr": {
        "n": 6,
        "mean": -2.784,
        "median": -3.027,
        "p25": -3.307,
        "p75": -2.252
      },
      "median_max_up_natr": 0.698,
      "median_max_down_natr": -3.027,
      "mean_max_up_natr": 0.995,
      "mean_max_down_natr": -2.784,
      "p25_max_up_natr": 0.596,
      "p75_max_up_natr": 0.818,
      "p25_max_down_natr": -3.307,
      "p75_max_down_natr": -2.252,
      "outcome_natr_moves": {
        "breakout": {
          "n": 0,
          "max_up_natr": {
            "n": 0,
            "mean": null,
            "median": null,
            "p25": null,
            "p75": null
          },
          "max_down_natr": {
            "n": 0,
            "mean": null,
            "median": null,
            "p25": null,
            "p75": null
          }
        },
        "breakdown": {
          "n": 6,
          "max_up_natr": {
            "n": 6,
            "mean": 0.995,
            "median": 0.698,
            "p25": 0.596,
            "p75": 0.818
          },
          "max_down_natr": {
            "n": 6,
            "mean": -2.784,
            "median": -3.027,
            "p25": -3.307,
            "p75": -2.252
          }
        },
        "sideways": {
          "n": 0,
          "max_up_natr": {
            "n": 0,
            "mean": null,
            "median": null,
            "p25": null,
            "p75": null
          },
          "max_down_natr": {
            "n": 0,
            "mean": null,
            "median": null,
            "p25": null,
            "p75": null
          }
        },
        "forming": {
          "n": 0,
          "max_up_natr": {
            "n": 0,
            "mean": null,
            "median": null,
            "p25": null,
            "p75": null
          },
          "max_down_natr": {
            "n": 0,
            "mean": null,
            "median": null,
            "p25": null,
            "p75": null
          }
        }
      },
      "max_up_natr_hist": null,
      "max_down_natr_hist": null,
      "timestamp_min": 1556064000000,
      "timestamp_max": 1736380800000,
      "timestamp_min_iso": "2019-04-24T00:00:00Z",
      "timestamp_max_iso": "2025-01-09T00:00:00Z"
    },
    {
      "pattern_type": "channel_ascending",
      "pattern_name": "Ascending Channel",
      "timeframe": "1d",
      "bias": "bearish",
      "n": 1,
      "n_symbols": 1,
      "breakout_success_rate": 0.0,
      "breakdown_success_rate": 100.0,
      "sideways_rate": 0.0,
      "forming_rate": 0.0,
      "both_cleared_rate": 0.0,
      "breakout_success_rate_ci95": [
        0.0,
        79.35
      ],
      "breakdown_success_rate_ci95": [
        20.65,
        100.0
      ],
      "sideways_rate_ci95": [
        0.0,
        79.35
      ],
      "forming_rate_ci95": [
        0.0,
        79.35
      ],
      "both_sides_rate": 0.0,
      "expected_hit_rate": 100.0,
      "expected_hit_rate_ci95": [
        20.65,
        100.0
      ],
      "mean_ret_10c": -23.487,
      "median_ret_10c": -23.487,
      "std_ret_10c": null,
      "win_rate_ret_gt0": 0.0,
      "p25_ret_10c": -23.487,
      "p75_ret_10c": -23.487,
      "mean_mfe": 1.211,
      "mean_mae": -33.898,
      "mfe_mae_ratio": 0.036,
      "max_up_natr": {
        "n": 1,
        "mean": 0.176,
        "median": 0.176,
        "p25": 0.176,
        "p75": 0.176
      },
      "max_down_natr": {
        "n": 1,
        "mean": -4.939,
        "median": -4.939,
        "p25": -4.939,
        "p75": -4.939
      },
      "median_max_up_natr": 0.176,
      "median_max_down_natr": -4.939,
      "mean_max_up_natr": 0.176,
      "mean_max_down_natr": -4.939,
      "p25_max_up_natr": 0.176,
      "p75_max_up_natr": 0.176,
      "p25_max_down_natr": -4.939,
      "p75_max_down_natr": -4.939,
      "outcome_natr_moves": {
        "breakout": {
          "n": 0,
          "max_up_natr": {
            "n": 0,
            "mean": null,
            "median": null,
            "p25": null,
            "p75": null
          },
          "max_down_natr": {
            "n": 0,
            "mean": null,
            "median": null,
            "p25": null,
            "p75": null
          }
        },
        "breakdown": {
          "n": 1,
          "max_up_natr": {
            "n": 1,
            "mean": 0.176,
            "median": 0.176,
            "p25": 0.176,
            "p75": 0.176
          },
          "max_down_natr": {
            "n": 1,
            "mean": -4.939,
            "median": -4.939,
            "p25": -4.939,
            "p75": -4.939
          }
        },
        "sideways": {
          "n": 0,
          "max_up_natr": {
            "n": 0,
            "mean": null,
            "median": null,
            "p25": null,
            "p75": null
          },
          "max_down_natr": {
            "n": 0,
            "mean": null,
            "median": null,
            "p25": null,
            "p75": null
          }
        },
        "forming": {
          "n": 0,
          "max_up_natr": {
            "n": 0,
            "mean": null,
            "median": null,
            "p25": null,
            "p75": null
          },
          "max_down_natr": {
            "n": 0,
            "mean": null,
            "median": null,
            "p25": null,
            "p75": null
          }
        }
      },
      "max_up_natr_hist": null,
      "max_down_natr_hist": null,
      "timestamp_min": 1667779200000,
      "timestamp_max": 1667779200000,
      "timestamp_min_iso": "2022-11-07T00:00:00Z",
      "timestamp_max_iso": "2022-11-07T00:00:00Z"
    },
    {
      "pattern_type": "channel_descending",
      "pattern_name": "Descending Channel",
      "timeframe": "1d",
      "bias": "bullish",
      "n": 1,
      "n_symbols": 1,
      "breakout_success_rate": 100.0,
      "breakdown_success_rate": 0.0,
      "sideways_rate": 0.0,
      "forming_rate": 0.0,
      "both_cleared_rate": 0.0,
      "breakout_success_rate_ci95": [
        20.65,
        100.0
      ],
      "breakdown_success_rate_ci95": [
        0.0,
        79.35
      ],
      "sideways_rate_ci95": [
        0.0,
        79.35
      ],
      "forming_rate_ci95": [
        0.0,
        79.35
      ],
      "both_sides_rate": 0.0,
      "expected_hit_rate": 100.0,
      "expected_hit_rate_ci95": [
        20.65,
        100.0
      ],
      "mean_ret_10c": 20.673,
      "median_ret_10c": 20.673,
      "std_ret_10c": null,
      "win_rate_ret_gt0": 100.0,
      "p25_ret_10c": 20.673,
      "p75_ret_10c": 20.673,
      "mean_mfe": 61.859,
      "mean_mae": -0.16,
      "mfe_mae_ratio": 386.619,
      "max_up_natr": {
        "n": 1,
        "mean": 6.225,
        "median": 6.225,
        "p25": 6.225,
        "p75": 6.225
      },
      "max_down_natr": {
        "n": 1,
        "mean": -0.016,
        "median": -0.016,
        "p25": -0.016,
        "p75": -0.016
      },
      "median_max_up_natr": 6.225,
      "median_max_down_natr": -0.016,
      "mean_max_up_natr": 6.225,
      "mean_max_down_natr": -0.016,
      "p25_max_up_natr": 6.225,
      "p75_max_up_natr": 6.225,
      "p25_max_down_natr": -0.016,
      "p75_max_down_natr": -0.016,
      "outcome_natr_moves": {
        "breakout": {
          "n": 1,
          "max_up_natr": {
            "n": 1,
            "mean": 6.225,
            "median": 6.225,
            "p25": 6.225,
            "p75": 6.225
          },
          "max_down_natr": {
            "n": 1,
            "mean": -0.016,
            "median": -0.016,
            "p25": -0.016,
            "p75": -0.016
          }
        },
        "breakdown": {
          "n": 0,
          "max_up_natr": {
            "n": 0,
            "mean": null,
            "median": null,
            "p25": null,
            "p75": null
          },
          "max_down_natr": {
            "n": 0,
            "mean": null,
            "median": null,
            "p25": null,
            "p75": null
          }
        },
        "sideways": {
          "n": 0,
          "max_up_natr": {
            "n": 0,
            "mean": null,
            "median": null,
            "p25": null,
            "p75": null
          },
          "max_down_natr": {
            "n": 0,
            "mean": null,
            "median": null,
            "p25": null,
            "p75": null
          }
        },
        "forming": {
          "n": 0,
          "max_up_natr": {
            "n": 0,
            "mean": null,
            "median": null,
            "p25": null,
            "p75": null
          },
          "max_down_natr": {
            "n": 0,
            "mean": null,
            "median": null,
            "p25": null,
            "p75": null
          }
        }
      },
      "max_up_natr_hist": null,
      "max_down_natr_hist": null,
      "timestamp_min": 1744934400000,
      "timestamp_max": 1744934400000,
      "timestamp_min_iso": "2025-04-18T00:00:00Z",
      "timestamp_max_iso": "2025-04-18T00:00:00Z"
    },
    {
      "pattern_type": "triple_top",
      "pattern_name": "Triple Top",
      "timeframe": "1d",
      "bias": "bearish",
      "n": 1,
      "n_symbols": 1,
      "breakout_success_rate": 0.0,
      "breakdown_success_rate": 100.0,
      "sideways_rate": 0.0,
      "forming_rate": 0.0,
      "both_cleared_rate": 0.0,
      "breakout_success_rate_ci95": [
        0.0,
        79.35
      ],
      "breakdown_success_rate_ci95": [
        20.65,
        100.0
      ],
      "sideways_rate_ci95": [
        0.0,
        79.35
      ],
      "forming_rate_ci95": [
        0.0,
        79.35
      ],
      "both_sides_rate": 0.0,
      "expected_hit_rate": 100.0,
      "expected_hit_rate_ci95": [
        20.65,
        100.0
      ],
      "mean_ret_10c": -14.342,
      "median_ret_10c": -14.342,
      "std_ret_10c": null,
      "win_rate_ret_gt0": 0.0,
      "p25_ret_10c": -14.342,
      "p75_ret_10c": -14.342,
      "mean_mfe": 1.793,
      "mean_mae": -20.66,
      "mfe_mae_ratio": 0.087,
      "max_up_natr": {
        "n": 1,
        "mean": 0.213,
        "median": 0.213,
        "p25": 0.213,
        "p75": 0.213
      },
      "max_down_natr": {
        "n": 1,
        "mean": -2.45,
        "median": -2.45,
        "p25": -2.45,
        "p75": -2.45
      },
      "median_max_up_natr": 0.213,
      "median_max_down_natr": -2.45,
      "mean_max_up_natr": 0.213,
      "mean_max_down_natr": -2.45,
      "p25_max_up_natr": 0.213,
      "p75_max_up_natr": 0.213,
      "p25_max_down_natr": -2.45,
      "p75_max_down_natr": -2.45,
      "outcome_natr_moves": {
        "breakout": {
          "n": 0,
          "max_up_natr": {
            "n": 0,
            "mean": null,
            "median": null,
            "p25": null,
            "p75": null
          },
          "max_down_natr": {
            "n": 0,
            "mean": null,
            "median": null,
            "p25": null,
            "p75": null
          }
        },
        "breakdown": {
          "n": 1,
          "max_up_natr": {
            "n": 1,
            "mean": 0.213,
            "median": 0.213,
            "p25": 0.213,
            "p75": 0.213
          },
          "max_down_natr": {
            "n": 1,
            "mean": -2.45,
            "median": -2.45,
            "p25": -2.45,
            "p75": -2.45
          }
        },
        "sideways": {
          "n": 0,
          "max_up_natr": {
            "n": 0,
            "mean": null,
            "median": null,
            "p25": null,
            "p75": null
          },
          "max_down_natr": {
            "n": 0,
            "mean": null,
            "median": null,
            "p25": null,
            "p75": null
          }
        },
        "forming": {
          "n": 0,
          "max_up_natr": {
            "n": 0,
            "mean": null,
            "median": null,
            "p25": null,
            "p75": null
          },
          "max_down_natr": {
            "n": 0,
            "mean": null,
            "median": null,
            "p25": null,
            "p75": null
          }
        }
      },
      "max_up_natr_hist": null,
      "max_down_natr_hist": null,
      "timestamp_min": 1758240000000,
      "timestamp_max": 1758240000000,
      "timestamp_min_iso": "2025-09-19T00:00:00Z",
      "timestamp_max_iso": "2025-09-19T00:00:00Z"
    },
    {
      "pattern_type": "triple_bottom",
      "pattern_name": "Triple Bottom",
      "timeframe": "4h",
      "bias": "bullish",
      "n": 69,
      "n_symbols": 66,
      "breakout_success_rate": 88.41,
      "breakdown_success_rate": 5.8,
      "sideways_rate": 5.79,
      "forming_rate": 0.0,
      "both_cleared_rate": 30.43,
      "breakout_success_rate_ci95": [
        78.75,
        94.01
      ],
      "breakdown_success_rate_ci95": [
        2.28,
        13.98
      ],
      "sideways_rate_ci95": [
        2.28,
        13.98
      ],
      "forming_rate_ci95": [
        0.0,
        5.27
      ],
      "both_sides_rate": 30.43,
      "expected_hit_rate": 88.41,
      "expected_hit_rate_ci95": [
        78.75,
        94.01
      ],
      "mean_ret_10c": 10.061,
      "median_ret_10c": 5.631,
      "std_ret_10c": 30.403,
      "win_rate_ret_gt0": 81.16,
      "p25_ret_10c": 1.044,
      "p75_ret_10c": 10.607,
      "mean_mfe": 18.062,
      "mean_mae": -4.264,
      "mfe_mae_ratio": 4.236,
      "max_up_natr": {
        "n": 69,
        "mean": 3.793,
        "median": 3.086,
        "p25": 1.765,
        "p75": 4.648,
        "hist": {
          "bin_edges": [
            0.0,
            0.25,
            0.5,
            0.75,
            1.0,
            1.25,
            1.5,
            1.75,
            2.0,
            2.25,
            2.5,
            2.75,
            3.0,
            3.25,
            3.5,
            3.75,
            4.0
          ],
          "counts": [
            1,
            1,
            0,
            3,
            3,
            4,
            4,
            5,
            3,
            3,
            6,
            0,
            3,
            6,
            6,
            21
          ],
          "bin_centers": [
            0.125,
            0.375,
            0.625,
            0.875,
            1.125,
            1.375,
            1.625,
            1.875,
            2.125,
            2.375,
            2.625,
            2.875,
            3.125,
            3.375,
            3.625,
            3.875
          ],
          "clip_lo": 0.0,
          "clip_hi": 4.0
        }
      },
      "max_down_natr": {
        "n": 69,
        "mean": -1.07,
        "median": -0.758,
        "p25": -1.437,
        "p75": -0.445,
        "hist": {
          "bin_edges": [
            -4.0,
            -3.75,
            -3.5,
            -3.25,
            -3.0,
            -2.75,
            -2.5,
            -2.25,
            -2.0,
            -1.75,
            -1.5,
            -1.25,
            -1.0,
            -0.75,
            -0.5,
            -0.25,
            0.0
          ],
          "counts": [
            2,
            0,
            1,
            0,
            1,
            0,
            3,
            4,
            3,
            2,
            6,
            4,
            10,
            11,
            14,
            8
          ],
          "bin_centers": [
            -3.875,
            -3.625,
            -3.375,
            -3.125,
            -2.875,
            -2.625,
            -2.375,
            -2.125,
            -1.875,
            -1.625,
            -1.375,
            -1.125,
            -0.875,
            -0.625,
            -0.375,
            -0.125
          ],
          "clip_lo": -4.0,
          "clip_hi": 0.0
        }
      },
      "median_max_up_natr": 3.086,
      "median_max_down_natr": -0.758,
      "mean_max_up_natr": 3.793,
      "mean_max_down_natr": -1.07,
      "p25_max_up_natr": 1.765,
      "p75_max_up_natr": 4.648,
      "p25_max_down_natr": -1.437,
      "p75_max_down_natr": -0.445,
      "outcome_natr_moves": {
        "breakout": {
          "n": 61,
          "max_up_natr": {
            "n": 61,
            "mean": 4.161,
            "median": 3.37,
            "p25": 2.225,
            "p75": 4.781,
            "hist": {
              "bin_edges": [
                0.0,
                0.25,
                0.5,
                0.75,
                1.0,
                1.25,
                1.5,
                1.75,
                2.0,
                2.25,
                2.5,
                2.75,
                3.0,
                3.25,
                3.5,
                3.75,
                4.0
              ],
              "counts": [
                0,
                0,
                0,
                1,
                2,
                2,
                4,
                5,
                2,
                3,
                6,
                0,
                3,
                6,
                6,
                21
              ],
              "bin_centers": [
                0.125,
                0.375,
                0.625,
                0.875,
                1.125,
                1.375,
                1.625,
                1.875,
                2.125,
                2.375,
                2.625,
                2.875,
                3.125,
                3.375,
                3.625,
                3.875
              ],
              "clip_lo": 0.0,
              "clip_hi": 4.0
            }
          },
          "max_down_natr": {
            "n": 61,
            "mean": -0.904,
            "median": -0.652,
            "p25": -1.285,
            "p75": -0.398,
            "hist": {
              "bin_edges": [
                -4.0,
                -3.75,
                -3.5,
                -3.25,
                -3.0,
                -2.75,
                -2.5,
                -2.25,
                -2.0,
                -1.75,
                -1.5,
                -1.25,
                -1.0,
                -0.75,
                -0.5,
                -0.25,
                0.0
              ],
              "counts": [
                0,
                0,
                1,
                0,
                1,
                0,
                2,
                2,
                3,
                1,
                6,
                3,
                9,
                11,
                14,
                8
              ],
              "bin_centers": [
                -3.875,
                -3.625,
                -3.375,
                -3.125,
                -2.875,
                -2.625,
                -2.375,
                -2.125,
                -1.875,
                -1.625,
                -1.375,
                -1.125,
                -0.875,
                -0.625,
                -0.375,
                -0.125
              ],
              "clip_lo": -4.0,
              "clip_hi": 0.0
            }
          }
        },
        "breakdown": {
          "n": 4,
          "max_up_natr": {
            "n": 4,
            "mean": 1.354,
            "median": 1.241,
            "p25": 1.078,
            "p75": 1.516
          },
          "max_down_natr": {
            "n": 4,
            "mean": -2.877,
            "median": -3.137,
            "p25": -4.205,
            "p75": -1.809
          }
        },
        "sideways": {
          "n": 4,
          "max_up_natr": {
            "n": 4,
            "mean": 0.611,
            "median": 0.564,
            "p25": 0.2,
            "p75": 0.975
          },
          "max_down_natr": {
            "n": 4,
            "mean": -1.792,
            "median": -1.854,
            "p25": -2.196,
            "p75": -1.45
          }
        },
        "forming": {
          "n": 0,
          "max_up_natr": {
            "n": 0,
            "mean": null,
            "median": null,
            "p25": null,
            "p75": null
          },
          "max_down_natr": {
            "n": 0,
            "mean": null,
            "median": null,
            "p25": null,
            "p75": null
          }
        }
      },
      "max_up_natr_hist": {
        "bin_edges": [
          0.0,
          0.25,
          0.5,
          0.75,
          1.0,
          1.25,
          1.5,
          1.75,
          2.0,
          2.25,
          2.5,
          2.75,
          3.0,
          3.25,
          3.5,
          3.75,
          4.0
        ],
        "counts": [
          1,
          1,
          0,
          3,
          3,
          4,
          4,
          5,
          3,
          3,
          6,
          0,
          3,
          6,
          6,
          21
        ],
        "bin_centers": [
          0.125,
          0.375,
          0.625,
          0.875,
          1.125,
          1.375,
          1.625,
          1.875,
          2.125,
          2.375,
          2.625,
          2.875,
          3.125,
          3.375,
          3.625,
          3.875
        ],
        "clip_lo": 0.0,
        "clip_hi": 4.0
      },
      "max_down_natr_hist": {
        "bin_edges": [
          -4.0,
          -3.75,
          -3.5,
          -3.25,
          -3.0,
          -2.75,
          -2.5,
          -2.25,
          -2.0,
          -1.75,
          -1.5,
          -1.25,
          -1.0,
          -0.75,
          -0.5,
          -0.25,
          0.0
        ],
        "counts": [
          2,
          0,
          1,
          0,
          1,
          0,
          3,
          4,
          3,
          2,
          6,
          4,
          10,
          11,
          14,
          8
        ],
        "bin_centers": [
          -3.875,
          -3.625,
          -3.375,
          -3.125,
          -2.875,
          -2.625,
          -2.375,
          -2.125,
          -1.875,
          -1.625,
          -1.375,
          -1.125,
          -0.875,
          -0.625,
          -0.375,
          -0.125
        ],
        "clip_lo": -4.0,
        "clip_hi": 0.0
      },
      "timestamp_min": 1557504000000,
      "timestamp_max": 1783843200000,
      "timestamp_min_iso": "2019-05-10T16:00:00Z",
      "timestamp_max_iso": "2026-07-12T08:00:00Z"
    },
    {
      "pattern_type": "triple_top",
      "pattern_name": "Triple Top",
      "timeframe": "15m",
      "bias": "bearish",
      "n": 14,
      "n_symbols": 14,
      "breakout_success_rate": 7.14,
      "breakdown_success_rate": 85.71,
      "sideways_rate": 7.15,
      "forming_rate": 0.0,
      "both_cleared_rate": 50.0,
      "breakout_success_rate_ci95": [
        1.27,
        31.47
      ],
      "breakdown_success_rate_ci95": [
        60.06,
        95.99
      ],
      "sideways_rate_ci95": [
        1.27,
        31.47
      ],
      "forming_rate_ci95": [
        0.0,
        21.53
      ],
      "both_sides_rate": 50.0,
      "expected_hit_rate": 85.71,
      "expected_hit_rate_ci95": [
        60.06,
        95.99
      ],
      "mean_ret_10c": -2.039,
      "median_ret_10c": -1.995,
      "std_ret_10c": 2.133,
      "win_rate_ret_gt0": 14.29,
      "p25_ret_10c": -3.499,
      "p75_ret_10c": -0.97,
      "mean_mfe": 1.466,
      "mean_mae": -3.39,
      "mfe_mae_ratio": 0.432,
      "max_up_natr": {
        "n": 14,
        "mean": 0.914,
        "median": 0.944,
        "p25": 0.341,
        "p75": 1.511
      },
      "max_down_natr": {
        "n": 14,
        "mean": -2.369,
        "median": -2.387,
        "p25": -3.051,
        "p75": -1.575
      },
      "median_max_up_natr": 0.944,
      "median_max_down_natr": -2.387,
      "mean_max_up_natr": 0.914,
      "mean_max_down_natr": -2.369,
      "p25_max_up_natr": 0.341,
      "p75_max_up_natr": 1.511,
      "p25_max_down_natr": -3.051,
      "p75_max_down_natr": -1.575,
      "outcome_natr_moves": {
        "breakout": {
          "n": 1,
          "max_up_natr": {
            "n": 1,
            "mean": 1.583,
            "median": 1.583,
            "p25": 1.583,
            "p75": 1.583
          },
          "max_down_natr": {
            "n": 1,
            "mean": -1.583,
            "median": -1.583,
            "p25": -1.583,
            "p75": -1.583
          }
        },
        "breakdown": {
          "n": 12,
          "max_up_natr": {
            "n": 12,
            "mean": 0.862,
            "median": 0.916,
            "p25": 0.248,
            "p75": 1.43
          },
          "max_down_natr": {
            "n": 12,
            "mean": -2.531,
            "median": -2.649,
            "p25": -3.129,
            "p75": -1.917
          }
        },
        "sideways": {
          "n": 1,
          "max_up_natr": {
            "n": 1,
            "mean": 0.863,
            "median": 0.863,
            "p25": 0.863,
            "p75": 0.863
          },
          "max_down_natr": {
            "n": 1,
            "mean": -1.208,
            "median": -1.208,
            "p25": -1.208,
            "p75": -1.208
          }
        },
        "forming": {
          "n": 0,
          "max_up_natr": {
            "n": 0,
            "mean": null,
            "median": null,
            "p25": null,
            "p75": null
          },
          "max_down_natr": {
            "n": 0,
            "mean": null,
            "median": null,
            "p25": null,
            "p75": null
          }
        }
      },
      "max_up_natr_hist": null,
      "max_down_natr_hist": null,
      "timestamp_min": 1775368800000,
      "timestamp_max": 1784957400000,
      "timestamp_min_iso": "2026-04-05T06:00:00Z",
      "timestamp_max_iso": "2026-07-25T05:30:00Z"
    },
    {
      "pattern_type": "triple_top",
      "pattern_name": "Triple Top",
      "timeframe": "1h",
      "bias": "bearish",
      "n": 88,
      "n_symbols": 78,
      "breakout_success_rate": 11.36,
      "breakdown_success_rate": 84.09,
      "sideways_rate": 4.55,
      "forming_rate": 0.0,
      "both_cleared_rate": 25.0,
      "breakout_success_rate_ci95": [
        6.29,
        19.67
      ],
      "breakdown_success_rate_ci95": [
        75.05,
        90.28
      ],
      "sideways_rate_ci95": [
        1.78,
        11.11
      ],
      "forming_rate_ci95": [
        0.0,
        4.18
      ],
      "both_sides_rate": 25.0,
      "expected_hit_rate": 84.09,
      "expected_hit_rate_ci95": [
        75.05,
        90.28
      ],
      "mean_ret_10c": -3.212,
      "median_ret_10c": -3.253,
      "std_ret_10c": 4.094,
      "win_rate_ret_gt0": 21.59,
      "p25_ret_10c": -5.466,
      "p75_ret_10c": -0.12,
      "mean_mfe": 2.072,
      "mean_mae": -6.374,
      "mfe_mae_ratio": 0.325,
      "max_up_natr": {
        "n": 88,
        "mean": 1.047,
        "median": 0.744,
        "p25": 0.404,
        "p75": 1.476,
        "hist": {
          "bin_edges": [
            0.0,
            0.25,
            0.5,
            0.75,
            1.0,
            1.25,
            1.5,
            1.75,
            2.0,
            2.25,
            2.5,
            2.75,
            3.0,
            3.25,
            3.5,
            3.75,
            4.0
          ],
          "counts": [
            14,
            16,
            14,
            11,
            5,
            8,
            5,
            2,
            3,
            0,
            5,
            2,
            1,
            0,
            1,
            1
          ],
          "bin_centers": [
            0.125,
            0.375,
            0.625,
            0.875,
            1.125,
            1.375,
            1.625,
            1.875,
            2.125,
            2.375,
            2.625,
            2.875,
            3.125,
            3.375,
            3.625,
            3.875
          ],
          "clip_lo": 0.0,
          "clip_hi": 4.0
        }
      },
      "max_down_natr": {
        "n": 88,
        "mean": -3.427,
        "median": -3.213,
        "p25": -4.72,
        "p75": -1.846,
        "hist": {
          "bin_edges": [
            -4.0,
            -3.75,
            -3.5,
            -3.25,
            -3.0,
            -2.75,
            -2.5,
            -2.25,
            -2.0,
            -1.75,
            -1.5,
            -1.25,
            -1.0,
            -0.75,
            -0.5,
            -0.25,
            0.0
          ],
          "counts": [
            38,
            3,
            2,
            4,
            2,
            6,
            5,
            4,
            2,
            6,
            4,
            1,
            1,
            5,
            4,
            1
          ],
          "bin_centers": [
            -3.875,
            -3.625,
            -3.375,
            -3.125,
            -2.875,
            -2.625,
            -2.375,
            -2.125,
            -1.875,
            -1.625,
            -1.375,
            -1.125,
            -0.875,
            -0.625,
            -0.375,
            -0.125
          ],
          "clip_lo": -4.0,
          "clip_hi": 0.0
        }
      },
      "median_max_up_natr": 0.744,
      "median_max_down_natr": -3.213,
      "mean_max_up_natr": 1.047,
      "mean_max_down_natr": -3.427,
      "p25_max_up_natr": 0.404,
      "p75_max_up_natr": 1.476,
      "p25_max_down_natr": -4.72,
      "p75_max_down_natr": -1.846,
      "outcome_natr_moves": {
        "breakout": {
          "n": 10,
          "max_up_natr": {
            "n": 10,
            "mean": 2.632,
            "median": 2.711,
            "p25": 1.66,
            "p75": 2.788
          },
          "max_down_natr": {
            "n": 10,
            "mean": -0.88,
            "median": -0.505,
            "p25": -0.807,
            "p75": -0.333
          }
        },
        "breakdown": {
          "n": 74,
          "max_up_natr": {
            "n": 74,
            "mean": 0.797,
            "median": 0.61,
            "p25": 0.32,
            "p75": 1.014,
            "hist": {
              "bin_edges": [
                0.0,
                0.25,
                0.5,
                0.75,
                1.0,
                1.25,
                1.5,
                1.75,
                2.0,
                2.25,
                2.5,
                2.75,
                3.0,
                3.25,
                3.5,
                3.75,
                4.0
              ],
              "counts": [
                14,
                16,
                14,
                10,
                5,
                4,
                4,
                2,
                2,
                0,
                1,
                1,
                0,
                0,
                1,
                0
              ],
              "bin_centers": [
                0.125,
                0.375,
                0.625,
                0.875,
                1.125,
                1.375,
                1.625,
                1.875,
                2.125,
                2.375,
                2.625,
                2.875,
                3.125,
                3.375,
                3.625,
                3.875
              ],
              "clip_lo": 0.0,
              "clip_hi": 4.0
            }
          },
          "max_down_natr": {
            "n": 74,
            "mean": -3.908,
            "median": -3.876,
            "p25": -5.102,
            "p75": -2.326,
            "hist": {
              "bin_edges": [
                -4.0,
                -3.75,
                -3.5,
                -3.25,
                -3.0,
                -2.75,
                -2.5,
                -2.25,
                -2.0,
                -1.75,
                -1.5,
                -1.25,
                -1.0,
                -0.75,
                -0.5,
                -0.25,
                0.0
              ],
              "counts": [
                38,
                3,
                2,
                4,
                2,
                5,
                4,
                4,
                2,
                5,
                4,
                0,
                0,
                1,
                0,
                0
              ],
              "bin_centers": [
                -3.875,
                -3.625,
                -3.375,
                -3.125,
                -2.875,
                -2.625,
                -2.375,
                -2.125,
                -1.875,
                -1.625,
                -1.375,
                -1.125,
                -0.875,
                -0.625,
                -0.375,
                -0.125
              ],
              "clip_lo": -4.0,
              "clip_hi": 0.0
            }
          }
        },
        "sideways": {
          "n": 4,
          "max_up_natr": {
            "n": 4,
            "mean": 1.719,
            "median": 1.469,
            "p25": 1.42,
            "p75": 1.767
          },
          "max_down_natr": {
            "n": 4,
            "mean": -0.904,
            "median": -0.82,
            "p25": -1.181,
            "p75": -0.543
          }
        },
        "forming": {
          "n": 0,
          "max_up_natr": {
            "n": 0,
            "mean": null,
            "median": null,
            "p25": null,
            "p75": null
          },
          "max_down_natr": {
            "n": 0,
            "mean": null,
            "median": null,
            "p25": null,
            "p75": null
          }
        }
      },
      "max_up_natr_hist": {
        "bin_edges": [
          0.0,
          0.25,
          0.5,
          0.75,
          1.0,
          1.25,
          1.5,
          1.75,
          2.0,
          2.25,
          2.5,
          2.75,
          3.0,
          3.25,
          3.5,
          3.75,
          4.0
        ],
        "counts": [
          14,
          16,
          14,
          11,
          5,
          8,
          5,
          2,
          3,
          0,
          5,
          2,
          1,
          0,
          1,
          1
        ],
        "bin_centers": [
          0.125,
          0.375,
          0.625,
          0.875,
          1.125,
          1.375,
          1.625,
          1.875,
          2.125,
          2.375,
          2.625,
          2.875,
          3.125,
          3.375,
          3.625,
          3.875
        ],
        "clip_lo": 0.0,
        "clip_hi": 4.0
      },
      "max_down_natr_hist": {
        "bin_edges": [
          -4.0,
          -3.75,
          -3.5,
          -3.25,
          -3.0,
          -2.75,
          -2.5,
          -2.25,
          -2.0,
          -1.75,
          -1.5,
          -1.25,
          -1.0,
          -0.75,
          -0.5,
          -0.25,
          0.0
        ],
        "counts": [
          38,
          3,
          2,
          4,
          2,
          6,
          5,
          4,
          2,
          6,
          4,
          1,
          1,
          5,
          4,
          1
        ],
        "bin_centers": [
          -3.875,
          -3.625,
          -3.375,
          -3.125,
          -2.875,
          -2.625,
          -2.375,
          -2.125,
          -1.875,
          -1.625,
          -1.375,
          -1.125,
          -0.875,
          -0.625,
          -0.375,
          -0.125
        ],
        "clip_lo": -4.0,
        "clip_hi": 0.0
      },
      "timestamp_min": 1586106000000,
      "timestamp_max": 1785081600000,
      "timestamp_min_iso": "2020-04-05T17:00:00Z",
      "timestamp_max_iso": "2026-07-26T16:00:00Z"
    },
    {
      "pattern_type": "bearish_flag",
      "pattern_name": "Bearish Flag",
      "timeframe": "4h",
      "bias": "bearish",
      "n": 1631,
      "n_symbols": 514,
      "breakout_success_rate": 14.53,
      "breakdown_success_rate": 82.4,
      "sideways_rate": 3.07,
      "forming_rate": 0.0,
      "both_cleared_rate": 35.5,
      "breakout_success_rate_ci95": [
        12.9,
        16.32
      ],
      "breakdown_success_rate_ci95": [
        80.48,
        84.17
      ],
      "sideways_rate_ci95": [
        2.33,
        4.02
      ],
      "forming_rate_ci95": [
        0.0,
        0.23
      ],
      "both_sides_rate": 35.5,
      "expected_hit_rate": 82.4,
      "expected_hit_rate_ci95": [
        80.48,
        84.17
      ],
      "mean_ret_10c": -0.827,
      "median_ret_10c": -1.37,
      "std_ret_10c": 12.55,
      "win_rate_ret_gt0": 42.86,
      "p25_ret_10c": -6.522,
      "p75_ret_10c": 3.742,
      "mean_mfe": 8.266,
      "mean_mae": -9.325,
      "mfe_mae_ratio": 0.886,
      "max_up_natr": {
        "n": 1631,
        "mean": 2.094,
        "median": 1.229,
        "p25": 0.387,
        "p75": 2.412,
        "hist": {
          "bin_edges": [
            0.0,
            0.25,
            0.5,
            0.75,
            1.0,
            1.25,
            1.5,
            1.75,
            2.0,
            2.25,
            2.5,
            2.75,
            3.0,
            3.25,
            3.5,
            3.75,
            4.0
          ],
          "counts": [
            256,
            220,
            132,
            107,
            111,
            87,
            107,
            93,
            62,
            69,
            54,
            31,
            35,
            26,
            19,
            222
          ],
          "bin_centers": [
            0.125,
            0.375,
            0.625,
            0.875,
            1.125,
            1.375,
            1.625,
            1.875,
            2.125,
            2.375,
            2.625,
            2.875,
            3.125,
            3.375,
            3.625,
            3.875
          ],
          "clip_lo": 0.0,
          "clip_hi": 4.0
        }
      },
      "max_down_natr": {
        "n": 1631,
        "mean": -2.439,
        "median": -1.885,
        "p25": -3.008,
        "p75": -1.104,
        "hist": {
          "bin_edges": [
            -4.0,
            -3.75,
            -3.5,
            -3.25,
            -3.0,
            -2.75,
            -2.5,
            -2.25,
            -2.0,
            -1.75,
            -1.5,
            -1.25,
            -1.0,
            -0.75,
            -0.5,
            -0.25,
            0.0
          ],
          "counts": [
            262,
            45,
            49,
            55,
            66,
            90,
            100,
            104,
            117,
            117,
            143,
            128,
            115,
            94,
            74,
            72
          ],
          "bin_centers": [
            -3.875,
            -3.625,
            -3.375,
            -3.125,
            -2.875,
            -2.625,
            -2.375,
            -2.125,
            -1.875,
            -1.625,
            -1.375,
            -1.125,
            -0.875,
            -0.625,
            -0.375,
            -0.125
          ],
          "clip_lo": -4.0,
          "clip_hi": 0.0
        }
      },
      "median_max_up_natr": 1.229,
      "median_max_down_natr": -1.885,
      "mean_max_up_natr": 2.094,
      "mean_max_down_natr": -2.439,
      "p25_max_up_natr": 0.387,
      "p75_max_up_natr": 2.412,
      "p25_max_down_natr": -3.008,
      "p75_max_down_natr": -1.104,
      "outcome_natr_moves": {
        "breakout": {
          "n": 237,
          "max_up_natr": {
            "n": 237,
            "mean": 4.657,
            "median": 3.199,
            "p25": 2.068,
            "p75": 4.591,
            "hist": {
              "bin_edges": [
                0.0,
                0.25,
                0.5,
                0.75,
                1.0,
                1.25,
                1.5,
                1.75,
                2.0,
                2.25,
                2.5,
                2.75,
                3.0,
                3.25,
                3.5,
                3.75,
                4.0
              ],
              "counts": [
                1,
                3,
                2,
                2,
                3,
                11,
                15,
                18,
                22,
                16,
                12,
                8,
                12,
                9,
                10,
                93
              ],
              "bin_centers": [
                0.125,
                0.375,
                0.625,
                0.875,
                1.125,
                1.375,
                1.625,
                1.875,
                2.125,
                2.375,
                2.625,
                2.875,
                3.125,
                3.375,
                3.625,
                3.875
              ],
              "clip_lo": 0.0,
              "clip_hi": 4.0
            }
          },
          "max_down_natr": {
            "n": 237,
            "mean": -1.173,
            "median": -0.734,
            "p25": -1.36,
            "p75": -0.371,
            "hist": {
              "bin_edges": [
                -4.0,
                -3.75,
                -3.5,
                -3.25,
                -3.0,
                -2.75,
                -2.5,
                -2.25,
                -2.0,
                -1.75,
                -1.5,
                -1.25,
                -1.0,
                -0.75,
                -0.5,
                -0.25,
                0.0
              ],
              "counts": [
                11,
                3,
                2,
                3,
                2,
                4,
                5,
                7,
                4,
                13,
                11,
                20,
                31,
                36,
                42,
                43
              ],
              "bin_centers": [
                -3.875,
                -3.625,
                -3.375,
                -3.125,
                -2.875,
                -2.625,
                -2.375,
                -2.125,
                -1.875,
                -1.625,
                -1.375,
                -1.125,
                -0.875,
                -0.625,
                -0.375,
                -0.125
              ],
              "clip_lo": -4.0,
              "clip_hi": 0.0
            }
          }
        },
        "breakdown": {
          "n": 1344,
          "max_up_natr": {
            "n": 1344,
            "mean": 1.676,
            "median": 0.969,
            "p25": 0.326,
            "p75": 1.983,
            "hist": {
              "bin_edges": [
                0.0,
                0.25,
                0.5,
                0.75,
                1.0,
                1.25,
                1.5,
                1.75,
                2.0,
                2.25,
                2.5,
                2.75,
                3.0,
                3.25,
                3.5,
                3.75,
                4.0
              ],
              "counts": [
                253,
                215,
                121,
                94,
                103,
                70,
                84,
                73,
                38,
                51,
                42,
                22,
                23,
                17,
                9,
                129
              ],
              "bin_centers": [
                0.125,
                0.375,
                0.625,
                0.875,
                1.125,
                1.375,
                1.625,
                1.875,
                2.125,
                2.375,
                2.625,
                2.875,
                3.125,
                3.375,
                3.625,
                3.875
              ],
              "clip_lo": 0.0,
              "clip_hi": 4.0
            }
          },
          "max_down_natr": {
            "n": 1344,
            "mean": -2.722,
            "median": -2.14,
            "p25": -3.291,
            "p75": -1.39,
            "hist": {
              "bin_edges": [
                -4.0,
                -3.75,
                -3.5,
                -3.25,
                -3.0,
                -2.75,
                -2.5,
                -2.25,
                -2.0,
                -1.75,
                -1.5,
                -1.25,
                -1.0,
                -0.75,
                -0.5,
                -0.25,
                0.0
              ],
              "counts": [
                251,
                42,
                47,
                52,
                64,
                86,
                95,
                97,
                112,
                99,
                122,
                105,
                77,
                49,
                24,
                22
              ],
              "bin_centers": [
                -3.875,
                -3.625,
                -3.375,
                -3.125,
                -2.875,
                -2.625,
                -2.375,
                -2.125,
                -1.875,
                -1.625,
                -1.375,
                -1.125,
                -0.875,
                -0.625,
                -0.375,
                -0.125
              ],
              "clip_lo": -4.0,
              "clip_hi": 0.0
            }
          }
        },
        "sideways": {
          "n": 50,
          "max_up_natr": {
            "n": 50,
            "mean": 1.155,
            "median": 1.029,
            "p25": 0.75,
            "p75": 1.527,
            "hist": {
              "bin_edges": [
                0.0,
                0.25,
                0.5,
                0.75,
                1.0,
                1.25,
                1.5,
                1.75,
                2.0,
                2.25,
                2.5,
                2.75,
                3.0,
                3.25,
                3.5,
                3.75,
                4.0
              ],
              "counts": [
                2,
                2,
                9,
                11,
                5,
                6,
                8,
                2,
                2,
                2,
                0,
                1,
                0,
                0,
                0,
                0
              ],
              "bin_centers": [
                0.125,
                0.375,
                0.625,
                0.875,
                1.125,
                1.375,
                1.625,
                1.875,
                2.125,
                2.375,
                2.625,
                2.875,
                3.125,
                3.375,
                3.625,
                3.875
              ],
              "clip_lo": 0.0,
              "clip_hi": 4.0
            }
          },
          "max_down_natr": {
            "n": 50,
            "mean": -0.848,
            "median": -0.789,
            "p25": -1.337,
            "p75": -0.45,
            "hist": {
              "bin_edges": [
                -4.0,
                -3.75,
                -3.5,
                -3.25,
                -3.0,
                -2.75,
                -2.5,
                -2.25,
                -2.0,
                -1.75,
                -1.5,
                -1.25,
                -1.0,
                -0.75,
                -0.5,
                -0.25,
                0.0
              ],
              "counts": [
                0,
                0,
                0,
                0,
                0,
                0,
                0,
                0,
                1,
                5,
                10,
                3,
                7,
                9,
                8,
                7
              ],
              "bin_centers": [
                -3.875,
                -3.625,
                -3.375,
                -3.125,
                -2.875,
                -2.625,
                -2.375,
                -2.125,
                -1.875,
                -1.625,
                -1.375,
                -1.125,
                -0.875,
                -0.625,
                -0.375,
                -0.125
              ],
              "clip_lo": -4.0,
              "clip_hi": 0.0
            }
          }
        },
        "forming": {
          "n": 0,
          "max_up_natr": {
            "n": 0,
            "mean": null,
            "median": null,
            "p25": null,
            "p75": null
          },
          "max_down_natr": {
            "n": 0,
            "mean": null,
            "median": null,
            "p25": null,
            "p75": null
          }
        }
      },
      "max_up_natr_hist": {
        "bin_edges": [
          0.0,
          0.25,
          0.5,
          0.75,
          1.0,
          1.25,
          1.5,
          1.75,
          2.0,
          2.25,
          2.5,
          2.75,
          3.0,
          3.25,
          3.5,
          3.75,
          4.0
        ],
        "counts": [
          256,
          220,
          132,
          107,
          111,
          87,
          107,
          93,
          62,
          69,
          54,
          31,
          35,
          26,
          19,
          222
        ],
        "bin_centers": [
          0.125,
          0.375,
          0.625,
          0.875,
          1.125,
          1.375,
          1.625,
          1.875,
          2.125,
          2.375,
          2.625,
          2.875,
          3.125,
          3.375,
          3.625,
          3.875
        ],
        "clip_lo": 0.0,
        "clip_hi": 4.0
      },
      "max_down_natr_hist": {
        "bin_edges": [
          -4.0,
          -3.75,
          -3.5,
          -3.25,
          -3.0,
          -2.75,
          -2.5,
          -2.25,
          -2.0,
          -1.75,
          -1.5,
          -1.25,
          -1.0,
          -0.75,
          -0.5,
          -0.25,
          0.0
        ],
        "counts": [
          262,
          45,
          49,
          55,
          66,
          90,
          100,
          104,
          117,
          117,
          143,
          128,
          115,
          94,
          74,
          72
        ],
        "bin_centers": [
          -3.875,
          -3.625,
          -3.375,
          -3.125,
          -2.875,
          -2.625,
          -2.375,
          -2.125,
          -1.875,
          -1.625,
          -1.375,
          -1.125,
          -0.875,
          -0.625,
          -0.375,
          -0.125
        ],
        "clip_lo": -4.0,
        "clip_hi": 0.0
      },
      "timestamp_min": 1510646400000,
      "timestamp_max": 1785110400000,
      "timestamp_min_iso": "2017-11-14T08:00:00Z",
      "timestamp_max_iso": "2026-07-27T00:00:00Z"
    },
    {
      "pattern_type": "bullish_flag",
      "pattern_name": "Bullish Flag",
      "timeframe": "4h",
      "bias": "bullish",
      "n": 948,
      "n_symbols": 388,
      "breakout_success_rate": 81.96,
      "breakdown_success_rate": 15.82,
      "sideways_rate": 2.22,
      "forming_rate": 0.0,
      "both_cleared_rate": 48.73,
      "breakout_success_rate_ci95": [
        79.39,
        84.28
      ],
      "breakdown_success_rate_ci95": [
        13.64,
        18.28
      ],
      "sideways_rate_ci95": [
        1.45,
        3.36
      ],
      "forming_rate_ci95": [
        0.0,
        0.4
      ],
      "both_sides_rate": 48.73,
      "expected_hit_rate": 81.96,
      "expected_hit_rate_ci95": [
        79.39,
        84.28
      ],
      "mean_ret_10c": 1.29,
      "median_ret_10c": 0.247,
      "std_ret_10c": 14.021,
      "win_rate_ret_gt0": 51.79,
      "p25_ret_10c": -5.626,
      "p75_ret_10c": 5.935,
      "mean_mfe": 12.37,
      "mean_mae": -7.888,
      "mfe_mae_ratio": 1.568,
      "max_up_natr": {
        "n": 948,
        "mean": 3.306,
        "median": 2.25,
        "p25": 1.202,
        "p75": 4.101,
        "hist": {
          "bin_edges": [
            0.0,
            0.25,
            0.5,
            0.75,
            1.0,
            1.25,
            1.5,
            1.75,
            2.0,
            2.25,
            2.5,
            2.75,
            3.0,
            3.25,
            3.5,
            3.75,
            4.0
          ],
          "counts": [
            51,
            41,
            49,
            50,
            59,
            58,
            58,
            53,
            55,
            48,
            45,
            23,
            41,
            31,
            22,
            264
          ],
          "bin_centers": [
            0.125,
            0.375,
            0.625,
            0.875,
            1.125,
            1.375,
            1.625,
            1.875,
            2.125,
            2.375,
            2.625,
            2.875,
            3.125,
            3.375,
            3.625,
            3.875
          ],
          "clip_lo": 0.0,
          "clip_hi": 4.0
        }
      },
      "max_down_natr": {
        "n": 948,
        "mean": -2.187,
        "median": -1.679,
        "p25": -2.983,
        "p75": -0.774,
        "hist": {
          "bin_edges": [
            -4.0,
            -3.75,
            -3.5,
            -3.25,
            -3.0,
            -2.75,
            -2.5,
            -2.25,
            -2.0,
            -1.75,
            -1.5,
            -1.25,
            -1.0,
            -0.75,
            -0.5,
            -0.25,
            0.0
          ],
          "counts": [
            155,
            22,
            27,
            32,
            33,
            32,
            48,
            52,
            57,
            53,
            64,
            70,
            75,
            70,
            72,
            86
          ],
          "bin_centers": [
            -3.875,
            -3.625,
            -3.375,
            -3.125,
            -2.875,
            -2.625,
            -2.375,
            -2.125,
            -1.875,
            -1.625,
            -1.375,
            -1.125,
            -0.875,
            -0.625,
            -0.375,
            -0.125
          ],
          "clip_lo": -4.0,
          "clip_hi": 0.0
        }
      },
      "median_max_up_natr": 2.25,
      "median_max_down_natr": -1.679,
      "mean_max_up_natr": 3.306,
      "mean_max_down_natr": -2.187,
      "p25_max_up_natr": 1.202,
      "p75_max_up_natr": 4.101,
      "p25_max_down_natr": -2.983,
      "p75_max_down_natr": -0.774,
      "outcome_natr_moves": {
        "breakout": {
          "n": 777,
          "max_up_natr": {
            "n": 777,
            "mean": 3.707,
            "median": 2.547,
            "p25": 1.549,
            "p75": 4.444,
            "hist": {
              "bin_edges": [
                0.0,
                0.25,
                0.5,
                0.75,
                1.0,
                1.25,
                1.5,
                1.75,
                2.0,
                2.25,
                2.5,
                2.75,
                3.0,
                3.25,
                3.5,
                3.75,
                4.0
              ],
              "counts": [
                20,
                13,
                21,
                40,
                45,
                50,
                48,
                47,
                52,
                46,
                42,
                20,
                39,
                29,
                20,
                245
              ],
              "bin_centers": [
                0.125,
                0.375,
                0.625,
                0.875,
                1.125,
                1.375,
                1.625,
                1.875,
                2.125,
                2.375,
                2.625,
                2.875,
                3.125,
                3.375,
                3.625,
                3.875
              ],
              "clip_lo": 0.0,
              "clip_hi": 4.0
            }
          },
          "max_down_natr": {
            "n": 777,
            "mean": -1.987,
            "median": -1.423,
            "p25": -2.705,
            "p75": -0.603,
            "hist": {
              "bin_edges": [
                -4.0,
                -3.75,
                -3.5,
                -3.25,
                -3.0,
                -2.75,
                -2.5,
                -2.25,
                -2.0,
                -1.75,
                -1.5,
                -1.25,
                -1.0,
                -0.75,
                -0.5,
                -0.25,
                0.0
              ],
              "counts": [
                109,
                15,
                18,
                25,
                21,
                27,
                32,
                37,
                42,
                45,
                54,
                59,
                70,
                67,
                71,
                85
              ],
              "bin_centers": [
                -3.875,
                -3.625,
                -3.375,
                -3.125,
                -2.875,
                -2.625,
                -2.375,
                -2.125,
                -1.875,
                -1.625,
                -1.375,
                -1.125,
                -0.875,
                -0.625,
                -0.375,
                -0.125
              ],
              "clip_lo": -4.0,
              "clip_hi": 0.0
            }
          }
        },
        "breakdown": {
          "n": 150,
          "max_up_natr": {
            "n": 150,
            "mean": 1.574,
            "median": 0.748,
            "p25": 0.378,
            "p75": 1.875,
            "hist": {
              "bin_edges": [
                0.0,
                0.25,
                0.5,
                0.75,
                1.0,
                1.25,
                1.5,
                1.75,
                2.0,
                2.25,
                2.5,
                2.75,
                3.0,
                3.25,
                3.5,
                3.75,
                4.0
              ],
              "counts": [
                30,
                21,
                25,
                8,
                11,
                5,
                9,
                6,
                2,
                2,
                3,
                3,
                2,
                2,
                2,
                19
              ],
              "bin_centers": [
                0.125,
                0.375,
                0.625,
                0.875,
                1.125,
                1.375,
                1.625,
                1.875,
                2.125,
                2.375,
                2.625,
                2.875,
                3.125,
                3.375,
                3.625,
                3.875
              ],
              "clip_lo": 0.0,
              "clip_hi": 4.0
            }
          },
          "max_down_natr": {
            "n": 150,
            "mean": -3.309,
            "median": -2.853,
            "p25": -3.968,
            "p75": -1.936,
            "hist": {
              "bin_edges": [
                -4.0,
                -3.75,
                -3.5,
                -3.25,
                -3.0,
                -2.75,
                -2.5,
                -2.25,
                -2.0,
                -1.75,
                -1.5,
                -1.25,
                -1.0,
                -0.75,
                -0.5,
                -0.25,
                0.0
              ],
              "counts": [
                45,
                7,
                8,
                7,
                12,
                5,
                13,
                13,
                15,
                7,
                7,
                7,
                3,
                0,
                0,
                1
              ],
              "bin_centers": [
                -3.875,
                -3.625,
                -3.375,
                -3.125,
                -2.875,
                -2.625,
                -2.375,
                -2.125,
                -1.875,
                -1.625,
                -1.375,
                -1.125,
                -0.875,
                -0.625,
                -0.375,
                -0.125
              ],
              "clip_lo": -4.0,
              "clip_hi": 0.0
            }
          }
        },
        "sideways": {
          "n": 21,
          "max_up_natr": {
            "n": 21,
            "mean": 0.842,
            "median": 0.745,
            "p25": 0.411,
            "p75": 1.245,
            "hist": {
              "bin_edges": [
                0.0,
                0.25,
                0.5,
                0.75,
                1.0,
                1.25,
                1.5,
                1.75,
                2.0,
                2.25,
                2.5,
                2.75,
                3.0,
                3.25,
                3.5,
                3.75,
                4.0
              ],
              "counts": [
                1,
                7,
                3,
                2,
                3,
                3,
                1,
                0,
                1,
                0,
                0,
                0,
                0,
                0,
                0,
                0
              ],
              "bin_centers": [
                0.125,
                0.375,
                0.625,
                0.875,
                1.125,
                1.375,
                1.625,
                1.875,
                2.125,
                2.375,
                2.625,
                2.875,
                3.125,
                3.375,
                3.625,
                3.875
              ],
              "clip_lo": 0.0,
              "clip_hi": 4.0
            }
          },
          "max_down_natr": {
            "n": 21,
            "mean": -1.606,
            "median": -1.272,
            "p25": -2.145,
            "p75": -0.997,
            "hist": {
              "bin_edges": [
                -4.0,
                -3.75,
                -3.5,
                -3.25,
                -3.0,
                -2.75,
                -2.5,
                -2.25,
                -2.0,
                -1.75,
                -1.5,
                -1.25,
                -1.0,
                -0.75,
                -0.5,
                -0.25,
                0.0
              ],
              "counts": [
                1,
                0,
                1,
                0,
                0,
                0,
                3,
                2,
                0,
                1,
                3,
                4,
                2,
                3,
                1,
                0
              ],
              "bin_centers": [
                -3.875,
                -3.625,
                -3.375,
                -3.125,
                -2.875,
                -2.625,
                -2.375,
                -2.125,
                -1.875,
                -1.625,
                -1.375,
                -1.125,
                -0.875,
                -0.625,
                -0.375,
                -0.125
              ],
              "clip_lo": -4.0,
              "clip_hi": 0.0
            }
          }
        },
        "forming": {
          "n": 0,
          "max_up_natr": {
            "n": 0,
            "mean": null,
            "median": null,
            "p25": null,
            "p75": null
          },
          "max_down_natr": {
            "n": 0,
            "mean": null,
            "median": null,
            "p25": null,
            "p75": null
          }
        }
      },
      "max_up_natr_hist": {
        "bin_edges": [
          0.0,
          0.25,
          0.5,
          0.75,
          1.0,
          1.25,
          1.5,
          1.75,
          2.0,
          2.25,
          2.5,
          2.75,
          3.0,
          3.25,
          3.5,
          3.75,
          4.0
        ],
        "counts": [
          51,
          41,
          49,
          50,
          59,
          58,
          58,
          53,
          55,
          48,
          45,
          23,
          41,
          31,
          22,
          264
        ],
        "bin_centers": [
          0.125,
          0.375,
          0.625,
          0.875,
          1.125,
          1.375,
          1.625,
          1.875,
          2.125,
          2.375,
          2.625,
          2.875,
          3.125,
          3.375,
          3.625,
          3.875
        ],
        "clip_lo": 0.0,
        "clip_hi": 4.0
      },
      "max_down_natr_hist": {
        "bin_edges": [
          -4.0,
          -3.75,
          -3.5,
          -3.25,
          -3.0,
          -2.75,
          -2.5,
          -2.25,
          -2.0,
          -1.75,
          -1.5,
          -1.25,
          -1.0,
          -0.75,
          -0.5,
          -0.25,
          0.0
        ],
        "counts": [
          155,
          22,
          27,
          32,
          33,
          32,
          48,
          52,
          57,
          53,
          64,
          70,
          75,
          70,
          72,
          86
        ],
        "bin_centers": [
          -3.875,
          -3.625,
          -3.375,
          -3.125,
          -2.875,
          -2.625,
          -2.375,
          -2.125,
          -1.875,
          -1.625,
          -1.375,
          -1.125,
          -0.875,
          -0.625,
          -0.375,
          -0.125
        ],
        "clip_lo": -4.0,
        "clip_hi": 0.0
      },
      "timestamp_min": 1511150400000,
      "timestamp_max": 1784721600000,
      "timestamp_min_iso": "2017-11-20T04:00:00Z",
      "timestamp_max_iso": "2026-07-22T12:00:00Z"
    },
    {
      "pattern_type": "bearish_flag",
      "pattern_name": "Bearish Flag",
      "timeframe": "1h",
      "bias": "bearish",
      "n": 4914,
      "n_symbols": 629,
      "breakout_success_rate": 15.1,
      "breakdown_success_rate": 81.42,
      "sideways_rate": 3.48,
      "forming_rate": 0.0,
      "both_cleared_rate": 39.19,
      "breakout_success_rate_ci95": [
        14.13,
        16.13
      ],
      "breakdown_success_rate_ci95": [
        80.31,
        82.48
      ],
      "sideways_rate_ci95": [
        3.0,
        4.03
      ],
      "forming_rate_ci95": [
        0.0,
        0.08
      ],
      "both_sides_rate": 39.19,
      "expected_hit_rate": 81.42,
      "expected_hit_rate_ci95": [
        80.31,
        82.48
      ],
      "mean_ret_10c": -0.637,
      "median_ret_10c": -0.54,
      "std_ret_10c": 6.095,
      "win_rate_ret_gt0": 43.83,
      "p25_ret_10c": -3.339,
      "p75_ret_10c": 1.984,
      "mean_mfe": 3.798,
      "mean_mae": -5.109,
      "mfe_mae_ratio": 0.743,
      "max_up_natr": {
        "n": 4914,
        "mean": 1.991,
        "median": 1.392,
        "p25": 0.499,
        "p75": 2.686,
        "hist": {
          "bin_edges": [
            0.0,
            0.25,
            0.5,
            0.75,
            1.0,
            1.25,
            1.5,
            1.75,
            2.0,
            2.25,
            2.5,
            2.75,
            3.0,
            3.25,
            3.5,
            3.75,
            4.0
          ],
          "counts": [
            733,
            498,
            386,
            362,
            310,
            294,
            281,
            271,
            229,
            191,
            171,
            138,
            129,
            121,
            115,
            685
          ],
          "bin_centers": [
            0.125,
            0.375,
            0.625,
            0.875,
            1.125,
            1.375,
            1.625,
            1.875,
            2.125,
            2.375,
            2.625,
            2.875,
            3.125,
            3.375,
            3.625,
            3.875
          ],
          "clip_lo": 0.0,
          "clip_hi": 4.0
        }
      },
      "max_down_natr": {
        "n": 4914,
        "mean": -2.903,
        "median": -2.106,
        "p25": -3.669,
        "p75": -1.142,
        "hist": {
          "bin_edges": [
            -4.0,
            -3.75,
            -3.5,
            -3.25,
            -3.0,
            -2.75,
            -2.5,
            -2.25,
            -2.0,
            -1.75,
            -1.5,
            -1.25,
            -1.0,
            -0.75,
            -0.5,
            -0.25,
            0.0
          ],
          "counts": [
            1193,
            131,
            154,
            170,
            217,
            213,
            230,
            267,
            295,
            322,
            349,
            328,
            324,
            318,
            225,
            178
          ],
          "bin_centers": [
            -3.875,
            -3.625,
            -3.375,
            -3.125,
            -2.875,
            -2.625,
            -2.375,
            -2.125,
            -1.875,
            -1.625,
            -1.375,
            -1.125,
            -0.875,
            -0.625,
            -0.375,
            -0.125
          ],
          "clip_lo": -4.0,
          "clip_hi": 0.0
        }
      },
      "median_max_up_natr": 1.392,
      "median_max_down_natr": -2.106,
      "mean_max_up_natr": 1.991,
      "mean_max_down_natr": -2.903,
      "p25_max_up_natr": 0.499,
      "p75_max_up_natr": 2.686,
      "p25_max_down_natr": -3.669,
      "p75_max_down_natr": -1.142,
      "outcome_natr_moves": {
        "breakout": {
          "n": 742,
          "max_up_natr": {
            "n": 742,
            "mean": 3.845,
            "median": 2.999,
            "p25": 2.037,
            "p75": 4.607,
            "hist": {
              "bin_edges": [
                0.0,
                0.25,
                0.5,
                0.75,
                1.0,
                1.25,
                1.5,
                1.75,
                2.0,
                2.25,
                2.5,
                2.75,
                3.0,
                3.25,
                3.5,
                3.75,
                4.0
              ],
              "counts": [
                7,
                3,
                8,
                8,
                23,
                36,
                41,
                52,
                46,
                49,
                57,
                41,
                37,
                36,
                28,
                270
              ],
              "bin_centers": [
                0.125,
                0.375,
                0.625,
                0.875,
                1.125,
                1.375,
                1.625,
                1.875,
                2.125,
                2.375,
                2.625,
                2.875,
                3.125,
                3.375,
                3.625,
                3.875
              ],
              "clip_lo": 0.0,
              "clip_hi": 4.0
            }
          },
          "max_down_natr": {
            "n": 742,
            "mean": -1.378,
            "median": -0.795,
            "p25": -1.476,
            "p75": -0.423,
            "hist": {
              "bin_edges": [
                -4.0,
                -3.75,
                -3.5,
                -3.25,
                -3.0,
                -2.75,
                -2.5,
                -2.25,
                -2.0,
                -1.75,
                -1.5,
                -1.25,
                -1.0,
                -0.75,
                -0.5,
                -0.25,
                0.0
              ],
              "counts": [
                57,
                3,
                4,
                7,
                13,
                17,
                14,
                18,
                26,
                24,
                42,
                67,
                93,
                140,
                108,
                109
              ],
              "bin_centers": [
                -3.875,
                -3.625,
                -3.375,
                -3.125,
                -2.875,
                -2.625,
                -2.375,
                -2.125,
                -1.875,
                -1.625,
                -1.375,
                -1.125,
                -0.875,
                -0.625,
                -0.375,
                -0.125
              ],
              "clip_lo": -4.0,
              "clip_hi": 0.0
            }
          }
        },
        "breakdown": {
          "n": 4001,
          "max_up_natr": {
            "n": 4001,
            "mean": 1.671,
            "median": 1.089,
            "p25": 0.385,
            "p75": 2.273,
            "hist": {
              "bin_edges": [
                0.0,
                0.25,
                0.5,
                0.75,
                1.0,
                1.25,
                1.5,
                1.75,
                2.0,
                2.25,
                2.5,
                2.75,
                3.0,
                3.25,
                3.5,
                3.75,
                4.0
              ],
              "counts": [
                718,
                485,
                366,
                341,
                265,
                235,
                211,
                195,
                170,
                134,
                113,
                95,
                90,
                83,
                86,
                414
              ],
              "bin_centers": [
                0.125,
                0.375,
                0.625,
                0.875,
                1.125,
                1.375,
                1.625,
                1.875,
                2.125,
                2.375,
                2.625,
                2.875,
                3.125,
                3.375,
                3.625,
                3.875
              ],
              "clip_lo": 0.0,
              "clip_hi": 4.0
            }
          },
          "max_down_natr": {
            "n": 4001,
            "mean": -3.277,
            "median": -2.475,
            "p25": -4.05,
            "p75": -1.494,
            "hist": {
              "bin_edges": [
                -4.0,
                -3.75,
                -3.5,
                -3.25,
                -3.0,
                -2.75,
                -2.5,
                -2.25,
                -2.0,
                -1.75,
                -1.5,
                -1.25,
                -1.0,
                -0.75,
                -0.5,
                -0.25,
                0.0
              ],
              "counts": [
                1136,
                128,
                150,
                163,
                203,
                195,
                214,
                249,
                265,
                292,
                298,
                244,
                202,
                127,
                81,
                54
              ],
              "bin_centers": [
                -3.875,
                -3.625,
                -3.375,
                -3.125,
                -2.875,
                -2.625,
                -2.375,
                -2.125,
                -1.875,
                -1.625,
                -1.375,
                -1.125,
                -0.875,
                -0.625,
                -0.375,
                -0.125
              ],
              "clip_lo": -4.0,
              "clip_hi": 0.0
            }
          }
        },
        "sideways": {
          "n": 171,
          "max_up_natr": {
            "n": 171,
            "mean": 1.447,
            "median": 1.475,
            "p25": 0.996,
            "p75": 1.877,
            "hist": {
              "bin_edges": [
                0.0,
                0.25,
                0.5,
                0.75,
                1.0,
                1.25,
                1.5,
                1.75,
                2.0,
                2.25,
                2.5,
                2.75,
                3.0,
                3.25,
                3.5,
                3.75,
                4.0
              ],
              "counts": [
                8,
                10,
                12,
                13,
                22,
                23,
                29,
                24,
                13,
                8,
                1,
                2,
                2,
                2,
                1,
                1
              ],
              "bin_centers": [
                0.125,
                0.375,
                0.625,
                0.875,
                1.125,
                1.375,
                1.625,
                1.875,
                2.125,
                2.375,
                2.625,
                2.875,
                3.125,
                3.375,
                3.625,
                3.875
              ],
              "clip_lo": 0.0,
              "clip_hi": 4.0
            }
          },
          "max_down_natr": {
            "n": 171,
            "mean": -0.762,
            "median": -0.662,
            "p25": -0.939,
            "p75": -0.435,
            "hist": {
              "bin_edges": [
                -4.0,
                -3.75,
                -3.5,
                -3.25,
                -3.0,
                -2.75,
                -2.5,
                -2.25,
                -2.0,
                -1.75,
                -1.5,
                -1.25,
                -1.0,
                -0.75,
                -0.5,
                -0.25,
                0.0
              ],
              "counts": [
                0,
                0,
                0,
                0,
                1,
                1,
                2,
                0,
                4,
                6,
                9,
                17,
                29,
                51,
                36,
                15
              ],
              "bin_centers": [
                -3.875,
                -3.625,
                -3.375,
                -3.125,
                -2.875,
                -2.625,
                -2.375,
                -2.125,
                -1.875,
                -1.625,
                -1.375,
                -1.125,
                -0.875,
                -0.625,
                -0.375,
                -0.125
              ],
              "clip_lo": -4.0,
              "clip_hi": 0.0
            }
          }
        },
        "forming": {
          "n": 0,
          "max_up_natr": {
            "n": 0,
            "mean": null,
            "median": null,
            "p25": null,
            "p75": null
          },
          "max_down_natr": {
            "n": 0,
            "mean": null,
            "median": null,
            "p25": null,
            "p75": null
          }
        }
      },
      "max_up_natr_hist": {
        "bin_edges": [
          0.0,
          0.25,
          0.5,
          0.75,
          1.0,
          1.25,
          1.5,
          1.75,
          2.0,
          2.25,
          2.5,
          2.75,
          3.0,
          3.25,
          3.5,
          3.75,
          4.0
        ],
        "counts": [
          733,
          498,
          386,
          362,
          310,
          294,
          281,
          271,
          229,
          191,
          171,
          138,
          129,
          121,
          115,
          685
        ],
        "bin_centers": [
          0.125,
          0.375,
          0.625,
          0.875,
          1.125,
          1.375,
          1.625,
          1.875,
          2.125,
          2.375,
          2.625,
          2.875,
          3.125,
          3.375,
          3.625,
          3.875
        ],
        "clip_lo": 0.0,
        "clip_hi": 4.0
      },
      "max_down_natr_hist": {
        "bin_edges": [
          -4.0,
          -3.75,
          -3.5,
          -3.25,
          -3.0,
          -2.75,
          -2.5,
          -2.25,
          -2.0,
          -1.75,
          -1.5,
          -1.25,
          -1.0,
          -0.75,
          -0.5,
          -0.25,
          0.0
        ],
        "counts": [
          1193,
          131,
          154,
          170,
          217,
          213,
          230,
          267,
          295,
          322,
          349,
          328,
          324,
          318,
          225,
          178
        ],
        "bin_centers": [
          -3.875,
          -3.625,
          -3.375,
          -3.125,
          -2.875,
          -2.625,
          -2.375,
          -2.125,
          -1.875,
          -1.625,
          -1.375,
          -1.125,
          -0.875,
          -0.625,
          -0.375,
          -0.125
        ],
        "clip_lo": -4.0,
        "clip_hi": 0.0
      },
      "timestamp_min": 1581886800000,
      "timestamp_max": 1785366000000,
      "timestamp_min_iso": "2020-02-16T21:00:00Z",
      "timestamp_max_iso": "2026-07-29T23:00:00Z"
    },
    {
      "pattern_type": "triple_top",
      "pattern_name": "Triple Top",
      "timeframe": "4h",
      "bias": "bearish",
      "n": 16,
      "n_symbols": 16,
      "breakout_success_rate": 12.5,
      "breakdown_success_rate": 81.25,
      "sideways_rate": 6.25,
      "forming_rate": 0.0,
      "both_cleared_rate": 18.75,
      "breakout_success_rate_ci95": [
        3.5,
        36.02
      ],
      "breakdown_success_rate_ci95": [
        56.99,
        93.41
      ],
      "sideways_rate_ci95": [
        1.11,
        28.33
      ],
      "forming_rate_ci95": [
        0.0,
        19.36
      ],
      "both_sides_rate": 18.75,
      "expected_hit_rate": 81.25,
      "expected_hit_rate_ci95": [
        56.99,
        93.41
      ],
      "mean_ret_10c": -4.779,
      "median_ret_10c": -6.573,
      "std_ret_10c": 8.646,
      "win_rate_ret_gt0": 18.75,
      "p25_ret_10c": -9.83,
      "p75_ret_10c": -1.399,
      "mean_mfe": 4.37,
      "mean_mae": -12.912,
      "mfe_mae_ratio": 0.338,
      "max_up_natr": {
        "n": 16,
        "mean": 1.013,
        "median": 0.502,
        "p25": 0.306,
        "p75": 1.467,
        "hist": {
          "bin_edges": [
            0.0,
            0.25,
            0.5,
            0.75,
            1.0,
            1.25,
            1.5,
            1.75,
            2.0,
            2.25,
            2.5,
            2.75,
            3.0,
            3.25,
            3.5,
            3.75,
            4.0
          ],
          "counts": [
            2,
            6,
            3,
            0,
            0,
            1,
            1,
            0,
            0,
            0,
            2,
            0,
            0,
            0,
            0,
            1
          ],
          "bin_centers": [
            0.125,
            0.375,
            0.625,
            0.875,
            1.125,
            1.375,
            1.625,
            1.875,
            2.125,
            2.375,
            2.625,
            2.875,
            3.125,
            3.375,
            3.625,
            3.875
          ],
          "clip_lo": 0.0,
          "clip_hi": 4.0
        }
      },
      "max_down_natr": {
        "n": 16,
        "mean": -3.08,
        "median": -2.95,
        "p25": -3.707,
        "p75": -2.048,
        "hist": {
          "bin_edges": [
            -4.0,
            -3.75,
            -3.5,
            -3.25,
            -3.0,
            -2.75,
            -2.5,
            -2.25,
            -2.0,
            -1.75,
            -1.5,
            -1.25,
            -1.0,
            -0.75,
            -0.5,
            -0.25,
            0.0
          ],
          "counts": [
            4,
            1,
            1,
            2,
            2,
            0,
            1,
            1,
            0,
            1,
            0,
            1,
            1,
            0,
            1,
            0
          ],
          "bin_centers": [
            -3.875,
            -3.625,
            -3.375,
            -3.125,
            -2.875,
            -2.625,
            -2.375,
            -2.125,
            -1.875,
            -1.625,
            -1.375,
            -1.125,
            -0.875,
            -0.625,
            -0.375,
            -0.125
          ],
          "clip_lo": -4.0,
          "clip_hi": 0.0
        }
      },
      "median_max_up_natr": 0.502,
      "median_max_down_natr": -2.95,
      "mean_max_up_natr": 1.013,
      "mean_max_down_natr": -3.08,
      "p25_max_up_natr": 0.306,
      "p75_max_up_natr": 1.467,
      "p25_max_down_natr": -3.707,
      "p75_max_down_natr": -2.048,
      "outcome_natr_moves": {
        "breakout": {
          "n": 2,
          "max_up_natr": {
            "n": 2,
            "mean": 2.634,
            "median": 2.634,
            "p25": 2.618,
            "p75": 2.651
          },
          "max_down_natr": {
            "n": 2,
            "mean": -1.926,
            "median": -1.926,
            "p25": -2.472,
            "p75": -1.38
          }
        },
        "breakdown": {
          "n": 13,
          "max_up_natr": {
            "n": 13,
            "mean": 0.734,
            "median": 0.404,
            "p25": 0.296,
            "p75": 0.55
          },
          "max_down_natr": {
            "n": 13,
            "mean": -3.463,
            "median": -3.096,
            "p25": -4.16,
            "p75": -2.291
          }
        },
        "sideways": {
          "n": 1,
          "max_up_natr": {
            "n": 1,
            "mean": 1.399,
            "median": 1.399,
            "p25": 1.399,
            "p75": 1.399
          },
          "max_down_natr": {
            "n": 1,
            "mean": -0.412,
            "median": -0.412,
            "p25": -0.412,
            "p75": -0.412
          }
        },
        "forming": {
          "n": 0,
          "max_up_natr": {
            "n": 0,
            "mean": null,
            "median": null,
            "p25": null,
            "p75": null
          },
          "max_down_natr": {
            "n": 0,
            "mean": null,
            "median": null,
            "p25": null,
            "p75": null
          }
        }
      },
      "max_up_natr_hist": {
        "bin_edges": [
          0.0,
          0.25,
          0.5,
          0.75,
          1.0,
          1.25,
          1.5,
          1.75,
          2.0,
          2.25,
          2.5,
          2.75,
          3.0,
          3.25,
          3.5,
          3.75,
          4.0
        ],
        "counts": [
          2,
          6,
          3,
          0,
          0,
          1,
          1,
          0,
          0,
          0,
          2,
          0,
          0,
          0,
          0,
          1
        ],
        "bin_centers": [
          0.125,
          0.375,
          0.625,
          0.875,
          1.125,
          1.375,
          1.625,
          1.875,
          2.125,
          2.375,
          2.625,
          2.875,
          3.125,
          3.375,
          3.625,
          3.875
        ],
        "clip_lo": 0.0,
        "clip_hi": 4.0
      },
      "max_down_natr_hist": {
        "bin_edges": [
          -4.0,
          -3.75,
          -3.5,
          -3.25,
          -3.0,
          -2.75,
          -2.5,
          -2.25,
          -2.0,
          -1.75,
          -1.5,
          -1.25,
          -1.0,
          -0.75,
          -0.5,
          -0.25,
          0.0
        ],
        "counts": [
          4,
          1,
          1,
          2,
          2,
          0,
          1,
          1,
          0,
          1,
          0,
          1,
          1,
          0,
          1,
          0
        ],
        "bin_centers": [
          -3.875,
          -3.625,
          -3.375,
          -3.125,
          -2.875,
          -2.625,
          -2.375,
          -2.125,
          -1.875,
          -1.625,
          -1.375,
          -1.125,
          -0.875,
          -0.625,
          -0.375,
          -0.125
        ],
        "clip_lo": -4.0,
        "clip_hi": 0.0
      },
      "timestamp_min": 1609603200000,
      "timestamp_max": 1771387200000,
      "timestamp_min_iso": "2021-01-02T16:00:00Z",
      "timestamp_max_iso": "2026-02-18T04:00:00Z"
    },
    {
      "pattern_type": "bullish_flag",
      "pattern_name": "Bullish Flag",
      "timeframe": "1d",
      "bias": "bullish",
      "n": 135,
      "n_symbols": 118,
      "breakout_success_rate": 80.74,
      "breakdown_success_rate": 18.52,
      "sideways_rate": 0.74,
      "forming_rate": 0.0,
      "both_cleared_rate": 48.15,
      "breakout_success_rate_ci95": [
        73.28,
        86.5
      ],
      "breakdown_success_rate_ci95": [
        12.87,
        25.91
      ],
      "sideways_rate_ci95": [
        0.13,
        4.08
      ],
      "forming_rate_ci95": [
        0.0,
        2.77
      ],
      "both_sides_rate": 48.15,
      "expected_hit_rate": 80.74,
      "expected_hit_rate_ci95": [
        73.28,
        86.5
      ],
      "mean_ret_10c": 6.852,
      "median_ret_10c": 1.787,
      "std_ret_10c": 37.369,
      "win_rate_ret_gt0": 54.07,
      "p25_ret_10c": -14.075,
      "p75_ret_10c": 20.111,
      "mean_mfe": 36.331,
      "mean_mae": -17.762,
      "mfe_mae_ratio": 2.045,
      "max_up_natr": {
        "n": 135,
        "mean": 4.012,
        "median": 3.073,
        "p25": 1.541,
        "p75": 5.412,
        "hist": {
          "bin_edges": [
            0.0,
            0.25,
            0.5,
            0.75,
            1.0,
            1.25,
            1.5,
            1.75,
            2.0,
            2.25,
            2.5,
            2.75,
            3.0,
            3.25,
            3.5,
            3.75,
            4.0
          ],
          "counts": [
            4,
            1,
            7,
            9,
            7,
            4,
            9,
            4,
            5,
            9,
            4,
            2,
            8,
            3,
            1,
            58
          ],
          "bin_centers": [
            0.125,
            0.375,
            0.625,
            0.875,
            1.125,
            1.375,
            1.625,
            1.875,
            2.125,
            2.375,
            2.625,
            2.875,
            3.125,
            3.375,
            3.625,
            3.875
          ],
          "clip_lo": 0.0,
          "clip_hi": 4.0
        }
      },
      "max_down_natr": {
        "n": 135,
        "mean": -1.916,
        "median": -1.45,
        "p25": -2.84,
        "p75": -0.664,
        "hist": {
          "bin_edges": [
            -4.0,
            -3.75,
            -3.5,
            -3.25,
            -3.0,
            -2.75,
            -2.5,
            -2.25,
            -2.0,
            -1.75,
            -1.5,
            -1.25,
            -1.0,
            -0.75,
            -0.5,
            -0.25,
            0.0
          ],
          "counts": [
            19,
            3,
            2,
            7,
            6,
            2,
            8,
            7,
            8,
            4,
            11,
            9,
            12,
            12,
            5,
            20
          ],
          "bin_centers": [
            -3.875,
            -3.625,
            -3.375,
            -3.125,
            -2.875,
            -2.625,
            -2.375,
            -2.125,
            -1.875,
            -1.625,
            -1.375,
            -1.125,
            -0.875,
            -0.625,
            -0.375,
            -0.125
          ],
          "clip_lo": -4.0,
          "clip_hi": 0.0
        }
      },
      "median_max_up_natr": 3.073,
      "median_max_down_natr": -1.45,
      "mean_max_up_natr": 4.012,
      "mean_max_down_natr": -1.916,
      "p25_max_up_natr": 1.541,
      "p75_max_up_natr": 5.412,
      "p25_max_down_natr": -2.84,
      "p75_max_down_natr": -0.664,
      "outcome_natr_moves": {
        "breakout": {
          "n": 109,
          "max_up_natr": {
            "n": 109,
            "mean": 4.444,
            "median": 3.228,
            "p25": 1.924,
            "p75": 5.517,
            "hist": {
              "bin_edges": [
                0.0,
                0.25,
                0.5,
                0.75,
                1.0,
                1.25,
                1.5,
                1.75,
                2.0,
                2.25,
                2.5,
                2.75,
                3.0,
                3.25,
                3.5,
                3.75,
                4.0
              ],
              "counts": [
                1,
                0,
                2,
                5,
                5,
                4,
                8,
                3,
                5,
                9,
                4,
                2,
                7,
                1,
                1,
                52
              ],
              "bin_centers": [
                0.125,
                0.375,
                0.625,
                0.875,
                1.125,
                1.375,
                1.625,
                1.875,
                2.125,
                2.375,
                2.625,
                2.875,
                3.125,
                3.375,
                3.625,
                3.875
              ],
              "clip_lo": 0.0,
              "clip_hi": 4.0
            }
          },
          "max_down_natr": {
            "n": 109,
            "mean": -1.696,
            "median": -1.292,
            "p25": -2.417,
            "p75": -0.55,
            "hist": {
              "bin_edges": [
                -4.0,
                -3.75,
                -3.5,
                -3.25,
                -3.0,
                -2.75,
                -2.5,
                -2.25,
                -2.0,
                -1.75,
                -1.5,
                -1.25,
                -1.0,
                -0.75,
                -0.5,
                -0.25,
                0.0
              ],
              "counts": [
                11,
                2,
                1,
                5,
                4,
                2,
                8,
                5,
                6,
                3,
                9,
                7,
                10,
                11,
                5,
                20
              ],
              "bin_centers": [
                -3.875,
                -3.625,
                -3.375,
                -3.125,
                -2.875,
                -2.625,
                -2.375,
                -2.125,
                -1.875,
                -1.625,
                -1.375,
                -1.125,
                -0.875,
                -0.625,
                -0.375,
                -0.125
              ],
              "clip_lo": -4.0,
              "clip_hi": 0.0
            }
          }
        },
        "breakdown": {
          "n": 25,
          "max_up_natr": {
            "n": 25,
            "mean": 2.261,
            "median": 1.149,
            "p25": 0.681,
            "p75": 3.458,
            "hist": {
              "bin_edges": [
                0.0,
                0.25,
                0.5,
                0.75,
                1.0,
                1.25,
                1.5,
                1.75,
                2.0,
                2.25,
                2.5,
                2.75,
                3.0,
                3.25,
                3.5,
                3.75,
                4.0
              ],
              "counts": [
                3,
                1,
                5,
                3,
                2,
                0,
                1,
                1,
                0,
                0,
                0,
                0,
                1,
                2,
                0,
                6
              ],
              "bin_centers": [
                0.125,
                0.375,
                0.625,
                0.875,
                1.125,
                1.375,
                1.625,
                1.875,
                2.125,
                2.375,
                2.625,
                2.875,
                3.125,
                3.375,
                3.625,
                3.875
              ],
              "clip_lo": 0.0,
              "clip_hi": 4.0
            }
          },
          "max_down_natr": {
            "n": 25,
            "mean": -2.834,
            "median": -2.818,
            "p25": -4.104,
            "p75": -1.454,
            "hist": {
              "bin_edges": [
                -4.0,
                -3.75,
                -3.5,
                -3.25,
                -3.0,
                -2.75,
                -2.5,
                -2.25,
                -2.0,
                -1.75,
                -1.5,
                -1.25,
                -1.0,
                -0.75,
                -0.5,
                -0.25,
                0.0
              ],
              "counts": [
                8,
                1,
                1,
                2,
                1,
                0,
                0,
                2,
                2,
                1,
                2,
                2,
                2,
                1,
                0,
                0
              ],
              "bin_centers": [
                -3.875,
                -3.625,
                -3.375,
                -3.125,
                -2.875,
                -2.625,
                -2.375,
                -2.125,
                -1.875,
                -1.625,
                -1.375,
                -1.125,
                -0.875,
                -0.625,
                -0.375,
                -0.125
              ],
              "clip_lo": -4.0,
              "clip_hi": 0.0
            }
          }
        },
        "sideways": {
          "n": 1,
          "max_up_natr": {
            "n": 1,
            "mean": 0.775,
            "median": 0.775,
            "p25": 0.775,
            "p75": 0.775
          },
          "max_down_natr": {
            "n": 1,
            "mean": -2.916,
            "median": -2.916,
            "p25": -2.916,
            "p75": -2.916
          }
        },
        "forming": {
          "n": 0,
          "max_up_natr": {
            "n": 0,
            "mean": null,
            "median": null,
            "p25": null,
            "p75": null
          },
          "max_down_natr": {
            "n": 0,
            "mean": null,
            "median": null,
            "p25": null,
            "p75": null
          }
        }
      },
      "max_up_natr_hist": {
        "bin_edges": [
          0.0,
          0.25,
          0.5,
          0.75,
          1.0,
          1.25,
          1.5,
          1.75,
          2.0,
          2.25,
          2.5,
          2.75,
          3.0,
          3.25,
          3.5,
          3.75,
          4.0
        ],
        "counts": [
          4,
          1,
          7,
          9,
          7,
          4,
          9,
          4,
          5,
          9,
          4,
          2,
          8,
          3,
          1,
          58
        ],
        "bin_centers": [
          0.125,
          0.375,
          0.625,
          0.875,
          1.125,
          1.375,
          1.625,
          1.875,
          2.125,
          2.375,
          2.625,
          2.875,
          3.125,
          3.375,
          3.625,
          3.875
        ],
        "clip_lo": 0.0,
        "clip_hi": 4.0
      },
      "max_down_natr_hist": {
        "bin_edges": [
          -4.0,
          -3.75,
          -3.5,
          -3.25,
          -3.0,
          -2.75,
          -2.5,
          -2.25,
          -2.0,
          -1.75,
          -1.5,
          -1.25,
          -1.0,
          -0.75,
          -0.5,
          -0.25,
          0.0
        ],
        "counts": [
          19,
          3,
          2,
          7,
          6,
          2,
          8,
          7,
          8,
          4,
          11,
          9,
          12,
          12,
          5,
          20
        ],
        "bin_centers": [
          -3.875,
          -3.625,
          -3.375,
          -3.125,
          -2.875,
          -2.625,
          -2.375,
          -2.125,
          -1.875,
          -1.625,
          -1.375,
          -1.125,
          -0.875,
          -0.625,
          -0.375,
          -0.125
        ],
        "clip_lo": -4.0,
        "clip_hi": 0.0
      },
      "timestamp_min": 1515628800000,
      "timestamp_max": 1778371200000,
      "timestamp_min_iso": "2018-01-11T00:00:00Z",
      "timestamp_max_iso": "2026-05-10T00:00:00Z"
    },
    {
      "pattern_type": "triple_bottom",
      "pattern_name": "Triple Bottom",
      "timeframe": "1d",
      "bias": "bullish",
      "n": 20,
      "n_symbols": 19,
      "breakout_success_rate": 80.0,
      "breakdown_success_rate": 10.0,
      "sideways_rate": 10.0,
      "forming_rate": 0.0,
      "both_cleared_rate": 30.0,
      "breakout_success_rate_ci95": [
        58.4,
        91.93
      ],
      "breakdown_success_rate_ci95": [
        2.79,
        30.1
      ],
      "sideways_rate_ci95": [
        2.79,
        30.1
      ],
      "forming_rate_ci95": [
        0.0,
        16.11
      ],
      "both_sides_rate": 30.0,
      "expected_hit_rate": 80.0,
      "expected_hit_rate_ci95": [
        58.4,
        91.93
      ],
      "mean_ret_10c": 21.467,
      "median_ret_10c": 13.051,
      "std_ret_10c": 41.471,
      "win_rate_ret_gt0": 75.0,
      "p25_ret_10c": 1.667,
      "p75_ret_10c": 25.303,
      "mean_mfe": 50.385,
      "mean_mae": -9.49,
      "mfe_mae_ratio": 5.309,
      "max_up_natr": {
        "n": 20,
        "mean": 5.338,
        "median": 4.261,
        "p25": 1.514,
        "p75": 5.936,
        "hist": {
          "bin_edges": [
            0.0,
            0.25,
            0.5,
            0.75,
            1.0,
            1.25,
            1.5,
            1.75,
            2.0,
            2.25,
            2.5,
            2.75,
            3.0,
            3.25,
            3.5,
            3.75,
            4.0
          ],
          "counts": [
            2,
            0,
            0,
            0,
            1,
            2,
            3,
            0,
            0,
            1,
            0,
            0,
            0,
            0,
            1,
            10
          ],
          "bin_centers": [
            0.125,
            0.375,
            0.625,
            0.875,
            1.125,
            1.375,
            1.625,
            1.875,
            2.125,
            2.375,
            2.625,
            2.875,
            3.125,
            3.375,
            3.625,
            3.875
          ],
          "clip_lo": 0.0,
          "clip_hi": 4.0
        }
      },
      "max_down_natr": {
        "n": 20,
        "mean": -1.063,
        "median": -0.722,
        "p25": -1.499,
        "p75": -0.563,
        "hist": {
          "bin_edges": [
            -4.0,
            -3.75,
            -3.5,
            -3.25,
            -3.0,
            -2.75,
            -2.5,
            -2.25,
            -2.0,
            -1.75,
            -1.5,
            -1.25,
            -1.0,
            -0.75,
            -0.5,
            -0.25,
            0.0
          ],
          "counts": [
            1,
            0,
            0,
            0,
            0,
            1,
            0,
            0,
            2,
            1,
            2,
            0,
            3,
            5,
            1,
            4
          ],
          "bin_centers": [
            -3.875,
            -3.625,
            -3.375,
            -3.125,
            -2.875,
            -2.625,
            -2.375,
            -2.125,
            -1.875,
            -1.625,
            -1.375,
            -1.125,
            -0.875,
            -0.625,
            -0.375,
            -0.125
          ],
          "clip_lo": -4.0,
          "clip_hi": 0.0
        }
      },
      "median_max_up_natr": 4.261,
      "median_max_down_natr": -0.722,
      "mean_max_up_natr": 5.338,
      "mean_max_down_natr": -1.063,
      "p25_max_up_natr": 1.514,
      "p75_max_up_natr": 5.936,
      "p25_max_down_natr": -1.499,
      "p75_max_down_natr": -0.563,
      "outcome_natr_moves": {
        "breakout": {
          "n": 16,
          "max_up_natr": {
            "n": 16,
            "mean": 6.24,
            "median": 4.921,
            "p25": 1.652,
            "p75": 7.066,
            "hist": {
              "bin_edges": [
                0.0,
                0.25,
                0.5,
                0.75,
                1.0,
                1.25,
                1.5,
                1.75,
                2.0,
                2.25,
                2.5,
                2.75,
                3.0,
                3.25,
                3.5,
                3.75,
                4.0
              ],
              "counts": [
                0,
                0,
                0,
                0,
                0,
                2,
                3,
                0,
                0,
                1,
                0,
                0,
                0,
                0,
                1,
                9
              ],
              "bin_centers": [
                0.125,
                0.375,
                0.625,
                0.875,
                1.125,
                1.375,
                1.625,
                1.875,
                2.125,
                2.375,
                2.625,
                2.875,
                3.125,
                3.375,
                3.625,
                3.875
              ],
              "clip_lo": 0.0,
              "clip_hi": 4.0
            }
          },
          "max_down_natr": {
            "n": 16,
            "mean": -0.99,
            "median": -0.722,
            "p25": -1.499,
            "p75": -0.563,
            "hist": {
              "bin_edges": [
                -4.0,
                -3.75,
                -3.5,
                -3.25,
                -3.0,
                -2.75,
                -2.5,
                -2.25,
                -2.0,
                -1.75,
                -1.5,
                -1.25,
                -1.0,
                -0.75,
                -0.5,
                -0.25,
                0.0
              ],
              "counts": [
                0,
                0,
                0,
                0,
                0,
                1,
                0,
                0,
                2,
                1,
                2,
                0,
                2,
                4,
                1,
                3
              ],
              "bin_centers": [
                -3.875,
                -3.625,
                -3.375,
                -3.125,
                -2.875,
                -2.625,
                -2.375,
                -2.125,
                -1.875,
                -1.625,
                -1.375,
                -1.125,
                -0.875,
                -0.625,
                -0.375,
                -0.125
              ],
              "clip_lo": -4.0,
              "clip_hi": 0.0
            }
          }
        },
        "breakdown": {
          "n": 2,
          "max_up_natr": {
            "n": 2,
            "mean": 2.938,
            "median": 2.938,
            "p25": 1.491,
            "p75": 4.385
          },
          "max_down_natr": {
            "n": 2,
            "mean": -2.297,
            "median": -2.297,
            "p25": -3.121,
            "p75": -1.472
          }
        },
        "sideways": {
          "n": 2,
          "max_up_natr": {
            "n": 2,
            "mean": 0.525,
            "median": 0.525,
            "p25": 0.284,
            "p75": 0.767
          },
          "max_down_natr": {
            "n": 2,
            "mean": -0.416,
            "median": -0.416,
            "p25": -0.622,
            "p75": -0.21
          }
        },
        "forming": {
          "n": 0,
          "max_up_natr": {
            "n": 0,
            "mean": null,
            "median": null,
            "p25": null,
            "p75": null
          },
          "max_down_natr": {
            "n": 0,
            "mean": null,
            "median": null,
            "p25": null,
            "p75": null
          }
        }
      },
      "max_up_natr_hist": {
        "bin_edges": [
          0.0,
          0.25,
          0.5,
          0.75,
          1.0,
          1.25,
          1.5,
          1.75,
          2.0,
          2.25,
          2.5,
          2.75,
          3.0,
          3.25,
          3.5,
          3.75,
          4.0
        ],
        "counts": [
          2,
          0,
          0,
          0,
          1,
          2,
          3,
          0,
          0,
          1,
          0,
          0,
          0,
          0,
          1,
          10
        ],
        "bin_centers": [
          0.125,
          0.375,
          0.625,
          0.875,
          1.125,
          1.375,
          1.625,
          1.875,
          2.125,
          2.375,
          2.625,
          2.875,
          3.125,
          3.375,
          3.625,
          3.875
        ],
        "clip_lo": 0.0,
        "clip_hi": 4.0
      },
      "max_down_natr_hist": {
        "bin_edges": [
          -4.0,
          -3.75,
          -3.5,
          -3.25,
          -3.0,
          -2.75,
          -2.5,
          -2.25,
          -2.0,
          -1.75,
          -1.5,
          -1.25,
          -1.0,
          -0.75,
          -0.5,
          -0.25,
          0.0
        ],
        "counts": [
          1,
          0,
          0,
          0,
          0,
          1,
          0,
          0,
          2,
          1,
          2,
          0,
          3,
          5,
          1,
          4
        ],
        "bin_centers": [
          -3.875,
          -3.625,
          -3.375,
          -3.125,
          -2.875,
          -2.625,
          -2.375,
          -2.125,
          -1.875,
          -1.625,
          -1.375,
          -1.125,
          -0.875,
          -0.625,
          -0.375,
          -0.125
        ],
        "clip_lo": -4.0,
        "clip_hi": 0.0
      },
      "timestamp_min": 1631836800000,
      "timestamp_max": 1778371200000,
      "timestamp_min_iso": "2021-09-17T00:00:00Z",
      "timestamp_max_iso": "2026-05-10T00:00:00Z"
    },
    {
      "pattern_type": "bullish_flag",
      "pattern_name": "Bullish Flag",
      "timeframe": "1h",
      "bias": "bullish",
      "n": 3791,
      "n_symbols": 592,
      "breakout_success_rate": 78.87,
      "breakdown_success_rate": 17.67,
      "sideways_rate": 3.46,
      "forming_rate": 0.0,
      "both_cleared_rate": 43.84,
      "breakout_success_rate_ci95": [
        77.54,
        80.14
      ],
      "breakdown_success_rate_ci95": [
        16.49,
        18.92
      ],
      "sideways_rate_ci95": [
        2.92,
        4.09
      ],
      "forming_rate_ci95": [
        0.0,
        0.1
      ],
      "both_sides_rate": 43.84,
      "expected_hit_rate": 78.87,
      "expected_hit_rate_ci95": [
        77.54,
        80.14
      ],
      "mean_ret_10c": 0.681,
      "median_ret_10c": 0.153,
      "std_ret_10c": 6.709,
      "win_rate_ret_gt0": 51.7,
      "p25_ret_10c": -2.4,
      "p75_ret_10c": 2.778,
      "mean_mfe": 5.514,
      "mean_mae": -3.798,
      "mfe_mae_ratio": 1.452,
      "max_up_natr": {
        "n": 3791,
        "mean": 2.94,
        "median": 2.026,
        "p25": 1.029,
        "p75": 3.689,
        "hist": {
          "bin_edges": [
            0.0,
            0.25,
            0.5,
            0.75,
            1.0,
            1.25,
            1.5,
            1.75,
            2.0,
            2.25,
            2.5,
            2.75,
            3.0,
            3.25,
            3.5,
            3.75,
            4.0
          ],
          "counts": [
            180,
            205,
            249,
            279,
            290,
            243,
            217,
            210,
            203,
            169,
            160,
            135,
            137,
            95,
            97,
            922
          ],
          "bin_centers": [
            0.125,
            0.375,
            0.625,
            0.875,
            1.125,
            1.375,
            1.625,
            1.875,
            2.125,
            2.375,
            2.625,
            2.875,
            3.125,
            3.375,
            3.625,
            3.875
          ],
          "clip_lo": 0.0,
          "clip_hi": 4.0
        }
      },
      "max_down_natr": {
        "n": 3791,
        "mean": -2.114,
        "median": -1.655,
        "p25": -2.893,
        "p75": -0.721,
        "hist": {
          "bin_edges": [
            -4.0,
            -3.75,
            -3.5,
            -3.25,
            -3.0,
            -2.75,
            -2.5,
            -2.25,
            -2.0,
            -1.75,
            -1.5,
            -1.25,
            -1.0,
            -0.75,
            -0.5,
            -0.25,
            0.0
          ],
          "counts": [
            574,
            101,
            98,
            126,
            144,
            165,
            183,
            211,
            185,
            238,
            269,
            245,
            268,
            275,
            302,
            407
          ],
          "bin_centers": [
            -3.875,
            -3.625,
            -3.375,
            -3.125,
            -2.875,
            -2.625,
            -2.375,
            -2.125,
            -1.875,
            -1.625,
            -1.375,
            -1.125,
            -0.875,
            -0.625,
            -0.375,
            -0.125
          ],
          "clip_lo": -4.0,
          "clip_hi": 0.0
        }
      },
      "median_max_up_natr": 2.026,
      "median_max_down_natr": -1.655,
      "mean_max_up_natr": 2.94,
      "mean_max_down_natr": -2.114,
      "p25_max_up_natr": 1.029,
      "p75_max_up_natr": 3.689,
      "p25_max_down_natr": -2.893,
      "p75_max_down_natr": -0.721,
      "outcome_natr_moves": {
        "breakout": {
          "n": 2990,
          "max_up_natr": {
            "n": 2990,
            "mean": 3.375,
            "median": 2.42,
            "p25": 1.379,
            "p75": 4.099,
            "hist": {
              "bin_edges": [
                0.0,
                0.25,
                0.5,
                0.75,
                1.0,
                1.25,
                1.5,
                1.75,
                2.0,
                2.25,
                2.5,
                2.75,
                3.0,
                3.25,
                3.5,
                3.75,
                4.0
              ],
              "counts": [
                55,
                77,
                124,
                172,
                209,
                198,
                184,
                184,
                187,
                152,
                147,
                127,
                126,
                86,
                87,
                875
              ],
              "bin_centers": [
                0.125,
                0.375,
                0.625,
                0.875,
                1.125,
                1.375,
                1.625,
                1.875,
                2.125,
                2.375,
                2.625,
                2.875,
                3.125,
                3.375,
                3.625,
                3.875
              ],
              "clip_lo": 0.0,
              "clip_hi": 4.0
            }
          },
          "max_down_natr": {
            "n": 2990,
            "mean": -1.856,
            "median": -1.372,
            "p25": -2.652,
            "p75": -0.553,
            "hist": {
              "bin_edges": [
                -4.0,
                -3.75,
                -3.5,
                -3.25,
                -3.0,
                -2.75,
                -2.5,
                -2.25,
                -2.0,
                -1.75,
                -1.5,
                -1.25,
                -1.0,
                -0.75,
                -0.5,
                -0.25,
                0.0
              ],
              "counts": [
                354,
                74,
                74,
                92,
                105,
                115,
                124,
                144,
                130,
                178,
                213,
                197,
                243,
                258,
                291,
                398
              ],
              "bin_centers": [
                -3.875,
                -3.625,
                -3.375,
                -3.125,
                -2.875,
                -2.625,
                -2.375,
                -2.125,
                -1.875,
                -1.625,
                -1.375,
                -1.125,
                -0.875,
                -0.625,
                -0.375,
                -0.125
              ],
              "clip_lo": -4.0,
              "clip_hi": 0.0
            }
          }
        },
        "breakdown": {
          "n": 670,
          "max_up_natr": {
            "n": 670,
            "mean": 1.426,
            "median": 0.832,
            "p25": 0.397,
            "p75": 1.591,
            "hist": {
              "bin_edges": [
                0.0,
                0.25,
                0.5,
                0.75,
                1.0,
                1.25,
                1.5,
                1.75,
                2.0,
                2.25,
                2.5,
                2.75,
                3.0,
                3.25,
                3.5,
                3.75,
                4.0
              ],
              "counts": [
                106,
                100,
                95,
                88,
                67,
                34,
                30,
                23,
                13,
                16,
                13,
                8,
                11,
                9,
                10,
                47
              ],
              "bin_centers": [
                0.125,
                0.375,
                0.625,
                0.875,
                1.125,
                1.375,
                1.625,
                1.875,
                2.125,
                2.375,
                2.625,
                2.875,
                3.125,
                3.375,
                3.625,
                3.875
              ],
              "clip_lo": 0.0,
              "clip_hi": 4.0
            }
          },
          "max_down_natr": {
            "n": 670,
            "mean": -3.407,
            "median": -2.747,
            "p25": -4.248,
            "p75": -1.983,
            "hist": {
              "bin_edges": [
                -4.0,
                -3.75,
                -3.5,
                -3.25,
                -3.0,
                -2.75,
                -2.5,
                -2.25,
                -2.0,
                -1.75,
                -1.5,
                -1.25,
                -1.0,
                -0.75,
                -0.5,
                -0.25,
                0.0
              ],
              "counts": [
                219,
                26,
                23,
                33,
                34,
                50,
                53,
                60,
                44,
                46,
                32,
                25,
                11,
                8,
                3,
                3
              ],
              "bin_centers": [
                -3.875,
                -3.625,
                -3.375,
                -3.125,
                -2.875,
                -2.625,
                -2.375,
                -2.125,
                -1.875,
                -1.625,
                -1.375,
                -1.125,
                -0.875,
                -0.625,
                -0.375,
                -0.125
              ],
              "clip_lo": -4.0,
              "clip_hi": 0.0
            }
          }
        },
        "sideways": {
          "n": 131,
          "max_up_natr": {
            "n": 131,
            "mean": 0.758,
            "median": 0.685,
            "p25": 0.383,
            "p75": 1.017,
            "hist": {
              "bin_edges": [
                0.0,
                0.25,
                0.5,
                0.75,
                1.0,
                1.25,
                1.5,
                1.75,
                2.0,
                2.25,
                2.5,
                2.75,
                3.0,
                3.25,
                3.5,
                3.75,
                4.0
              ],
              "counts": [
                19,
                28,
                30,
                19,
                14,
                11,
                3,
                3,
                3,
                1,
                0,
                0,
                0,
                0,
                0,
                0
              ],
              "bin_centers": [
                0.125,
                0.375,
                0.625,
                0.875,
                1.125,
                1.375,
                1.625,
                1.875,
                2.125,
                2.375,
                2.625,
                2.875,
                3.125,
                3.375,
                3.625,
                3.875
              ],
              "clip_lo": 0.0,
              "clip_hi": 4.0
            }
          },
          "max_down_natr": {
            "n": 131,
            "mean": -1.389,
            "median": -1.322,
            "p25": -1.763,
            "p75": -0.933,
            "hist": {
              "bin_edges": [
                -4.0,
                -3.75,
                -3.5,
                -3.25,
                -3.0,
                -2.75,
                -2.5,
                -2.25,
                -2.0,
                -1.75,
                -1.5,
                -1.25,
                -1.0,
                -0.75,
                -0.5,
                -0.25,
                0.0
              ],
              "counts": [
                1,
                1,
                1,
                1,
                5,
                0,
                6,
                7,
                11,
                14,
                24,
                23,
                14,
                9,
                8,
                6
              ],
              "bin_centers": [
                -3.875,
                -3.625,
                -3.375,
                -3.125,
                -2.875,
                -2.625,
                -2.375,
                -2.125,
                -1.875,
                -1.625,
                -1.375,
                -1.125,
                -0.875,
                -0.625,
                -0.375,
                -0.125
              ],
              "clip_lo": -4.0,
              "clip_hi": 0.0
            }
          }
        },
        "forming": {
          "n": 0,
          "max_up_natr": {
            "n": 0,
            "mean": null,
            "median": null,
            "p25": null,
            "p75": null
          },
          "max_down_natr": {
            "n": 0,
            "mean": null,
            "median": null,
            "p25": null,
            "p75": null
          }
        }
      },
      "max_up_natr_hist": {
        "bin_edges": [
          0.0,
          0.25,
          0.5,
          0.75,
          1.0,
          1.25,
          1.5,
          1.75,
          2.0,
          2.25,
          2.5,
          2.75,
          3.0,
          3.25,
          3.5,
          3.75,
          4.0
        ],
        "counts": [
          180,
          205,
          249,
          279,
          290,
          243,
          217,
          210,
          203,
          169,
          160,
          135,
          137,
          95,
          97,
          922
        ],
        "bin_centers": [
          0.125,
          0.375,
          0.625,
          0.875,
          1.125,
          1.375,
          1.625,
          1.875,
          2.125,
          2.375,
          2.625,
          2.875,
          3.125,
          3.375,
          3.625,
          3.875
        ],
        "clip_lo": 0.0,
        "clip_hi": 4.0
      },
      "max_down_natr_hist": {
        "bin_edges": [
          -4.0,
          -3.75,
          -3.5,
          -3.25,
          -3.0,
          -2.75,
          -2.5,
          -2.25,
          -2.0,
          -1.75,
          -1.5,
          -1.25,
          -1.0,
          -0.75,
          -0.5,
          -0.25,
          0.0
        ],
        "counts": [
          574,
          101,
          98,
          126,
          144,
          165,
          183,
          211,
          185,
          238,
          269,
          245,
          268,
          275,
          302,
          407
        ],
        "bin_centers": [
          -3.875,
          -3.625,
          -3.375,
          -3.125,
          -2.875,
          -2.625,
          -2.375,
          -2.125,
          -1.875,
          -1.625,
          -1.375,
          -1.125,
          -0.875,
          -0.625,
          -0.375,
          -0.125
        ],
        "clip_lo": -4.0,
        "clip_hi": 0.0
      },
      "timestamp_min": 1578744000000,
      "timestamp_max": 1785445200000,
      "timestamp_min_iso": "2020-01-11T12:00:00Z",
      "timestamp_max_iso": "2026-07-30T21:00:00Z"
    },
    {
      "pattern_type": "descending_broadening_wedge",
      "pattern_name": "Descending Broadening Wedge",
      "timeframe": "15m",
      "bias": "bullish",
      "n": 3446,
      "n_symbols": 551,
      "breakout_success_rate": 78.21,
      "breakdown_success_rate": 8.5,
      "sideways_rate": 13.29,
      "forming_rate": 0.0,
      "both_cleared_rate": 36.13,
      "breakout_success_rate_ci95": [
        76.8,
        79.55
      ],
      "breakdown_success_rate_ci95": [
        7.62,
        9.48
      ],
      "sideways_rate_ci95": [
        12.2,
        14.47
      ],
      "forming_rate_ci95": [
        0.0,
        0.11
      ],
      "both_sides_rate": 36.13,
      "expected_hit_rate": 78.21,
      "expected_hit_rate_ci95": [
        76.8,
        79.55
      ],
      "mean_ret_10c": 0.626,
      "median_ret_10c": 0.518,
      "std_ret_10c": 3.578,
      "win_rate_ret_gt0": 61.14,
      "p25_ret_10c": -0.709,
      "p75_ret_10c": 1.868,
      "mean_mfe": 2.837,
      "mean_mae": -1.611,
      "mfe_mae_ratio": 1.761,
      "max_up_natr": {
        "n": 3446,
        "mean": 3.472,
        "median": 2.699,
        "p25": 1.462,
        "p75": 4.444,
        "hist": {
          "bin_edges": [
            0.0,
            0.25,
            0.5,
            0.75,
            1.0,
            1.25,
            1.5,
            1.75,
            2.0,
            2.25,
            2.5,
            2.75,
            3.0,
            3.25,
            3.5,
            3.75,
            4.0
          ],
          "counts": [
            135,
            113,
            127,
            173,
            182,
            157,
            193,
            167,
            194,
            152,
            172,
            168,
            150,
            138,
            97,
            1128
          ],
          "bin_centers": [
            0.125,
            0.375,
            0.625,
            0.875,
            1.125,
            1.375,
            1.625,
            1.875,
            2.125,
            2.375,
            2.625,
            2.875,
            3.125,
            3.375,
            3.625,
            3.875
          ],
          "clip_lo": 0.0,
          "clip_hi": 4.0
        }
      },
      "max_down_natr": {
        "n": 3446,
        "mean": -1.932,
        "median": -1.047,
        "p25": -2.605,
        "p75": -0.261,
        "hist": {
          "bin_edges": [
            -4.0,
            -3.75,
            -3.5,
            -3.25,
            -3.0,
            -2.75,
            -2.5,
            -2.25,
            -2.0,
            -1.75,
            -1.5,
            -1.25,
            -1.0,
            -0.75,
            -0.5,
            -0.25,
            0.0
          ],
          "counts": [
            506,
            64,
            56,
            87,
            92,
            94,
            110,
            107,
            133,
            154,
            172,
            187,
            198,
            255,
            394,
            837
          ],
          "bin_centers": [
            -3.875,
            -3.625,
            -3.375,
            -3.125,
            -2.875,
            -2.625,
            -2.375,
            -2.125,
            -1.875,
            -1.625,
            -1.375,
            -1.125,
            -0.875,
            -0.625,
            -0.375,
            -0.125
          ],
          "clip_lo": -4.0,
          "clip_hi": 0.0
        }
      },
      "median_max_up_natr": 2.699,
      "median_max_down_natr": -1.047,
      "mean_max_up_natr": 3.472,
      "mean_max_down_natr": -1.932,
      "p25_max_up_natr": 1.462,
      "p75_max_up_natr": 4.444,
      "p25_max_down_natr": -2.605,
      "p75_max_down_natr": -0.261,
      "outcome_natr_moves": {
        "breakout": {
          "n": 2695,
          "max_up_natr": {
            "n": 2695,
            "mean": 4.041,
            "median": 3.094,
            "p25": 1.989,
            "p75": 4.888,
            "hist": {
              "bin_edges": [
                0.0,
                0.25,
                0.5,
                0.75,
                1.0,
                1.25,
                1.5,
                1.75,
                2.0,
                2.25,
                2.5,
                2.75,
                3.0,
                3.25,
                3.5,
                3.75,
                4.0
              ],
              "counts": [
                0,
                0,
                24,
                104,
                130,
                125,
                157,
                141,
                166,
                135,
                153,
                152,
                135,
                127,
                87,
                1059
              ],
              "bin_centers": [
                0.125,
                0.375,
                0.625,
                0.875,
                1.125,
                1.375,
                1.625,
                1.875,
                2.125,
                2.375,
                2.625,
                2.875,
                3.125,
                3.375,
                3.625,
                3.875
              ],
              "clip_lo": 0.0,
              "clip_hi": 4.0
            }
          },
          "max_down_natr": {
            "n": 2695,
            "mean": -1.285,
            "median": -0.652,
            "p25": -1.743,
            "p75": -0.183,
            "hist": {
              "bin_edges": [
                -4.0,
                -3.75,
                -3.5,
                -3.25,
                -3.0,
                -2.75,
                -2.5,
                -2.25,
                -2.0,
                -1.75,
                -1.5,
                -1.25,
                -1.0,
                -0.75,
                -0.5,
                -0.25,
                0.0
              ],
              "counts": [
                188,
                32,
                39,
                56,
                49,
                64,
                69,
                79,
                93,
                125,
                141,
                157,
                175,
                236,
                375,
                817
              ],
              "bin_centers": [
                -3.875,
                -3.625,
                -3.375,
                -3.125,
                -2.875,
                -2.625,
                -2.375,
                -2.125,
                -1.875,
                -1.625,
                -1.375,
                -1.125,
                -0.875,
                -0.625,
                -0.375,
                -0.125
              ],
              "clip_lo": -4.0,
              "clip_hi": 0.0
            }
          }
        },
        "breakdown": {
          "n": 293,
          "max_up_natr": {
            "n": 293,
            "mean": 1.401,
            "median": 0.561,
            "p25": 0.193,
            "p75": 2.061,
            "hist": {
              "bin_edges": [
                0.0,
                0.25,
                0.5,
                0.75,
                1.0,
                1.25,
                1.5,
                1.75,
                2.0,
                2.25,
                2.5,
                2.75,
                3.0,
                3.25,
                3.5,
                3.75,
                4.0
              ],
              "counts": [
                90,
                48,
                30,
                10,
                12,
                13,
                11,
                4,
                10,
                6,
                7,
                1,
                6,
                4,
                4,
                37
              ],
              "bin_centers": [
                0.125,
                0.375,
                0.625,
                0.875,
                1.125,
                1.375,
                1.625,
                1.875,
                2.125,
                2.375,
                2.625,
                2.875,
                3.125,
                3.375,
                3.625,
                3.875
              ],
              "clip_lo": 0.0,
              "clip_hi": 4.0
            }
          },
          "max_down_natr": {
            "n": 293,
            "mean": -6.736,
            "median": -5.218,
            "p25": -7.874,
            "p75": -3.392,
            "hist": {
              "bin_edges": [
                -4.0,
                -3.75,
                -3.5,
                -3.25,
                -3.0,
                -2.75,
                -2.5,
                -2.25,
                -2.0,
                -1.75,
                -1.5,
                -1.25,
                -1.0,
                -0.75,
                -0.5,
                -0.25,
                0.0
              ],
              "counts": [
                205,
                11,
                8,
                11,
                13,
                10,
                6,
                6,
                10,
                0,
                7,
                4,
                2,
                0,
                0,
                0
              ],
              "bin_centers": [
                -3.875,
                -3.625,
                -3.375,
                -3.125,
                -2.875,
                -2.625,
                -2.375,
                -2.125,
                -1.875,
                -1.625,
                -1.375,
                -1.125,
                -0.875,
                -0.625,
                -0.375,
                -0.125
              ],
              "clip_lo": -4.0,
              "clip_hi": 0.0
            }
          }
        },
        "sideways": {
          "n": 458,
          "max_up_natr": {
            "n": 458,
            "mean": 1.447,
            "median": 0.934,
            "p25": 0.51,
            "p75": 1.954,
            "hist": {
              "bin_edges": [
                0.0,
                0.25,
                0.5,
                0.75,
                1.0,
                1.25,
                1.5,
                1.75,
                2.0,
                2.25,
                2.5,
                2.75,
                3.0,
                3.25,
                3.5,
                3.75,
                4.0
              ],
              "counts": [
                45,
                65,
                73,
                59,
                40,
                19,
                25,
                22,
                18,
                11,
                12,
                15,
                9,
                7,
                6,
                32
              ],
              "bin_centers": [
                0.125,
                0.375,
                0.625,
                0.875,
                1.125,
                1.375,
                1.625,
                1.875,
                2.125,
                2.375,
                2.625,
                2.875,
                3.125,
                3.375,
                3.625,
                3.875
              ],
              "clip_lo": 0.0,
              "clip_hi": 4.0
            }
          },
          "max_down_natr": {
            "n": 458,
            "mean": -2.671,
            "median": -2.355,
            "p25": -3.725,
            "p75": -1.365,
            "hist": {
              "bin_edges": [
                -4.0,
                -3.75,
                -3.5,
                -3.25,
                -3.0,
                -2.75,
                -2.5,
                -2.25,
                -2.0,
                -1.75,
                -1.5,
                -1.25,
                -1.0,
                -0.75,
                -0.5,
                -0.25,
                0.0
              ],
              "counts": [
                113,
                21,
                9,
                20,
                30,
                20,
                35,
                22,
                30,
                29,
                24,
                26,
                21,
                19,
                19,
                20
              ],
              "bin_centers": [
                -3.875,
                -3.625,
                -3.375,
                -3.125,
                -2.875,
                -2.625,
                -2.375,
                -2.125,
                -1.875,
                -1.625,
                -1.375,
                -1.125,
                -0.875,
                -0.625,
                -0.375,
                -0.125
              ],
              "clip_lo": -4.0,
              "clip_hi": 0.0
            }
          }
        },
        "forming": {
          "n": 0,
          "max_up_natr": {
            "n": 0,
            "mean": null,
            "median": null,
            "p25": null,
            "p75": null
          },
          "max_down_natr": {
            "n": 0,
            "mean": null,
            "median": null,
            "p25": null,
            "p75": null
          }
        }
      },
      "max_up_natr_hist": {
        "bin_edges": [
          0.0,
          0.25,
          0.5,
          0.75,
          1.0,
          1.25,
          1.5,
          1.75,
          2.0,
          2.25,
          2.5,
          2.75,
          3.0,
          3.25,
          3.5,
          3.75,
          4.0
        ],
        "counts": [
          135,
          113,
          127,
          173,
          182,
          157,
          193,
          167,
          194,
          152,
          172,
          168,
          150,
          138,
          97,
          1128
        ],
        "bin_centers": [
          0.125,
          0.375,
          0.625,
          0.875,
          1.125,
          1.375,
          1.625,
          1.875,
          2.125,
          2.375,
          2.625,
          2.875,
          3.125,
          3.375,
          3.625,
          3.875
        ],
        "clip_lo": 0.0,
        "clip_hi": 4.0
      },
      "max_down_natr_hist": {
        "bin_edges": [
          -4.0,
          -3.75,
          -3.5,
          -3.25,
          -3.0,
          -2.75,
          -2.5,
          -2.25,
          -2.0,
          -1.75,
          -1.5,
          -1.25,
          -1.0,
          -0.75,
          -0.5,
          -0.25,
          0.0
        ],
        "counts": [
          506,
          64,
          56,
          87,
          92,
          94,
          110,
          107,
          133,
          154,
          172,
          187,
          198,
          255,
          394,
          837
        ],
        "bin_centers": [
          -3.875,
          -3.625,
          -3.375,
          -3.125,
          -2.875,
          -2.625,
          -2.375,
          -2.125,
          -1.875,
          -1.625,
          -1.375,
          -1.125,
          -0.875,
          -0.625,
          -0.375,
          -0.125
        ],
        "clip_lo": -4.0,
        "clip_hi": 0.0
      },
      "timestamp_min": 1596240900000,
      "timestamp_max": 1785523500000,
      "timestamp_min_iso": "2020-08-01T00:15:00Z",
      "timestamp_max_iso": "2026-07-31T18:45:00Z"
    },
    {
      "pattern_type": "descending_broadening_wedge",
      "pattern_name": "Descending Broadening Wedge",
      "timeframe": "1d",
      "bias": "bullish",
      "n": 319,
      "n_symbols": 228,
      "breakout_success_rate": 78.06,
      "breakdown_success_rate": 8.46,
      "sideways_rate": 13.48,
      "forming_rate": 0.0,
      "both_cleared_rate": 31.35,
      "breakout_success_rate_ci95": [
        73.2,
        82.25
      ],
      "breakdown_success_rate_ci95": [
        5.88,
        12.03
      ],
      "sideways_rate_ci95": [
        10.16,
        17.66
      ],
      "forming_rate_ci95": [
        0.0,
        1.19
      ],
      "both_sides_rate": 31.35,
      "expected_hit_rate": 78.06,
      "expected_hit_rate_ci95": [
        73.2,
        82.25
      ],
      "mean_ret_10c": 7.76,
      "median_ret_10c": 2.392,
      "std_ret_10c": 31.172,
      "win_rate_ret_gt0": 53.92,
      "p25_ret_10c": -9.641,
      "p75_ret_10c": 17.749,
      "mean_mfe": 40.217,
      "mean_mae": -12.646,
      "mfe_mae_ratio": 3.18,
      "max_up_natr": {
        "n": 319,
        "mean": 4.316,
        "median": 2.741,
        "p25": 1.492,
        "p75": 4.823,
        "hist": {
          "bin_edges": [
            0.0,
            0.25,
            0.5,
            0.75,
            1.0,
            1.25,
            1.5,
            1.75,
            2.0,
            2.25,
            2.5,
            2.75,
            3.0,
            3.25,
            3.5,
            3.75,
            4.0
          ],
          "counts": [
            8,
            14,
            9,
            13,
            19,
            18,
            17,
            16,
            15,
            16,
            16,
            7,
            13,
            9,
            20,
            109
          ],
          "bin_centers": [
            0.125,
            0.375,
            0.625,
            0.875,
            1.125,
            1.375,
            1.625,
            1.875,
            2.125,
            2.375,
            2.625,
            2.875,
            3.125,
            3.375,
            3.625,
            3.875
          ],
          "clip_lo": 0.0,
          "clip_hi": 4.0
        }
      },
      "max_down_natr": {
        "n": 319,
        "mean": -1.407,
        "median": -0.813,
        "p25": -2.031,
        "p75": -0.212,
        "hist": {
          "bin_edges": [
            -4.0,
            -3.75,
            -3.5,
            -3.25,
            -3.0,
            -2.75,
            -2.5,
            -2.25,
            -2.0,
            -1.75,
            -1.5,
            -1.25,
            -1.0,
            -0.75,
            -0.5,
            -0.25,
            0.0
          ],
          "counts": [
            28,
            4,
            6,
            7,
            7,
            12,
            6,
            12,
            11,
            16,
            20,
            13,
            24,
            30,
            32,
            91
          ],
          "bin_centers": [
            -3.875,
            -3.625,
            -3.375,
            -3.125,
            -2.875,
            -2.625,
            -2.375,
            -2.125,
            -1.875,
            -1.625,
            -1.375,
            -1.125,
            -0.875,
            -0.625,
            -0.375,
            -0.125
          ],
          "clip_lo": -4.0,
          "clip_hi": 0.0
        }
      },
      "median_max_up_natr": 2.741,
      "median_max_down_natr": -0.813,
      "mean_max_up_natr": 4.316,
      "mean_max_down_natr": -1.407,
      "p25_max_up_natr": 1.492,
      "p75_max_up_natr": 4.823,
      "p25_max_down_natr": -2.031,
      "p75_max_down_natr": -0.212,
      "outcome_natr_moves": {
        "breakout": {
          "n": 249,
          "max_up_natr": {
            "n": 249,
            "mean": 5.201,
            "median": 3.503,
            "p25": 2.138,
            "p75": 5.657,
            "hist": {
              "bin_edges": [
                0.0,
                0.25,
                0.5,
                0.75,
                1.0,
                1.25,
                1.5,
                1.75,
                2.0,
                2.25,
                2.5,
                2.75,
                3.0,
                3.25,
                3.5,
                3.75,
                4.0
              ],
              "counts": [
                0,
                0,
                1,
                3,
                12,
                13,
                14,
                12,
                12,
                12,
                16,
                7,
                13,
                9,
                18,
                107
              ],
              "bin_centers": [
                0.125,
                0.375,
                0.625,
                0.875,
                1.125,
                1.375,
                1.625,
                1.875,
                2.125,
                2.375,
                2.625,
                2.875,
                3.125,
                3.375,
                3.625,
                3.875
              ],
              "clip_lo": 0.0,
              "clip_hi": 4.0
            }
          },
          "max_down_natr": {
            "n": 249,
            "mean": -0.986,
            "median": -0.53,
            "p25": -1.438,
            "p75": -0.171,
            "hist": {
              "bin_edges": [
                -4.0,
                -3.75,
                -3.5,
                -3.25,
                -3.0,
                -2.75,
                -2.5,
                -2.25,
                -2.0,
                -1.75,
                -1.5,
                -1.25,
                -1.0,
                -0.75,
                -0.5,
                -0.25,
                0.0
              ],
              "counts": [
                10,
                2,
                2,
                5,
                4,
                6,
                3,
                8,
                7,
                14,
                12,
                10,
                19,
                25,
                32,
                90
              ],
              "bin_centers": [
                -3.875,
                -3.625,
                -3.375,
                -3.125,
                -2.875,
                -2.625,
                -2.375,
                -2.125,
                -1.875,
                -1.625,
                -1.375,
                -1.125,
                -0.875,
                -0.625,
                -0.375,
                -0.125
              ],
              "clip_lo": -4.0,
              "clip_hi": 0.0
            }
          }
        },
        "breakdown": {
          "n": 27,
          "max_up_natr": {
            "n": 27,
            "mean": 1.27,
            "median": 0.737,
            "p25": 0.352,
            "p75": 1.527,
            "hist": {
              "bin_edges": [
                0.0,
                0.25,
                0.5,
                0.75,
                1.0,
                1.25,
                1.5,
                1.75,
                2.0,
                2.25,
                2.5,
                2.75,
                3.0,
                3.25,
                3.5,
                3.75,
                4.0
              ],
              "counts": [
                3,
                8,
                3,
                3,
                0,
                2,
                3,
                0,
                1,
                2,
                0,
                0,
                0,
                0,
                0,
                2
              ],
              "bin_centers": [
                0.125,
                0.375,
                0.625,
                0.875,
                1.125,
                1.375,
                1.625,
                1.875,
                2.125,
                2.375,
                2.625,
                2.875,
                3.125,
                3.375,
                3.625,
                3.875
              ],
              "clip_lo": 0.0,
              "clip_hi": 4.0
            }
          },
          "max_down_natr": {
            "n": 27,
            "mean": -3.685,
            "median": -2.726,
            "p25": -5.387,
            "p75": -1.416,
            "hist": {
              "bin_edges": [
                -4.0,
                -3.75,
                -3.5,
                -3.25,
                -3.0,
                -2.75,
                -2.5,
                -2.25,
                -2.0,
                -1.75,
                -1.5,
                -1.25,
                -1.0,
                -0.75,
                -0.5,
                -0.25,
                0.0
              ],
              "counts": [
                9,
                1,
                1,
                1,
                1,
                2,
                0,
                1,
                1,
                1,
                7,
                1,
                1,
                0,
                0,
                0
              ],
              "bin_centers": [
                -3.875,
                -3.625,
                -3.375,
                -3.125,
                -2.875,
                -2.625,
                -2.375,
                -2.125,
                -1.875,
                -1.625,
                -1.375,
                -1.125,
                -0.875,
                -0.625,
                -0.375,
                -0.125
              ],
              "clip_lo": -4.0,
              "clip_hi": 0.0
            }
          }
        },
        "sideways": {
          "n": 43,
          "max_up_natr": {
            "n": 43,
            "mean": 1.108,
            "median": 0.947,
            "p25": 0.487,
            "p75": 1.385,
            "hist": {
              "bin_edges": [
                0.0,
                0.25,
                0.5,
                0.75,
                1.0,
                1.25,
                1.5,
                1.75,
                2.0,
                2.25,
                2.5,
                2.75,
                3.0,
                3.25,
                3.5,
                3.75,
                4.0
              ],
              "counts": [
                5,
                6,
                5,
                7,
                7,
                3,
                0,
                4,
                2,
                2,
                0,
                0,
                0,
                0,
                2,
                0
              ],
              "bin_centers": [
                0.125,
                0.375,
                0.625,
                0.875,
                1.125,
                1.375,
                1.625,
                1.875,
                2.125,
                2.375,
                2.625,
                2.875,
                3.125,
                3.375,
                3.625,
                3.875
              ],
              "clip_lo": 0.0,
              "clip_hi": 4.0
            }
          },
          "max_down_natr": {
            "n": 43,
            "mean": -2.414,
            "median": -2.405,
            "p25": -3.364,
            "p75": -1.174,
            "hist": {
              "bin_edges": [
                -4.0,
                -3.75,
                -3.5,
                -3.25,
                -3.0,
                -2.75,
                -2.5,
                -2.25,
                -2.0,
                -1.75,
                -1.5,
                -1.25,
                -1.0,
                -0.75,
                -0.5,
                -0.25,
                0.0
              ],
              "counts": [
                9,
                1,
                3,
                1,
                2,
                4,
                3,
                3,
                3,
                1,
                1,
                2,
                4,
                5,
                0,
                1
              ],
              "bin_centers": [
                -3.875,
                -3.625,
                -3.375,
                -3.125,
                -2.875,
                -2.625,
                -2.375,
                -2.125,
                -1.875,
                -1.625,
                -1.375,
                -1.125,
                -0.875,
                -0.625,
                -0.375,
                -0.125
              ],
              "clip_lo": -4.0,
              "clip_hi": 0.0
            }
          }
        },
        "forming": {
          "n": 0,
          "max_up_natr": {
            "n": 0,
            "mean": null,
            "median": null,
            "p25": null,
            "p75": null
          },
          "max_down_natr": {
            "n": 0,
            "mean": null,
            "median": null,
            "p25": null,
            "p75": null
          }
        }
      },
      "max_up_natr_hist": {
        "bin_edges": [
          0.0,
          0.25,
          0.5,
          0.75,
          1.0,
          1.25,
          1.5,
          1.75,
          2.0,
          2.25,
          2.5,
          2.75,
          3.0,
          3.25,
          3.5,
          3.75,
          4.0
        ],
        "counts": [
          8,
          14,
          9,
          13,
          19,
          18,
          17,
          16,
          15,
          16,
          16,
          7,
          13,
          9,
          20,
          109
        ],
        "bin_centers": [
          0.125,
          0.375,
          0.625,
          0.875,
          1.125,
          1.375,
          1.625,
          1.875,
          2.125,
          2.375,
          2.625,
          2.875,
          3.125,
          3.375,
          3.625,
          3.875
        ],
        "clip_lo": 0.0,
        "clip_hi": 4.0
      },
      "max_down_natr_hist": {
        "bin_edges": [
          -4.0,
          -3.75,
          -3.5,
          -3.25,
          -3.0,
          -2.75,
          -2.5,
          -2.25,
          -2.0,
          -1.75,
          -1.5,
          -1.25,
          -1.0,
          -0.75,
          -0.5,
          -0.25,
          0.0
        ],
        "counts": [
          28,
          4,
          6,
          7,
          7,
          12,
          6,
          12,
          11,
          16,
          20,
          13,
          24,
          30,
          32,
          91
        ],
        "bin_centers": [
          -3.875,
          -3.625,
          -3.375,
          -3.125,
          -2.875,
          -2.625,
          -2.375,
          -2.125,
          -1.875,
          -1.625,
          -1.375,
          -1.125,
          -0.875,
          -0.625,
          -0.375,
          -0.125
        ],
        "clip_lo": -4.0,
        "clip_hi": 0.0
      },
      "timestamp_min": 1532304000000,
      "timestamp_max": 1783728000000,
      "timestamp_min_iso": "2018-07-23T00:00:00Z",
      "timestamp_max_iso": "2026-07-11T00:00:00Z"
    },
    {
      "pattern_type": "bearish_flag",
      "pattern_name": "Bearish Flag",
      "timeframe": "15m",
      "bias": "bearish",
      "n": 1980,
      "n_symbols": 543,
      "breakout_success_rate": 18.13,
      "breakdown_success_rate": 77.83,
      "sideways_rate": 4.04,
      "forming_rate": 0.0,
      "both_cleared_rate": 37.53,
      "breakout_success_rate_ci95": [
        16.5,
        19.89
      ],
      "breakdown_success_rate_ci95": [
        75.95,
        79.6
      ],
      "sideways_rate_ci95": [
        3.26,
        5.0
      ],
      "forming_rate_ci95": [
        0.0,
        0.19
      ],
      "both_sides_rate": 37.53,
      "expected_hit_rate": 77.83,
      "expected_hit_rate_ci95": [
        75.95,
        79.6
      ],
      "mean_ret_10c": -0.276,
      "median_ret_10c": -0.237,
      "std_ret_10c": 2.882,
      "win_rate_ret_gt0": 43.99,
      "p25_ret_10c": -1.326,
      "p75_ret_10c": 0.803,
      "mean_mfe": 1.638,
      "mean_mae": -2.089,
      "mfe_mae_ratio": 0.784,
      "max_up_natr": {
        "n": 1980,
        "mean": 2.005,
        "median": 1.397,
        "p25": 0.52,
        "p75": 2.677,
        "hist": {
          "bin_edges": [
            0.0,
            0.25,
            0.5,
            0.75,
            1.0,
            1.25,
            1.5,
            1.75,
            2.0,
            2.25,
            2.5,
            2.75,
            3.0,
            3.25,
            3.5,
            3.75,
            4.0
          ],
          "counts": [
            301,
            188,
            163,
            155,
            118,
            119,
            108,
            97,
            87,
            95,
            69,
            63,
            54,
            48,
            45,
            270
          ],
          "bin_centers": [
            0.125,
            0.375,
            0.625,
            0.875,
            1.125,
            1.375,
            1.625,
            1.875,
            2.125,
            2.375,
            2.625,
            2.875,
            3.125,
            3.375,
            3.625,
            3.875
          ],
          "clip_lo": 0.0,
          "clip_hi": 4.0
        }
      },
      "max_down_natr": {
        "n": 1980,
        "mean": -2.519,
        "median": -1.957,
        "p25": -3.21,
        "p75": -1.051,
        "hist": {
          "bin_edges": [
            -4.0,
            -3.75,
            -3.5,
            -3.25,
            -3.0,
            -2.75,
            -2.5,
            -2.25,
            -2.0,
            -1.75,
            -1.5,
            -1.25,
            -1.0,
            -0.75,
            -0.5,
            -0.25,
            0.0
          ],
          "counts": [
            375,
            44,
            61,
            85,
            78,
            90,
            110,
            120,
            134,
            128,
            158,
            133,
            149,
            124,
            106,
            85
          ],
          "bin_centers": [
            -3.875,
            -3.625,
            -3.375,
            -3.125,
            -2.875,
            -2.625,
            -2.375,
            -2.125,
            -1.875,
            -1.625,
            -1.375,
            -1.125,
            -0.875,
            -0.625,
            -0.375,
            -0.125
          ],
          "clip_lo": -4.0,
          "clip_hi": 0.0
        }
      },
      "median_max_up_natr": 1.397,
      "median_max_down_natr": -1.957,
      "mean_max_up_natr": 2.005,
      "mean_max_down_natr": -2.519,
      "p25_max_up_natr": 0.52,
      "p75_max_up_natr": 2.677,
      "p25_max_down_natr": -3.21,
      "p75_max_down_natr": -1.051,
      "outcome_natr_moves": {
        "breakout": {
          "n": 359,
          "max_up_natr": {
            "n": 359,
            "mean": 3.444,
            "median": 2.794,
            "p25": 2.079,
            "p75": 3.939,
            "hist": {
              "bin_edges": [
                0.0,
                0.25,
                0.5,
                0.75,
                1.0,
                1.25,
                1.5,
                1.75,
                2.0,
                2.25,
                2.5,
                2.75,
                3.0,
                3.25,
                3.5,
                3.75,
                4.0
              ],
              "counts": [
                3,
                4,
                4,
                5,
                11,
                16,
                22,
                16,
                27,
                34,
                30,
                27,
                22,
                21,
                17,
                100
              ],
              "bin_centers": [
                0.125,
                0.375,
                0.625,
                0.875,
                1.125,
                1.375,
                1.625,
                1.875,
                2.125,
                2.375,
                2.625,
                2.875,
                3.125,
                3.375,
                3.625,
                3.875
              ],
              "clip_lo": 0.0,
              "clip_hi": 4.0
            }
          },
          "max_down_natr": {
            "n": 359,
            "mean": -1.239,
            "median": -0.755,
            "p25": -1.462,
            "p75": -0.372,
            "hist": {
              "bin_edges": [
                -4.0,
                -3.75,
                -3.5,
                -3.25,
                -3.0,
                -2.75,
                -2.5,
                -2.25,
                -2.0,
                -1.75,
                -1.5,
                -1.25,
                -1.0,
                -0.75,
                -0.5,
                -0.25,
                0.0
              ],
              "counts": [
                19,
                4,
                6,
                9,
                5,
                3,
                13,
                10,
                7,
                13,
                20,
                37,
                35,
                53,
                64,
                61
              ],
              "bin_centers": [
                -3.875,
                -3.625,
                -3.375,
                -3.125,
                -2.875,
                -2.625,
                -2.375,
                -2.125,
                -1.875,
                -1.625,
                -1.375,
                -1.125,
                -0.875,
                -0.625,
                -0.375,
                -0.125
              ],
              "clip_lo": -4.0,
              "clip_hi": 0.0
            }
          }
        },
        "breakdown": {
          "n": 1541,
          "max_up_natr": {
            "n": 1541,
            "mean": 1.705,
            "median": 1.011,
            "p25": 0.367,
            "p75": 2.25,
            "hist": {
              "bin_edges": [
                0.0,
                0.25,
                0.5,
                0.75,
                1.0,
                1.25,
                1.5,
                1.75,
                2.0,
                2.25,
                2.5,
                2.75,
                3.0,
                3.25,
                3.5,
                3.75,
                4.0
              ],
              "counts": [
                292,
                178,
                153,
                140,
                100,
                93,
                75,
                71,
                54,
                58,
                37,
                33,
                32,
                27,
                28,
                170
              ],
              "bin_centers": [
                0.125,
                0.375,
                0.625,
                0.875,
                1.125,
                1.375,
                1.625,
                1.875,
                2.125,
                2.375,
                2.625,
                2.875,
                3.125,
                3.375,
                3.625,
                3.875
              ],
              "clip_lo": 0.0,
              "clip_hi": 4.0
            }
          },
          "max_down_natr": {
            "n": 1541,
            "mean": -2.908,
            "median": -2.287,
            "p25": -3.552,
            "p75": -1.464,
            "hist": {
              "bin_edges": [
                -4.0,
                -3.75,
                -3.5,
                -3.25,
                -3.0,
                -2.75,
                -2.5,
                -2.25,
                -2.0,
                -1.75,
                -1.5,
                -1.25,
                -1.0,
                -0.75,
                -0.5,
                -0.25,
                0.0
              ],
              "counts": [
                356,
                40,
                55,
                76,
                73,
                86,
                97,
                109,
                125,
                112,
                132,
                89,
                103,
                48,
                24,
                16
              ],
              "bin_centers": [
                -3.875,
                -3.625,
                -3.375,
                -3.125,
                -2.875,
                -2.625,
                -2.375,
                -2.125,
                -1.875,
                -1.625,
                -1.375,
                -1.125,
                -0.875,
                -0.625,
                -0.375,
                -0.125
              ],
              "clip_lo": -4.0,
              "clip_hi": 0.0
            }
          }
        },
        "sideways": {
          "n": 80,
          "max_up_natr": {
            "n": 80,
            "mean": 1.341,
            "median": 1.418,
            "p25": 0.836,
            "p75": 1.873,
            "hist": {
              "bin_edges": [
                0.0,
                0.25,
                0.5,
                0.75,
                1.0,
                1.25,
                1.5,
                1.75,
                2.0,
                2.25,
                2.5,
                2.75,
                3.0,
                3.25,
                3.5,
                3.75,
                4.0
              ],
              "counts": [
                6,
                6,
                6,
                10,
                7,
                10,
                11,
                10,
                6,
                3,
                2,
                3,
                0,
                0,
                0,
                0
              ],
              "bin_centers": [
                0.125,
                0.375,
                0.625,
                0.875,
                1.125,
                1.375,
                1.625,
                1.875,
                2.125,
                2.375,
                2.625,
                2.875,
                3.125,
                3.375,
                3.625,
                3.875
              ],
              "clip_lo": 0.0,
              "clip_hi": 4.0
            }
          },
          "max_down_natr": {
            "n": 80,
            "mean": -0.758,
            "median": -0.635,
            "p25": -0.993,
            "p75": -0.418,
            "hist": {
              "bin_edges": [
                -4.0,
                -3.75,
                -3.5,
                -3.25,
                -3.0,
                -2.75,
                -2.5,
                -2.25,
                -2.0,
                -1.75,
                -1.5,
                -1.25,
                -1.0,
                -0.75,
                -0.5,
                -0.25,
                0.0
              ],
              "counts": [
                0,
                0,
                0,
                0,
                0,
                1,
                0,
                1,
                2,
                3,
                6,
                7,
                11,
                23,
                18,
                8
              ],
              "bin_centers": [
                -3.875,
                -3.625,
                -3.375,
                -3.125,
                -2.875,
                -2.625,
                -2.375,
                -2.125,
                -1.875,
                -1.625,
                -1.375,
                -1.125,
                -0.875,
                -0.625,
                -0.375,
                -0.125
              ],
              "clip_lo": -4.0,
              "clip_hi": 0.0
            }
          }
        },
        "forming": {
          "n": 0,
          "max_up_natr": {
            "n": 0,
            "mean": null,
            "median": null,
            "p25": null,
            "p75": null
          },
          "max_down_natr": {
            "n": 0,
            "mean": null,
            "median": null,
            "p25": null,
            "p75": null
          }
        }
      },
      "max_up_natr_hist": {
        "bin_edges": [
          0.0,
          0.25,
          0.5,
          0.75,
          1.0,
          1.25,
          1.5,
          1.75,
          2.0,
          2.25,
          2.5,
          2.75,
          3.0,
          3.25,
          3.5,
          3.75,
          4.0
        ],
        "counts": [
          301,
          188,
          163,
          155,
          118,
          119,
          108,
          97,
          87,
          95,
          69,
          63,
          54,
          48,
          45,
          270
        ],
        "bin_centers": [
          0.125,
          0.375,
          0.625,
          0.875,
          1.125,
          1.375,
          1.625,
          1.875,
          2.125,
          2.375,
          2.625,
          2.875,
          3.125,
          3.375,
          3.625,
          3.875
        ],
        "clip_lo": 0.0,
        "clip_hi": 4.0
      },
      "max_down_natr_hist": {
        "bin_edges": [
          -4.0,
          -3.75,
          -3.5,
          -3.25,
          -3.0,
          -2.75,
          -2.5,
          -2.25,
          -2.0,
          -1.75,
          -1.5,
          -1.25,
          -1.0,
          -0.75,
          -0.5,
          -0.25,
          0.0
        ],
        "counts": [
          375,
          44,
          61,
          85,
          78,
          90,
          110,
          120,
          134,
          128,
          158,
          133,
          149,
          124,
          106,
          85
        ],
        "bin_centers": [
          -3.875,
          -3.625,
          -3.375,
          -3.125,
          -2.875,
          -2.625,
          -2.375,
          -2.125,
          -1.875,
          -1.625,
          -1.375,
          -1.125,
          -0.875,
          -0.625,
          -0.375,
          -0.125
        ],
        "clip_lo": -4.0,
        "clip_hi": 0.0
      },
      "timestamp_min": 1596834900000,
      "timestamp_max": 1785519900000,
      "timestamp_min_iso": "2020-08-07T21:15:00Z",
      "timestamp_max_iso": "2026-07-31T17:45:00Z"
    },
    {
      "pattern_type": "ascending_broadening_wedge",
      "pattern_name": "Ascending Broadening Wedge",
      "timeframe": "15m",
      "bias": "bearish",
      "n": 2927,
      "n_symbols": 541,
      "breakout_success_rate": 12.81,
      "breakdown_success_rate": 77.66,
      "sideways_rate": 9.53,
      "forming_rate": 0.0,
      "both_cleared_rate": 39.97,
      "breakout_success_rate_ci95": [
        11.65,
        14.07
      ],
      "breakdown_success_rate_ci95": [
        76.11,
        79.13
      ],
      "sideways_rate_ci95": [
        8.52,
        10.65
      ],
      "forming_rate_ci95": [
        0.0,
        0.13
      ],
      "both_sides_rate": 39.97,
      "expected_hit_rate": 77.66,
      "expected_hit_rate_ci95": [
        76.11,
        79.13
      ],
      "mean_ret_10c": -0.431,
      "median_ret_10c": -0.543,
      "std_ret_10c": 4.775,
      "win_rate_ret_gt0": 37.58,
      "p25_ret_10c": -2.0,
      "p75_ret_10c": 0.814,
      "mean_mfe": 2.388,
      "mean_mae": -2.994,
      "mfe_mae_ratio": 0.798,
      "max_up_natr": {
        "n": 2927,
        "mean": 2.484,
        "median": 1.184,
        "p25": 0.322,
        "p75": 2.948,
        "hist": {
          "bin_edges": [
            0.0,
            0.25,
            0.5,
            0.75,
            1.0,
            1.25,
            1.5,
            1.75,
            2.0,
            2.25,
            2.5,
            2.75,
            3.0,
            3.25,
            3.5,
            3.75,
            4.0
          ],
          "counts": [
            637,
            315,
            198,
            187,
            160,
            143,
            131,
            115,
            105,
            98,
            66,
            55,
            61,
            43,
            41,
            572
          ],
          "bin_centers": [
            0.125,
            0.375,
            0.625,
            0.875,
            1.125,
            1.375,
            1.625,
            1.875,
            2.125,
            2.375,
            2.625,
            2.875,
            3.125,
            3.375,
            3.625,
            3.875
          ],
          "clip_lo": 0.0,
          "clip_hi": 4.0
        }
      },
      "max_down_natr": {
        "n": 2927,
        "mean": -3.084,
        "median": -2.609,
        "p25": -4.028,
        "p75": -1.473,
        "hist": {
          "bin_edges": [
            -4.0,
            -3.75,
            -3.5,
            -3.25,
            -3.0,
            -2.75,
            -2.5,
            -2.25,
            -2.0,
            -1.75,
            -1.5,
            -1.25,
            -1.0,
            -0.75,
            -0.5,
            -0.25,
            0.0
          ],
          "counts": [
            835,
            110,
            141,
            141,
            156,
            145,
            157,
            165,
            163,
            156,
            179,
            146,
            147,
            110,
            79,
            97
          ],
          "bin_centers": [
            -3.875,
            -3.625,
            -3.375,
            -3.125,
            -2.875,
            -2.625,
            -2.375,
            -2.125,
            -1.875,
            -1.625,
            -1.375,
            -1.125,
            -0.875,
            -0.625,
            -0.375,
            -0.125
          ],
          "clip_lo": -4.0,
          "clip_hi": 0.0
        }
      },
      "median_max_up_natr": 1.184,
      "median_max_down_natr": -2.609,
      "mean_max_up_natr": 2.484,
      "mean_max_down_natr": -3.084,
      "p25_max_up_natr": 0.322,
      "p75_max_up_natr": 2.948,
      "p25_max_down_natr": -4.028,
      "p75_max_down_natr": -1.473,
      "outcome_natr_moves": {
        "breakout": {
          "n": 375,
          "max_up_natr": {
            "n": 375,
            "mean": 8.634,
            "median": 6.246,
            "p25": 3.608,
            "p75": 10.359,
            "hist": {
              "bin_edges": [
                0.0,
                0.25,
                0.5,
                0.75,
                1.0,
                1.25,
                1.5,
                1.75,
                2.0,
                2.25,
                2.5,
                2.75,
                3.0,
                3.25,
                3.5,
                3.75,
                4.0
              ],
              "counts": [
                0,
                0,
                1,
                0,
                6,
                4,
                15,
                8,
                15,
                6,
                11,
                7,
                10,
                8,
                8,
                276
              ],
              "bin_centers": [
                0.125,
                0.375,
                0.625,
                0.875,
                1.125,
                1.375,
                1.625,
                1.875,
                2.125,
                2.375,
                2.625,
                2.875,
                3.125,
                3.375,
                3.625,
                3.875
              ],
              "clip_lo": 0.0,
              "clip_hi": 4.0
            }
          },
          "max_down_natr": {
            "n": 375,
            "mean": -2.208,
            "median": -1.208,
            "p25": -3.142,
            "p75": -0.3,
            "hist": {
              "bin_edges": [
                -4.0,
                -3.75,
                -3.5,
                -3.25,
                -3.0,
                -2.75,
                -2.5,
                -2.25,
                -2.0,
                -1.75,
                -1.5,
                -1.25,
                -1.0,
                -0.75,
                -0.5,
                -0.25,
                0.0
              ],
              "counts": [
                72,
                7,
                11,
                11,
                16,
                8,
                5,
                8,
                14,
                14,
                17,
                17,
                22,
                26,
                47,
                80
              ],
              "bin_centers": [
                -3.875,
                -3.625,
                -3.375,
                -3.125,
                -2.875,
                -2.625,
                -2.375,
                -2.125,
                -1.875,
                -1.625,
                -1.375,
                -1.125,
                -0.875,
                -0.625,
                -0.375,
                -0.125
              ],
              "clip_lo": -4.0,
              "clip_hi": 0.0
            }
          }
        },
        "breakdown": {
          "n": 2273,
          "max_up_natr": {
            "n": 2273,
            "mean": 1.462,
            "median": 0.777,
            "p25": 0.21,
            "p75": 1.954,
            "hist": {
              "bin_edges": [
                0.0,
                0.25,
                0.5,
                0.75,
                1.0,
                1.25,
                1.5,
                1.75,
                2.0,
                2.25,
                2.5,
                2.75,
                3.0,
                3.25,
                3.5,
                3.75,
                4.0
              ],
              "counts": [
                631,
                302,
                186,
                169,
                139,
                124,
                84,
                85,
                68,
                76,
                44,
                39,
                37,
                29,
                26,
                234
              ],
              "bin_centers": [
                0.125,
                0.375,
                0.625,
                0.875,
                1.125,
                1.375,
                1.625,
                1.875,
                2.125,
                2.375,
                2.625,
                2.875,
                3.125,
                3.375,
                3.625,
                3.875
              ],
              "clip_lo": 0.0,
              "clip_hi": 4.0
            }
          },
          "max_down_natr": {
            "n": 2273,
            "mean": -3.435,
            "median": -2.932,
            "p25": -4.285,
            "p75": -1.878,
            "hist": {
              "bin_edges": [
                -4.0,
                -3.75,
                -3.5,
                -3.25,
                -3.0,
                -2.75,
                -2.5,
                -2.25,
                -2.0,
                -1.75,
                -1.5,
                -1.25,
                -1.0,
                -0.75,
                -0.5,
                -0.25,
                0.0
              ],
              "counts": [
                744,
                100,
                128,
                127,
                133,
                124,
                141,
                150,
                138,
                121,
                148,
                107,
                83,
                29,
                0,
                0
              ],
              "bin_centers": [
                -3.875,
                -3.625,
                -3.375,
                -3.125,
                -2.875,
                -2.625,
                -2.375,
                -2.125,
                -1.875,
                -1.625,
                -1.375,
                -1.125,
                -0.875,
                -0.625,
                -0.375,
                -0.125
              ],
              "clip_lo": -4.0,
              "clip_hi": 0.0
            }
          }
        },
        "sideways": {
          "n": 279,
          "max_up_natr": {
            "n": 279,
            "mean": 2.542,
            "median": 2.059,
            "p25": 1.44,
            "p75": 3.486,
            "hist": {
              "bin_edges": [
                0.0,
                0.25,
                0.5,
                0.75,
                1.0,
                1.25,
                1.5,
                1.75,
                2.0,
                2.25,
                2.5,
                2.75,
                3.0,
                3.25,
                3.5,
                3.75,
                4.0
              ],
              "counts": [
                6,
                13,
                11,
                18,
                15,
                15,
                32,
                22,
                22,
                16,
                11,
                9,
                14,
                6,
                7,
                62
              ],
              "bin_centers": [
                0.125,
                0.375,
                0.625,
                0.875,
                1.125,
                1.375,
                1.625,
                1.875,
                2.125,
                2.375,
                2.625,
                2.875,
                3.125,
                3.375,
                3.625,
                3.875
              ],
              "clip_lo": 0.0,
              "clip_hi": 4.0
            }
          },
          "max_down_natr": {
            "n": 279,
            "mean": -1.405,
            "median": -0.973,
            "p25": -1.909,
            "p75": -0.582,
            "hist": {
              "bin_edges": [
                -4.0,
                -3.75,
                -3.5,
                -3.25,
                -3.0,
                -2.75,
                -2.5,
                -2.25,
                -2.0,
                -1.75,
                -1.5,
                -1.25,
                -1.0,
                -0.75,
                -0.5,
                -0.25,
                0.0
              ],
              "counts": [
                19,
                3,
                2,
                3,
                7,
                13,
                11,
                7,
                11,
                21,
                14,
                22,
                42,
                55,
                32,
                17
              ],
              "bin_centers": [
                -3.875,
                -3.625,
                -3.375,
                -3.125,
                -2.875,
                -2.625,
                -2.375,
                -2.125,
                -1.875,
                -1.625,
                -1.375,
                -1.125,
                -0.875,
                -0.625,
                -0.375,
                -0.125
              ],
              "clip_lo": -4.0,
              "clip_hi": 0.0
            }
          }
        },
        "forming": {
          "n": 0,
          "max_up_natr": {
            "n": 0,
            "mean": null,
            "median": null,
            "p25": null,
            "p75": null
          },
          "max_down_natr": {
            "n": 0,
            "mean": null,
            "median": null,
            "p25": null,
            "p75": null
          }
        }
      },
      "max_up_natr_hist": {
        "bin_edges": [
          0.0,
          0.25,
          0.5,
          0.75,
          1.0,
          1.25,
          1.5,
          1.75,
          2.0,
          2.25,
          2.5,
          2.75,
          3.0,
          3.25,
          3.5,
          3.75,
          4.0
        ],
        "counts": [
          637,
          315,
          198,
          187,
          160,
          143,
          131,
          115,
          105,
          98,
          66,
          55,
          61,
          43,
          41,
          572
        ],
        "bin_centers": [
          0.125,
          0.375,
          0.625,
          0.875,
          1.125,
          1.375,
          1.625,
          1.875,
          2.125,
          2.375,
          2.625,
          2.875,
          3.125,
          3.375,
          3.625,
          3.875
        ],
        "clip_lo": 0.0,
        "clip_hi": 4.0
      },
      "max_down_natr_hist": {
        "bin_edges": [
          -4.0,
          -3.75,
          -3.5,
          -3.25,
          -3.0,
          -2.75,
          -2.5,
          -2.25,
          -2.0,
          -1.75,
          -1.5,
          -1.25,
          -1.0,
          -0.75,
          -0.5,
          -0.25,
          0.0
        ],
        "counts": [
          835,
          110,
          141,
          141,
          156,
          145,
          157,
          165,
          163,
          156,
          179,
          146,
          147,
          110,
          79,
          97
        ],
        "bin_centers": [
          -3.875,
          -3.625,
          -3.375,
          -3.125,
          -2.875,
          -2.625,
          -2.375,
          -2.125,
          -1.875,
          -1.625,
          -1.375,
          -1.125,
          -0.875,
          -0.625,
          -0.375,
          -0.125
        ],
        "clip_lo": -4.0,
        "clip_hi": 0.0
      },
      "timestamp_min": 1596947400000,
      "timestamp_max": 1785523500000,
      "timestamp_min_iso": "2020-08-09T04:30:00Z",
      "timestamp_max_iso": "2026-07-31T18:45:00Z"
    },
    {
      "pattern_type": "bearish_flag",
      "pattern_name": "Bearish Flag",
      "timeframe": "1d",
      "bias": "bearish",
      "n": 356,
      "n_symbols": 250,
      "breakout_success_rate": 19.1,
      "breakdown_success_rate": 77.25,
      "sideways_rate": 3.65,
      "forming_rate": 0.0,
      "both_cleared_rate": 28.37,
      "breakout_success_rate_ci95": [
        15.36,
        23.51
      ],
      "breakdown_success_rate_ci95": [
        72.61,
        81.3
      ],
      "sideways_rate_ci95": [
        2.15,
        6.15
      ],
      "forming_rate_ci95": [
        0.0,
        1.07
      ],
      "both_sides_rate": 28.37,
      "expected_hit_rate": 77.25,
      "expected_hit_rate_ci95": [
        72.61,
        81.3
      ],
      "mean_ret_10c": -4.739,
      "median_ret_10c": -5.929,
      "std_ret_10c": 23.802,
      "win_rate_ret_gt0": 36.24,
      "p25_ret_10c": -20.407,
      "p75_ret_10c": 7.333,
      "mean_mfe": 22.629,
      "mean_mae": -21.905,
      "mfe_mae_ratio": 1.033,
      "max_up_natr": {
        "n": 356,
        "mean": 2.238,
        "median": 1.144,
        "p25": 0.342,
        "p75": 2.785,
        "hist": {
          "bin_edges": [
            0.0,
            0.25,
            0.5,
            0.75,
            1.0,
            1.25,
            1.5,
            1.75,
            2.0,
            2.25,
            2.5,
            2.75,
            3.0,
            3.25,
            3.5,
            3.75,
            4.0
          ],
          "counts": [
            72,
            35,
            35,
            25,
            23,
            8,
            19,
            15,
            13,
            8,
            11,
            17,
            2,
            7,
            9,
            57
          ],
          "bin_centers": [
            0.125,
            0.375,
            0.625,
            0.875,
            1.125,
            1.375,
            1.625,
            1.875,
            2.125,
            2.375,
            2.625,
            2.875,
            3.125,
            3.375,
            3.625,
            3.875
          ],
          "clip_lo": 0.0,
          "clip_hi": 4.0
        }
      },
      "max_down_natr": {
        "n": 356,
        "mean": -2.225,
        "median": -1.785,
        "p25": -2.855,
        "p75": -0.991,
        "hist": {
          "bin_edges": [
            -4.0,
            -3.75,
            -3.5,
            -3.25,
            -3.0,
            -2.75,
            -2.5,
            -2.25,
            -2.0,
            -1.75,
            -1.5,
            -1.25,
            -1.0,
            -0.75,
            -0.5,
            -0.25,
            0.0
          ],
          "counts": [
            45,
            8,
            10,
            11,
            19,
            19,
            22,
            26,
            19,
            21,
            33,
            31,
            27,
            28,
            25,
            12
          ],
          "bin_centers": [
            -3.875,
            -3.625,
            -3.375,
            -3.125,
            -2.875,
            -2.625,
            -2.375,
            -2.125,
            -1.875,
            -1.625,
            -1.375,
            -1.125,
            -0.875,
            -0.625,
            -0.375,
            -0.125
          ],
          "clip_lo": -4.0,
          "clip_hi": 0.0
        }
      },
      "median_max_up_natr": 1.144,
      "median_max_down_natr": -1.785,
      "mean_max_up_natr": 2.238,
      "mean_max_down_natr": -2.225,
      "p25_max_up_natr": 0.342,
      "p75_max_up_natr": 2.785,
      "p25_max_down_natr": -2.855,
      "p75_max_down_natr": -0.991,
      "outcome_natr_moves": {
        "breakout": {
          "n": 68,
          "max_up_natr": {
            "n": 68,
            "mean": 3.748,
            "median": 2.803,
            "p25": 1.863,
            "p75": 5.074,
            "hist": {
              "bin_edges": [
                0.0,
                0.25,
                0.5,
                0.75,
                1.0,
                1.25,
                1.5,
                1.75,
                2.0,
                2.25,
                2.5,
                2.75,
                3.0,
                3.25,
                3.5,
                3.75,
                4.0
              ],
              "counts": [
                0,
                0,
                2,
                3,
                5,
                2,
                4,
                4,
                5,
                3,
                3,
                9,
                0,
                3,
                2,
                23
              ],
              "bin_centers": [
                0.125,
                0.375,
                0.625,
                0.875,
                1.125,
                1.375,
                1.625,
                1.875,
                2.125,
                2.375,
                2.625,
                2.875,
                3.125,
                3.375,
                3.625,
                3.875
              ],
              "clip_lo": 0.0,
              "clip_hi": 4.0
            }
          },
          "max_down_natr": {
            "n": 68,
            "mean": -1.869,
            "median": -0.788,
            "p25": -1.793,
            "p75": -0.47,
            "hist": {
              "bin_edges": [
                -4.0,
                -3.75,
                -3.5,
                -3.25,
                -3.0,
                -2.75,
                -2.5,
                -2.25,
                -2.0,
                -1.75,
                -1.5,
                -1.25,
                -1.0,
                -0.75,
                -0.5,
                -0.25,
                0.0
              ],
              "counts": [
                8,
                0,
                0,
                1,
                0,
                3,
                3,
                0,
                3,
                1,
                5,
                5,
                8,
                8,
                16,
                7
              ],
              "bin_centers": [
                -3.875,
                -3.625,
                -3.375,
                -3.125,
                -2.875,
                -2.625,
                -2.375,
                -2.125,
                -1.875,
                -1.625,
                -1.375,
                -1.125,
                -0.875,
                -0.625,
                -0.375,
                -0.125
              ],
              "clip_lo": -4.0,
              "clip_hi": 0.0
            }
          }
        },
        "breakdown": {
          "n": 275,
          "max_up_natr": {
            "n": 275,
            "mean": 1.907,
            "median": 0.736,
            "p25": 0.217,
            "p75": 2.178,
            "hist": {
              "bin_edges": [
                0.0,
                0.25,
                0.5,
                0.75,
                1.0,
                1.25,
                1.5,
                1.75,
                2.0,
                2.25,
                2.5,
                2.75,
                3.0,
                3.25,
                3.5,
                3.75,
                4.0
              ],
              "counts": [
                72,
                34,
                32,
                19,
                17,
                6,
                11,
                10,
                6,
                5,
                8,
                8,
                2,
                4,
                7,
                34
              ],
              "bin_centers": [
                0.125,
                0.375,
                0.625,
                0.875,
                1.125,
                1.375,
                1.625,
                1.875,
                2.125,
                2.375,
                2.625,
                2.875,
                3.125,
                3.375,
                3.625,
                3.875
              ],
              "clip_lo": 0.0,
              "clip_hi": 4.0
            }
          },
          "max_down_natr": {
            "n": 275,
            "mean": -2.374,
            "median": -2.098,
            "p25": -2.952,
            "p75": -1.265,
            "hist": {
              "bin_edges": [
                -4.0,
                -3.75,
                -3.5,
                -3.25,
                -3.0,
                -2.75,
                -2.5,
                -2.25,
                -2.0,
                -1.75,
                -1.5,
                -1.25,
                -1.0,
                -0.75,
                -0.5,
                -0.25,
                0.0
              ],
              "counts": [
                37,
                8,
                10,
                10,
                19,
                16,
                19,
                25,
                16,
                20,
                27,
                23,
                16,
                17,
                7,
                5
              ],
              "bin_centers": [
                -3.875,
                -3.625,
                -3.375,
                -3.125,
                -2.875,
                -2.625,
                -2.375,
                -2.125,
                -1.875,
                -1.625,
                -1.375,
                -1.125,
                -0.875,
                -0.625,
                -0.375,
                -0.125
              ],
              "clip_lo": -4.0,
              "clip_hi": 0.0
            }
          }
        },
        "sideways": {
          "n": 13,
          "max_up_natr": {
            "n": 13,
            "mean": 1.332,
            "median": 1.592,
            "p25": 0.821,
            "p75": 1.748
          },
          "max_down_natr": {
            "n": 13,
            "mean": -0.943,
            "median": -0.794,
            "p25": -1.178,
            "p75": -0.564
          }
        },
        "forming": {
          "n": 0,
          "max_up_natr": {
            "n": 0,
            "mean": null,
            "median": null,
            "p25": null,
            "p75": null
          },
          "max_down_natr": {
            "n": 0,
            "mean": null,
            "median": null,
            "p25": null,
            "p75": null
          }
        }
      },
      "max_up_natr_hist": {
        "bin_edges": [
          0.0,
          0.25,
          0.5,
          0.75,
          1.0,
          1.25,
          1.5,
          1.75,
          2.0,
          2.25,
          2.5,
          2.75,
          3.0,
          3.25,
          3.5,
          3.75,
          4.0
        ],
        "counts": [
          72,
          35,
          35,
          25,
          23,
          8,
          19,
          15,
          13,
          8,
          11,
          17,
          2,
          7,
          9,
          57
        ],
        "bin_centers": [
          0.125,
          0.375,
          0.625,
          0.875,
          1.125,
          1.375,
          1.625,
          1.875,
          2.125,
          2.375,
          2.625,
          2.875,
          3.125,
          3.375,
          3.625,
          3.875
        ],
        "clip_lo": 0.0,
        "clip_hi": 4.0
      },
      "max_down_natr_hist": {
        "bin_edges": [
          -4.0,
          -3.75,
          -3.5,
          -3.25,
          -3.0,
          -2.75,
          -2.5,
          -2.25,
          -2.0,
          -1.75,
          -1.5,
          -1.25,
          -1.0,
          -0.75,
          -0.5,
          -0.25,
          0.0
        ],
        "counts": [
          45,
          8,
          10,
          11,
          19,
          19,
          22,
          26,
          19,
          21,
          33,
          31,
          27,
          28,
          25,
          12
        ],
        "bin_centers": [
          -3.875,
          -3.625,
          -3.375,
          -3.125,
          -2.875,
          -2.625,
          -2.375,
          -2.125,
          -1.875,
          -1.625,
          -1.375,
          -1.125,
          -0.875,
          -0.625,
          -0.375,
          -0.125
        ],
        "clip_lo": -4.0,
        "clip_hi": 0.0
      },
      "timestamp_min": 1543708800000,
      "timestamp_max": 1782172800000,
      "timestamp_min_iso": "2018-12-02T00:00:00Z",
      "timestamp_max_iso": "2026-06-23T00:00:00Z"
    },
    {
      "pattern_type": "double_bottom",
      "pattern_name": "Double Bottom",
      "timeframe": "1d",
      "bias": "bullish",
      "n": 105,
      "n_symbols": 93,
      "breakout_success_rate": 77.14,
      "breakdown_success_rate": 12.38,
      "sideways_rate": 10.48,
      "forming_rate": 0.0,
      "both_cleared_rate": 38.1,
      "breakout_success_rate_ci95": [
        68.24,
        84.13
      ],
      "breakdown_success_rate_ci95": [
        7.38,
        20.04
      ],
      "sideways_rate_ci95": [
        5.95,
        17.79
      ],
      "forming_rate_ci95": [
        0.0,
        3.53
      ],
      "both_sides_rate": 38.1,
      "expected_hit_rate": 77.14,
      "expected_hit_rate_ci95": [
        68.24,
        84.13
      ],
      "mean_ret_10c": 20.323,
      "median_ret_10c": 12.724,
      "std_ret_10c": 37.137,
      "win_rate_ret_gt0": 68.57,
      "p25_ret_10c": -5.023,
      "p75_ret_10c": 34.531,
      "mean_mfe": 41.368,
      "mean_mae": -11.474,
      "mfe_mae_ratio": 3.605,
      "max_up_natr": {
        "n": 105,
        "mean": 3.903,
        "median": 2.646,
        "p25": 1.395,
        "p75": 4.391,
        "hist": {
          "bin_edges": [
            0.0,
            0.25,
            0.5,
            0.75,
            1.0,
            1.25,
            1.5,
            1.75,
            2.0,
            2.25,
            2.5,
            2.75,
            3.0,
            3.25,
            3.5,
            3.75,
            4.0
          ],
          "counts": [
            4,
            2,
            5,
            2,
            6,
            11,
            6,
            5,
            4,
            5,
            8,
            1,
            3,
            6,
            3,
            34
          ],
          "bin_centers": [
            0.125,
            0.375,
            0.625,
            0.875,
            1.125,
            1.375,
            1.625,
            1.875,
            2.125,
            2.375,
            2.625,
            2.875,
            3.125,
            3.375,
            3.625,
            3.875
          ],
          "clip_lo": 0.0,
          "clip_hi": 4.0
        }
      },
      "max_down_natr": {
        "n": 105,
        "mean": -1.14,
        "median": -0.98,
        "p25": -1.564,
        "p75": -0.426,
        "hist": {
          "bin_edges": [
            -4.0,
            -3.75,
            -3.5,
            -3.25,
            -3.0,
            -2.75,
            -2.5,
            -2.25,
            -2.0,
            -1.75,
            -1.5,
            -1.25,
            -1.0,
            -0.75,
            -0.5,
            -0.25,
            0.0
          ],
          "counts": [
            1,
            0,
            1,
            1,
            7,
            0,
            2,
            5,
            3,
            10,
            11,
            11,
            10,
            11,
            16,
            16
          ],
          "bin_centers": [
            -3.875,
            -3.625,
            -3.375,
            -3.125,
            -2.875,
            -2.625,
            -2.375,
            -2.125,
            -1.875,
            -1.625,
            -1.375,
            -1.125,
            -0.875,
            -0.625,
            -0.375,
            -0.125
          ],
          "clip_lo": -4.0,
          "clip_hi": 0.0
        }
      },
      "median_max_up_natr": 2.646,
      "median_max_down_natr": -0.98,
      "mean_max_up_natr": 3.903,
      "mean_max_down_natr": -1.14,
      "p25_max_up_natr": 1.395,
      "p75_max_up_natr": 4.391,
      "p25_max_down_natr": -1.564,
      "p75_max_down_natr": -0.426,
      "outcome_natr_moves": {
        "breakout": {
          "n": 81,
          "max_up_natr": {
            "n": 81,
            "mean": 4.782,
            "median": 3.299,
            "p25": 2.058,
            "p75": 5.378,
            "hist": {
              "bin_edges": [
                0.0,
                0.25,
                0.5,
                0.75,
                1.0,
                1.25,
                1.5,
                1.75,
                2.0,
                2.25,
                2.5,
                2.75,
                3.0,
                3.25,
                3.5,
                3.75,
                4.0
              ],
              "counts": [
                0,
                0,
                0,
                0,
                1,
                7,
                6,
                4,
                4,
                5,
                8,
                1,
                3,
                5,
                3,
                34
              ],
              "bin_centers": [
                0.125,
                0.375,
                0.625,
                0.875,
                1.125,
                1.375,
                1.625,
                1.875,
                2.125,
                2.375,
                2.625,
                2.875,
                3.125,
                3.375,
                3.625,
                3.875
              ],
              "clip_lo": 0.0,
              "clip_hi": 4.0
            }
          },
          "max_down_natr": {
            "n": 81,
            "mean": -0.83,
            "median": -0.729,
            "p25": -1.163,
            "p75": -0.335,
            "hist": {
              "bin_edges": [
                -4.0,
                -3.75,
                -3.5,
                -3.25,
                -3.0,
                -2.75,
                -2.5,
                -2.25,
                -2.0,
                -1.75,
                -1.5,
                -1.25,
                -1.0,
                -0.75,
                -0.5,
                -0.25,
                0.0
              ],
              "counts": [
                0,
                0,
                0,
                0,
                0,
                0,
                1,
                3,
                3,
                5,
                8,
                10,
                10,
                10,
                16,
                15
              ],
              "bin_centers": [
                -3.875,
                -3.625,
                -3.375,
                -3.125,
                -2.875,
                -2.625,
                -2.375,
                -2.125,
                -1.875,
                -1.625,
                -1.375,
                -1.125,
                -0.875,
                -0.625,
                -0.375,
                -0.125
              ],
              "clip_lo": -4.0,
              "clip_hi": 0.0
            }
          }
        },
        "breakdown": {
          "n": 13,
          "max_up_natr": {
            "n": 13,
            "mean": 1.052,
            "median": 1.132,
            "p25": 0.324,
            "p75": 1.302
          },
          "max_down_natr": {
            "n": 13,
            "mean": -2.678,
            "median": -2.811,
            "p25": -2.994,
            "p75": -1.629
          }
        },
        "sideways": {
          "n": 11,
          "max_up_natr": {
            "n": 11,
            "mean": 0.796,
            "median": 0.813,
            "p25": 0.561,
            "p75": 1.154
          },
          "max_down_natr": {
            "n": 11,
            "mean": -1.605,
            "median": -1.564,
            "p25": -2.218,
            "p75": -1.214
          }
        },
        "forming": {
          "n": 0,
          "max_up_natr": {
            "n": 0,
            "mean": null,
            "median": null,
            "p25": null,
            "p75": null
          },
          "max_down_natr": {
            "n": 0,
            "mean": null,
            "median": null,
            "p25": null,
            "p75": null
          }
        }
      },
      "max_up_natr_hist": {
        "bin_edges": [
          0.0,
          0.25,
          0.5,
          0.75,
          1.0,
          1.25,
          1.5,
          1.75,
          2.0,
          2.25,
          2.5,
          2.75,
          3.0,
          3.25,
          3.5,
          3.75,
          4.0
        ],
        "counts": [
          4,
          2,
          5,
          2,
          6,
          11,
          6,
          5,
          4,
          5,
          8,
          1,
          3,
          6,
          3,
          34
        ],
        "bin_centers": [
          0.125,
          0.375,
          0.625,
          0.875,
          1.125,
          1.375,
          1.625,
          1.875,
          2.125,
          2.375,
          2.625,
          2.875,
          3.125,
          3.375,
          3.625,
          3.875
        ],
        "clip_lo": 0.0,
        "clip_hi": 4.0
      },
      "max_down_natr_hist": {
        "bin_edges": [
          -4.0,
          -3.75,
          -3.5,
          -3.25,
          -3.0,
          -2.75,
          -2.5,
          -2.25,
          -2.0,
          -1.75,
          -1.5,
          -1.25,
          -1.0,
          -0.75,
          -0.5,
          -0.25,
          0.0
        ],
        "counts": [
          1,
          0,
          1,
          1,
          7,
          0,
          2,
          5,
          3,
          10,
          11,
          11,
          10,
          11,
          16,
          16
        ],
        "bin_centers": [
          -3.875,
          -3.625,
          -3.375,
          -3.125,
          -2.875,
          -2.625,
          -2.375,
          -2.125,
          -1.875,
          -1.625,
          -1.375,
          -1.125,
          -0.875,
          -0.625,
          -0.375,
          -0.125
        ],
        "clip_lo": -4.0,
        "clip_hi": 0.0
      },
      "timestamp_min": 1548288000000,
      "timestamp_max": 1778284800000,
      "timestamp_min_iso": "2019-01-24T00:00:00Z",
      "timestamp_max_iso": "2026-05-09T00:00:00Z"
    },
    {
      "pattern_type": "bullish_flag",
      "pattern_name": "Bullish Flag",
      "timeframe": "15m",
      "bias": "bullish",
      "n": 1202,
      "n_symbols": 477,
      "breakout_success_rate": 77.12,
      "breakdown_success_rate": 19.47,
      "sideways_rate": 3.41,
      "forming_rate": 0.0,
      "both_cleared_rate": 43.93,
      "breakout_success_rate_ci95": [
        74.66,
        79.41
      ],
      "breakdown_success_rate_ci95": [
        17.33,
        21.8
      ],
      "sideways_rate_ci95": [
        2.52,
        4.59
      ],
      "forming_rate_ci95": [
        0.0,
        0.32
      ],
      "both_sides_rate": 43.93,
      "expected_hit_rate": 77.12,
      "expected_hit_rate_ci95": [
        74.66,
        79.41
      ],
      "mean_ret_10c": 0.254,
      "median_ret_10c": 0.08,
      "std_ret_10c": 3.198,
      "win_rate_ret_gt0": 51.58,
      "p25_ret_10c": -1.074,
      "p75_ret_10c": 1.277,
      "mean_mfe": 2.593,
      "mean_mae": -1.771,
      "mfe_mae_ratio": 1.464,
      "max_up_natr": {
        "n": 1202,
        "mean": 3.011,
        "median": 2.17,
        "p25": 1.085,
        "p75": 4.057,
        "hist": {
          "bin_edges": [
            0.0,
            0.25,
            0.5,
            0.75,
            1.0,
            1.25,
            1.5,
            1.75,
            2.0,
            2.25,
            2.5,
            2.75,
            3.0,
            3.25,
            3.5,
            3.75,
            4.0
          ],
          "counts": [
            64,
            61,
            62,
            86,
            81,
            71,
            68,
            56,
            81,
            45,
            52,
            47,
            32,
            27,
            37,
            332
          ],
          "bin_centers": [
            0.125,
            0.375,
            0.625,
            0.875,
            1.125,
            1.375,
            1.625,
            1.875,
            2.125,
            2.375,
            2.625,
            2.875,
            3.125,
            3.375,
            3.625,
            3.875
          ],
          "clip_lo": 0.0,
          "clip_hi": 4.0
        }
      },
      "max_down_natr": {
        "n": 1202,
        "mean": -2.043,
        "median": -1.625,
        "p25": -2.859,
        "p75": -0.633,
        "hist": {
          "bin_edges": [
            -4.0,
            -3.75,
            -3.5,
            -3.25,
            -3.0,
            -2.75,
            -2.5,
            -2.25,
            -2.0,
            -1.75,
            -1.5,
            -1.25,
            -1.0,
            -0.75,
            -0.5,
            -0.25,
            0.0
          ],
          "counts": [
            175,
            32,
            28,
            36,
            51,
            52,
            57,
            55,
            67,
            86,
            75,
            80,
            70,
            85,
            100,
            153
          ],
          "bin_centers": [
            -3.875,
            -3.625,
            -3.375,
            -3.125,
            -2.875,
            -2.625,
            -2.375,
            -2.125,
            -1.875,
            -1.625,
            -1.375,
            -1.125,
            -0.875,
            -0.625,
            -0.375,
            -0.125
          ],
          "clip_lo": -4.0,
          "clip_hi": 0.0
        }
      },
      "median_max_up_natr": 2.17,
      "median_max_down_natr": -1.625,
      "mean_max_up_natr": 3.011,
      "mean_max_down_natr": -2.043,
      "p25_max_up_natr": 1.085,
      "p75_max_up_natr": 4.057,
      "p25_max_down_natr": -2.859,
      "p75_max_down_natr": -0.633,
      "outcome_natr_moves": {
        "breakout": {
          "n": 927,
          "max_up_natr": {
            "n": 927,
            "mean": 3.507,
            "median": 2.64,
            "p25": 1.534,
            "p75": 4.535,
            "hist": {
              "bin_edges": [
                0.0,
                0.25,
                0.5,
                0.75,
                1.0,
                1.25,
                1.5,
                1.75,
                2.0,
                2.25,
                2.5,
                2.75,
                3.0,
                3.25,
                3.5,
                3.75,
                4.0
              ],
              "counts": [
                15,
                24,
                22,
                51,
                52,
                57,
                60,
                45,
                71,
                40,
                46,
                44,
                32,
                26,
                33,
                309
              ],
              "bin_centers": [
                0.125,
                0.375,
                0.625,
                0.875,
                1.125,
                1.375,
                1.625,
                1.875,
                2.125,
                2.375,
                2.625,
                2.875,
                3.125,
                3.375,
                3.625,
                3.875
              ],
              "clip_lo": 0.0,
              "clip_hi": 4.0
            }
          },
          "max_down_natr": {
            "n": 927,
            "mean": -1.74,
            "median": -1.257,
            "p25": -2.388,
            "p75": -0.455,
            "hist": {
              "bin_edges": [
                -4.0,
                -3.75,
                -3.5,
                -3.25,
                -3.0,
                -2.75,
                -2.5,
                -2.25,
                -2.0,
                -1.75,
                -1.5,
                -1.25,
                -1.0,
                -0.75,
                -0.5,
                -0.25,
                0.0
              ],
              "counts": [
                105,
                22,
                14,
                20,
                30,
                27,
                43,
                36,
                42,
                65,
                63,
                73,
                62,
                82,
                95,
                148
              ],
              "bin_centers": [
                -3.875,
                -3.625,
                -3.375,
                -3.125,
                -2.875,
                -2.625,
                -2.375,
                -2.125,
                -1.875,
                -1.625,
                -1.375,
                -1.125,
                -0.875,
                -0.625,
                -0.375,
                -0.125
              ],
              "clip_lo": -4.0,
              "clip_hi": 0.0
            }
          }
        },
        "breakdown": {
          "n": 234,
          "max_up_natr": {
            "n": 234,
            "mean": 1.428,
            "median": 0.877,
            "p25": 0.384,
            "p75": 1.776,
            "hist": {
              "bin_edges": [
                0.0,
                0.25,
                0.5,
                0.75,
                1.0,
                1.25,
                1.5,
                1.75,
                2.0,
                2.25,
                2.5,
                2.75,
                3.0,
                3.25,
                3.5,
                3.75,
                4.0
              ],
              "counts": [
                40,
                32,
                31,
                28,
                24,
                12,
                8,
                11,
                8,
                4,
                6,
                3,
                0,
                1,
                4,
                22
              ],
              "bin_centers": [
                0.125,
                0.375,
                0.625,
                0.875,
                1.125,
                1.375,
                1.625,
                1.875,
                2.125,
                2.375,
                2.625,
                2.875,
                3.125,
                3.375,
                3.625,
                3.875
              ],
              "clip_lo": 0.0,
              "clip_hi": 4.0
            }
          },
          "max_down_natr": {
            "n": 234,
            "mean": -3.34,
            "median": -2.892,
            "p25": -4.076,
            "p75": -2.03,
            "hist": {
              "bin_edges": [
                -4.0,
                -3.75,
                -3.5,
                -3.25,
                -3.0,
                -2.75,
                -2.5,
                -2.25,
                -2.0,
                -1.75,
                -1.5,
                -1.25,
                -1.0,
                -0.75,
                -0.5,
                -0.25,
                0.0
              ],
              "counts": [
                70,
                10,
                14,
                16,
                19,
                21,
                13,
                15,
                20,
                15,
                7,
                5,
                4,
                2,
                1,
                2
              ],
              "bin_centers": [
                -3.875,
                -3.625,
                -3.375,
                -3.125,
                -2.875,
                -2.625,
                -2.375,
                -2.125,
                -1.875,
                -1.625,
                -1.375,
                -1.125,
                -0.875,
                -0.625,
                -0.375,
                -0.125
              ],
              "clip_lo": -4.0,
              "clip_hi": 0.0
            }
          }
        },
        "sideways": {
          "n": 41,
          "max_up_natr": {
            "n": 41,
            "mean": 0.833,
            "median": 0.651,
            "p25": 0.302,
            "p75": 1.084,
            "hist": {
              "bin_edges": [
                0.0,
                0.25,
                0.5,
                0.75,
                1.0,
                1.25,
                1.5,
                1.75,
                2.0,
                2.25,
                2.5,
                2.75,
                3.0,
                3.25,
                3.5,
                3.75,
                4.0
              ],
              "counts": [
                9,
                5,
                9,
                7,
                5,
                2,
                0,
                0,
                2,
                1,
                0,
                0,
                0,
                0,
                0,
                1
              ],
              "bin_centers": [
                0.125,
                0.375,
                0.625,
                0.875,
                1.125,
                1.375,
                1.625,
                1.875,
                2.125,
                2.375,
                2.625,
                2.875,
                3.125,
                3.375,
                3.625,
                3.875
              ],
              "clip_lo": 0.0,
              "clip_hi": 4.0
            }
          },
          "max_down_natr": {
            "n": 41,
            "mean": -1.489,
            "median": -1.625,
            "p25": -2.036,
            "p75": -0.832,
            "hist": {
              "bin_edges": [
                -4.0,
                -3.75,
                -3.5,
                -3.25,
                -3.0,
                -2.75,
                -2.5,
                -2.25,
                -2.0,
                -1.75,
                -1.5,
                -1.25,
                -1.0,
                -0.75,
                -0.5,
                -0.25,
                0.0
              ],
              "counts": [
                0,
                0,
                0,
                0,
                2,
                4,
                1,
                4,
                5,
                6,
                5,
                2,
                4,
                1,
                4,
                3
              ],
              "bin_centers": [
                -3.875,
                -3.625,
                -3.375,
                -3.125,
                -2.875,
                -2.625,
                -2.375,
                -2.125,
                -1.875,
                -1.625,
                -1.375,
                -1.125,
                -0.875,
                -0.625,
                -0.375,
                -0.125
              ],
              "clip_lo": -4.0,
              "clip_hi": 0.0
            }
          }
        },
        "forming": {
          "n": 0,
          "max_up_natr": {
            "n": 0,
            "mean": null,
            "median": null,
            "p25": null,
            "p75": null
          },
          "max_down_natr": {
            "n": 0,
            "mean": null,
            "median": null,
            "p25": null,
            "p75": null
          }
        }
      },
      "max_up_natr_hist": {
        "bin_edges": [
          0.0,
          0.25,
          0.5,
          0.75,
          1.0,
          1.25,
          1.5,
          1.75,
          2.0,
          2.25,
          2.5,
          2.75,
          3.0,
          3.25,
          3.5,
          3.75,
          4.0
        ],
        "counts": [
          64,
          61,
          62,
          86,
          81,
          71,
          68,
          56,
          81,
          45,
          52,
          47,
          32,
          27,
          37,
          332
        ],
        "bin_centers": [
          0.125,
          0.375,
          0.625,
          0.875,
          1.125,
          1.375,
          1.625,
          1.875,
          2.125,
          2.375,
          2.625,
          2.875,
          3.125,
          3.375,
          3.625,
          3.875
        ],
        "clip_lo": 0.0,
        "clip_hi": 4.0
      },
      "max_down_natr_hist": {
        "bin_edges": [
          -4.0,
          -3.75,
          -3.5,
          -3.25,
          -3.0,
          -2.75,
          -2.5,
          -2.25,
          -2.0,
          -1.75,
          -1.5,
          -1.25,
          -1.0,
          -0.75,
          -0.5,
          -0.25,
          0.0
        ],
        "counts": [
          175,
          32,
          28,
          36,
          51,
          52,
          57,
          55,
          67,
          86,
          75,
          80,
          70,
          85,
          100,
          153
        ],
        "bin_centers": [
          -3.875,
          -3.625,
          -3.375,
          -3.125,
          -2.875,
          -2.625,
          -2.375,
          -2.125,
          -1.875,
          -1.625,
          -1.375,
          -1.125,
          -0.875,
          -0.625,
          -0.375,
          -0.125
        ],
        "clip_lo": -4.0,
        "clip_hi": 0.0
      },
      "timestamp_min": 1596724200000,
      "timestamp_max": 1785518100000,
      "timestamp_min_iso": "2020-08-06T14:30:00Z",
      "timestamp_max_iso": "2026-07-31T17:15:00Z"
    },
    {
      "pattern_type": "double_top",
      "pattern_name": "Double Top",
      "timeframe": "1h",
      "bias": "bearish",
      "n": 591,
      "n_symbols": 303,
      "breakout_success_rate": 13.71,
      "breakdown_success_rate": 76.99,
      "sideways_rate": 9.3,
      "forming_rate": 0.0,
      "both_cleared_rate": 36.04,
      "breakout_success_rate_ci95": [
        11.17,
        16.71
      ],
      "breakdown_success_rate_ci95": [
        73.43,
        80.2
      ],
      "sideways_rate_ci95": [
        7.22,
        11.92
      ],
      "forming_rate_ci95": [
        0.0,
        0.65
      ],
      "both_sides_rate": 36.04,
      "expected_hit_rate": 76.99,
      "expected_hit_rate_ci95": [
        73.43,
        80.2
      ],
      "mean_ret_10c": -2.453,
      "median_ret_10c": -2.088,
      "std_ret_10c": 4.971,
      "win_rate_ret_gt0": 23.52,
      "p25_ret_10c": -4.667,
      "p75_ret_10c": -0.145,
      "mean_mfe": 2.35,
      "mean_mae": -5.418,
      "mfe_mae_ratio": 0.434,
      "max_up_natr": {
        "n": 591,
        "mean": 1.314,
        "median": 1.007,
        "p25": 0.43,
        "p75": 1.679,
        "hist": {
          "bin_edges": [
            0.0,
            0.25,
            0.5,
            0.75,
            1.0,
            1.25,
            1.5,
            1.75,
            2.0,
            2.25,
            2.5,
            2.75,
            3.0,
            3.25,
            3.5,
            3.75,
            4.0
          ],
          "counts": [
            88,
            80,
            72,
            54,
            61,
            58,
            45,
            24,
            24,
            16,
            16,
            7,
            6,
            7,
            7,
            26
          ],
          "bin_centers": [
            0.125,
            0.375,
            0.625,
            0.875,
            1.125,
            1.375,
            1.625,
            1.875,
            2.125,
            2.375,
            2.625,
            2.875,
            3.125,
            3.375,
            3.625,
            3.875
          ],
          "clip_lo": 0.0,
          "clip_hi": 4.0
        }
      },
      "max_down_natr": {
        "n": 591,
        "mean": -3.099,
        "median": -2.707,
        "p25": -4.134,
        "p75": -1.634,
        "hist": {
          "bin_edges": [
            -4.0,
            -3.75,
            -3.5,
            -3.25,
            -3.0,
            -2.75,
            -2.5,
            -2.25,
            -2.0,
            -1.75,
            -1.5,
            -1.25,
            -1.0,
            -0.75,
            -0.5,
            -0.25,
            0.0
          ],
          "counts": [
            175,
            25,
            28,
            32,
            29,
            38,
            33,
            32,
            30,
            36,
            21,
            25,
            30,
            21,
            21,
            15
          ],
          "bin_centers": [
            -3.875,
            -3.625,
            -3.375,
            -3.125,
            -2.875,
            -2.625,
            -2.375,
            -2.125,
            -1.875,
            -1.625,
            -1.375,
            -1.125,
            -0.875,
            -0.625,
            -0.375,
            -0.125
          ],
          "clip_lo": -4.0,
          "clip_hi": 0.0
        }
      },
      "median_max_up_natr": 1.007,
      "median_max_down_natr": -2.707,
      "mean_max_up_natr": 1.314,
      "mean_max_down_natr": -3.099,
      "p25_max_up_natr": 0.43,
      "p75_max_up_natr": 1.679,
      "p25_max_down_natr": -4.134,
      "p75_max_down_natr": -1.634,
      "outcome_natr_moves": {
        "breakout": {
          "n": 81,
          "max_up_natr": {
            "n": 81,
            "mean": 2.965,
            "median": 2.684,
            "p25": 1.997,
            "p75": 3.602,
            "hist": {
              "bin_edges": [
                0.0,
                0.25,
                0.5,
                0.75,
                1.0,
                1.25,
                1.5,
                1.75,
                2.0,
                2.25,
                2.5,
                2.75,
                3.0,
                3.25,
                3.5,
                3.75,
                4.0
              ],
              "counts": [
                0,
                0,
                0,
                0,
                3,
                8,
                4,
                6,
                9,
                5,
                8,
                3,
                4,
                6,
                7,
                18
              ],
              "bin_centers": [
                0.125,
                0.375,
                0.625,
                0.875,
                1.125,
                1.375,
                1.625,
                1.875,
                2.125,
                2.375,
                2.625,
                2.875,
                3.125,
                3.375,
                3.625,
                3.875
              ],
              "clip_lo": 0.0,
              "clip_hi": 4.0
            }
          },
          "max_down_natr": {
            "n": 81,
            "mean": -1.699,
            "median": -0.897,
            "p25": -2.044,
            "p75": -0.521,
            "hist": {
              "bin_edges": [
                -4.0,
                -3.75,
                -3.5,
                -3.25,
                -3.0,
                -2.75,
                -2.5,
                -2.25,
                -2.0,
                -1.75,
                -1.5,
                -1.25,
                -1.0,
                -0.75,
                -0.5,
                -0.25,
                0.0
              ],
              "counts": [
                11,
                1,
                1,
                1,
                1,
                0,
                2,
                4,
                2,
                4,
                3,
                6,
                11,
                14,
                11,
                9
              ],
              "bin_centers": [
                -3.875,
                -3.625,
                -3.375,
                -3.125,
                -2.875,
                -2.625,
                -2.375,
                -2.125,
                -1.875,
                -1.625,
                -1.375,
                -1.125,
                -0.875,
                -0.625,
                -0.375,
                -0.125
              ],
              "clip_lo": -4.0,
              "clip_hi": 0.0
            }
          }
        },
        "breakdown": {
          "n": 455,
          "max_up_natr": {
            "n": 455,
            "mean": 0.99,
            "median": 0.722,
            "p25": 0.323,
            "p75": 1.273,
            "hist": {
              "bin_edges": [
                0.0,
                0.25,
                0.5,
                0.75,
                1.0,
                1.25,
                1.5,
                1.75,
                2.0,
                2.25,
                2.5,
                2.75,
                3.0,
                3.25,
                3.5,
                3.75,
                4.0
              ],
              "counts": [
                88,
                79,
                69,
                51,
                50,
                35,
                31,
                16,
                9,
                9,
                5,
                3,
                2,
                0,
                0,
                8
              ],
              "bin_centers": [
                0.125,
                0.375,
                0.625,
                0.875,
                1.125,
                1.375,
                1.625,
                1.875,
                2.125,
                2.375,
                2.625,
                2.875,
                3.125,
                3.375,
                3.625,
                3.875
              ],
              "clip_lo": 0.0,
              "clip_hi": 4.0
            }
          },
          "max_down_natr": {
            "n": 455,
            "mean": -3.627,
            "median": -3.125,
            "p25": -4.495,
            "p75": -2.263,
            "hist": {
              "bin_edges": [
                -4.0,
                -3.75,
                -3.5,
                -3.25,
                -3.0,
                -2.75,
                -2.5,
                -2.25,
                -2.0,
                -1.75,
                -1.5,
                -1.25,
                -1.0,
                -0.75,
                -0.5,
                -0.25,
                0.0
              ],
              "counts": [
                164,
                24,
                27,
                31,
                28,
                38,
                31,
                28,
                26,
                31,
                15,
                7,
                5,
                0,
                0,
                0
              ],
              "bin_centers": [
                -3.875,
                -3.625,
                -3.375,
                -3.125,
                -2.875,
                -2.625,
                -2.375,
                -2.125,
                -1.875,
                -1.625,
                -1.375,
                -1.125,
                -0.875,
                -0.625,
                -0.375,
                -0.125
              ],
              "clip_lo": -4.0,
              "clip_hi": 0.0
            }
          }
        },
        "sideways": {
          "n": 55,
          "max_up_natr": {
            "n": 55,
            "mean": 1.559,
            "median": 1.481,
            "p25": 1.148,
            "p75": 1.94,
            "hist": {
              "bin_edges": [
                0.0,
                0.25,
                0.5,
                0.75,
                1.0,
                1.25,
                1.5,
                1.75,
                2.0,
                2.25,
                2.5,
                2.75,
                3.0,
                3.25,
                3.5,
                3.75,
                4.0
              ],
              "counts": [
                0,
                1,
                3,
                3,
                8,
                15,
                10,
                2,
                6,
                2,
                3,
                1,
                0,
                1,
                0,
                0
              ],
              "bin_centers": [
                0.125,
                0.375,
                0.625,
                0.875,
                1.125,
                1.375,
                1.625,
                1.875,
                2.125,
                2.375,
                2.625,
                2.875,
                3.125,
                3.375,
                3.625,
                3.875
              ],
              "clip_lo": 0.0,
              "clip_hi": 4.0
            }
          },
          "max_down_natr": {
            "n": 55,
            "mean": -0.8,
            "median": -0.827,
            "p25": -1.096,
            "p75": -0.445,
            "hist": {
              "bin_edges": [
                -4.0,
                -3.75,
                -3.5,
                -3.25,
                -3.0,
                -2.75,
                -2.5,
                -2.25,
                -2.0,
                -1.75,
                -1.5,
                -1.25,
                -1.0,
                -0.75,
                -0.5,
                -0.25,
                0.0
              ],
              "counts": [
                0,
                0,
                0,
                0,
                0,
                0,
                0,
                0,
                2,
                1,
                3,
                12,
                14,
                7,
                10,
                6
              ],
              "bin_centers": [
                -3.875,
                -3.625,
                -3.375,
                -3.125,
                -2.875,
                -2.625,
                -2.375,
                -2.125,
                -1.875,
                -1.625,
                -1.375,
                -1.125,
                -0.875,
                -0.625,
                -0.375,
                -0.125
              ],
              "clip_lo": -4.0,
              "clip_hi": 0.0
            }
          }
        },
        "forming": {
          "n": 0,
          "max_up_natr": {
            "n": 0,
            "mean": null,
            "median": null,
            "p25": null,
            "p75": null
          },
          "max_down_natr": {
            "n": 0,
            "mean": null,
            "median": null,
            "p25": null,
            "p75": null
          }
        }
      },
      "max_up_natr_hist": {
        "bin_edges": [
          0.0,
          0.25,
          0.5,
          0.75,
          1.0,
          1.25,
          1.5,
          1.75,
          2.0,
          2.25,
          2.5,
          2.75,
          3.0,
          3.25,
          3.5,
          3.75,
          4.0
        ],
        "counts": [
          88,
          80,
          72,
          54,
          61,
          58,
          45,
          24,
          24,
          16,
          16,
          7,
          6,
          7,
          7,
          26
        ],
        "bin_centers": [
          0.125,
          0.375,
          0.625,
          0.875,
          1.125,
          1.375,
          1.625,
          1.875,
          2.125,
          2.375,
          2.625,
          2.875,
          3.125,
          3.375,
          3.625,
          3.875
        ],
        "clip_lo": 0.0,
        "clip_hi": 4.0
      },
      "max_down_natr_hist": {
        "bin_edges": [
          -4.0,
          -3.75,
          -3.5,
          -3.25,
          -3.0,
          -2.75,
          -2.5,
          -2.25,
          -2.0,
          -1.75,
          -1.5,
          -1.25,
          -1.0,
          -0.75,
          -0.5,
          -0.25,
          0.0
        ],
        "counts": [
          175,
          25,
          28,
          32,
          29,
          38,
          33,
          32,
          30,
          36,
          21,
          25,
          30,
          21,
          21,
          15
        ],
        "bin_centers": [
          -3.875,
          -3.625,
          -3.375,
          -3.125,
          -2.875,
          -2.625,
          -2.375,
          -2.125,
          -1.875,
          -1.625,
          -1.375,
          -1.125,
          -0.875,
          -0.625,
          -0.375,
          -0.125
        ],
        "clip_lo": -4.0,
        "clip_hi": 0.0
      },
      "timestamp_min": 1587164400000,
      "timestamp_max": 1785114000000,
      "timestamp_min_iso": "2020-04-17T23:00:00Z",
      "timestamp_max_iso": "2026-07-27T01:00:00Z"
    },
    {
      "pattern_type": "double_top",
      "pattern_name": "Double Top",
      "timeframe": "4h",
      "bias": "bearish",
      "n": 128,
      "n_symbols": 112,
      "breakout_success_rate": 16.41,
      "breakdown_success_rate": 76.56,
      "sideways_rate": 7.03,
      "forming_rate": 0.0,
      "both_cleared_rate": 38.28,
      "breakout_success_rate_ci95": [
        10.99,
        23.78
      ],
      "breakdown_success_rate_ci95": [
        68.52,
        83.06
      ],
      "sideways_rate_ci95": [
        3.74,
        12.82
      ],
      "forming_rate_ci95": [
        0.0,
        2.91
      ],
      "both_sides_rate": 38.28,
      "expected_hit_rate": 76.56,
      "expected_hit_rate_ci95": [
        68.52,
        83.06
      ],
      "mean_ret_10c": -5.183,
      "median_ret_10c": -5.632,
      "std_ret_10c": 10.294,
      "win_rate_ret_gt0": 28.12,
      "p25_ret_10c": -10.93,
      "p75_ret_10c": 0.402,
      "mean_mfe": 5.478,
      "mean_mae": -13.296,
      "mfe_mae_ratio": 0.412,
      "max_up_natr": {
        "n": 128,
        "mean": 1.282,
        "median": 0.986,
        "p25": 0.472,
        "p75": 1.548,
        "hist": {
          "bin_edges": [
            0.0,
            0.25,
            0.5,
            0.75,
            1.0,
            1.25,
            1.5,
            1.75,
            2.0,
            2.25,
            2.5,
            2.75,
            3.0,
            3.25,
            3.5,
            3.75,
            4.0
          ],
          "counts": [
            18,
            15,
            17,
            15,
            16,
            12,
            7,
            9,
            5,
            2,
            0,
            0,
            2,
            1,
            1,
            8
          ],
          "bin_centers": [
            0.125,
            0.375,
            0.625,
            0.875,
            1.125,
            1.375,
            1.625,
            1.875,
            2.125,
            2.375,
            2.625,
            2.875,
            3.125,
            3.375,
            3.625,
            3.875
          ],
          "clip_lo": 0.0,
          "clip_hi": 4.0
        }
      },
      "max_down_natr": {
        "n": 128,
        "mean": -3.404,
        "median": -2.562,
        "p25": -4.388,
        "p75": -1.562,
        "hist": {
          "bin_edges": [
            -4.0,
            -3.75,
            -3.5,
            -3.25,
            -3.0,
            -2.75,
            -2.5,
            -2.25,
            -2.0,
            -1.75,
            -1.5,
            -1.25,
            -1.0,
            -0.75,
            -0.5,
            -0.25,
            0.0
          ],
          "counts": [
            45,
            3,
            2,
            6,
            4,
            6,
            4,
            7,
            9,
            11,
            11,
            6,
            4,
            6,
            2,
            2
          ],
          "bin_centers": [
            -3.875,
            -3.625,
            -3.375,
            -3.125,
            -2.875,
            -2.625,
            -2.375,
            -2.125,
            -1.875,
            -1.625,
            -1.375,
            -1.125,
            -0.875,
            -0.625,
            -0.375,
            -0.125
          ],
          "clip_lo": -4.0,
          "clip_hi": 0.0
        }
      },
      "median_max_up_natr": 0.986,
      "median_max_down_natr": -2.562,
      "mean_max_up_natr": 1.282,
      "mean_max_down_natr": -3.404,
      "p25_max_up_natr": 0.472,
      "p75_max_up_natr": 1.548,
      "p25_max_down_natr": -4.388,
      "p75_max_down_natr": -1.562,
      "outcome_natr_moves": {
        "breakout": {
          "n": 21,
          "max_up_natr": {
            "n": 21,
            "mean": 2.572,
            "median": 1.782,
            "p25": 1.419,
            "p75": 3.016,
            "hist": {
              "bin_edges": [
                0.0,
                0.25,
                0.5,
                0.75,
                1.0,
                1.25,
                1.5,
                1.75,
                2.0,
                2.25,
                2.5,
                2.75,
                3.0,
                3.25,
                3.5,
                3.75,
                4.0
              ],
              "counts": [
                0,
                0,
                0,
                1,
                1,
                4,
                3,
                2,
                2,
                2,
                0,
                0,
                2,
                1,
                1,
                2
              ],
              "bin_centers": [
                0.125,
                0.375,
                0.625,
                0.875,
                1.125,
                1.375,
                1.625,
                1.875,
                2.125,
                2.375,
                2.625,
                2.875,
                3.125,
                3.375,
                3.625,
                3.875
              ],
              "clip_lo": 0.0,
              "clip_hi": 4.0
            }
          },
          "max_down_natr": {
            "n": 21,
            "mean": -2.561,
            "median": -1.561,
            "p25": -3.144,
            "p75": -0.622,
            "hist": {
              "bin_edges": [
                -4.0,
                -3.75,
                -3.5,
                -3.25,
                -3.0,
                -2.75,
                -2.5,
                -2.25,
                -2.0,
                -1.75,
                -1.5,
                -1.25,
                -1.0,
                -0.75,
                -0.5,
                -0.25,
                0.0
              ],
              "counts": [
                5,
                0,
                0,
                1,
                1,
                0,
                0,
                1,
                1,
                2,
                0,
                2,
                2,
                2,
                2,
                2
              ],
              "bin_centers": [
                -3.875,
                -3.625,
                -3.375,
                -3.125,
                -2.875,
                -2.625,
                -2.375,
                -2.125,
                -1.875,
                -1.625,
                -1.375,
                -1.125,
                -0.875,
                -0.625,
                -0.375,
                -0.125
              ],
              "clip_lo": -4.0,
              "clip_hi": 0.0
            }
          }
        },
        "breakdown": {
          "n": 98,
          "max_up_natr": {
            "n": 98,
            "mean": 1.011,
            "median": 0.744,
            "p25": 0.431,
            "p75": 1.241,
            "hist": {
              "bin_edges": [
                0.0,
                0.25,
                0.5,
                0.75,
                1.0,
                1.25,
                1.5,
                1.75,
                2.0,
                2.25,
                2.5,
                2.75,
                3.0,
                3.25,
                3.5,
                3.75,
                4.0
              ],
              "counts": [
                17,
                15,
                17,
                13,
                12,
                6,
                4,
                6,
                2,
                0,
                0,
                0,
                0,
                0,
                0,
                6
              ],
              "bin_centers": [
                0.125,
                0.375,
                0.625,
                0.875,
                1.125,
                1.375,
                1.625,
                1.875,
                2.125,
                2.375,
                2.625,
                2.875,
                3.125,
                3.375,
                3.625,
                3.875
              ],
              "clip_lo": 0.0,
              "clip_hi": 4.0
            }
          },
          "max_down_natr": {
            "n": 98,
            "mean": -3.807,
            "median": -3.094,
            "p25": -4.92,
            "p75": -1.825,
            "hist": {
              "bin_edges": [
                -4.0,
                -3.75,
                -3.5,
                -3.25,
                -3.0,
                -2.75,
                -2.5,
                -2.25,
                -2.0,
                -1.75,
                -1.5,
                -1.25,
                -1.0,
                -0.75,
                -0.5,
                -0.25,
                0.0
              ],
              "counts": [
                40,
                3,
                2,
                5,
                3,
                6,
                4,
                6,
                7,
                9,
                10,
                2,
                1,
                0,
                0,
                0
              ],
              "bin_centers": [
                -3.875,
                -3.625,
                -3.375,
                -3.125,
                -2.875,
                -2.625,
                -2.375,
                -2.125,
                -1.875,
                -1.625,
                -1.375,
                -1.125,
                -0.875,
                -0.625,
                -0.375,
                -0.125
              ],
              "clip_lo": -4.0,
              "clip_hi": 0.0
            }
          }
        },
        "sideways": {
          "n": 9,
          "max_up_natr": {
            "n": 9,
            "mean": 1.235,
            "median": 1.171,
            "p25": 1.041,
            "p75": 1.387
          },
          "max_down_natr": {
            "n": 9,
            "mean": -0.974,
            "median": -0.761,
            "p25": -1.041,
            "p75": -0.712
          }
        },
        "forming": {
          "n": 0,
          "max_up_natr": {
            "n": 0,
            "mean": null,
            "median": null,
            "p25": null,
            "p75": null
          },
          "max_down_natr": {
            "n": 0,
            "mean": null,
            "median": null,
            "p25": null,
            "p75": null
          }
        }
      },
      "max_up_natr_hist": {
        "bin_edges": [
          0.0,
          0.25,
          0.5,
          0.75,
          1.0,
          1.25,
          1.5,
          1.75,
          2.0,
          2.25,
          2.5,
          2.75,
          3.0,
          3.25,
          3.5,
          3.75,
          4.0
        ],
        "counts": [
          18,
          15,
          17,
          15,
          16,
          12,
          7,
          9,
          5,
          2,
          0,
          0,
          2,
          1,
          1,
          8
        ],
        "bin_centers": [
          0.125,
          0.375,
          0.625,
          0.875,
          1.125,
          1.375,
          1.625,
          1.875,
          2.125,
          2.375,
          2.625,
          2.875,
          3.125,
          3.375,
          3.625,
          3.875
        ],
        "clip_lo": 0.0,
        "clip_hi": 4.0
      },
      "max_down_natr_hist": {
        "bin_edges": [
          -4.0,
          -3.75,
          -3.5,
          -3.25,
          -3.0,
          -2.75,
          -2.5,
          -2.25,
          -2.0,
          -1.75,
          -1.5,
          -1.25,
          -1.0,
          -0.75,
          -0.5,
          -0.25,
          0.0
        ],
        "counts": [
          45,
          3,
          2,
          6,
          4,
          6,
          4,
          7,
          9,
          11,
          11,
          6,
          4,
          6,
          2,
          2
        ],
        "bin_centers": [
          -3.875,
          -3.625,
          -3.375,
          -3.125,
          -2.875,
          -2.625,
          -2.375,
          -2.125,
          -1.875,
          -1.625,
          -1.375,
          -1.125,
          -0.875,
          -0.625,
          -0.375,
          -0.125
        ],
        "clip_lo": -4.0,
        "clip_hi": 0.0
      },
      "timestamp_min": 1516075200000,
      "timestamp_max": 1784246400000,
      "timestamp_min_iso": "2018-01-16T04:00:00Z",
      "timestamp_max_iso": "2026-07-17T00:00:00Z"
    },
    {
      "pattern_type": "double_bottom",
      "pattern_name": "Double Bottom",
      "timeframe": "15m",
      "bias": "bullish",
      "n": 253,
      "n_symbols": 196,
      "breakout_success_rate": 75.89,
      "breakdown_success_rate": 12.65,
      "sideways_rate": 11.46,
      "forming_rate": 0.0,
      "both_cleared_rate": 34.78,
      "breakout_success_rate_ci95": [
        70.26,
        80.75
      ],
      "breakdown_success_rate_ci95": [
        9.1,
        17.31
      ],
      "sideways_rate_ci95": [
        8.1,
        15.98
      ],
      "forming_rate_ci95": [
        0.0,
        1.5
      ],
      "both_sides_rate": 34.78,
      "expected_hit_rate": 75.89,
      "expected_hit_rate_ci95": [
        70.26,
        80.75
      ],
      "mean_ret_10c": 1.371,
      "median_ret_10c": 0.952,
      "std_ret_10c": 3.236,
      "win_rate_ret_gt0": 74.31,
      "p25_ret_10c": 0.0,
      "p75_ret_10c": 2.457,
      "mean_mfe": 3.313,
      "mean_mae": -1.308,
      "mfe_mae_ratio": 2.533,
      "max_up_natr": {
        "n": 253,
        "mean": 3.495,
        "median": 2.738,
        "p25": 1.573,
        "p75": 4.625,
        "hist": {
          "bin_edges": [
            0.0,
            0.25,
            0.5,
            0.75,
            1.0,
            1.25,
            1.5,
            1.75,
            2.0,
            2.25,
            2.5,
            2.75,
            3.0,
            3.25,
            3.5,
            3.75,
            4.0
          ],
          "counts": [
            7,
            6,
            13,
            13,
            8,
            9,
            20,
            9,
            14,
            12,
            16,
            9,
            8,
            8,
            4,
            97
          ],
          "bin_centers": [
            0.125,
            0.375,
            0.625,
            0.875,
            1.125,
            1.375,
            1.625,
            1.875,
            2.125,
            2.375,
            2.625,
            2.875,
            3.125,
            3.375,
            3.625,
            3.875
          ],
          "clip_lo": 0.0,
          "clip_hi": 4.0
        }
      },
      "max_down_natr": {
        "n": 253,
        "mean": -1.176,
        "median": -0.973,
        "p25": -1.648,
        "p75": -0.389,
        "hist": {
          "bin_edges": [
            -4.0,
            -3.75,
            -3.5,
            -3.25,
            -3.0,
            -2.75,
            -2.5,
            -2.25,
            -2.0,
            -1.75,
            -1.5,
            -1.25,
            -1.0,
            -0.75,
            -0.5,
            -0.25,
            0.0
          ],
          "counts": [
            7,
            2,
            3,
            2,
            9,
            1,
            10,
            11,
            11,
            12,
            29,
            28,
            24,
            27,
            31,
            46
          ],
          "bin_centers": [
            -3.875,
            -3.625,
            -3.375,
            -3.125,
            -2.875,
            -2.625,
            -2.375,
            -2.125,
            -1.875,
            -1.625,
            -1.375,
            -1.125,
            -0.875,
            -0.625,
            -0.375,
            -0.125
          ],
          "clip_lo": -4.0,
          "clip_hi": 0.0
        }
      },
      "median_max_up_natr": 2.738,
      "median_max_down_natr": -0.973,
      "mean_max_up_natr": 3.495,
      "mean_max_down_natr": -1.176,
      "p25_max_up_natr": 1.573,
      "p75_max_up_natr": 4.625,
      "p25_max_down_natr": -1.648,
      "p75_max_down_natr": -0.389,
      "outcome_natr_moves": {
        "breakout": {
          "n": 192,
          "max_up_natr": {
            "n": 192,
            "mean": 4.212,
            "median": 3.593,
            "p25": 2.325,
            "p75": 5.174,
            "hist": {
              "bin_edges": [
                0.0,
                0.25,
                0.5,
                0.75,
                1.0,
                1.25,
                1.5,
                1.75,
                2.0,
                2.25,
                2.5,
                2.75,
                3.0,
                3.25,
                3.5,
                3.75,
                4.0
              ],
              "counts": [
                0,
                0,
                0,
                1,
                2,
                7,
                14,
                9,
                12,
                12,
                15,
                9,
                7,
                7,
                4,
                93
              ],
              "bin_centers": [
                0.125,
                0.375,
                0.625,
                0.875,
                1.125,
                1.375,
                1.625,
                1.875,
                2.125,
                2.375,
                2.625,
                2.875,
                3.125,
                3.375,
                3.625,
                3.875
              ],
              "clip_lo": 0.0,
              "clip_hi": 4.0
            }
          },
          "max_down_natr": {
            "n": 192,
            "mean": -0.835,
            "median": -0.673,
            "p25": -1.255,
            "p75": -0.274,
            "hist": {
              "bin_edges": [
                -4.0,
                -3.75,
                -3.5,
                -3.25,
                -3.0,
                -2.75,
                -2.5,
                -2.25,
                -2.0,
                -1.75,
                -1.5,
                -1.25,
                -1.0,
                -0.75,
                -0.5,
                -0.25,
                0.0
              ],
              "counts": [
                0,
                1,
                0,
                1,
                4,
                1,
                2,
                4,
                7,
                9,
                21,
                20,
                20,
                25,
                31,
                46
              ],
              "bin_centers": [
                -3.875,
                -3.625,
                -3.375,
                -3.125,
                -2.875,
                -2.625,
                -2.375,
                -2.125,
                -1.875,
                -1.625,
                -1.375,
                -1.125,
                -0.875,
                -0.625,
                -0.375,
                -0.125
              ],
              "clip_lo": -4.0,
              "clip_hi": 0.0
            }
          }
        },
        "breakdown": {
          "n": 32,
          "max_up_natr": {
            "n": 32,
            "mean": 1.538,
            "median": 0.784,
            "p25": 0.402,
            "p75": 1.723,
            "hist": {
              "bin_edges": [
                0.0,
                0.25,
                0.5,
                0.75,
                1.0,
                1.25,
                1.5,
                1.75,
                2.0,
                2.25,
                2.5,
                2.75,
                3.0,
                3.25,
                3.5,
                3.75,
                4.0
              ],
              "counts": [
                6,
                3,
                6,
                5,
                1,
                0,
                3,
                0,
                1,
                0,
                1,
                0,
                1,
                1,
                0,
                4
              ],
              "bin_centers": [
                0.125,
                0.375,
                0.625,
                0.875,
                1.125,
                1.375,
                1.625,
                1.875,
                2.125,
                2.375,
                2.625,
                2.875,
                3.125,
                3.375,
                3.625,
                3.875
              ],
              "clip_lo": 0.0,
              "clip_hi": 4.0
            }
          },
          "max_down_natr": {
            "n": 32,
            "mean": -2.883,
            "median": -2.447,
            "p25": -3.495,
            "p75": -1.851,
            "hist": {
              "bin_edges": [
                -4.0,
                -3.75,
                -3.5,
                -3.25,
                -3.0,
                -2.75,
                -2.5,
                -2.25,
                -2.0,
                -1.75,
                -1.5,
                -1.25,
                -1.0,
                -0.75,
                -0.5,
                -0.25,
                0.0
              ],
              "counts": [
                7,
                1,
                3,
                1,
                3,
                0,
                4,
                3,
                4,
                2,
                4,
                0,
                0,
                0,
                0,
                0
              ],
              "bin_centers": [
                -3.875,
                -3.625,
                -3.375,
                -3.125,
                -2.875,
                -2.625,
                -2.375,
                -2.125,
                -1.875,
                -1.625,
                -1.375,
                -1.125,
                -0.875,
                -0.625,
                -0.375,
                -0.125
              ],
              "clip_lo": -4.0,
              "clip_hi": 0.0
            }
          }
        },
        "sideways": {
          "n": 29,
          "max_up_natr": {
            "n": 29,
            "mean": 0.913,
            "median": 0.864,
            "p25": 0.625,
            "p75": 1.087,
            "hist": {
              "bin_edges": [
                0.0,
                0.25,
                0.5,
                0.75,
                1.0,
                1.25,
                1.5,
                1.75,
                2.0,
                2.25,
                2.5,
                2.75,
                3.0,
                3.25,
                3.5,
                3.75,
                4.0
              ],
              "counts": [
                1,
                3,
                7,
                7,
                5,
                2,
                3,
                0,
                1,
                0,
                0,
                0,
                0,
                0,
                0,
                0
              ],
              "bin_centers": [
                0.125,
                0.375,
                0.625,
                0.875,
                1.125,
                1.375,
                1.625,
                1.875,
                2.125,
                2.375,
                2.625,
                2.875,
                3.125,
                3.375,
                3.625,
                3.875
              ],
              "clip_lo": 0.0,
              "clip_hi": 4.0
            }
          },
          "max_down_natr": {
            "n": 29,
            "mean": -1.554,
            "median": -1.251,
            "p25": -2.218,
            "p75": -1.096,
            "hist": {
              "bin_edges": [
                -4.0,
                -3.75,
                -3.5,
                -3.25,
                -3.0,
                -2.75,
                -2.5,
                -2.25,
                -2.0,
                -1.75,
                -1.5,
                -1.25,
                -1.0,
                -0.75,
                -0.5,
                -0.25,
                0.0
              ],
              "counts": [
                0,
                0,
                0,
                0,
                2,
                0,
                4,
                4,
                0,
                1,
                4,
                8,
                4,
                2,
                0,
                0
              ],
              "bin_centers": [
                -3.875,
                -3.625,
                -3.375,
                -3.125,
                -2.875,
                -2.625,
                -2.375,
                -2.125,
                -1.875,
                -1.625,
                -1.375,
                -1.125,
                -0.875,
                -0.625,
                -0.375,
                -0.125
              ],
              "clip_lo": -4.0,
              "clip_hi": 0.0
            }
          }
        },
        "forming": {
          "n": 0,
          "max_up_natr": {
            "n": 0,
            "mean": null,
            "median": null,
            "p25": null,
            "p75": null
          },
          "max_down_natr": {
            "n": 0,
            "mean": null,
            "median": null,
            "p25": null,
            "p75": null
          }
        }
      },
      "max_up_natr_hist": {
        "bin_edges": [
          0.0,
          0.25,
          0.5,
          0.75,
          1.0,
          1.25,
          1.5,
          1.75,
          2.0,
          2.25,
          2.5,
          2.75,
          3.0,
          3.25,
          3.5,
          3.75,
          4.0
        ],
        "counts": [
          7,
          6,
          13,
          13,
          8,
          9,
          20,
          9,
          14,
          12,
          16,
          9,
          8,
          8,
          4,
          97
        ],
        "bin_centers": [
          0.125,
          0.375,
          0.625,
          0.875,
          1.125,
          1.375,
          1.625,
          1.875,
          2.125,
          2.375,
          2.625,
          2.875,
          3.125,
          3.375,
          3.625,
          3.875
        ],
        "clip_lo": 0.0,
        "clip_hi": 4.0
      },
      "max_down_natr_hist": {
        "bin_edges": [
          -4.0,
          -3.75,
          -3.5,
          -3.25,
          -3.0,
          -2.75,
          -2.5,
          -2.25,
          -2.0,
          -1.75,
          -1.5,
          -1.25,
          -1.0,
          -0.75,
          -0.5,
          -0.25,
          0.0
        ],
        "counts": [
          7,
          2,
          3,
          2,
          9,
          1,
          10,
          11,
          11,
          12,
          29,
          28,
          24,
          27,
          31,
          46
        ],
        "bin_centers": [
          -3.875,
          -3.625,
          -3.375,
          -3.125,
          -2.875,
          -2.625,
          -2.375,
          -2.125,
          -1.875,
          -1.625,
          -1.375,
          -1.125,
          -0.875,
          -0.625,
          -0.375,
          -0.125
        ],
        "clip_lo": -4.0,
        "clip_hi": 0.0
      },
      "timestamp_min": 1645231500000,
      "timestamp_max": 1785363300000,
      "timestamp_min_iso": "2022-02-19T00:45:00Z",
      "timestamp_max_iso": "2026-07-29T22:15:00Z"
    },
    {
      "pattern_type": "channel_descending",
      "pattern_name": "Descending Channel",
      "timeframe": "15m",
      "bias": "bullish",
      "n": 869,
      "n_symbols": 431,
      "breakout_success_rate": 75.83,
      "breakdown_success_rate": 20.6,
      "sideways_rate": 3.57,
      "forming_rate": 0.0,
      "both_cleared_rate": 37.97,
      "breakout_success_rate_ci95": [
        72.88,
        78.56
      ],
      "breakdown_success_rate_ci95": [
        18.04,
        23.41
      ],
      "sideways_rate_ci95": [
        2.52,
        5.02
      ],
      "forming_rate_ci95": [
        0.0,
        0.44
      ],
      "both_sides_rate": 37.97,
      "expected_hit_rate": 75.83,
      "expected_hit_rate_ci95": [
        72.88,
        78.56
      ],
      "mean_ret_10c": 0.474,
      "median_ret_10c": 0.443,
      "std_ret_10c": 2.755,
      "win_rate_ret_gt0": 60.41,
      "p25_ret_10c": -0.732,
      "p75_ret_10c": 1.427,
      "mean_mfe": 2.253,
      "mean_mae": -1.422,
      "mfe_mae_ratio": 1.584,
      "max_up_natr": {
        "n": 869,
        "mean": 3.194,
        "median": 2.605,
        "p25": 1.346,
        "p75": 4.078,
        "hist": {
          "bin_edges": [
            0.0,
            0.25,
            0.5,
            0.75,
            1.0,
            1.25,
            1.5,
            1.75,
            2.0,
            2.25,
            2.5,
            2.75,
            3.0,
            3.25,
            3.5,
            3.75,
            4.0
          ],
          "counts": [
            59,
            28,
            30,
            45,
            39,
            47,
            48,
            48,
            41,
            32,
            38,
            57,
            38,
            31,
            36,
            252
          ],
          "bin_centers": [
            0.125,
            0.375,
            0.625,
            0.875,
            1.125,
            1.375,
            1.625,
            1.875,
            2.125,
            2.375,
            2.625,
            2.875,
            3.125,
            3.375,
            3.625,
            3.875
          ],
          "clip_lo": 0.0,
          "clip_hi": 4.0
        }
      },
      "max_down_natr": {
        "n": 869,
        "mean": -2.051,
        "median": -1.338,
        "p25": -2.9,
        "p75": -0.352,
        "hist": {
          "bin_edges": [
            -4.0,
            -3.75,
            -3.5,
            -3.25,
            -3.0,
            -2.75,
            -2.5,
            -2.25,
            -2.0,
            -1.75,
            -1.5,
            -1.25,
            -1.0,
            -0.75,
            -0.5,
            -0.25,
            0.0
          ],
          "counts": [
            155,
            17,
            17,
            19,
            20,
            25,
            29,
            38,
            34,
            42,
            58,
            36,
            52,
            71,
            89,
            167
          ],
          "bin_centers": [
            -3.875,
            -3.625,
            -3.375,
            -3.125,
            -2.875,
            -2.625,
            -2.375,
            -2.125,
            -1.875,
            -1.625,
            -1.375,
            -1.125,
            -0.875,
            -0.625,
            -0.375,
            -0.125
          ],
          "clip_lo": -4.0,
          "clip_hi": 0.0
        }
      },
      "median_max_up_natr": 2.605,
      "median_max_down_natr": -1.338,
      "mean_max_up_natr": 3.194,
      "mean_max_down_natr": -2.051,
      "p25_max_up_natr": 1.346,
      "p75_max_up_natr": 4.078,
      "p25_max_down_natr": -2.9,
      "p75_max_down_natr": -0.352,
      "outcome_natr_moves": {
        "breakout": {
          "n": 659,
          "max_up_natr": {
            "n": 659,
            "mean": 3.799,
            "median": 2.993,
            "p25": 1.922,
            "p75": 4.58,
            "hist": {
              "bin_edges": [
                0.0,
                0.25,
                0.5,
                0.75,
                1.0,
                1.25,
                1.5,
                1.75,
                2.0,
                2.25,
                2.5,
                2.75,
                3.0,
                3.25,
                3.5,
                3.75,
                4.0
              ],
              "counts": [
                0,
                0,
                6,
                24,
                26,
                38,
                43,
                45,
                35,
                27,
                36,
                53,
                33,
                28,
                32,
                233
              ],
              "bin_centers": [
                0.125,
                0.375,
                0.625,
                0.875,
                1.125,
                1.375,
                1.625,
                1.875,
                2.125,
                2.375,
                2.625,
                2.875,
                3.125,
                3.375,
                3.625,
                3.875
              ],
              "clip_lo": 0.0,
              "clip_hi": 4.0
            }
          },
          "max_down_natr": {
            "n": 659,
            "mean": -1.164,
            "median": -0.775,
            "p25": -1.761,
            "p75": -0.245,
            "hist": {
              "bin_edges": [
                -4.0,
                -3.75,
                -3.5,
                -3.25,
                -3.0,
                -2.75,
                -2.5,
                -2.25,
                -2.0,
                -1.75,
                -1.5,
                -1.25,
                -1.0,
                -0.75,
                -0.5,
                -0.25,
                0.0
              ],
              "counts": [
                36,
                13,
                11,
                16,
                6,
                14,
                23,
                22,
                25,
                34,
                50,
                33,
                50,
                70,
                89,
                167
              ],
              "bin_centers": [
                -3.875,
                -3.625,
                -3.375,
                -3.125,
                -2.875,
                -2.625,
                -2.375,
                -2.125,
                -1.875,
                -1.625,
                -1.375,
                -1.125,
                -0.875,
                -0.625,
                -0.375,
                -0.125
              ],
              "clip_lo": -4.0,
              "clip_hi": 0.0
            }
          }
        },
        "breakdown": {
          "n": 179,
          "max_up_natr": {
            "n": 179,
            "mean": 1.379,
            "median": 0.634,
            "p25": 0.152,
            "p75": 2.089,
            "hist": {
              "bin_edges": [
                0.0,
                0.25,
                0.5,
                0.75,
                1.0,
                1.25,
                1.5,
                1.75,
                2.0,
                2.25,
                2.5,
                2.75,
                3.0,
                3.25,
                3.5,
                3.75,
                4.0
              ],
              "counts": [
                58,
                21,
                16,
                15,
                9,
                5,
                4,
                3,
                6,
                5,
                2,
                4,
                5,
                3,
                4,
                19
              ],
              "bin_centers": [
                0.125,
                0.375,
                0.625,
                0.875,
                1.125,
                1.375,
                1.625,
                1.875,
                2.125,
                2.375,
                2.625,
                2.875,
                3.125,
                3.375,
                3.625,
                3.875
              ],
              "clip_lo": 0.0,
              "clip_hi": 4.0
            }
          },
          "max_down_natr": {
            "n": 179,
            "mean": -5.175,
            "median": -4.405,
            "p25": -6.33,
            "p75": -2.583,
            "hist": {
              "bin_edges": [
                -4.0,
                -3.75,
                -3.5,
                -3.25,
                -3.0,
                -2.75,
                -2.5,
                -2.25,
                -2.0,
                -1.75,
                -1.5,
                -1.25,
                -1.0,
                -0.75,
                -0.5,
                -0.25,
                0.0
              ],
              "counts": [
                112,
                4,
                4,
                1,
                11,
                8,
                4,
                12,
                5,
                7,
                6,
                2,
                2,
                1,
                0,
                0
              ],
              "bin_centers": [
                -3.875,
                -3.625,
                -3.375,
                -3.125,
                -2.875,
                -2.625,
                -2.375,
                -2.125,
                -1.875,
                -1.625,
                -1.375,
                -1.125,
                -0.875,
                -0.625,
                -0.375,
                -0.125
              ],
              "clip_lo": -4.0,
              "clip_hi": 0.0
            }
          }
        },
        "sideways": {
          "n": 31,
          "max_up_natr": {
            "n": 31,
            "mean": 0.806,
            "median": 0.746,
            "p25": 0.5,
            "p75": 1.049,
            "hist": {
              "bin_edges": [
                0.0,
                0.25,
                0.5,
                0.75,
                1.0,
                1.25,
                1.5,
                1.75,
                2.0,
                2.25,
                2.5,
                2.75,
                3.0,
                3.25,
                3.5,
                3.75,
                4.0
              ],
              "counts": [
                1,
                7,
                8,
                6,
                4,
                4,
                1,
                0,
                0,
                0,
                0,
                0,
                0,
                0,
                0,
                0
              ],
              "bin_centers": [
                0.125,
                0.375,
                0.625,
                0.875,
                1.125,
                1.375,
                1.625,
                1.875,
                2.125,
                2.375,
                2.625,
                2.875,
                3.125,
                3.375,
                3.625,
                3.875
              ],
              "clip_lo": 0.0,
              "clip_hi": 4.0
            }
          },
          "max_down_natr": {
            "n": 31,
            "mean": -2.875,
            "median": -2.642,
            "p25": -3.34,
            "p75": -1.968,
            "hist": {
              "bin_edges": [
                -4.0,
                -3.75,
                -3.5,
                -3.25,
                -3.0,
                -2.75,
                -2.5,
                -2.25,
                -2.0,
                -1.75,
                -1.5,
                -1.25,
                -1.0,
                -0.75,
                -0.5,
                -0.25,
                0.0
              ],
              "counts": [
                7,
                0,
                2,
                2,
                3,
                3,
                2,
                4,
                4,
                1,
                2,
                1,
                0,
                0,
                0,
                0
              ],
              "bin_centers": [
                -3.875,
                -3.625,
                -3.375,
                -3.125,
                -2.875,
                -2.625,
                -2.375,
                -2.125,
                -1.875,
                -1.625,
                -1.375,
                -1.125,
                -0.875,
                -0.625,
                -0.375,
                -0.125
              ],
              "clip_lo": -4.0,
              "clip_hi": 0.0
            }
          }
        },
        "forming": {
          "n": 0,
          "max_up_natr": {
            "n": 0,
            "mean": null,
            "median": null,
            "p25": null,
            "p75": null
          },
          "max_down_natr": {
            "n": 0,
            "mean": null,
            "median": null,
            "p25": null,
            "p75": null
          }
        }
      },
      "max_up_natr_hist": {
        "bin_edges": [
          0.0,
          0.25,
          0.5,
          0.75,
          1.0,
          1.25,
          1.5,
          1.75,
          2.0,
          2.25,
          2.5,
          2.75,
          3.0,
          3.25,
          3.5,
          3.75,
          4.0
        ],
        "counts": [
          59,
          28,
          30,
          45,
          39,
          47,
          48,
          48,
          41,
          32,
          38,
          57,
          38,
          31,
          36,
          252
        ],
        "bin_centers": [
          0.125,
          0.375,
          0.625,
          0.875,
          1.125,
          1.375,
          1.625,
          1.875,
          2.125,
          2.375,
          2.625,
          2.875,
          3.125,
          3.375,
          3.625,
          3.875
        ],
        "clip_lo": 0.0,
        "clip_hi": 4.0
      },
      "max_down_natr_hist": {
        "bin_edges": [
          -4.0,
          -3.75,
          -3.5,
          -3.25,
          -3.0,
          -2.75,
          -2.5,
          -2.25,
          -2.0,
          -1.75,
          -1.5,
          -1.25,
          -1.0,
          -0.75,
          -0.5,
          -0.25,
          0.0
        ],
        "counts": [
          155,
          17,
          17,
          19,
          20,
          25,
          29,
          38,
          34,
          42,
          58,
          36,
          52,
          71,
          89,
          167
        ],
        "bin_centers": [
          -3.875,
          -3.625,
          -3.375,
          -3.125,
          -2.875,
          -2.625,
          -2.375,
          -2.125,
          -1.875,
          -1.625,
          -1.375,
          -1.125,
          -0.875,
          -0.625,
          -0.375,
          -0.125
        ],
        "clip_lo": -4.0,
        "clip_hi": 0.0
      },
      "timestamp_min": 1633330800000,
      "timestamp_max": 1785523500000,
      "timestamp_min_iso": "2021-10-04T07:00:00Z",
      "timestamp_max_iso": "2026-07-31T18:45:00Z"
    },
    {
      "pattern_type": "ascending_broadening_wedge",
      "pattern_name": "Ascending Broadening Wedge",
      "timeframe": "1h",
      "bias": "bearish",
      "n": 9813,
      "n_symbols": 644,
      "breakout_success_rate": 14.78,
      "breakdown_success_rate": 75.8,
      "sideways_rate": 9.42,
      "forming_rate": 0.0,
      "both_cleared_rate": 39.28,
      "breakout_success_rate_ci95": [
        14.09,
        15.49
      ],
      "breakdown_success_rate_ci95": [
        74.94,
        76.63
      ],
      "sideways_rate_ci95": [
        8.86,
        10.02
      ],
      "forming_rate_ci95": [
        0.0,
        0.04
      ],
      "both_sides_rate": 39.28,
      "expected_hit_rate": 75.8,
      "expected_hit_rate_ci95": [
        74.94,
        76.63
      ],
      "mean_ret_10c": -0.624,
      "median_ret_10c": -1.106,
      "std_ret_10c": 7.148,
      "win_rate_ret_gt0": 38.71,
      "p25_ret_10c": -3.911,
      "p75_ret_10c": 1.768,
      "mean_mfe": 4.34,
      "mean_mae": -5.335,
      "mfe_mae_ratio": 0.813,
      "max_up_natr": {
        "n": 9813,
        "mean": 2.599,
        "median": 1.166,
        "p25": 0.299,
        "p75": 3.12,
        "hist": {
          "bin_edges": [
            0.0,
            0.25,
            0.5,
            0.75,
            1.0,
            1.25,
            1.5,
            1.75,
            2.0,
            2.25,
            2.5,
            2.75,
            3.0,
            3.25,
            3.5,
            3.75,
            4.0
          ],
          "counts": [
            2192,
            1111,
            684,
            593,
            488,
            391,
            359,
            347,
            317,
            286,
            279,
            203,
            224,
            186,
            169,
            1984
          ],
          "bin_centers": [
            0.125,
            0.375,
            0.625,
            0.875,
            1.125,
            1.375,
            1.625,
            1.875,
            2.125,
            2.375,
            2.625,
            2.875,
            3.125,
            3.375,
            3.625,
            3.875
          ],
          "clip_lo": 0.0,
          "clip_hi": 4.0
        }
      },
      "max_down_natr": {
        "n": 9813,
        "mean": -3.218,
        "median": -2.73,
        "p25": -4.23,
        "p75": -1.592,
        "hist": {
          "bin_edges": [
            -4.0,
            -3.75,
            -3.5,
            -3.25,
            -3.0,
            -2.75,
            -2.5,
            -2.25,
            -2.0,
            -1.75,
            -1.5,
            -1.25,
            -1.0,
            -0.75,
            -0.5,
            -0.25,
            0.0
          ],
          "counts": [
            3086,
            395,
            413,
            454,
            498,
            519,
            534,
            569,
            537,
            531,
            462,
            404,
            382,
            309,
            313,
            407
          ],
          "bin_centers": [
            -3.875,
            -3.625,
            -3.375,
            -3.125,
            -2.875,
            -2.625,
            -2.375,
            -2.125,
            -1.875,
            -1.625,
            -1.375,
            -1.125,
            -0.875,
            -0.625,
            -0.375,
            -0.125
          ],
          "clip_lo": -4.0,
          "clip_hi": 0.0
        }
      },
      "median_max_up_natr": 1.166,
      "median_max_down_natr": -2.73,
      "mean_max_up_natr": 2.599,
      "mean_max_down_natr": -3.218,
      "p25_max_up_natr": 0.299,
      "p75_max_up_natr": 3.12,
      "p25_max_down_natr": -4.23,
      "p75_max_down_natr": -1.592,
      "outcome_natr_moves": {
        "breakout": {
          "n": 1450,
          "max_up_natr": {
            "n": 1450,
            "mean": 8.502,
            "median": 6.128,
            "p25": 3.757,
            "p75": 10.206,
            "hist": {
              "bin_edges": [
                0.0,
                0.25,
                0.5,
                0.75,
                1.0,
                1.25,
                1.5,
                1.75,
                2.0,
                2.25,
                2.5,
                2.75,
                3.0,
                3.25,
                3.5,
                3.75,
                4.0
              ],
              "counts": [
                0,
                0,
                2,
                5,
                12,
                23,
                24,
                27,
                36,
                43,
                36,
                39,
                32,
                38,
                43,
                1090
              ],
              "bin_centers": [
                0.125,
                0.375,
                0.625,
                0.875,
                1.125,
                1.375,
                1.625,
                1.875,
                2.125,
                2.375,
                2.625,
                2.875,
                3.125,
                3.375,
                3.625,
                3.875
              ],
              "clip_lo": 0.0,
              "clip_hi": 4.0
            }
          },
          "max_down_natr": {
            "n": 1450,
            "mean": -1.707,
            "median": -0.794,
            "p25": -2.488,
            "p75": -0.243,
            "hist": {
              "bin_edges": [
                -4.0,
                -3.75,
                -3.5,
                -3.25,
                -3.0,
                -2.75,
                -2.5,
                -2.25,
                -2.0,
                -1.75,
                -1.5,
                -1.25,
                -1.0,
                -0.75,
                -0.5,
                -0.25,
                0.0
              ],
              "counts": [
                200,
                22,
                34,
                37,
                25,
                43,
                34,
                33,
                47,
                55,
                61,
                60,
                103,
                131,
                196,
                369
              ],
              "bin_centers": [
                -3.875,
                -3.625,
                -3.375,
                -3.125,
                -2.875,
                -2.625,
                -2.375,
                -2.125,
                -1.875,
                -1.625,
                -1.375,
                -1.125,
                -0.875,
                -0.625,
                -0.375,
                -0.125
              ],
              "clip_lo": -4.0,
              "clip_hi": 0.0
            }
          }
        },
        "breakdown": {
          "n": 7438,
          "max_up_natr": {
            "n": 7438,
            "mean": 1.452,
            "median": 0.678,
            "p25": 0.197,
            "p75": 1.941,
            "hist": {
              "bin_edges": [
                0.0,
                0.25,
                0.5,
                0.75,
                1.0,
                1.25,
                1.5,
                1.75,
                2.0,
                2.25,
                2.5,
                2.75,
                3.0,
                3.25,
                3.5,
                3.75,
                4.0
              ],
              "counts": [
                2154,
                1076,
                641,
                523,
                409,
                314,
                269,
                261,
                225,
                191,
                200,
                121,
                143,
                115,
                93,
                703
              ],
              "bin_centers": [
                0.125,
                0.375,
                0.625,
                0.875,
                1.125,
                1.375,
                1.625,
                1.875,
                2.125,
                2.375,
                2.625,
                2.875,
                3.125,
                3.375,
                3.625,
                3.875
              ],
              "clip_lo": 0.0,
              "clip_hi": 4.0
            }
          },
          "max_down_natr": {
            "n": 7438,
            "mean": -3.727,
            "median": -3.146,
            "p25": -4.625,
            "p75": -2.116,
            "hist": {
              "bin_edges": [
                -4.0,
                -3.75,
                -3.5,
                -3.25,
                -3.0,
                -2.75,
                -2.5,
                -2.25,
                -2.0,
                -1.75,
                -1.5,
                -1.25,
                -1.0,
                -0.75,
                -0.5,
                -0.25,
                0.0
              ],
              "counts": [
                2829,
                359,
                364,
                400,
                440,
                446,
                470,
                500,
                445,
                410,
                337,
                240,
                155,
                43,
                0,
                0
              ],
              "bin_centers": [
                -3.875,
                -3.625,
                -3.375,
                -3.125,
                -2.875,
                -2.625,
                -2.375,
                -2.125,
                -1.875,
                -1.625,
                -1.375,
                -1.125,
                -0.875,
                -0.625,
                -0.375,
                -0.125
              ],
              "clip_lo": -4.0,
              "clip_hi": 0.0
            }
          }
        },
        "sideways": {
          "n": 925,
          "max_up_natr": {
            "n": 925,
            "mean": 2.567,
            "median": 2.158,
            "p25": 1.202,
            "p75": 3.401,
            "hist": {
              "bin_edges": [
                0.0,
                0.25,
                0.5,
                0.75,
                1.0,
                1.25,
                1.5,
                1.75,
                2.0,
                2.25,
                2.5,
                2.75,
                3.0,
                3.25,
                3.5,
                3.75,
                4.0
              ],
              "counts": [
                38,
                35,
                41,
                65,
                67,
                54,
                66,
                59,
                56,
                52,
                43,
                43,
                49,
                33,
                33,
                191
              ],
              "bin_centers": [
                0.125,
                0.375,
                0.625,
                0.875,
                1.125,
                1.375,
                1.625,
                1.875,
                2.125,
                2.375,
                2.625,
                2.875,
                3.125,
                3.375,
                3.625,
                3.875
              ],
              "clip_lo": 0.0,
              "clip_hi": 4.0
            }
          },
          "max_down_natr": {
            "n": 925,
            "mean": -1.49,
            "median": -1.138,
            "p25": -2.001,
            "p75": -0.616,
            "hist": {
              "bin_edges": [
                -4.0,
                -3.75,
                -3.5,
                -3.25,
                -3.0,
                -2.75,
                -2.5,
                -2.25,
                -2.0,
                -1.75,
                -1.5,
                -1.25,
                -1.0,
                -0.75,
                -0.5,
                -0.25,
                0.0
              ],
              "counts": [
                57,
                14,
                15,
                17,
                33,
                30,
                30,
                36,
                45,
                66,
                64,
                104,
                124,
                135,
                117,
                38
              ],
              "bin_centers": [
                -3.875,
                -3.625,
                -3.375,
                -3.125,
                -2.875,
                -2.625,
                -2.375,
                -2.125,
                -1.875,
                -1.625,
                -1.375,
                -1.125,
                -0.875,
                -0.625,
                -0.375,
                -0.125
              ],
              "clip_lo": -4.0,
              "clip_hi": 0.0
            }
          }
        },
        "forming": {
          "n": 0,
          "max_up_natr": {
            "n": 0,
            "mean": null,
            "median": null,
            "p25": null,
            "p75": null
          },
          "max_down_natr": {
            "n": 0,
            "mean": null,
            "median": null,
            "p25": null,
            "p75": null
          }
        }
      },
      "max_up_natr_hist": {
        "bin_edges": [
          0.0,
          0.25,
          0.5,
          0.75,
          1.0,
          1.25,
          1.5,
          1.75,
          2.0,
          2.25,
          2.5,
          2.75,
          3.0,
          3.25,
          3.5,
          3.75,
          4.0
        ],
        "counts": [
          2192,
          1111,
          684,
          593,
          488,
          391,
          359,
          347,
          317,
          286,
          279,
          203,
          224,
          186,
          169,
          1984
        ],
        "bin_centers": [
          0.125,
          0.375,
          0.625,
          0.875,
          1.125,
          1.375,
          1.625,
          1.875,
          2.125,
          2.375,
          2.625,
          2.875,
          3.125,
          3.375,
          3.625,
          3.875
        ],
        "clip_lo": 0.0,
        "clip_hi": 4.0
      },
      "max_down_natr_hist": {
        "bin_edges": [
          -4.0,
          -3.75,
          -3.5,
          -3.25,
          -3.0,
          -2.75,
          -2.5,
          -2.25,
          -2.0,
          -1.75,
          -1.5,
          -1.25,
          -1.0,
          -0.75,
          -0.5,
          -0.25,
          0.0
        ],
        "counts": [
          3086,
          395,
          413,
          454,
          498,
          519,
          534,
          569,
          537,
          531,
          462,
          404,
          382,
          309,
          313,
          407
        ],
        "bin_centers": [
          -3.875,
          -3.625,
          -3.375,
          -3.125,
          -2.875,
          -2.625,
          -2.375,
          -2.125,
          -1.875,
          -1.625,
          -1.375,
          -1.125,
          -0.875,
          -0.625,
          -0.375,
          -0.125
        ],
        "clip_lo": -4.0,
        "clip_hi": 0.0
      },
      "timestamp_min": 1578506400000,
      "timestamp_max": 1785466800000,
      "timestamp_min_iso": "2020-01-08T18:00:00Z",
      "timestamp_max_iso": "2026-07-31T03:00:00Z"
    },
    {
      "pattern_type": "descending_broadening_wedge",
      "pattern_name": "Descending Broadening Wedge",
      "timeframe": "1h",
      "bias": "bullish",
      "n": 11668,
      "n_symbols": 658,
      "breakout_success_rate": 75.75,
      "breakdown_success_rate": 11.41,
      "sideways_rate": 12.84,
      "forming_rate": 0.0,
      "both_cleared_rate": 36.0,
      "breakout_success_rate_ci95": [
        74.96,
        76.51
      ],
      "breakdown_success_rate_ci95": [
        10.84,
        12.0
      ],
      "sideways_rate_ci95": [
        12.25,
        13.47
      ],
      "forming_rate_ci95": [
        0.0,
        0.03
      ],
      "both_sides_rate": 36.0,
      "expected_hit_rate": 75.75,
      "expected_hit_rate_ci95": [
        74.96,
        76.51
      ],
      "mean_ret_10c": 0.937,
      "median_ret_10c": 0.884,
      "std_ret_10c": 6.898,
      "win_rate_ret_gt0": 58.9,
      "p25_ret_10c": -1.797,
      "p75_ret_10c": 3.665,
      "mean_mfe": 5.497,
      "mean_mae": -3.762,
      "mfe_mae_ratio": 1.461,
      "max_up_natr": {
        "n": 11668,
        "mean": 3.189,
        "median": 2.41,
        "p25": 1.31,
        "p75": 4.031,
        "hist": {
          "bin_edges": [
            0.0,
            0.25,
            0.5,
            0.75,
            1.0,
            1.25,
            1.5,
            1.75,
            2.0,
            2.25,
            2.5,
            2.75,
            3.0,
            3.25,
            3.5,
            3.75,
            4.0
          ],
          "counts": [
            481,
            407,
            525,
            673,
            647,
            696,
            694,
            663,
            651,
            618,
            506,
            503,
            496,
            439,
            385,
            3284
          ],
          "bin_centers": [
            0.125,
            0.375,
            0.625,
            0.875,
            1.125,
            1.375,
            1.625,
            1.875,
            2.125,
            2.375,
            2.625,
            2.875,
            3.125,
            3.375,
            3.625,
            3.875
          ],
          "clip_lo": 0.0,
          "clip_hi": 4.0
        }
      },
      "max_down_natr": {
        "n": 11668,
        "mean": -2.261,
        "median": -1.146,
        "p25": -2.696,
        "p75": -0.304,
        "hist": {
          "bin_edges": [
            -4.0,
            -3.75,
            -3.5,
            -3.25,
            -3.0,
            -2.75,
            -2.5,
            -2.25,
            -2.0,
            -1.75,
            -1.5,
            -1.25,
            -1.0,
            -0.75,
            -0.5,
            -0.25,
            0.0
          ],
          "counts": [
            1929,
            208,
            215,
            238,
            267,
            299,
            365,
            442,
            526,
            556,
            551,
            600,
            741,
            909,
            1246,
            2576
          ],
          "bin_centers": [
            -3.875,
            -3.625,
            -3.375,
            -3.125,
            -2.875,
            -2.625,
            -2.375,
            -2.125,
            -1.875,
            -1.625,
            -1.375,
            -1.125,
            -0.875,
            -0.625,
            -0.375,
            -0.125
          ],
          "clip_lo": -4.0,
          "clip_hi": 0.0
        }
      },
      "median_max_up_natr": 2.41,
      "median_max_down_natr": -1.146,
      "mean_max_up_natr": 3.189,
      "mean_max_down_natr": -2.261,
      "p25_max_up_natr": 1.31,
      "p75_max_up_natr": 4.031,
      "p25_max_down_natr": -2.696,
      "p75_max_down_natr": -0.304,
      "outcome_natr_moves": {
        "breakout": {
          "n": 8838,
          "max_up_natr": {
            "n": 8838,
            "mean": 3.741,
            "median": 2.904,
            "p25": 1.847,
            "p75": 4.496,
            "hist": {
              "bin_edges": [
                0.0,
                0.25,
                0.5,
                0.75,
                1.0,
                1.25,
                1.5,
                1.75,
                2.0,
                2.25,
                2.5,
                2.75,
                3.0,
                3.25,
                3.5,
                3.75,
                4.0
              ],
              "counts": [
                0,
                0,
                99,
                342,
                443,
                560,
                577,
                549,
                557,
                558,
                446,
                450,
                451,
                409,
                357,
                3040
              ],
              "bin_centers": [
                0.125,
                0.375,
                0.625,
                0.875,
                1.125,
                1.375,
                1.625,
                1.875,
                2.125,
                2.375,
                2.625,
                2.875,
                3.125,
                3.375,
                3.625,
                3.875
              ],
              "clip_lo": 0.0,
              "clip_hi": 4.0
            }
          },
          "max_down_natr": {
            "n": 8838,
            "mean": -1.337,
            "median": -0.706,
            "p25": -1.802,
            "p75": -0.204,
            "hist": {
              "bin_edges": [
                -4.0,
                -3.75,
                -3.5,
                -3.25,
                -3.0,
                -2.75,
                -2.5,
                -2.25,
                -2.0,
                -1.75,
                -1.5,
                -1.25,
                -1.0,
                -0.75,
                -0.5,
                -0.25,
                0.0
              ],
              "counts": [
                665,
                112,
                125,
                131,
                160,
                182,
                227,
                314,
                375,
                409,
                424,
                510,
                645,
                830,
                1193,
                2536
              ],
              "bin_centers": [
                -3.875,
                -3.625,
                -3.375,
                -3.125,
                -2.875,
                -2.625,
                -2.375,
                -2.125,
                -1.875,
                -1.625,
                -1.375,
                -1.125,
                -0.875,
                -0.625,
                -0.375,
                -0.125
              ],
              "clip_lo": -4.0,
              "clip_hi": 0.0
            }
          }
        },
        "breakdown": {
          "n": 1331,
          "max_up_natr": {
            "n": 1331,
            "mean": 1.676,
            "median": 0.7,
            "p25": 0.212,
            "p75": 2.051,
            "hist": {
              "bin_edges": [
                0.0,
                0.25,
                0.5,
                0.75,
                1.0,
                1.25,
                1.5,
                1.75,
                2.0,
                2.25,
                2.5,
                2.75,
                3.0,
                3.25,
                3.5,
                3.75,
                4.0
              ],
              "counts": [
                370,
                191,
                131,
                93,
                63,
                47,
                37,
                54,
                45,
                24,
                22,
                29,
                22,
                17,
                17,
                169
              ],
              "bin_centers": [
                0.125,
                0.375,
                0.625,
                0.875,
                1.125,
                1.375,
                1.625,
                1.875,
                2.125,
                2.375,
                2.625,
                2.875,
                3.125,
                3.375,
                3.625,
                3.875
              ],
              "clip_lo": 0.0,
              "clip_hi": 4.0
            }
          },
          "max_down_natr": {
            "n": 1331,
            "mean": -8.133,
            "median": -6.009,
            "p25": -9.719,
            "p75": -3.695,
            "hist": {
              "bin_edges": [
                -4.0,
                -3.75,
                -3.5,
                -3.25,
                -3.0,
                -2.75,
                -2.5,
                -2.25,
                -2.0,
                -1.75,
                -1.5,
                -1.25,
                -1.0,
                -0.75,
                -0.5,
                -0.25,
                0.0
              ],
              "counts": [
                989,
                41,
                30,
                40,
                37,
                39,
                47,
                30,
                29,
                26,
                14,
                6,
                2,
                1,
                0,
                0
              ],
              "bin_centers": [
                -3.875,
                -3.625,
                -3.375,
                -3.125,
                -2.875,
                -2.625,
                -2.375,
                -2.125,
                -1.875,
                -1.625,
                -1.375,
                -1.125,
                -0.875,
                -0.625,
                -0.375,
                -0.125
              ],
              "clip_lo": -4.0,
              "clip_hi": 0.0
            }
          }
        },
        "sideways": {
          "n": 1499,
          "max_up_natr": {
            "n": 1499,
            "mean": 1.275,
            "median": 0.875,
            "p25": 0.535,
            "p75": 1.587,
            "hist": {
              "bin_edges": [
                0.0,
                0.25,
                0.5,
                0.75,
                1.0,
                1.25,
                1.5,
                1.75,
                2.0,
                2.25,
                2.5,
                2.75,
                3.0,
                3.25,
                3.5,
                3.75,
                4.0
              ],
              "counts": [
                111,
                216,
                295,
                238,
                141,
                89,
                80,
                60,
                49,
                36,
                38,
                24,
                23,
                13,
                11,
                75
              ],
              "bin_centers": [
                0.125,
                0.375,
                0.625,
                0.875,
                1.125,
                1.375,
                1.625,
                1.875,
                2.125,
                2.375,
                2.625,
                2.875,
                3.125,
                3.375,
                3.625,
                3.875
              ],
              "clip_lo": 0.0,
              "clip_hi": 4.0
            }
          },
          "max_down_natr": {
            "n": 1499,
            "mean": -2.491,
            "median": -2.095,
            "p25": -3.311,
            "p75": -1.33,
            "hist": {
              "bin_edges": [
                -4.0,
                -3.75,
                -3.5,
                -3.25,
                -3.0,
                -2.75,
                -2.5,
                -2.25,
                -2.0,
                -1.75,
                -1.5,
                -1.25,
                -1.0,
                -0.75,
                -0.5,
                -0.25,
                0.0
              ],
              "counts": [
                275,
                55,
                60,
                67,
                70,
                78,
                91,
                98,
                122,
                121,
                113,
                84,
                94,
                78,
                53,
                40
              ],
              "bin_centers": [
                -3.875,
                -3.625,
                -3.375,
                -3.125,
                -2.875,
                -2.625,
                -2.375,
                -2.125,
                -1.875,
                -1.625,
                -1.375,
                -1.125,
                -0.875,
                -0.625,
                -0.375,
                -0.125
              ],
              "clip_lo": -4.0,
              "clip_hi": 0.0
            }
          }
        },
        "forming": {
          "n": 0,
          "max_up_natr": {
            "n": 0,
            "mean": null,
            "median": null,
            "p25": null,
            "p75": null
          },
          "max_down_natr": {
            "n": 0,
            "mean": null,
            "median": null,
            "p25": null,
            "p75": null
          }
        }
      },
      "max_up_natr_hist": {
        "bin_edges": [
          0.0,
          0.25,
          0.5,
          0.75,
          1.0,
          1.25,
          1.5,
          1.75,
          2.0,
          2.25,
          2.5,
          2.75,
          3.0,
          3.25,
          3.5,
          3.75,
          4.0
        ],
        "counts": [
          481,
          407,
          525,
          673,
          647,
          696,
          694,
          663,
          651,
          618,
          506,
          503,
          496,
          439,
          385,
          3284
        ],
        "bin_centers": [
          0.125,
          0.375,
          0.625,
          0.875,
          1.125,
          1.375,
          1.625,
          1.875,
          2.125,
          2.375,
          2.625,
          2.875,
          3.125,
          3.375,
          3.625,
          3.875
        ],
        "clip_lo": 0.0,
        "clip_hi": 4.0
      },
      "max_down_natr_hist": {
        "bin_edges": [
          -4.0,
          -3.75,
          -3.5,
          -3.25,
          -3.0,
          -2.75,
          -2.5,
          -2.25,
          -2.0,
          -1.75,
          -1.5,
          -1.25,
          -1.0,
          -0.75,
          -0.5,
          -0.25,
          0.0
        ],
        "counts": [
          1929,
          208,
          215,
          238,
          267,
          299,
          365,
          442,
          526,
          556,
          551,
          600,
          741,
          909,
          1246,
          2576
        ],
        "bin_centers": [
          -3.875,
          -3.625,
          -3.375,
          -3.125,
          -2.875,
          -2.625,
          -2.375,
          -2.125,
          -1.875,
          -1.625,
          -1.375,
          -1.125,
          -0.875,
          -0.625,
          -0.375,
          -0.125
        ],
        "clip_lo": -4.0,
        "clip_hi": 0.0
      },
      "timestamp_min": 1579870800000,
      "timestamp_max": 1785466800000,
      "timestamp_min_iso": "2020-01-24T13:00:00Z",
      "timestamp_max_iso": "2026-07-31T03:00:00Z"
    },
    {
      "pattern_type": "falling_wedge",
      "pattern_name": "Falling Wedge",
      "timeframe": "1d",
      "bias": "bullish",
      "n": 705,
      "n_symbols": 368,
      "breakout_success_rate": 75.18,
      "breakdown_success_rate": 22.55,
      "sideways_rate": 2.27,
      "forming_rate": 0.0,
      "both_cleared_rate": 30.21,
      "breakout_success_rate_ci95": [
        71.86,
        78.22
      ],
      "breakdown_success_rate_ci95": [
        19.62,
        25.78
      ],
      "sideways_rate_ci95": [
        1.4,
        3.65
      ],
      "forming_rate_ci95": [
        0.0,
        0.54
      ],
      "both_sides_rate": 30.21,
      "expected_hit_rate": 75.18,
      "expected_hit_rate_ci95": [
        71.86,
        78.22
      ],
      "mean_ret_10c": 4.257,
      "median_ret_10c": 1.891,
      "std_ret_10c": 27.298,
      "win_rate_ret_gt0": 53.48,
      "p25_ret_10c": -15.03,
      "p75_ret_10c": 18.029,
      "mean_mfe": 32.412,
      "mean_mae": -15.612,
      "mfe_mae_ratio": 2.076,
      "max_up_natr": {
        "n": 705,
        "mean": 3.597,
        "median": 2.432,
        "p25": 1.165,
        "p75": 4.229,
        "hist": {
          "bin_edges": [
            0.0,
            0.25,
            0.5,
            0.75,
            1.0,
            1.25,
            1.5,
            1.75,
            2.0,
            2.25,
            2.5,
            2.75,
            3.0,
            3.25,
            3.5,
            3.75,
            4.0
          ],
          "counts": [
            51,
            33,
            36,
            33,
            32,
            37,
            40,
            33,
            41,
            29,
            35,
            26,
            17,
            24,
            23,
            215
          ],
          "bin_centers": [
            0.125,
            0.375,
            0.625,
            0.875,
            1.125,
            1.375,
            1.625,
            1.875,
            2.125,
            2.375,
            2.625,
            2.875,
            3.125,
            3.375,
            3.625,
            3.875
          ],
          "clip_lo": 0.0,
          "clip_hi": 4.0
        }
      },
      "max_down_natr": {
        "n": 705,
        "mean": -1.739,
        "median": -1.093,
        "p25": -2.661,
        "p75": -0.251,
        "hist": {
          "bin_edges": [
            -4.0,
            -3.75,
            -3.5,
            -3.25,
            -3.0,
            -2.75,
            -2.5,
            -2.25,
            -2.0,
            -1.75,
            -1.5,
            -1.25,
            -1.0,
            -0.75,
            -0.5,
            -0.25,
            0.0
          ],
          "counts": [
            95,
            11,
            23,
            12,
            29,
            30,
            22,
            29,
            31,
            28,
            26,
            23,
            30,
            47,
            94,
            175
          ],
          "bin_centers": [
            -3.875,
            -3.625,
            -3.375,
            -3.125,
            -2.875,
            -2.625,
            -2.375,
            -2.125,
            -1.875,
            -1.625,
            -1.375,
            -1.125,
            -0.875,
            -0.625,
            -0.375,
            -0.125
          ],
          "clip_lo": -4.0,
          "clip_hi": 0.0
        }
      },
      "median_max_up_natr": 2.432,
      "median_max_down_natr": -1.093,
      "mean_max_up_natr": 3.597,
      "mean_max_down_natr": -1.739,
      "p25_max_up_natr": 1.165,
      "p75_max_up_natr": 4.229,
      "p25_max_down_natr": -2.661,
      "p75_max_down_natr": -0.251,
      "outcome_natr_moves": {
        "breakout": {
          "n": 530,
          "max_up_natr": {
            "n": 530,
            "mean": 4.468,
            "median": 3.065,
            "p25": 1.898,
            "p75": 4.85,
            "hist": {
              "bin_edges": [
                0.0,
                0.25,
                0.5,
                0.75,
                1.0,
                1.25,
                1.5,
                1.75,
                2.0,
                2.25,
                2.5,
                2.75,
                3.0,
                3.25,
                3.5,
                3.75,
                4.0
              ],
              "counts": [
                0,
                0,
                8,
                22,
                21,
                30,
                37,
                26,
                38,
                24,
                33,
                23,
                17,
                22,
                23,
                206
              ],
              "bin_centers": [
                0.125,
                0.375,
                0.625,
                0.875,
                1.125,
                1.375,
                1.625,
                1.875,
                2.125,
                2.375,
                2.625,
                2.875,
                3.125,
                3.375,
                3.625,
                3.875
              ],
              "clip_lo": 0.0,
              "clip_hi": 4.0
            }
          },
          "max_down_natr": {
            "n": 530,
            "mean": -1.17,
            "median": -0.494,
            "p25": -1.82,
            "p75": -0.184,
            "hist": {
              "bin_edges": [
                -4.0,
                -3.75,
                -3.5,
                -3.25,
                -3.0,
                -2.75,
                -2.5,
                -2.25,
                -2.0,
                -1.75,
                -1.5,
                -1.25,
                -1.0,
                -0.75,
                -0.5,
                -0.25,
                0.0
              ],
              "counts": [
                42,
                6,
                8,
                8,
                14,
                14,
                11,
                17,
                20,
                15,
                23,
                18,
                24,
                44,
                93,
                173
              ],
              "bin_centers": [
                -3.875,
                -3.625,
                -3.375,
                -3.125,
                -2.875,
                -2.625,
                -2.375,
                -2.125,
                -1.875,
                -1.625,
                -1.375,
                -1.125,
                -0.875,
                -0.625,
                -0.375,
                -0.125
              ],
              "clip_lo": -4.0,
              "clip_hi": 0.0
            }
          }
        },
        "breakdown": {
          "n": 159,
          "max_up_natr": {
            "n": 159,
            "mean": 0.99,
            "median": 0.516,
            "p25": 0.209,
            "p75": 1.242,
            "hist": {
              "bin_edges": [
                0.0,
                0.25,
                0.5,
                0.75,
                1.0,
                1.25,
                1.5,
                1.75,
                2.0,
                2.25,
                2.5,
                2.75,
                3.0,
                3.25,
                3.5,
                3.75,
                4.0
              ],
              "counts": [
                49,
                28,
                25,
                9,
                8,
                6,
                3,
                7,
                3,
                5,
                2,
                3,
                0,
                2,
                0,
                9
              ],
              "bin_centers": [
                0.125,
                0.375,
                0.625,
                0.875,
                1.125,
                1.375,
                1.625,
                1.875,
                2.125,
                2.375,
                2.625,
                2.875,
                3.125,
                3.375,
                3.625,
                3.875
              ],
              "clip_lo": 0.0,
              "clip_hi": 4.0
            }
          },
          "max_down_natr": {
            "n": 159,
            "mean": -3.677,
            "median": -2.978,
            "p25": -4.401,
            "p75": -2.14,
            "hist": {
              "bin_edges": [
                -4.0,
                -3.75,
                -3.5,
                -3.25,
                -3.0,
                -2.75,
                -2.5,
                -2.25,
                -2.0,
                -1.75,
                -1.5,
                -1.25,
                -1.0,
                -0.75,
                -0.5,
                -0.25,
                0.0
              ],
              "counts": [
                53,
                5,
                15,
                4,
                15,
                15,
                8,
                11,
                10,
                12,
                1,
                4,
                5,
                1,
                0,
                0
              ],
              "bin_centers": [
                -3.875,
                -3.625,
                -3.375,
                -3.125,
                -2.875,
                -2.625,
                -2.375,
                -2.125,
                -1.875,
                -1.625,
                -1.375,
                -1.125,
                -0.875,
                -0.625,
                -0.375,
                -0.125
              ],
              "clip_lo": -4.0,
              "clip_hi": 0.0
            }
          }
        },
        "sideways": {
          "n": 16,
          "max_up_natr": {
            "n": 16,
            "mean": 0.625,
            "median": 0.548,
            "p25": 0.444,
            "p75": 0.953,
            "hist": {
              "bin_edges": [
                0.0,
                0.25,
                0.5,
                0.75,
                1.0,
                1.25,
                1.5,
                1.75,
                2.0,
                2.25,
                2.5,
                2.75,
                3.0,
                3.25,
                3.5,
                3.75,
                4.0
              ],
              "counts": [
                2,
                5,
                3,
                2,
                3,
                1,
                0,
                0,
                0,
                0,
                0,
                0,
                0,
                0,
                0,
                0
              ],
              "bin_centers": [
                0.125,
                0.375,
                0.625,
                0.875,
                1.125,
                1.375,
                1.625,
                1.875,
                2.125,
                2.375,
                2.625,
                2.875,
                3.125,
                3.375,
                3.625,
                3.875
              ],
              "clip_lo": 0.0,
              "clip_hi": 4.0
            }
          },
          "max_down_natr": {
            "n": 16,
            "mean": -1.348,
            "median": -1.336,
            "p25": -2.255,
            "p75": -0.636,
            "hist": {
              "bin_edges": [
                -4.0,
                -3.75,
                -3.5,
                -3.25,
                -3.0,
                -2.75,
                -2.5,
                -2.25,
                -2.0,
                -1.75,
                -1.5,
                -1.25,
                -1.0,
                -0.75,
                -0.5,
                -0.25,
                0.0
              ],
              "counts": [
                0,
                0,
                0,
                0,
                0,
                1,
                3,
                1,
                1,
                1,
                2,
                1,
                1,
                2,
                1,
                2
              ],
              "bin_centers": [
                -3.875,
                -3.625,
                -3.375,
                -3.125,
                -2.875,
                -2.625,
                -2.375,
                -2.125,
                -1.875,
                -1.625,
                -1.375,
                -1.125,
                -0.875,
                -0.625,
                -0.375,
                -0.125
              ],
              "clip_lo": -4.0,
              "clip_hi": 0.0
            }
          }
        },
        "forming": {
          "n": 0,
          "max_up_natr": {
            "n": 0,
            "mean": null,
            "median": null,
            "p25": null,
            "p75": null
          },
          "max_down_natr": {
            "n": 0,
            "mean": null,
            "median": null,
            "p25": null,
            "p75": null
          }
        }
      },
      "max_up_natr_hist": {
        "bin_edges": [
          0.0,
          0.25,
          0.5,
          0.75,
          1.0,
          1.25,
          1.5,
          1.75,
          2.0,
          2.25,
          2.5,
          2.75,
          3.0,
          3.25,
          3.5,
          3.75,
          4.0
        ],
        "counts": [
          51,
          33,
          36,
          33,
          32,
          37,
          40,
          33,
          41,
          29,
          35,
          26,
          17,
          24,
          23,
          215
        ],
        "bin_centers": [
          0.125,
          0.375,
          0.625,
          0.875,
          1.125,
          1.375,
          1.625,
          1.875,
          2.125,
          2.375,
          2.625,
          2.875,
          3.125,
          3.375,
          3.625,
          3.875
        ],
        "clip_lo": 0.0,
        "clip_hi": 4.0
      },
      "max_down_natr_hist": {
        "bin_edges": [
          -4.0,
          -3.75,
          -3.5,
          -3.25,
          -3.0,
          -2.75,
          -2.5,
          -2.25,
          -2.0,
          -1.75,
          -1.5,
          -1.25,
          -1.0,
          -0.75,
          -0.5,
          -0.25,
          0.0
        ],
        "counts": [
          95,
          11,
          23,
          12,
          29,
          30,
          22,
          29,
          31,
          28,
          26,
          23,
          30,
          47,
          94,
          175
        ],
        "bin_centers": [
          -3.875,
          -3.625,
          -3.375,
          -3.125,
          -2.875,
          -2.625,
          -2.375,
          -2.125,
          -1.875,
          -1.625,
          -1.375,
          -1.125,
          -0.875,
          -0.625,
          -0.375,
          -0.125
        ],
        "clip_lo": -4.0,
        "clip_hi": 0.0
      },
      "timestamp_min": 1523232000000,
      "timestamp_max": 1783728000000,
      "timestamp_min_iso": "2018-04-09T00:00:00Z",
      "timestamp_max_iso": "2026-07-11T00:00:00Z"
    },
    {
      "pattern_type": "triple_bottom",
      "pattern_name": "Triple Bottom",
      "timeframe": "15m",
      "bias": "bullish",
      "n": 12,
      "n_symbols": 12,
      "breakout_success_rate": 75.0,
      "breakdown_success_rate": 16.67,
      "sideways_rate": 8.33,
      "forming_rate": 0.0,
      "both_cleared_rate": 58.33,
      "breakout_success_rate_ci95": [
        46.77,
        91.11
      ],
      "breakdown_success_rate_ci95": [
        4.7,
        44.8
      ],
      "sideways_rate_ci95": [
        1.49,
        35.39
      ],
      "forming_rate_ci95": [
        0.0,
        24.25
      ],
      "both_sides_rate": 58.33,
      "expected_hit_rate": 75.0,
      "expected_hit_rate_ci95": [
        46.77,
        91.11
      ],
      "mean_ret_10c": 4.846,
      "median_ret_10c": 0.674,
      "std_ret_10c": 10.395,
      "win_rate_ret_gt0": 58.33,
      "p25_ret_10c": -1.213,
      "p75_ret_10c": 6.439,
      "mean_mfe": 8.191,
      "mean_mae": -1.967,
      "mfe_mae_ratio": 4.164,
      "max_up_natr": {
        "n": 12,
        "mean": 5.5,
        "median": 2.954,
        "p25": 1.385,
        "p75": 5.611
      },
      "max_down_natr": {
        "n": 12,
        "mean": -1.451,
        "median": -1.318,
        "p25": -1.705,
        "p75": -0.484
      },
      "median_max_up_natr": 2.954,
      "median_max_down_natr": -1.318,
      "mean_max_up_natr": 5.5,
      "mean_max_down_natr": -1.451,
      "p25_max_up_natr": 1.385,
      "p75_max_up_natr": 5.611,
      "p25_max_down_natr": -1.705,
      "p75_max_down_natr": -0.484,
      "outcome_natr_moves": {
        "breakout": {
          "n": 9,
          "max_up_natr": {
            "n": 9,
            "mean": 6.953,
            "median": 4.475,
            "p25": 2.176,
            "p75": 6.064
          },
          "max_down_natr": {
            "n": 9,
            "mean": -0.862,
            "median": -0.703,
            "p25": -1.327,
            "p75": -0.397
          }
        },
        "breakdown": {
          "n": 2,
          "max_up_natr": {
            "n": 2,
            "mean": 1.024,
            "median": 1.024,
            "p25": 1.02,
            "p75": 1.027
          },
          "max_down_natr": {
            "n": 2,
            "mean": -3.975,
            "median": -3.975,
            "p25": -4.427,
            "p75": -3.523
          }
        },
        "sideways": {
          "n": 1,
          "max_up_natr": {
            "n": 1,
            "mean": 1.372,
            "median": 1.372,
            "p25": 1.372,
            "p75": 1.372
          },
          "max_down_natr": {
            "n": 1,
            "mean": -1.695,
            "median": -1.695,
            "p25": -1.695,
            "p75": -1.695
          }
        },
        "forming": {
          "n": 0,
          "max_up_natr": {
            "n": 0,
            "mean": null,
            "median": null,
            "p25": null,
            "p75": null
          },
          "max_down_natr": {
            "n": 0,
            "mean": null,
            "median": null,
            "p25": null,
            "p75": null
          }
        }
      },
      "max_up_natr_hist": null,
      "max_down_natr_hist": null,
      "timestamp_min": 1776708900000,
      "timestamp_max": 1783551600000,
      "timestamp_min_iso": "2026-04-20T18:15:00Z",
      "timestamp_max_iso": "2026-07-08T23:00:00Z"
    },
    {
      "pattern_type": "cup_and_handle",
      "pattern_name": "Cup & Handle",
      "timeframe": "15m",
      "bias": "bullish",
      "n": 4,
      "n_symbols": 4,
      "breakout_success_rate": 75.0,
      "breakdown_success_rate": 25.0,
      "sideways_rate": 0.0,
      "forming_rate": 0.0,
      "both_cleared_rate": 25.0,
      "breakout_success_rate_ci95": [
        30.06,
        95.44
      ],
      "breakdown_success_rate_ci95": [
        4.56,
        69.94
      ],
      "sideways_rate_ci95": [
        0.0,
        48.99
      ],
      "forming_rate_ci95": [
        0.0,
        48.99
      ],
      "both_sides_rate": 25.0,
      "expected_hit_rate": 75.0,
      "expected_hit_rate_ci95": [
        30.06,
        95.44
      ],
      "mean_ret_10c": 1.26,
      "median_ret_10c": 1.935,
      "std_ret_10c": 1.699,
      "win_rate_ret_gt0": 75.0,
      "p25_ret_10c": 0.979,
      "p75_ret_10c": 2.215,
      "mean_mfe": 3.877,
      "mean_mae": -1.167,
      "mfe_mae_ratio": 3.322,
      "max_up_natr": {
        "n": 4,
        "mean": 3.478,
        "median": 3.883,
        "p25": 2.362,
        "p75": 4.999
      },
      "max_down_natr": {
        "n": 4,
        "mean": -0.974,
        "median": -0.942,
        "p25": -1.689,
        "p75": -0.227
      },
      "median_max_up_natr": 3.883,
      "median_max_down_natr": -0.942,
      "mean_max_up_natr": 3.478,
      "mean_max_down_natr": -0.974,
      "p25_max_up_natr": 2.362,
      "p75_max_up_natr": 4.999,
      "p25_max_down_natr": -1.689,
      "p75_max_down_natr": -0.227,
      "outcome_natr_moves": {
        "breakout": {
          "n": 3,
          "max_up_natr": {
            "n": 3,
            "mean": 4.601,
            "median": 4.654,
            "p25": 3.883,
            "p75": 5.345
          },
          "max_down_natr": {
            "n": 3,
            "mean": -0.656,
            "median": -0.275,
            "p25": -0.942,
            "p75": -0.179
          }
        },
        "breakdown": {
          "n": 1,
          "max_up_natr": {
            "n": 1,
            "mean": 0.109,
            "median": 0.109,
            "p25": 0.109,
            "p75": 0.109
          },
          "max_down_natr": {
            "n": 1,
            "mean": -1.928,
            "median": -1.928,
            "p25": -1.928,
            "p75": -1.928
          }
        },
        "sideways": {
          "n": 0,
          "max_up_natr": {
            "n": 0,
            "mean": null,
            "median": null,
            "p25": null,
            "p75": null
          },
          "max_down_natr": {
            "n": 0,
            "mean": null,
            "median": null,
            "p25": null,
            "p75": null
          }
        },
        "forming": {
          "n": 0,
          "max_up_natr": {
            "n": 0,
            "mean": null,
            "median": null,
            "p25": null,
            "p75": null
          },
          "max_down_natr": {
            "n": 0,
            "mean": null,
            "median": null,
            "p25": null,
            "p75": null
          }
        }
      },
      "max_up_natr_hist": null,
      "max_down_natr_hist": null,
      "timestamp_min": 1776697200000,
      "timestamp_max": 1782350100000,
      "timestamp_min_iso": "2026-04-20T15:00:00Z",
      "timestamp_max_iso": "2026-06-25T01:15:00Z"
    },
    {
      "pattern_type": "head_and_shoulders",
      "pattern_name": "Head & Shoulders",
      "timeframe": "4h",
      "bias": "bearish",
      "n": 2068,
      "n_symbols": 530,
      "breakout_success_rate": 24.13,
      "breakdown_success_rate": 74.18,
      "sideways_rate": 1.69,
      "forming_rate": 0.0,
      "both_cleared_rate": 39.07,
      "breakout_success_rate_ci95": [
        22.33,
        26.02
      ],
      "breakdown_success_rate_ci95": [
        72.25,
        76.02
      ],
      "sideways_rate_ci95": [
        1.22,
        2.34
      ],
      "forming_rate_ci95": [
        0.0,
        0.19
      ],
      "both_sides_rate": 39.07,
      "expected_hit_rate": 74.18,
      "expected_hit_rate_ci95": [
        72.25,
        76.02
      ],
      "mean_ret_10c": -0.109,
      "median_ret_10c": -0.791,
      "std_ret_10c": 22.868,
      "win_rate_ret_gt0": 44.92,
      "p25_ret_10c": -6.19,
      "p75_ret_10c": 3.909,
      "mean_mfe": 9.169,
      "mean_mae": -9.268,
      "mfe_mae_ratio": 0.989,
      "max_up_natr": {
        "n": 2068,
        "mean": 2.468,
        "median": 1.488,
        "p25": 0.615,
        "p75": 2.798,
        "hist": {
          "bin_edges": [
            0.0,
            0.25,
            0.5,
            0.75,
            1.0,
            1.25,
            1.5,
            1.75,
            2.0,
            2.25,
            2.5,
            2.75,
            3.0,
            3.25,
            3.5,
            3.75,
            4.0
          ],
          "counts": [
            200,
            217,
            201,
            134,
            145,
            144,
            129,
            104,
            92,
            94,
            74,
            74,
            52,
            28,
            40,
            340
          ],
          "bin_centers": [
            0.125,
            0.375,
            0.625,
            0.875,
            1.125,
            1.375,
            1.625,
            1.875,
            2.125,
            2.375,
            2.625,
            2.875,
            3.125,
            3.375,
            3.625,
            3.875
          ],
          "clip_lo": 0.0,
          "clip_hi": 4.0
        }
      },
      "max_down_natr": {
        "n": 2068,
        "mean": -2.692,
        "median": -1.838,
        "p25": -3.303,
        "p75": -0.933,
        "hist": {
          "bin_edges": [
            -4.0,
            -3.75,
            -3.5,
            -3.25,
            -3.0,
            -2.75,
            -2.5,
            -2.25,
            -2.0,
            -1.75,
            -1.5,
            -1.25,
            -1.0,
            -0.75,
            -0.5,
            -0.25,
            0.0
          ],
          "counts": [
            419,
            51,
            63,
            60,
            67,
            73,
            113,
            115,
            116,
            135,
            151,
            154,
            153,
            138,
            126,
            134
          ],
          "bin_centers": [
            -3.875,
            -3.625,
            -3.375,
            -3.125,
            -2.875,
            -2.625,
            -2.375,
            -2.125,
            -1.875,
            -1.625,
            -1.375,
            -1.125,
            -0.875,
            -0.625,
            -0.375,
            -0.125
          ],
          "clip_lo": -4.0,
          "clip_hi": 0.0
        }
      },
      "median_max_up_natr": 1.488,
      "median_max_down_natr": -1.838,
      "mean_max_up_natr": 2.468,
      "mean_max_down_natr": -2.692,
      "p25_max_up_natr": 0.615,
      "p75_max_up_natr": 2.798,
      "p25_max_down_natr": -3.303,
      "p75_max_down_natr": -0.933,
      "outcome_natr_moves": {
        "breakout": {
          "n": 499,
          "max_up_natr": {
            "n": 499,
            "mean": 3.62,
            "median": 2.612,
            "p25": 1.761,
            "p75": 4.06,
            "hist": {
              "bin_edges": [
                0.0,
                0.25,
                0.5,
                0.75,
                1.0,
                1.25,
                1.5,
                1.75,
                2.0,
                2.25,
                2.5,
                2.75,
                3.0,
                3.25,
                3.5,
                3.75,
                4.0
              ],
              "counts": [
                0,
                0,
                0,
                0,
                26,
                41,
                53,
                48,
                35,
                35,
                35,
                34,
                23,
                9,
                18,
                142
              ],
              "bin_centers": [
                0.125,
                0.375,
                0.625,
                0.875,
                1.125,
                1.375,
                1.625,
                1.875,
                2.125,
                2.375,
                2.625,
                2.875,
                3.125,
                3.375,
                3.625,
                3.875
              ],
              "clip_lo": 0.0,
              "clip_hi": 4.0
            }
          },
          "max_down_natr": {
            "n": 499,
            "mean": -1.658,
            "median": -0.715,
            "p25": -1.697,
            "p75": -0.326,
            "hist": {
              "bin_edges": [
                -4.0,
                -3.75,
                -3.5,
                -3.25,
                -3.0,
                -2.75,
                -2.5,
                -2.25,
                -2.0,
                -1.75,
                -1.5,
                -1.25,
                -1.0,
                -0.75,
                -0.5,
                -0.25,
                0.0
              ],
              "counts": [
                39,
                5,
                8,
                8,
                6,
                12,
                22,
                11,
                11,
                19,
                21,
                22,
                56,
                68,
                90,
                101
              ],
              "bin_centers": [
                -3.875,
                -3.625,
                -3.375,
                -3.125,
                -2.875,
                -2.625,
                -2.375,
                -2.125,
                -1.875,
                -1.625,
                -1.375,
                -1.125,
                -0.875,
                -0.625,
                -0.375,
                -0.125
              ],
              "clip_lo": -4.0,
              "clip_hi": 0.0
            }
          }
        },
        "breakdown": {
          "n": 1534,
          "max_up_natr": {
            "n": 1534,
            "mean": 2.13,
            "median": 1.071,
            "p25": 0.462,
            "p75": 2.371,
            "hist": {
              "bin_edges": [
                0.0,
                0.25,
                0.5,
                0.75,
                1.0,
                1.25,
                1.5,
                1.75,
                2.0,
                2.25,
                2.5,
                2.75,
                3.0,
                3.25,
                3.5,
                3.75,
                4.0
              ],
              "counts": [
                200,
                213,
                192,
                122,
                112,
                100,
                76,
                56,
                57,
                59,
                39,
                40,
                29,
                19,
                22,
                198
              ],
              "bin_centers": [
                0.125,
                0.375,
                0.625,
                0.875,
                1.125,
                1.375,
                1.625,
                1.875,
                2.125,
                2.375,
                2.625,
                2.875,
                3.125,
                3.375,
                3.625,
                3.875
              ],
              "clip_lo": 0.0,
              "clip_hi": 4.0
            }
          },
          "max_down_natr": {
            "n": 1534,
            "mean": -3.075,
            "median": -2.196,
            "p25": -3.742,
            "p75": -1.341,
            "hist": {
              "bin_edges": [
                -4.0,
                -3.75,
                -3.5,
                -3.25,
                -3.0,
                -2.75,
                -2.5,
                -2.25,
                -2.0,
                -1.75,
                -1.5,
                -1.25,
                -1.0,
                -0.75,
                -0.5,
                -0.25,
                0.0
              ],
              "counts": [
                380,
                46,
                55,
                52,
                61,
                61,
                91,
                104,
                105,
                116,
                130,
                132,
                85,
                53,
                33,
                30
              ],
              "bin_centers": [
                -3.875,
                -3.625,
                -3.375,
                -3.125,
                -2.875,
                -2.625,
                -2.375,
                -2.125,
                -1.875,
                -1.625,
                -1.375,
                -1.125,
                -0.875,
                -0.625,
                -0.375,
                -0.125
              ],
              "clip_lo": -4.0,
              "clip_hi": 0.0
            }
          }
        },
        "sideways": {
          "n": 35,
          "max_up_natr": {
            "n": 35,
            "mean": 0.848,
            "median": 0.816,
            "p25": 0.669,
            "p75": 1.034,
            "hist": {
              "bin_edges": [
                0.0,
                0.25,
                0.5,
                0.75,
                1.0,
                1.25,
                1.5,
                1.75,
                2.0,
                2.25,
                2.5,
                2.75,
                3.0,
                3.25,
                3.5,
                3.75,
                4.0
              ],
              "counts": [
                0,
                4,
                9,
                12,
                7,
                3,
                0,
                0,
                0,
                0,
                0,
                0,
                0,
                0,
                0,
                0
              ],
              "bin_centers": [
                0.125,
                0.375,
                0.625,
                0.875,
                1.125,
                1.375,
                1.625,
                1.875,
                2.125,
                2.375,
                2.625,
                2.875,
                3.125,
                3.375,
                3.625,
                3.875
              ],
              "clip_lo": 0.0,
              "clip_hi": 4.0
            }
          },
          "max_down_natr": {
            "n": 35,
            "mean": -0.635,
            "median": -0.647,
            "p25": -0.833,
            "p75": -0.555,
            "hist": {
              "bin_edges": [
                -4.0,
                -3.75,
                -3.5,
                -3.25,
                -3.0,
                -2.75,
                -2.5,
                -2.25,
                -2.0,
                -1.75,
                -1.5,
                -1.25,
                -1.0,
                -0.75,
                -0.5,
                -0.25,
                0.0
              ],
              "counts": [
                0,
                0,
                0,
                0,
                0,
                0,
                0,
                0,
                0,
                0,
                0,
                0,
                12,
                17,
                3,
                3
              ],
              "bin_centers": [
                -3.875,
                -3.625,
                -3.375,
                -3.125,
                -2.875,
                -2.625,
                -2.375,
                -2.125,
                -1.875,
                -1.625,
                -1.375,
                -1.125,
                -0.875,
                -0.625,
                -0.375,
                -0.125
              ],
              "clip_lo": -4.0,
              "clip_hi": 0.0
            }
          }
        },
        "forming": {
          "n": 0,
          "max_up_natr": {
            "n": 0,
            "mean": null,
            "median": null,
            "p25": null,
            "p75": null
          },
          "max_down_natr": {
            "n": 0,
            "mean": null,
            "median": null,
            "p25": null,
            "p75": null
          }
        }
      },
      "max_up_natr_hist": {
        "bin_edges": [
          0.0,
          0.25,
          0.5,
          0.75,
          1.0,
          1.25,
          1.5,
          1.75,
          2.0,
          2.25,
          2.5,
          2.75,
          3.0,
          3.25,
          3.5,
          3.75,
          4.0
        ],
        "counts": [
          200,
          217,
          201,
          134,
          145,
          144,
          129,
          104,
          92,
          94,
          74,
          74,
          52,
          28,
          40,
          340
        ],
        "bin_centers": [
          0.125,
          0.375,
          0.625,
          0.875,
          1.125,
          1.375,
          1.625,
          1.875,
          2.125,
          2.375,
          2.625,
          2.875,
          3.125,
          3.375,
          3.625,
          3.875
        ],
        "clip_lo": 0.0,
        "clip_hi": 4.0
      },
      "max_down_natr_hist": {
        "bin_edges": [
          -4.0,
          -3.75,
          -3.5,
          -3.25,
          -3.0,
          -2.75,
          -2.5,
          -2.25,
          -2.0,
          -1.75,
          -1.5,
          -1.25,
          -1.0,
          -0.75,
          -0.5,
          -0.25,
          0.0
        ],
        "counts": [
          419,
          51,
          63,
          60,
          67,
          73,
          113,
          115,
          116,
          135,
          151,
          154,
          153,
          138,
          126,
          134
        ],
        "bin_centers": [
          -3.875,
          -3.625,
          -3.375,
          -3.125,
          -2.875,
          -2.625,
          -2.375,
          -2.125,
          -1.875,
          -1.625,
          -1.375,
          -1.125,
          -0.875,
          -0.625,
          -0.375,
          -0.125
        ],
        "clip_lo": -4.0,
        "clip_hi": 0.0
      },
      "timestamp_min": 1512489600000,
      "timestamp_max": 1785182400000,
      "timestamp_min_iso": "2017-12-05T16:00:00Z",
      "timestamp_max_iso": "2026-07-27T20:00:00Z"
    },
    {
      "pattern_type": "channel_ascending",
      "pattern_name": "Ascending Channel",
      "timeframe": "15m",
      "bias": "bearish",
      "n": 540,
      "n_symbols": 326,
      "breakout_success_rate": 23.33,
      "breakdown_success_rate": 74.07,
      "sideways_rate": 2.6,
      "forming_rate": 0.0,
      "both_cleared_rate": 44.81,
      "breakout_success_rate_ci95": [
        19.96,
        27.08
      ],
      "breakdown_success_rate_ci95": [
        70.22,
        77.59
      ],
      "sideways_rate_ci95": [
        1.55,
        4.3
      ],
      "forming_rate_ci95": [
        0.0,
        0.71
      ],
      "both_sides_rate": 44.81,
      "expected_hit_rate": 74.07,
      "expected_hit_rate_ci95": [
        70.22,
        77.59
      ],
      "mean_ret_10c": -0.32,
      "median_ret_10c": -0.435,
      "std_ret_10c": 3.417,
      "win_rate_ret_gt0": 37.41,
      "p25_ret_10c": -1.472,
      "p75_ret_10c": 0.672,
      "mean_mfe": 1.944,
      "mean_mae": -2.278,
      "mfe_mae_ratio": 0.853,
      "max_up_natr": {
        "n": 540,
        "mean": 2.646,
        "median": 1.457,
        "p25": 0.413,
        "p75": 3.405,
        "hist": {
          "bin_edges": [
            0.0,
            0.25,
            0.5,
            0.75,
            1.0,
            1.25,
            1.5,
            1.75,
            2.0,
            2.25,
            2.5,
            2.75,
            3.0,
            3.25,
            3.5,
            3.75,
            4.0
          ],
          "counts": [
            92,
            56,
            40,
            29,
            26,
            30,
            12,
            17,
            30,
            14,
            20,
            16,
            16,
            12,
            14,
            116
          ],
          "bin_centers": [
            0.125,
            0.375,
            0.625,
            0.875,
            1.125,
            1.375,
            1.625,
            1.875,
            2.125,
            2.375,
            2.625,
            2.875,
            3.125,
            3.375,
            3.625,
            3.875
          ],
          "clip_lo": 0.0,
          "clip_hi": 4.0
        }
      },
      "max_down_natr": {
        "n": 540,
        "mean": -3.103,
        "median": -2.468,
        "p25": -3.973,
        "p75": -1.455,
        "hist": {
          "bin_edges": [
            -4.0,
            -3.75,
            -3.5,
            -3.25,
            -3.0,
            -2.75,
            -2.5,
            -2.25,
            -2.0,
            -1.75,
            -1.5,
            -1.25,
            -1.0,
            -0.75,
            -0.5,
            -0.25,
            0.0
          ],
          "counts": [
            149,
            19,
            16,
            32,
            17,
            33,
            30,
            32,
            38,
            34,
            30,
            28,
            19,
            12,
            24,
            27
          ],
          "bin_centers": [
            -3.875,
            -3.625,
            -3.375,
            -3.125,
            -2.875,
            -2.625,
            -2.375,
            -2.125,
            -1.875,
            -1.625,
            -1.375,
            -1.125,
            -0.875,
            -0.625,
            -0.375,
            -0.125
          ],
          "clip_lo": -4.0,
          "clip_hi": 0.0
        }
      },
      "median_max_up_natr": 1.457,
      "median_max_down_natr": -2.468,
      "mean_max_up_natr": 2.646,
      "mean_max_down_natr": -3.103,
      "p25_max_up_natr": 0.413,
      "p75_max_up_natr": 3.405,
      "p25_max_down_natr": -3.973,
      "p75_max_down_natr": -1.455,
      "outcome_natr_moves": {
        "breakout": {
          "n": 126,
          "max_up_natr": {
            "n": 126,
            "mean": 6.204,
            "median": 4.546,
            "p25": 3.014,
            "p75": 7.613,
            "hist": {
              "bin_edges": [
                0.0,
                0.25,
                0.5,
                0.75,
                1.0,
                1.25,
                1.5,
                1.75,
                2.0,
                2.25,
                2.5,
                2.75,
                3.0,
                3.25,
                3.5,
                3.75,
                4.0
              ],
              "counts": [
                0,
                0,
                0,
                0,
                3,
                5,
                2,
                1,
                8,
                2,
                5,
                5,
                8,
                5,
                5,
                77
              ],
              "bin_centers": [
                0.125,
                0.375,
                0.625,
                0.875,
                1.125,
                1.375,
                1.625,
                1.875,
                2.125,
                2.375,
                2.625,
                2.875,
                3.125,
                3.375,
                3.625,
                3.875
              ],
              "clip_lo": 0.0,
              "clip_hi": 4.0
            }
          },
          "max_down_natr": {
            "n": 126,
            "mean": -2.23,
            "median": -1.228,
            "p25": -3.14,
            "p75": -0.33,
            "hist": {
              "bin_edges": [
                -4.0,
                -3.75,
                -3.5,
                -3.25,
                -3.0,
                -2.75,
                -2.5,
                -2.25,
                -2.0,
                -1.75,
                -1.5,
                -1.25,
                -1.0,
                -0.75,
                -0.5,
                -0.25,
                0.0
              ],
              "counts": [
                25,
                4,
                2,
                2,
                3,
                7,
                2,
                5,
                4,
                3,
                5,
                7,
                7,
                7,
                16,
                27
              ],
              "bin_centers": [
                -3.875,
                -3.625,
                -3.375,
                -3.125,
                -2.875,
                -2.625,
                -2.375,
                -2.125,
                -1.875,
                -1.625,
                -1.375,
                -1.125,
                -0.875,
                -0.625,
                -0.375,
                -0.125
              ],
              "clip_lo": -4.0,
              "clip_hi": 0.0
            }
          }
        },
        "breakdown": {
          "n": 400,
          "max_up_natr": {
            "n": 400,
            "mean": 1.542,
            "median": 0.895,
            "p25": 0.283,
            "p75": 2.201,
            "hist": {
              "bin_edges": [
                0.0,
                0.25,
                0.5,
                0.75,
                1.0,
                1.25,
                1.5,
                1.75,
                2.0,
                2.25,
                2.5,
                2.75,
                3.0,
                3.25,
                3.5,
                3.75,
                4.0
              ],
              "counts": [
                92,
                55,
                39,
                29,
                23,
                22,
                8,
                15,
                21,
                11,
                14,
                10,
                8,
                7,
                9,
                37
              ],
              "bin_centers": [
                0.125,
                0.375,
                0.625,
                0.875,
                1.125,
                1.375,
                1.625,
                1.875,
                2.125,
                2.375,
                2.625,
                2.875,
                3.125,
                3.375,
                3.625,
                3.875
              ],
              "clip_lo": 0.0,
              "clip_hi": 4.0
            }
          },
          "max_down_natr": {
            "n": 400,
            "mean": -3.457,
            "median": -2.7,
            "p25": -4.213,
            "p75": -1.803,
            "hist": {
              "bin_edges": [
                -4.0,
                -3.75,
                -3.5,
                -3.25,
                -3.0,
                -2.75,
                -2.5,
                -2.25,
                -2.0,
                -1.75,
                -1.5,
                -1.25,
                -1.0,
                -0.75,
                -0.5,
                -0.25,
                0.0
              ],
              "counts": [
                124,
                14,
                14,
                30,
                14,
                26,
                28,
                27,
                34,
                31,
                24,
                20,
                10,
                4,
                0,
                0
              ],
              "bin_centers": [
                -3.875,
                -3.625,
                -3.375,
                -3.125,
                -2.875,
                -2.625,
                -2.375,
                -2.125,
                -1.875,
                -1.625,
                -1.375,
                -1.125,
                -0.875,
                -0.625,
                -0.375,
                -0.125
              ],
              "clip_lo": -4.0,
              "clip_hi": 0.0
            }
          }
        },
        "sideways": {
          "n": 14,
          "max_up_natr": {
            "n": 14,
            "mean": 2.174,
            "median": 1.824,
            "p25": 1.297,
            "p75": 2.565
          },
          "max_down_natr": {
            "n": 14,
            "mean": -0.865,
            "median": -0.48,
            "p25": -0.953,
            "p75": -0.438
          }
        },
        "forming": {
          "n": 0,
          "max_up_natr": {
            "n": 0,
            "mean": null,
            "median": null,
            "p25": null,
            "p75": null
          },
          "max_down_natr": {
            "n": 0,
            "mean": null,
            "median": null,
            "p25": null,
            "p75": null
          }
        }
      },
      "max_up_natr_hist": {
        "bin_edges": [
          0.0,
          0.25,
          0.5,
          0.75,
          1.0,
          1.25,
          1.5,
          1.75,
          2.0,
          2.25,
          2.5,
          2.75,
          3.0,
          3.25,
          3.5,
          3.75,
          4.0
        ],
        "counts": [
          92,
          56,
          40,
          29,
          26,
          30,
          12,
          17,
          30,
          14,
          20,
          16,
          16,
          12,
          14,
          116
        ],
        "bin_centers": [
          0.125,
          0.375,
          0.625,
          0.875,
          1.125,
          1.375,
          1.625,
          1.875,
          2.125,
          2.375,
          2.625,
          2.875,
          3.125,
          3.375,
          3.625,
          3.875
        ],
        "clip_lo": 0.0,
        "clip_hi": 4.0
      },
      "max_down_natr_hist": {
        "bin_edges": [
          -4.0,
          -3.75,
          -3.5,
          -3.25,
          -3.0,
          -2.75,
          -2.5,
          -2.25,
          -2.0,
          -1.75,
          -1.5,
          -1.25,
          -1.0,
          -0.75,
          -0.5,
          -0.25,
          0.0
        ],
        "counts": [
          149,
          19,
          16,
          32,
          17,
          33,
          30,
          32,
          38,
          34,
          30,
          28,
          19,
          12,
          24,
          27
        ],
        "bin_centers": [
          -3.875,
          -3.625,
          -3.375,
          -3.125,
          -2.875,
          -2.625,
          -2.375,
          -2.125,
          -1.875,
          -1.625,
          -1.375,
          -1.125,
          -0.875,
          -0.625,
          -0.375,
          -0.125
        ],
        "clip_lo": -4.0,
        "clip_hi": 0.0
      },
      "timestamp_min": 1600440300000,
      "timestamp_max": 1785520800000,
      "timestamp_min_iso": "2020-09-18T14:45:00Z",
      "timestamp_max_iso": "2026-07-31T18:00:00Z"
    },
    {
      "pattern_type": "head_and_shoulders",
      "pattern_name": "Head & Shoulders",
      "timeframe": "1h",
      "bias": "bearish",
      "n": 7489,
      "n_symbols": 649,
      "breakout_success_rate": 25.16,
      "breakdown_success_rate": 74.04,
      "sideways_rate": 0.8,
      "forming_rate": 0.0,
      "both_cleared_rate": 43.0,
      "breakout_success_rate_ci95": [
        24.19,
        26.15
      ],
      "breakdown_success_rate_ci95": [
        73.04,
        75.02
      ],
      "sideways_rate_ci95": [
        0.62,
        1.03
      ],
      "forming_rate_ci95": [
        0.0,
        0.05
      ],
      "both_sides_rate": 43.0,
      "expected_hit_rate": 74.04,
      "expected_hit_rate_ci95": [
        73.04,
        75.02
      ],
      "mean_ret_10c": 0.015,
      "median_ret_10c": -0.103,
      "std_ret_10c": 5.526,
      "win_rate_ret_gt0": 48.71,
      "p25_ret_10c": -2.738,
      "p75_ret_10c": 2.496,
      "mean_mfe": 4.094,
      "mean_mae": -4.205,
      "mfe_mae_ratio": 0.974,
      "max_up_natr": {
        "n": 7489,
        "mean": 2.416,
        "median": 1.699,
        "p25": 0.786,
        "p75": 3.185,
        "hist": {
          "bin_edges": [
            0.0,
            0.25,
            0.5,
            0.75,
            1.0,
            1.25,
            1.5,
            1.75,
            2.0,
            2.25,
            2.5,
            2.75,
            3.0,
            3.25,
            3.5,
            3.75,
            4.0
          ],
          "counts": [
            585,
            597,
            601,
            554,
            524,
            536,
            450,
            401,
            344,
            325,
            244,
            279,
            240,
            172,
            190,
            1447
          ],
          "bin_centers": [
            0.125,
            0.375,
            0.625,
            0.875,
            1.125,
            1.375,
            1.625,
            1.875,
            2.125,
            2.375,
            2.625,
            2.875,
            3.125,
            3.375,
            3.625,
            3.875
          ],
          "clip_lo": 0.0,
          "clip_hi": 4.0
        }
      },
      "max_down_natr": {
        "n": 7489,
        "mean": -2.576,
        "median": -1.892,
        "p25": -3.26,
        "p75": -0.933,
        "hist": {
          "bin_edges": [
            -4.0,
            -3.75,
            -3.5,
            -3.25,
            -3.0,
            -2.75,
            -2.5,
            -2.25,
            -2.0,
            -1.75,
            -1.5,
            -1.25,
            -1.0,
            -0.75,
            -0.5,
            -0.25,
            0.0
          ],
          "counts": [
            1490,
            156,
            238,
            279,
            287,
            317,
            375,
            415,
            436,
            473,
            499,
            524,
            482,
            510,
            495,
            513
          ],
          "bin_centers": [
            -3.875,
            -3.625,
            -3.375,
            -3.125,
            -2.875,
            -2.625,
            -2.375,
            -2.125,
            -1.875,
            -1.625,
            -1.375,
            -1.125,
            -0.875,
            -0.625,
            -0.375,
            -0.125
          ],
          "clip_lo": -4.0,
          "clip_hi": 0.0
        }
      },
      "median_max_up_natr": 1.699,
      "median_max_down_natr": -1.892,
      "mean_max_up_natr": 2.416,
      "mean_max_down_natr": -2.576,
      "p25_max_up_natr": 0.786,
      "p75_max_up_natr": 3.185,
      "p25_max_down_natr": -3.26,
      "p75_max_down_natr": -0.933,
      "outcome_natr_moves": {
        "breakout": {
          "n": 1884,
          "max_up_natr": {
            "n": 1884,
            "mean": 3.493,
            "median": 2.773,
            "p25": 1.85,
            "p75": 4.189,
            "hist": {
              "bin_edges": [
                0.0,
                0.25,
                0.5,
                0.75,
                1.0,
                1.25,
                1.5,
                1.75,
                2.0,
                2.25,
                2.5,
                2.75,
                3.0,
                3.25,
                3.5,
                3.75,
                4.0
              ],
              "counts": [
                0,
                0,
                0,
                0,
                69,
                160,
                168,
                158,
                137,
                123,
                115,
                113,
                96,
                72,
                91,
                582
              ],
              "bin_centers": [
                0.125,
                0.375,
                0.625,
                0.875,
                1.125,
                1.375,
                1.625,
                1.875,
                2.125,
                2.375,
                2.625,
                2.875,
                3.125,
                3.375,
                3.625,
                3.875
              ],
              "clip_lo": 0.0,
              "clip_hi": 4.0
            }
          },
          "max_down_natr": {
            "n": 1884,
            "mean": -1.343,
            "median": -0.649,
            "p25": -1.583,
            "p75": -0.301,
            "hist": {
              "bin_edges": [
                -4.0,
                -3.75,
                -3.5,
                -3.25,
                -3.0,
                -2.75,
                -2.5,
                -2.25,
                -2.0,
                -1.75,
                -1.5,
                -1.25,
                -1.0,
                -0.75,
                -0.5,
                -0.25,
                0.0
              ],
              "counts": [
                158,
                18,
                20,
                21,
                25,
                28,
                43,
                46,
                64,
                73,
                95,
                108,
                147,
                291,
                346,
                401
              ],
              "bin_centers": [
                -3.875,
                -3.625,
                -3.375,
                -3.125,
                -2.875,
                -2.625,
                -2.375,
                -2.125,
                -1.875,
                -1.625,
                -1.375,
                -1.125,
                -0.875,
                -0.625,
                -0.375,
                -0.125
              ],
              "clip_lo": -4.0,
              "clip_hi": 0.0
            }
          }
        },
        "breakdown": {
          "n": 5545,
          "max_up_natr": {
            "n": 5545,
            "mean": 2.067,
            "median": 1.272,
            "p25": 0.598,
            "p75": 2.727,
            "hist": {
              "bin_edges": [
                0.0,
                0.25,
                0.5,
                0.75,
                1.0,
                1.25,
                1.5,
                1.75,
                2.0,
                2.25,
                2.5,
                2.75,
                3.0,
                3.25,
                3.5,
                3.75,
                4.0
              ],
              "counts": [
                580,
                591,
                594,
                532,
                442,
                369,
                282,
                243,
                207,
                202,
                129,
                166,
                144,
                100,
                99,
                865
              ],
              "bin_centers": [
                0.125,
                0.375,
                0.625,
                0.875,
                1.125,
                1.375,
                1.625,
                1.875,
                2.125,
                2.375,
                2.625,
                2.875,
                3.125,
                3.375,
                3.625,
                3.875
              ],
              "clip_lo": 0.0,
              "clip_hi": 4.0
            }
          },
          "max_down_natr": {
            "n": 5545,
            "mean": -3.016,
            "median": -2.289,
            "p25": -3.646,
            "p75": -1.378,
            "hist": {
              "bin_edges": [
                -4.0,
                -3.75,
                -3.5,
                -3.25,
                -3.0,
                -2.75,
                -2.5,
                -2.25,
                -2.0,
                -1.75,
                -1.5,
                -1.25,
                -1.0,
                -0.75,
                -0.5,
                -0.25,
                0.0
              ],
              "counts": [
                1332,
                138,
                218,
                258,
                262,
                289,
                332,
                369,
                372,
                400,
                404,
                416,
                317,
                198,
                134,
                106
              ],
              "bin_centers": [
                -3.875,
                -3.625,
                -3.375,
                -3.125,
                -2.875,
                -2.625,
                -2.375,
                -2.125,
                -1.875,
                -1.625,
                -1.375,
                -1.125,
                -0.875,
                -0.625,
                -0.375,
                -0.125
              ],
              "clip_lo": -4.0,
              "clip_hi": 0.0
            }
          }
        },
        "sideways": {
          "n": 60,
          "max_up_natr": {
            "n": 60,
            "mean": 0.844,
            "median": 0.912,
            "p25": 0.697,
            "p75": 1.048,
            "hist": {
              "bin_edges": [
                0.0,
                0.25,
                0.5,
                0.75,
                1.0,
                1.25,
                1.5,
                1.75,
                2.0,
                2.25,
                2.5,
                2.75,
                3.0,
                3.25,
                3.5,
                3.75,
                4.0
              ],
              "counts": [
                5,
                6,
                7,
                22,
                13,
                7,
                0,
                0,
                0,
                0,
                0,
                0,
                0,
                0,
                0,
                0
              ],
              "bin_centers": [
                0.125,
                0.375,
                0.625,
                0.875,
                1.125,
                1.375,
                1.625,
                1.875,
                2.125,
                2.375,
                2.625,
                2.875,
                3.125,
                3.375,
                3.625,
                3.875
              ],
              "clip_lo": 0.0,
              "clip_hi": 4.0
            }
          },
          "max_down_natr": {
            "n": 60,
            "mean": -0.595,
            "median": -0.627,
            "p25": -0.802,
            "p75": -0.453,
            "hist": {
              "bin_edges": [
                -4.0,
                -3.75,
                -3.5,
                -3.25,
                -3.0,
                -2.75,
                -2.5,
                -2.25,
                -2.0,
                -1.75,
                -1.5,
                -1.25,
                -1.0,
                -0.75,
                -0.5,
                -0.25,
                0.0
              ],
              "counts": [
                0,
                0,
                0,
                0,
                0,
                0,
                0,
                0,
                0,
                0,
                0,
                0,
                18,
                21,
                15,
                6
              ],
              "bin_centers": [
                -3.875,
                -3.625,
                -3.375,
                -3.125,
                -2.875,
                -2.625,
                -2.375,
                -2.125,
                -1.875,
                -1.625,
                -1.375,
                -1.125,
                -0.875,
                -0.625,
                -0.375,
                -0.125
              ],
              "clip_lo": -4.0,
              "clip_hi": 0.0
            }
          }
        },
        "forming": {
          "n": 0,
          "max_up_natr": {
            "n": 0,
            "mean": null,
            "median": null,
            "p25": null,
            "p75": null
          },
          "max_down_natr": {
            "n": 0,
            "mean": null,
            "median": null,
            "p25": null,
            "p75": null
          }
        }
      },
      "max_up_natr_hist": {
        "bin_edges": [
          0.0,
          0.25,
          0.5,
          0.75,
          1.0,
          1.25,
          1.5,
          1.75,
          2.0,
          2.25,
          2.5,
          2.75,
          3.0,
          3.25,
          3.5,
          3.75,
          4.0
        ],
        "counts": [
          585,
          597,
          601,
          554,
          524,
          536,
          450,
          401,
          344,
          325,
          244,
          279,
          240,
          172,
          190,
          1447
        ],
        "bin_centers": [
          0.125,
          0.375,
          0.625,
          0.875,
          1.125,
          1.375,
          1.625,
          1.875,
          2.125,
          2.375,
          2.625,
          2.875,
          3.125,
          3.375,
          3.625,
          3.875
        ],
        "clip_lo": 0.0,
        "clip_hi": 4.0
      },
      "max_down_natr_hist": {
        "bin_edges": [
          -4.0,
          -3.75,
          -3.5,
          -3.25,
          -3.0,
          -2.75,
          -2.5,
          -2.25,
          -2.0,
          -1.75,
          -1.5,
          -1.25,
          -1.0,
          -0.75,
          -0.5,
          -0.25,
          0.0
        ],
        "counts": [
          1490,
          156,
          238,
          279,
          287,
          317,
          375,
          415,
          436,
          473,
          499,
          524,
          482,
          510,
          495,
          513
        ],
        "bin_centers": [
          -3.875,
          -3.625,
          -3.375,
          -3.125,
          -2.875,
          -2.625,
          -2.375,
          -2.125,
          -1.875,
          -1.625,
          -1.375,
          -1.125,
          -0.875,
          -0.625,
          -0.375,
          -0.125
        ],
        "clip_lo": -4.0,
        "clip_hi": 0.0
      },
      "timestamp_min": 1579132800000,
      "timestamp_max": 1785459600000,
      "timestamp_min_iso": "2020-01-16T00:00:00Z",
      "timestamp_max_iso": "2026-07-31T01:00:00Z"
    },
    {
      "pattern_type": "reverse_head_and_shoulders",
      "pattern_name": "Reverse Head & Shoulders",
      "timeframe": "1d",
      "bias": "bullish",
      "n": 310,
      "n_symbols": 218,
      "breakout_success_rate": 73.87,
      "breakdown_success_rate": 22.9,
      "sideways_rate": 3.23,
      "forming_rate": 0.0,
      "both_cleared_rate": 34.52,
      "breakout_success_rate_ci95": [
        68.71,
        78.45
      ],
      "breakdown_success_rate_ci95": [
        18.57,
        27.9
      ],
      "sideways_rate_ci95": [
        1.76,
        5.84
      ],
      "forming_rate_ci95": [
        0.0,
        1.22
      ],
      "both_sides_rate": 34.52,
      "expected_hit_rate": 73.87,
      "expected_hit_rate_ci95": [
        68.71,
        78.45
      ],
      "mean_ret_10c": 1.989,
      "median_ret_10c": -3.362,
      "std_ret_10c": 32.337,
      "win_rate_ret_gt0": 42.9,
      "p25_ret_10c": -14.755,
      "p75_ret_10c": 11.535,
      "mean_mfe": 29.234,
      "mean_mae": -17.487,
      "mfe_mae_ratio": 1.672,
      "max_up_natr": {
        "n": 310,
        "mean": 3.259,
        "median": 1.777,
        "p25": 0.694,
        "p75": 4.055,
        "hist": {
          "bin_edges": [
            0.0,
            0.25,
            0.5,
            0.75,
            1.0,
            1.25,
            1.5,
            1.75,
            2.0,
            2.25,
            2.5,
            2.75,
            3.0,
            3.25,
            3.5,
            3.75,
            4.0
          ],
          "counts": [
            33,
            24,
            27,
            24,
            18,
            9,
            18,
            11,
            18,
            12,
            8,
            5,
            5,
            6,
            7,
            85
          ],
          "bin_centers": [
            0.125,
            0.375,
            0.625,
            0.875,
            1.125,
            1.375,
            1.625,
            1.875,
            2.125,
            2.375,
            2.625,
            2.875,
            3.125,
            3.375,
            3.625,
            3.875
          ],
          "clip_lo": 0.0,
          "clip_hi": 4.0
        }
      },
      "max_down_natr": {
        "n": 310,
        "mean": -2.013,
        "median": -1.546,
        "p25": -2.797,
        "p75": -0.755,
        "hist": {
          "bin_edges": [
            -4.0,
            -3.75,
            -3.5,
            -3.25,
            -3.0,
            -2.75,
            -2.5,
            -2.25,
            -2.0,
            -1.75,
            -1.5,
            -1.25,
            -1.0,
            -0.75,
            -0.5,
            -0.25,
            0.0
          ],
          "counts": [
            34,
            7,
            10,
            15,
            16,
            23,
            9,
            12,
            15,
            18,
            20,
            26,
            28,
            25,
            27,
            25
          ],
          "bin_centers": [
            -3.875,
            -3.625,
            -3.375,
            -3.125,
            -2.875,
            -2.625,
            -2.375,
            -2.125,
            -1.875,
            -1.625,
            -1.375,
            -1.125,
            -0.875,
            -0.625,
            -0.375,
            -0.125
          ],
          "clip_lo": -4.0,
          "clip_hi": 0.0
        }
      },
      "median_max_up_natr": 1.777,
      "median_max_down_natr": -1.546,
      "mean_max_up_natr": 3.259,
      "mean_max_down_natr": -2.013,
      "p25_max_up_natr": 0.694,
      "p75_max_up_natr": 4.055,
      "p25_max_down_natr": -2.797,
      "p75_max_down_natr": -0.755,
      "outcome_natr_moves": {
        "breakout": {
          "n": 229,
          "max_up_natr": {
            "n": 229,
            "mean": 4.022,
            "median": 2.32,
            "p25": 1.252,
            "p75": 4.637,
            "hist": {
              "bin_edges": [
                0.0,
                0.25,
                0.5,
                0.75,
                1.0,
                1.25,
                1.5,
                1.75,
                2.0,
                2.25,
                2.5,
                2.75,
                3.0,
                3.25,
                3.5,
                3.75,
                4.0
              ],
              "counts": [
                6,
                10,
                15,
                11,
                15,
                8,
                17,
                11,
                17,
                11,
                7,
                5,
                4,
                6,
                7,
                79
              ],
              "bin_centers": [
                0.125,
                0.375,
                0.625,
                0.875,
                1.125,
                1.375,
                1.625,
                1.875,
                2.125,
                2.375,
                2.625,
                2.875,
                3.125,
                3.375,
                3.625,
                3.875
              ],
              "clip_lo": 0.0,
              "clip_hi": 4.0
            }
          },
          "max_down_natr": {
            "n": 229,
            "mean": -1.799,
            "median": -1.187,
            "p25": -2.589,
            "p75": -0.591,
            "hist": {
              "bin_edges": [
                -4.0,
                -3.75,
                -3.5,
                -3.25,
                -3.0,
                -2.75,
                -2.5,
                -2.25,
                -2.0,
                -1.75,
                -1.5,
                -1.25,
                -1.0,
                -0.75,
                -0.5,
                -0.25,
                0.0
              ],
              "counts": [
                18,
                5,
                6,
                10,
                12,
                13,
                4,
                8,
                10,
                13,
                15,
                18,
                25,
                25,
                24,
                23
              ],
              "bin_centers": [
                -3.875,
                -3.625,
                -3.375,
                -3.125,
                -2.875,
                -2.625,
                -2.375,
                -2.125,
                -1.875,
                -1.625,
                -1.375,
                -1.125,
                -0.875,
                -0.625,
                -0.375,
                -0.125
              ],
              "clip_lo": -4.0,
              "clip_hi": 0.0
            }
          }
        },
        "breakdown": {
          "n": 71,
          "max_up_natr": {
            "n": 71,
            "mean": 1.194,
            "median": 0.505,
            "p25": 0.19,
            "p75": 0.856,
            "hist": {
              "bin_edges": [
                0.0,
                0.25,
                0.5,
                0.75,
                1.0,
                1.25,
                1.5,
                1.75,
                2.0,
                2.25,
                2.5,
                2.75,
                3.0,
                3.25,
                3.5,
                3.75,
                4.0
              ],
              "counts": [
                24,
                11,
                11,
                10,
                3,
                1,
                1,
                0,
                1,
                1,
                1,
                0,
                1,
                0,
                0,
                6
              ],
              "bin_centers": [
                0.125,
                0.375,
                0.625,
                0.875,
                1.125,
                1.375,
                1.625,
                1.875,
                2.125,
                2.375,
                2.625,
                2.875,
                3.125,
                3.375,
                3.625,
                3.875
              ],
              "clip_lo": 0.0,
              "clip_hi": 4.0
            }
          },
          "max_down_natr": {
            "n": 71,
            "mean": -2.902,
            "median": -2.638,
            "p25": -3.52,
            "p75": -1.835,
            "hist": {
              "bin_edges": [
                -4.0,
                -3.75,
                -3.5,
                -3.25,
                -3.0,
                -2.75,
                -2.5,
                -2.25,
                -2.0,
                -1.75,
                -1.5,
                -1.25,
                -1.0,
                -0.75,
                -0.5,
                -0.25,
                0.0
              ],
              "counts": [
                16,
                2,
                4,
                5,
                4,
                10,
                5,
                4,
                5,
                5,
                5,
                6,
                0,
                0,
                0,
                0
              ],
              "bin_centers": [
                -3.875,
                -3.625,
                -3.375,
                -3.125,
                -2.875,
                -2.625,
                -2.375,
                -2.125,
                -1.875,
                -1.625,
                -1.375,
                -1.125,
                -0.875,
                -0.625,
                -0.375,
                -0.125
              ],
              "clip_lo": -4.0,
              "clip_hi": 0.0
            }
          }
        },
        "sideways": {
          "n": 10,
          "max_up_natr": {
            "n": 10,
            "mean": 0.453,
            "median": 0.457,
            "p25": 0.193,
            "p75": 0.717
          },
          "max_down_natr": {
            "n": 10,
            "mean": -0.611,
            "median": -0.62,
            "p25": -0.988,
            "p75": -0.325
          }
        },
        "forming": {
          "n": 0,
          "max_up_natr": {
            "n": 0,
            "mean": null,
            "median": null,
            "p25": null,
            "p75": null
          },
          "max_down_natr": {
            "n": 0,
            "mean": null,
            "median": null,
            "p25": null,
            "p75": null
          }
        }
      },
      "max_up_natr_hist": {
        "bin_edges": [
          0.0,
          0.25,
          0.5,
          0.75,
          1.0,
          1.25,
          1.5,
          1.75,
          2.0,
          2.25,
          2.5,
          2.75,
          3.0,
          3.25,
          3.5,
          3.75,
          4.0
        ],
        "counts": [
          33,
          24,
          27,
          24,
          18,
          9,
          18,
          11,
          18,
          12,
          8,
          5,
          5,
          6,
          7,
          85
        ],
        "bin_centers": [
          0.125,
          0.375,
          0.625,
          0.875,
          1.125,
          1.375,
          1.625,
          1.875,
          2.125,
          2.375,
          2.625,
          2.875,
          3.125,
          3.375,
          3.625,
          3.875
        ],
        "clip_lo": 0.0,
        "clip_hi": 4.0
      },
      "max_down_natr_hist": {
        "bin_edges": [
          -4.0,
          -3.75,
          -3.5,
          -3.25,
          -3.0,
          -2.75,
          -2.5,
          -2.25,
          -2.0,
          -1.75,
          -1.5,
          -1.25,
          -1.0,
          -0.75,
          -0.5,
          -0.25,
          0.0
        ],
        "counts": [
          34,
          7,
          10,
          15,
          16,
          23,
          9,
          12,
          15,
          18,
          20,
          26,
          28,
          25,
          27,
          25
        ],
        "bin_centers": [
          -3.875,
          -3.625,
          -3.375,
          -3.125,
          -2.875,
          -2.625,
          -2.375,
          -2.125,
          -1.875,
          -1.625,
          -1.375,
          -1.125,
          -0.875,
          -0.625,
          -0.375,
          -0.125
        ],
        "clip_lo": -4.0,
        "clip_hi": 0.0
      },
      "timestamp_min": 1546387200000,
      "timestamp_max": 1783728000000,
      "timestamp_min_iso": "2019-01-02T00:00:00Z",
      "timestamp_max_iso": "2026-07-11T00:00:00Z"
    },
    {
      "pattern_type": "rising_wedge",
      "pattern_name": "Rising Wedge",
      "timeframe": "15m",
      "bias": "bearish",
      "n": 2880,
      "n_symbols": 541,
      "breakout_success_rate": 24.41,
      "breakdown_success_rate": 73.85,
      "sideways_rate": 1.74,
      "forming_rate": 0.0,
      "both_cleared_rate": 38.72,
      "breakout_success_rate_ci95": [
        22.88,
        26.01
      ],
      "breakdown_success_rate_ci95": [
        72.22,
        75.43
      ],
      "sideways_rate_ci95": [
        1.32,
        2.28
      ],
      "forming_rate_ci95": [
        0.0,
        0.13
      ],
      "both_sides_rate": 38.72,
      "expected_hit_rate": 73.85,
      "expected_hit_rate_ci95": [
        72.22,
        75.43
      ],
      "mean_ret_10c": -0.272,
      "median_ret_10c": -0.457,
      "std_ret_10c": 3.607,
      "win_rate_ret_gt0": 37.08,
      "p25_ret_10c": -1.557,
      "p75_ret_10c": 0.647,
      "mean_mfe": 1.972,
      "mean_mae": -2.193,
      "mfe_mae_ratio": 0.899,
      "max_up_natr": {
        "n": 2880,
        "mean": 2.48,
        "median": 1.256,
        "p25": 0.345,
        "p75": 3.317,
        "hist": {
          "bin_edges": [
            0.0,
            0.25,
            0.5,
            0.75,
            1.0,
            1.25,
            1.5,
            1.75,
            2.0,
            2.25,
            2.5,
            2.75,
            3.0,
            3.25,
            3.5,
            3.75,
            4.0
          ],
          "counts": [
            570,
            323,
            229,
            164,
            150,
            121,
            141,
            100,
            89,
            79,
            62,
            62,
            48,
            66,
            58,
            618
          ],
          "bin_centers": [
            0.125,
            0.375,
            0.625,
            0.875,
            1.125,
            1.375,
            1.625,
            1.875,
            2.125,
            2.375,
            2.625,
            2.875,
            3.125,
            3.375,
            3.625,
            3.875
          ],
          "clip_lo": 0.0,
          "clip_hi": 4.0
        }
      },
      "max_down_natr": {
        "n": 2880,
        "mean": -2.824,
        "median": -2.45,
        "p25": -3.82,
        "p75": -1.439,
        "hist": {
          "bin_edges": [
            -4.0,
            -3.75,
            -3.5,
            -3.25,
            -3.0,
            -2.75,
            -2.5,
            -2.25,
            -2.0,
            -1.75,
            -1.5,
            -1.25,
            -1.0,
            -0.75,
            -0.5,
            -0.25,
            0.0
          ],
          "counts": [
            750,
            115,
            112,
            136,
            134,
            162,
            185,
            187,
            162,
            174,
            144,
            127,
            116,
            94,
            100,
            182
          ],
          "bin_centers": [
            -3.875,
            -3.625,
            -3.375,
            -3.125,
            -2.875,
            -2.625,
            -2.375,
            -2.125,
            -1.875,
            -1.625,
            -1.375,
            -1.125,
            -0.875,
            -0.625,
            -0.375,
            -0.125
          ],
          "clip_lo": -4.0,
          "clip_hi": 0.0
        }
      },
      "median_max_up_natr": 1.256,
      "median_max_down_natr": -2.45,
      "mean_max_up_natr": 2.48,
      "mean_max_down_natr": -2.824,
      "p25_max_up_natr": 0.345,
      "p75_max_up_natr": 3.317,
      "p25_max_down_natr": -3.82,
      "p75_max_down_natr": -1.439,
      "outcome_natr_moves": {
        "breakout": {
          "n": 703,
          "max_up_natr": {
            "n": 703,
            "mean": 5.561,
            "median": 4.152,
            "p25": 2.53,
            "p75": 6.832,
            "hist": {
              "bin_edges": [
                0.0,
                0.25,
                0.5,
                0.75,
                1.0,
                1.25,
                1.5,
                1.75,
                2.0,
                2.25,
                2.5,
                2.75,
                3.0,
                3.25,
                3.5,
                3.75,
                4.0
              ],
              "counts": [
                0,
                0,
                3,
                8,
                16,
                22,
                34,
                33,
                26,
                28,
                28,
                35,
                23,
                31,
                22,
                394
              ],
              "bin_centers": [
                0.125,
                0.375,
                0.625,
                0.875,
                1.125,
                1.375,
                1.625,
                1.875,
                2.125,
                2.375,
                2.625,
                2.875,
                3.125,
                3.375,
                3.625,
                3.875
              ],
              "clip_lo": 0.0,
              "clip_hi": 4.0
            }
          },
          "max_down_natr": {
            "n": 703,
            "mean": -1.575,
            "median": -0.873,
            "p25": -2.246,
            "p75": -0.241,
            "hist": {
              "bin_edges": [
                -4.0,
                -3.75,
                -3.5,
                -3.25,
                -3.0,
                -2.75,
                -2.5,
                -2.25,
                -2.0,
                -1.75,
                -1.5,
                -1.25,
                -1.0,
                -0.75,
                -0.5,
                -0.25,
                0.0
              ],
              "counts": [
                78,
                12,
                17,
                16,
                7,
                19,
                27,
                32,
                27,
                26,
                35,
                32,
                45,
                60,
                90,
                180
              ],
              "bin_centers": [
                -3.875,
                -3.625,
                -3.375,
                -3.125,
                -2.875,
                -2.625,
                -2.375,
                -2.125,
                -1.875,
                -1.625,
                -1.375,
                -1.125,
                -0.875,
                -0.625,
                -0.375,
                -0.125
              ],
              "clip_lo": -4.0,
              "clip_hi": 0.0
            }
          }
        },
        "breakdown": {
          "n": 2127,
          "max_up_natr": {
            "n": 2127,
            "mean": 1.484,
            "median": 0.692,
            "p25": 0.224,
            "p75": 1.789,
            "hist": {
              "bin_edges": [
                0.0,
                0.25,
                0.5,
                0.75,
                1.0,
                1.25,
                1.5,
                1.75,
                2.0,
                2.25,
                2.5,
                2.75,
                3.0,
                3.25,
                3.5,
                3.75,
                4.0
              ],
              "counts": [
                569,
                321,
                221,
                152,
                126,
                97,
                97,
                60,
                60,
                48,
                32,
                25,
                25,
                35,
                36,
                223
              ],
              "bin_centers": [
                0.125,
                0.375,
                0.625,
                0.875,
                1.125,
                1.375,
                1.625,
                1.875,
                2.125,
                2.375,
                2.625,
                2.875,
                3.125,
                3.375,
                3.625,
                3.875
              ],
              "clip_lo": 0.0,
              "clip_hi": 4.0
            }
          },
          "max_down_natr": {
            "n": 2127,
            "mean": -3.281,
            "median": -2.867,
            "p25": -4.146,
            "p75": -1.954,
            "hist": {
              "bin_edges": [
                -4.0,
                -3.75,
                -3.5,
                -3.25,
                -3.0,
                -2.75,
                -2.5,
                -2.25,
                -2.0,
                -1.75,
                -1.5,
                -1.25,
                -1.0,
                -0.75,
                -0.5,
                -0.25,
                0.0
              ],
              "counts": [
                672,
                103,
                95,
                120,
                127,
                143,
                156,
                151,
                132,
                147,
                108,
                93,
                60,
                20,
                0,
                0
              ],
              "bin_centers": [
                -3.875,
                -3.625,
                -3.375,
                -3.125,
                -2.875,
                -2.625,
                -2.375,
                -2.125,
                -1.875,
                -1.625,
                -1.375,
                -1.125,
                -0.875,
                -0.625,
                -0.375,
                -0.125
              ],
              "clip_lo": -4.0,
              "clip_hi": 0.0
            }
          }
        },
        "sideways": {
          "n": 50,
          "max_up_natr": {
            "n": 50,
            "mean": 1.537,
            "median": 1.551,
            "p25": 1.015,
            "p75": 1.971,
            "hist": {
              "bin_edges": [
                0.0,
                0.25,
                0.5,
                0.75,
                1.0,
                1.25,
                1.5,
                1.75,
                2.0,
                2.25,
                2.5,
                2.75,
                3.0,
                3.25,
                3.5,
                3.75,
                4.0
              ],
              "counts": [
                1,
                2,
                5,
                4,
                8,
                2,
                10,
                7,
                3,
                3,
                2,
                2,
                0,
                0,
                0,
                1
              ],
              "bin_centers": [
                0.125,
                0.375,
                0.625,
                0.875,
                1.125,
                1.375,
                1.625,
                1.875,
                2.125,
                2.375,
                2.625,
                2.875,
                3.125,
                3.375,
                3.625,
                3.875
              ],
              "clip_lo": 0.0,
              "clip_hi": 4.0
            }
          },
          "max_down_natr": {
            "n": 50,
            "mean": -0.949,
            "median": -0.746,
            "p25": -1.001,
            "p75": -0.531,
            "hist": {
              "bin_edges": [
                -4.0,
                -3.75,
                -3.5,
                -3.25,
                -3.0,
                -2.75,
                -2.5,
                -2.25,
                -2.0,
                -1.75,
                -1.5,
                -1.25,
                -1.0,
                -0.75,
                -0.5,
                -0.25,
                0.0
              ],
              "counts": [
                0,
                0,
                0,
                0,
                0,
                0,
                2,
                4,
                3,
                1,
                1,
                2,
                11,
                14,
                10,
                2
              ],
              "bin_centers": [
                -3.875,
                -3.625,
                -3.375,
                -3.125,
                -2.875,
                -2.625,
                -2.375,
                -2.125,
                -1.875,
                -1.625,
                -1.375,
                -1.125,
                -0.875,
                -0.625,
                -0.375,
                -0.125
              ],
              "clip_lo": -4.0,
              "clip_hi": 0.0
            }
          }
        },
        "forming": {
          "n": 0,
          "max_up_natr": {
            "n": 0,
            "mean": null,
            "median": null,
            "p25": null,
            "p75": null
          },
          "max_down_natr": {
            "n": 0,
            "mean": null,
            "median": null,
            "p25": null,
            "p75": null
          }
        }
      },
      "max_up_natr_hist": {
        "bin_edges": [
          0.0,
          0.25,
          0.5,
          0.75,
          1.0,
          1.25,
          1.5,
          1.75,
          2.0,
          2.25,
          2.5,
          2.75,
          3.0,
          3.25,
          3.5,
          3.75,
          4.0
        ],
        "counts": [
          570,
          323,
          229,
          164,
          150,
          121,
          141,
          100,
          89,
          79,
          62,
          62,
          48,
          66,
          58,
          618
        ],
        "bin_centers": [
          0.125,
          0.375,
          0.625,
          0.875,
          1.125,
          1.375,
          1.625,
          1.875,
          2.125,
          2.375,
          2.625,
          2.875,
          3.125,
          3.375,
          3.625,
          3.875
        ],
        "clip_lo": 0.0,
        "clip_hi": 4.0
      },
      "max_down_natr_hist": {
        "bin_edges": [
          -4.0,
          -3.75,
          -3.5,
          -3.25,
          -3.0,
          -2.75,
          -2.5,
          -2.25,
          -2.0,
          -1.75,
          -1.5,
          -1.25,
          -1.0,
          -0.75,
          -0.5,
          -0.25,
          0.0
        ],
        "counts": [
          750,
          115,
          112,
          136,
          134,
          162,
          185,
          187,
          162,
          174,
          144,
          127,
          116,
          94,
          100,
          182
        ],
        "bin_centers": [
          -3.875,
          -3.625,
          -3.375,
          -3.125,
          -2.875,
          -2.625,
          -2.375,
          -2.125,
          -1.875,
          -1.625,
          -1.375,
          -1.125,
          -0.875,
          -0.625,
          -0.375,
          -0.125
        ],
        "clip_lo": -4.0,
        "clip_hi": 0.0
      },
      "timestamp_min": 1596426300000,
      "timestamp_max": 1785523500000,
      "timestamp_min_iso": "2020-08-03T03:45:00Z",
      "timestamp_max_iso": "2026-07-31T18:45:00Z"
    },
    {
      "pattern_type": "descending_broadening_wedge",
      "pattern_name": "Descending Broadening Wedge",
      "timeframe": "4h",
      "bias": "bullish",
      "n": 2995,
      "n_symbols": 591,
      "breakout_success_rate": 73.59,
      "breakdown_success_rate": 11.92,
      "sideways_rate": 14.49,
      "forming_rate": 0.0,
      "both_cleared_rate": 37.16,
      "breakout_success_rate_ci95": [
        71.98,
        75.14
      ],
      "breakdown_success_rate_ci95": [
        10.81,
        13.13
      ],
      "sideways_rate_ci95": [
        13.28,
        15.8
      ],
      "forming_rate_ci95": [
        0.0,
        0.13
      ],
      "both_sides_rate": 37.16,
      "expected_hit_rate": 73.59,
      "expected_hit_rate_ci95": [
        71.98,
        75.14
      ],
      "mean_ret_10c": 1.773,
      "median_ret_10c": 0.924,
      "std_ret_10c": 13.951,
      "win_rate_ret_gt0": 55.26,
      "p25_ret_10c": -4.324,
      "p75_ret_10c": 6.305,
      "mean_mfe": 12.208,
      "mean_mae": -6.931,
      "mfe_mae_ratio": 1.761,
      "max_up_natr": {
        "n": 2995,
        "mean": 3.528,
        "median": 2.422,
        "p25": 1.301,
        "p75": 4.306,
        "hist": {
          "bin_edges": [
            0.0,
            0.25,
            0.5,
            0.75,
            1.0,
            1.25,
            1.5,
            1.75,
            2.0,
            2.25,
            2.5,
            2.75,
            3.0,
            3.25,
            3.5,
            3.75,
            4.0
          ],
          "counts": [
            144,
            125,
            131,
            153,
            168,
            168,
            186,
            151,
            159,
            153,
            150,
            119,
            117,
            98,
            68,
            905
          ],
          "bin_centers": [
            0.125,
            0.375,
            0.625,
            0.875,
            1.125,
            1.375,
            1.625,
            1.875,
            2.125,
            2.375,
            2.625,
            2.875,
            3.125,
            3.375,
            3.625,
            3.875
          ],
          "clip_lo": 0.0,
          "clip_hi": 4.0
        }
      },
      "max_down_natr": {
        "n": 2995,
        "mean": -2.147,
        "median": -1.241,
        "p25": -2.593,
        "p75": -0.361,
        "hist": {
          "bin_edges": [
            -4.0,
            -3.75,
            -3.5,
            -3.25,
            -3.0,
            -2.75,
            -2.5,
            -2.25,
            -2.0,
            -1.75,
            -1.5,
            -1.25,
            -1.0,
            -0.75,
            -0.5,
            -0.25,
            0.0
          ],
          "counts": [
            451,
            48,
            49,
            62,
            91,
            91,
            112,
            106,
            146,
            174,
            161,
            156,
            179,
            238,
            338,
            593
          ],
          "bin_centers": [
            -3.875,
            -3.625,
            -3.375,
            -3.125,
            -2.875,
            -2.625,
            -2.375,
            -2.125,
            -1.875,
            -1.625,
            -1.375,
            -1.125,
            -0.875,
            -0.625,
            -0.375,
            -0.125
          ],
          "clip_lo": -4.0,
          "clip_hi": 0.0
        }
      },
      "median_max_up_natr": 2.422,
      "median_max_down_natr": -1.241,
      "mean_max_up_natr": 3.528,
      "mean_max_down_natr": -2.147,
      "p25_max_up_natr": 1.301,
      "p75_max_up_natr": 4.306,
      "p25_max_down_natr": -2.593,
      "p75_max_down_natr": -0.361,
      "outcome_natr_moves": {
        "breakout": {
          "n": 2204,
          "max_up_natr": {
            "n": 2204,
            "mean": 4.237,
            "median": 2.93,
            "p25": 1.84,
            "p75": 4.872,
            "hist": {
              "bin_edges": [
                0.0,
                0.25,
                0.5,
                0.75,
                1.0,
                1.25,
                1.5,
                1.75,
                2.0,
                2.25,
                2.5,
                2.75,
                3.0,
                3.25,
                3.5,
                3.75,
                4.0
              ],
              "counts": [
                0,
                1,
                28,
                80,
                116,
                133,
                147,
                120,
                137,
                129,
                133,
                101,
                102,
                84,
                56,
                837
              ],
              "bin_centers": [
                0.125,
                0.375,
                0.625,
                0.875,
                1.125,
                1.375,
                1.625,
                1.875,
                2.125,
                2.375,
                2.625,
                2.875,
                3.125,
                3.375,
                3.625,
                3.875
              ],
              "clip_lo": 0.0,
              "clip_hi": 4.0
            }
          },
          "max_down_natr": {
            "n": 2204,
            "mean": -1.294,
            "median": -0.782,
            "p25": -1.861,
            "p75": -0.244,
            "hist": {
              "bin_edges": [
                -4.0,
                -3.75,
                -3.5,
                -3.25,
                -3.0,
                -2.75,
                -2.5,
                -2.25,
                -2.0,
                -1.75,
                -1.5,
                -1.25,
                -1.0,
                -0.75,
                -0.5,
                -0.25,
                0.0
              ],
              "counts": [
                142,
                31,
                28,
                34,
                64,
                51,
                77,
                71,
                98,
                126,
                119,
                127,
                152,
                211,
                312,
                561
              ],
              "bin_centers": [
                -3.875,
                -3.625,
                -3.375,
                -3.125,
                -2.875,
                -2.625,
                -2.375,
                -2.125,
                -1.875,
                -1.625,
                -1.375,
                -1.125,
                -0.875,
                -0.625,
                -0.375,
                -0.125
              ],
              "clip_lo": -4.0,
              "clip_hi": 0.0
            }
          }
        },
        "breakdown": {
          "n": 357,
          "max_up_natr": {
            "n": 357,
            "mean": 1.599,
            "median": 0.519,
            "p25": 0.189,
            "p75": 1.721,
            "hist": {
              "bin_edges": [
                0.0,
                0.25,
                0.5,
                0.75,
                1.0,
                1.25,
                1.5,
                1.75,
                2.0,
                2.25,
                2.5,
                2.75,
                3.0,
                3.25,
                3.5,
                3.75,
                4.0
              ],
              "counts": [
                109,
                65,
                36,
                25,
                16,
                8,
                9,
                6,
                6,
                9,
                8,
                4,
                6,
                6,
                5,
                39
              ],
              "bin_centers": [
                0.125,
                0.375,
                0.625,
                0.875,
                1.125,
                1.375,
                1.625,
                1.875,
                2.125,
                2.375,
                2.625,
                2.875,
                3.125,
                3.375,
                3.625,
                3.875
              ],
              "clip_lo": 0.0,
              "clip_hi": 4.0
            }
          },
          "max_down_natr": {
            "n": 357,
            "mean": -7.544,
            "median": -6.291,
            "p25": -9.728,
            "p75": -3.537,
            "hist": {
              "bin_edges": [
                -4.0,
                -3.75,
                -3.5,
                -3.25,
                -3.0,
                -2.75,
                -2.5,
                -2.25,
                -2.0,
                -1.75,
                -1.5,
                -1.25,
                -1.0,
                -0.75,
                -0.5,
                -0.25,
                0.0
              ],
              "counts": [
                258,
                11,
                9,
                7,
                10,
                13,
                9,
                8,
                10,
                8,
                9,
                3,
                1,
                1,
                0,
                0
              ],
              "bin_centers": [
                -3.875,
                -3.625,
                -3.375,
                -3.125,
                -2.875,
                -2.625,
                -2.375,
                -2.125,
                -1.875,
                -1.625,
                -1.375,
                -1.125,
                -0.875,
                -0.625,
                -0.375,
                -0.125
              ],
              "clip_lo": -4.0,
              "clip_hi": 0.0
            }
          }
        },
        "sideways": {
          "n": 434,
          "max_up_natr": {
            "n": 434,
            "mean": 1.513,
            "median": 1.062,
            "p25": 0.541,
            "p75": 1.973,
            "hist": {
              "bin_edges": [
                0.0,
                0.25,
                0.5,
                0.75,
                1.0,
                1.25,
                1.5,
                1.75,
                2.0,
                2.25,
                2.5,
                2.75,
                3.0,
                3.25,
                3.5,
                3.75,
                4.0
              ],
              "counts": [
                35,
                59,
                67,
                48,
                36,
                27,
                30,
                25,
                16,
                15,
                9,
                14,
                9,
                8,
                7,
                29
              ],
              "bin_centers": [
                0.125,
                0.375,
                0.625,
                0.875,
                1.125,
                1.375,
                1.625,
                1.875,
                2.125,
                2.375,
                2.625,
                2.875,
                3.125,
                3.375,
                3.625,
                3.875
              ],
              "clip_lo": 0.0,
              "clip_hi": 4.0
            }
          },
          "max_down_natr": {
            "n": 434,
            "mean": -2.037,
            "median": -1.807,
            "p25": -2.7,
            "p75": -0.99,
            "hist": {
              "bin_edges": [
                -4.0,
                -3.75,
                -3.5,
                -3.25,
                -3.0,
                -2.75,
                -2.5,
                -2.25,
                -2.0,
                -1.75,
                -1.5,
                -1.25,
                -1.0,
                -0.75,
                -0.5,
                -0.25,
                0.0
              ],
              "counts": [
                51,
                6,
                12,
                21,
                17,
                27,
                26,
                27,
                38,
                40,
                33,
                26,
                26,
                26,
                26,
                32
              ],
              "bin_centers": [
                -3.875,
                -3.625,
                -3.375,
                -3.125,
                -2.875,
                -2.625,
                -2.375,
                -2.125,
                -1.875,
                -1.625,
                -1.375,
                -1.125,
                -0.875,
                -0.625,
                -0.375,
                -0.125
              ],
              "clip_lo": -4.0,
              "clip_hi": 0.0
            }
          }
        },
        "forming": {
          "n": 0,
          "max_up_natr": {
            "n": 0,
            "mean": null,
            "median": null,
            "p25": null,
            "p75": null
          },
          "max_down_natr": {
            "n": 0,
            "mean": null,
            "median": null,
            "p25": null,
            "p75": null
          }
        }
      },
      "max_up_natr_hist": {
        "bin_edges": [
          0.0,
          0.25,
          0.5,
          0.75,
          1.0,
          1.25,
          1.5,
          1.75,
          2.0,
          2.25,
          2.5,
          2.75,
          3.0,
          3.25,
          3.5,
          3.75,
          4.0
        ],
        "counts": [
          144,
          125,
          131,
          153,
          168,
          168,
          186,
          151,
          159,
          153,
          150,
          119,
          117,
          98,
          68,
          905
        ],
        "bin_centers": [
          0.125,
          0.375,
          0.625,
          0.875,
          1.125,
          1.375,
          1.625,
          1.875,
          2.125,
          2.375,
          2.625,
          2.875,
          3.125,
          3.375,
          3.625,
          3.875
        ],
        "clip_lo": 0.0,
        "clip_hi": 4.0
      },
      "max_down_natr_hist": {
        "bin_edges": [
          -4.0,
          -3.75,
          -3.5,
          -3.25,
          -3.0,
          -2.75,
          -2.5,
          -2.25,
          -2.0,
          -1.75,
          -1.5,
          -1.25,
          -1.0,
          -0.75,
          -0.5,
          -0.25,
          0.0
        ],
        "counts": [
          451,
          48,
          49,
          62,
          91,
          91,
          112,
          106,
          146,
          174,
          161,
          156,
          179,
          238,
          338,
          593
        ],
        "bin_centers": [
          -3.875,
          -3.625,
          -3.375,
          -3.125,
          -2.875,
          -2.625,
          -2.375,
          -2.125,
          -1.875,
          -1.625,
          -1.375,
          -1.125,
          -0.875,
          -0.625,
          -0.375,
          -0.125
        ],
        "clip_lo": -4.0,
        "clip_hi": 0.0
      },
      "timestamp_min": 1517040000000,
      "timestamp_max": 1785240000000,
      "timestamp_min_iso": "2018-01-27T08:00:00Z",
      "timestamp_max_iso": "2026-07-28T12:00:00Z"
    },
    {
      "pattern_type": "double_top",
      "pattern_name": "Double Top",
      "timeframe": "15m",
      "bias": "bearish",
      "n": 136,
      "n_symbols": 118,
      "breakout_success_rate": 13.24,
      "breakdown_success_rate": 73.53,
      "sideways_rate": 13.23,
      "forming_rate": 0.0,
      "both_cleared_rate": 36.03,
      "breakout_success_rate_ci95": [
        8.54,
        19.95
      ],
      "breakdown_success_rate_ci95": [
        65.54,
        80.22
      ],
      "sideways_rate_ci95": [
        8.54,
        19.95
      ],
      "forming_rate_ci95": [
        0.0,
        2.75
      ],
      "both_sides_rate": 36.03,
      "expected_hit_rate": 73.53,
      "expected_hit_rate_ci95": [
        65.54,
        80.22
      ],
      "mean_ret_10c": -0.615,
      "median_ret_10c": -0.608,
      "std_ret_10c": 6.606,
      "win_rate_ret_gt0": 35.29,
      "p25_ret_10c": -2.326,
      "p75_ret_10c": 0.383,
      "mean_mfe": 2.27,
      "mean_mae": -3.061,
      "mfe_mae_ratio": 0.742,
      "max_up_natr": {
        "n": 136,
        "mean": 1.574,
        "median": 1.068,
        "p25": 0.533,
        "p75": 1.72,
        "hist": {
          "bin_edges": [
            0.0,
            0.25,
            0.5,
            0.75,
            1.0,
            1.25,
            1.5,
            1.75,
            2.0,
            2.25,
            2.5,
            2.75,
            3.0,
            3.25,
            3.5,
            3.75,
            4.0
          ],
          "counts": [
            16,
            17,
            17,
            15,
            14,
            14,
            9,
            8,
            2,
            2,
            5,
            5,
            1,
            1,
            1,
            9
          ],
          "bin_centers": [
            0.125,
            0.375,
            0.625,
            0.875,
            1.125,
            1.375,
            1.625,
            1.875,
            2.125,
            2.375,
            2.625,
            2.875,
            3.125,
            3.375,
            3.625,
            3.875
          ],
          "clip_lo": 0.0,
          "clip_hi": 4.0
        }
      },
      "max_down_natr": {
        "n": 136,
        "mean": -2.249,
        "median": -1.967,
        "p25": -2.952,
        "p75": -1.168,
        "hist": {
          "bin_edges": [
            -4.0,
            -3.75,
            -3.5,
            -3.25,
            -3.0,
            -2.75,
            -2.5,
            -2.25,
            -2.0,
            -1.75,
            -1.5,
            -1.25,
            -1.0,
            -0.75,
            -0.5,
            -0.25,
            0.0
          ],
          "counts": [
            13,
            3,
            6,
            10,
            4,
            10,
            11,
            9,
            10,
            14,
            10,
            9,
            14,
            10,
            2,
            1
          ],
          "bin_centers": [
            -3.875,
            -3.625,
            -3.375,
            -3.125,
            -2.875,
            -2.625,
            -2.375,
            -2.125,
            -1.875,
            -1.625,
            -1.375,
            -1.125,
            -0.875,
            -0.625,
            -0.375,
            -0.125
          ],
          "clip_lo": -4.0,
          "clip_hi": 0.0
        }
      },
      "median_max_up_natr": 1.068,
      "median_max_down_natr": -1.967,
      "mean_max_up_natr": 1.574,
      "mean_max_down_natr": -2.249,
      "p25_max_up_natr": 0.533,
      "p75_max_up_natr": 1.72,
      "p25_max_down_natr": -2.952,
      "p75_max_down_natr": -1.168,
      "outcome_natr_moves": {
        "breakout": {
          "n": 18,
          "max_up_natr": {
            "n": 18,
            "mean": 4.39,
            "median": 2.794,
            "p25": 1.824,
            "p75": 5.127,
            "hist": {
              "bin_edges": [
                0.0,
                0.25,
                0.5,
                0.75,
                1.0,
                1.25,
                1.5,
                1.75,
                2.0,
                2.25,
                2.5,
                2.75,
                3.0,
                3.25,
                3.5,
                3.75,
                4.0
              ],
              "counts": [
                0,
                0,
                0,
                0,
                2,
                1,
                1,
                3,
                0,
                1,
                1,
                1,
                0,
                1,
                0,
                7
              ],
              "bin_centers": [
                0.125,
                0.375,
                0.625,
                0.875,
                1.125,
                1.375,
                1.625,
                1.875,
                2.125,
                2.375,
                2.625,
                2.875,
                3.125,
                3.375,
                3.625,
                3.875
              ],
              "clip_lo": 0.0,
              "clip_hi": 4.0
            }
          },
          "max_down_natr": {
            "n": 18,
            "mean": -1.454,
            "median": -0.884,
            "p25": -1.162,
            "p75": -0.698,
            "hist": {
              "bin_edges": [
                -4.0,
                -3.75,
                -3.5,
                -3.25,
                -3.0,
                -2.75,
                -2.5,
                -2.25,
                -2.0,
                -1.75,
                -1.5,
                -1.25,
                -1.0,
                -0.75,
                -0.5,
                -0.25,
                0.0
              ],
              "counts": [
                2,
                0,
                0,
                0,
                1,
                0,
                1,
                0,
                0,
                0,
                0,
                3,
                5,
                4,
                2,
                0
              ],
              "bin_centers": [
                -3.875,
                -3.625,
                -3.375,
                -3.125,
                -2.875,
                -2.625,
                -2.375,
                -2.125,
                -1.875,
                -1.625,
                -1.375,
                -1.125,
                -0.875,
                -0.625,
                -0.375,
                -0.125
              ],
              "clip_lo": -4.0,
              "clip_hi": 0.0
            }
          }
        },
        "breakdown": {
          "n": 100,
          "max_up_natr": {
            "n": 100,
            "mean": 1.118,
            "median": 0.861,
            "p25": 0.383,
            "p75": 1.491,
            "hist": {
              "bin_edges": [
                0.0,
                0.25,
                0.5,
                0.75,
                1.0,
                1.25,
                1.5,
                1.75,
                2.0,
                2.25,
                2.5,
                2.75,
                3.0,
                3.25,
                3.5,
                3.75,
                4.0
              ],
              "counts": [
                16,
                16,
                14,
                12,
                9,
                9,
                7,
                5,
                1,
                1,
                4,
                3,
                0,
                0,
                1,
                2
              ],
              "bin_centers": [
                0.125,
                0.375,
                0.625,
                0.875,
                1.125,
                1.375,
                1.625,
                1.875,
                2.125,
                2.375,
                2.625,
                2.875,
                3.125,
                3.375,
                3.625,
                3.875
              ],
              "clip_lo": 0.0,
              "clip_hi": 4.0
            }
          },
          "max_down_natr": {
            "n": 100,
            "mean": -2.636,
            "median": -2.296,
            "p25": -3.102,
            "p75": -1.66,
            "hist": {
              "bin_edges": [
                -4.0,
                -3.75,
                -3.5,
                -3.25,
                -3.0,
                -2.75,
                -2.5,
                -2.25,
                -2.0,
                -1.75,
                -1.5,
                -1.25,
                -1.0,
                -0.75,
                -0.5,
                -0.25,
                0.0
              ],
              "counts": [
                11,
                3,
                6,
                10,
                3,
                10,
                10,
                9,
                9,
                13,
                9,
                4,
                3,
                0,
                0,
                0
              ],
              "bin_centers": [
                -3.875,
                -3.625,
                -3.375,
                -3.125,
                -2.875,
                -2.625,
                -2.375,
                -2.125,
                -1.875,
                -1.625,
                -1.375,
                -1.125,
                -0.875,
                -0.625,
                -0.375,
                -0.125
              ],
              "clip_lo": -4.0,
              "clip_hi": 0.0
            }
          }
        },
        "sideways": {
          "n": 18,
          "max_up_natr": {
            "n": 18,
            "mean": 1.291,
            "median": 1.221,
            "p25": 0.779,
            "p75": 1.375,
            "hist": {
              "bin_edges": [
                0.0,
                0.25,
                0.5,
                0.75,
                1.0,
                1.25,
                1.5,
                1.75,
                2.0,
                2.25,
                2.5,
                2.75,
                3.0,
                3.25,
                3.5,
                3.75,
                4.0
              ],
              "counts": [
                0,
                1,
                3,
                3,
                3,
                4,
                1,
                0,
                1,
                0,
                0,
                1,
                1,
                0,
                0,
                0
              ],
              "bin_centers": [
                0.125,
                0.375,
                0.625,
                0.875,
                1.125,
                1.375,
                1.625,
                1.875,
                2.125,
                2.375,
                2.625,
                2.875,
                3.125,
                3.375,
                3.625,
                3.875
              ],
              "clip_lo": 0.0,
              "clip_hi": 4.0
            }
          },
          "max_down_natr": {
            "n": 18,
            "mean": -0.9,
            "median": -0.851,
            "p25": -1.064,
            "p75": -0.617,
            "hist": {
              "bin_edges": [
                -4.0,
                -3.75,
                -3.5,
                -3.25,
                -3.0,
                -2.75,
                -2.5,
                -2.25,
                -2.0,
                -1.75,
                -1.5,
                -1.25,
                -1.0,
                -0.75,
                -0.5,
                -0.25,
                0.0
              ],
              "counts": [
                0,
                0,
                0,
                0,
                0,
                0,
                0,
                0,
                1,
                1,
                1,
                2,
                6,
                6,
                0,
                1
              ],
              "bin_centers": [
                -3.875,
                -3.625,
                -3.375,
                -3.125,
                -2.875,
                -2.625,
                -2.375,
                -2.125,
                -1.875,
                -1.625,
                -1.375,
                -1.125,
                -0.875,
                -0.625,
                -0.375,
                -0.125
              ],
              "clip_lo": -4.0,
              "clip_hi": 0.0
            }
          }
        },
        "forming": {
          "n": 0,
          "max_up_natr": {
            "n": 0,
            "mean": null,
            "median": null,
            "p25": null,
            "p75": null
          },
          "max_down_natr": {
            "n": 0,
            "mean": null,
            "median": null,
            "p25": null,
            "p75": null
          }
        }
      },
      "max_up_natr_hist": {
        "bin_edges": [
          0.0,
          0.25,
          0.5,
          0.75,
          1.0,
          1.25,
          1.5,
          1.75,
          2.0,
          2.25,
          2.5,
          2.75,
          3.0,
          3.25,
          3.5,
          3.75,
          4.0
        ],
        "counts": [
          16,
          17,
          17,
          15,
          14,
          14,
          9,
          8,
          2,
          2,
          5,
          5,
          1,
          1,
          1,
          9
        ],
        "bin_centers": [
          0.125,
          0.375,
          0.625,
          0.875,
          1.125,
          1.375,
          1.625,
          1.875,
          2.125,
          2.375,
          2.625,
          2.875,
          3.125,
          3.375,
          3.625,
          3.875
        ],
        "clip_lo": 0.0,
        "clip_hi": 4.0
      },
      "max_down_natr_hist": {
        "bin_edges": [
          -4.0,
          -3.75,
          -3.5,
          -3.25,
          -3.0,
          -2.75,
          -2.5,
          -2.25,
          -2.0,
          -1.75,
          -1.5,
          -1.25,
          -1.0,
          -0.75,
          -0.5,
          -0.25,
          0.0
        ],
        "counts": [
          13,
          3,
          6,
          10,
          4,
          10,
          11,
          9,
          10,
          14,
          10,
          9,
          14,
          10,
          2,
          1
        ],
        "bin_centers": [
          -3.875,
          -3.625,
          -3.375,
          -3.125,
          -2.875,
          -2.625,
          -2.375,
          -2.125,
          -1.875,
          -1.625,
          -1.375,
          -1.125,
          -0.875,
          -0.625,
          -0.375,
          -0.125
        ],
        "clip_lo": -4.0,
        "clip_hi": 0.0
      },
      "timestamp_min": 1597503600000,
      "timestamp_max": 1785441600000,
      "timestamp_min_iso": "2020-08-15T15:00:00Z",
      "timestamp_max_iso": "2026-07-30T20:00:00Z"
    },
    {
      "pattern_type": "inverted_cup_and_handle",
      "pattern_name": "Inverted Cup & Handle",
      "timeframe": "1h",
      "bias": "bearish",
      "n": 75,
      "n_symbols": 72,
      "breakout_success_rate": 25.33,
      "breakdown_success_rate": 73.33,
      "sideways_rate": 1.34,
      "forming_rate": 0.0,
      "both_cleared_rate": 34.67,
      "breakout_success_rate_ci95": [
        16.86,
        36.21
      ],
      "breakdown_success_rate_ci95": [
        62.37,
        82.02
      ],
      "sideways_rate_ci95": [
        0.24,
        7.17
      ],
      "forming_rate_ci95": [
        0.0,
        4.87
      ],
      "both_sides_rate": 34.67,
      "expected_hit_rate": 73.33,
      "expected_hit_rate_ci95": [
        62.37,
        82.02
      ],
      "mean_ret_10c": -1.458,
      "median_ret_10c": -0.869,
      "std_ret_10c": 4.508,
      "win_rate_ret_gt0": 38.67,
      "p25_ret_10c": -4.278,
      "p75_ret_10c": 1.597,
      "mean_mfe": 2.596,
      "mean_mae": -4.707,
      "mfe_mae_ratio": 0.552,
      "max_up_natr": {
        "n": 75,
        "mean": 1.437,
        "median": 0.888,
        "p25": 0.353,
        "p75": 2.226,
        "hist": {
          "bin_edges": [
            0.0,
            0.25,
            0.5,
            0.75,
            1.0,
            1.25,
            1.5,
            1.75,
            2.0,
            2.25,
            2.5,
            2.75,
            3.0,
            3.25,
            3.5,
            3.75,
            4.0
          ],
          "counts": [
            14,
            12,
            9,
            3,
            6,
            3,
            2,
            5,
            2,
            4,
            1,
            0,
            3,
            5,
            1,
            5
          ],
          "bin_centers": [
            0.125,
            0.375,
            0.625,
            0.875,
            1.125,
            1.375,
            1.625,
            1.875,
            2.125,
            2.375,
            2.625,
            2.875,
            3.125,
            3.375,
            3.625,
            3.875
          ],
          "clip_lo": 0.0,
          "clip_hi": 4.0
        }
      },
      "max_down_natr": {
        "n": 75,
        "mean": -2.808,
        "median": -2.278,
        "p25": -3.883,
        "p75": -1.306,
        "hist": {
          "bin_edges": [
            -4.0,
            -3.75,
            -3.5,
            -3.25,
            -3.0,
            -2.75,
            -2.5,
            -2.25,
            -2.0,
            -1.75,
            -1.5,
            -1.25,
            -1.0,
            -0.75,
            -0.5,
            -0.25,
            0.0
          ],
          "counts": [
            22,
            2,
            3,
            3,
            0,
            4,
            6,
            3,
            4,
            7,
            3,
            7,
            4,
            4,
            1,
            2
          ],
          "bin_centers": [
            -3.875,
            -3.625,
            -3.375,
            -3.125,
            -2.875,
            -2.625,
            -2.375,
            -2.125,
            -1.875,
            -1.625,
            -1.375,
            -1.125,
            -0.875,
            -0.625,
            -0.375,
            -0.125
          ],
          "clip_lo": -4.0,
          "clip_hi": 0.0
        }
      },
      "median_max_up_natr": 0.888,
      "median_max_down_natr": -2.278,
      "mean_max_up_natr": 1.437,
      "mean_max_down_natr": -2.808,
      "p25_max_up_natr": 0.353,
      "p75_max_up_natr": 2.226,
      "p25_max_down_natr": -3.883,
      "p75_max_down_natr": -1.306,
      "outcome_natr_moves": {
        "breakout": {
          "n": 19,
          "max_up_natr": {
            "n": 19,
            "mean": 2.18,
            "median": 2.087,
            "p25": 1.162,
            "p75": 2.588,
            "hist": {
              "bin_edges": [
                0.0,
                0.25,
                0.5,
                0.75,
                1.0,
                1.25,
                1.5,
                1.75,
                2.0,
                2.25,
                2.5,
                2.75,
                3.0,
                3.25,
                3.5,
                3.75,
                4.0
              ],
              "counts": [
                0,
                0,
                1,
                1,
                4,
                1,
                0,
                2,
                1,
                4,
                1,
                0,
                0,
                2,
                1,
                1
              ],
              "bin_centers": [
                0.125,
                0.375,
                0.625,
                0.875,
                1.125,
                1.375,
                1.625,
                1.875,
                2.125,
                2.375,
                2.625,
                2.875,
                3.125,
                3.375,
                3.625,
                3.875
              ],
              "clip_lo": 0.0,
              "clip_hi": 4.0
            }
          },
          "max_down_natr": {
            "n": 19,
            "mean": -1.45,
            "median": -0.808,
            "p25": -2.155,
            "p75": -0.65,
            "hist": {
              "bin_edges": [
                -4.0,
                -3.75,
                -3.5,
                -3.25,
                -3.0,
                -2.75,
                -2.5,
                -2.25,
                -2.0,
                -1.75,
                -1.5,
                -1.25,
                -1.0,
                -0.75,
                -0.5,
                -0.25,
                0.0
              ],
              "counts": [
                2,
                1,
                0,
                0,
                0,
                0,
                2,
                1,
                0,
                2,
                0,
                1,
                3,
                4,
                1,
                2
              ],
              "bin_centers": [
                -3.875,
                -3.625,
                -3.375,
                -3.125,
                -2.875,
                -2.625,
                -2.375,
                -2.125,
                -1.875,
                -1.625,
                -1.375,
                -1.125,
                -0.875,
                -0.625,
                -0.375,
                -0.125
              ],
              "clip_lo": -4.0,
              "clip_hi": 0.0
            }
          }
        },
        "breakdown": {
          "n": 55,
          "max_up_natr": {
            "n": 55,
            "mean": 1.198,
            "median": 0.657,
            "p25": 0.254,
            "p75": 1.782,
            "hist": {
              "bin_edges": [
                0.0,
                0.25,
                0.5,
                0.75,
                1.0,
                1.25,
                1.5,
                1.75,
                2.0,
                2.25,
                2.5,
                2.75,
                3.0,
                3.25,
                3.5,
                3.75,
                4.0
              ],
              "counts": [
                14,
                11,
                8,
                2,
                2,
                2,
                2,
                3,
                1,
                0,
                0,
                0,
                3,
                3,
                0,
                4
              ],
              "bin_centers": [
                0.125,
                0.375,
                0.625,
                0.875,
                1.125,
                1.375,
                1.625,
                1.875,
                2.125,
                2.375,
                2.625,
                2.875,
                3.125,
                3.375,
                3.625,
                3.875
              ],
              "clip_lo": 0.0,
              "clip_hi": 4.0
            }
          },
          "max_down_natr": {
            "n": 55,
            "mean": -3.309,
            "median": -2.713,
            "p25": -4.416,
            "p75": -1.76,
            "hist": {
              "bin_edges": [
                -4.0,
                -3.75,
                -3.5,
                -3.25,
                -3.0,
                -2.75,
                -2.5,
                -2.25,
                -2.0,
                -1.75,
                -1.5,
                -1.25,
                -1.0,
                -0.75,
                -0.5,
                -0.25,
                0.0
              ],
              "counts": [
                20,
                1,
                3,
                3,
                0,
                4,
                4,
                2,
                4,
                5,
                3,
                5,
                1,
                0,
                0,
                0
              ],
              "bin_centers": [
                -3.875,
                -3.625,
                -3.375,
                -3.125,
                -2.875,
                -2.625,
                -2.375,
                -2.125,
                -1.875,
                -1.625,
                -1.375,
                -1.125,
                -0.875,
                -0.625,
                -0.375,
                -0.125
              ],
              "clip_lo": -4.0,
              "clip_hi": 0.0
            }
          }
        },
        "sideways": {
          "n": 1,
          "max_up_natr": {
            "n": 1,
            "mean": 0.475,
            "median": 0.475,
            "p25": 0.475,
            "p75": 0.475
          },
          "max_down_natr": {
            "n": 1,
            "mean": -1.024,
            "median": -1.024,
            "p25": -1.024,
            "p75": -1.024
          }
        },
        "forming": {
          "n": 0,
          "max_up_natr": {
            "n": 0,
            "mean": null,
            "median": null,
            "p25": null,
            "p75": null
          },
          "max_down_natr": {
            "n": 0,
            "mean": null,
            "median": null,
            "p25": null,
            "p75": null
          }
        }
      },
      "max_up_natr_hist": {
        "bin_edges": [
          0.0,
          0.25,
          0.5,
          0.75,
          1.0,
          1.25,
          1.5,
          1.75,
          2.0,
          2.25,
          2.5,
          2.75,
          3.0,
          3.25,
          3.5,
          3.75,
          4.0
        ],
        "counts": [
          14,
          12,
          9,
          3,
          6,
          3,
          2,
          5,
          2,
          4,
          1,
          0,
          3,
          5,
          1,
          5
        ],
        "bin_centers": [
          0.125,
          0.375,
          0.625,
          0.875,
          1.125,
          1.375,
          1.625,
          1.875,
          2.125,
          2.375,
          2.625,
          2.875,
          3.125,
          3.375,
          3.625,
          3.875
        ],
        "clip_lo": 0.0,
        "clip_hi": 4.0
      },
      "max_down_natr_hist": {
        "bin_edges": [
          -4.0,
          -3.75,
          -3.5,
          -3.25,
          -3.0,
          -2.75,
          -2.5,
          -2.25,
          -2.0,
          -1.75,
          -1.5,
          -1.25,
          -1.0,
          -0.75,
          -0.5,
          -0.25,
          0.0
        ],
        "counts": [
          22,
          2,
          3,
          3,
          0,
          4,
          6,
          3,
          4,
          7,
          3,
          7,
          4,
          4,
          1,
          2
        ],
        "bin_centers": [
          -3.875,
          -3.625,
          -3.375,
          -3.125,
          -2.875,
          -2.625,
          -2.375,
          -2.125,
          -1.875,
          -1.625,
          -1.375,
          -1.125,
          -0.875,
          -0.625,
          -0.375,
          -0.125
        ],
        "clip_lo": -4.0,
        "clip_hi": 0.0
      },
      "timestamp_min": 1602594000000,
      "timestamp_max": 1785121200000,
      "timestamp_min_iso": "2020-10-13T13:00:00Z",
      "timestamp_max_iso": "2026-07-27T03:00:00Z"
    },
    {
      "pattern_type": "channel_descending",
      "pattern_name": "Descending Channel",
      "timeframe": "1h",
      "bias": "bullish",
      "n": 1467,
      "n_symbols": 483,
      "breakout_success_rate": 73.21,
      "breakdown_success_rate": 22.43,
      "sideways_rate": 4.36,
      "forming_rate": 0.0,
      "both_cleared_rate": 38.38,
      "breakout_success_rate_ci95": [
        70.89,
        75.41
      ],
      "breakdown_success_rate_ci95": [
        20.37,
        24.63
      ],
      "sideways_rate_ci95": [
        3.43,
        5.53
      ],
      "forming_rate_ci95": [
        0.0,
        0.26
      ],
      "both_sides_rate": 38.38,
      "expected_hit_rate": 73.21,
      "expected_hit_rate_ci95": [
        70.89,
        75.41
      ],
      "mean_ret_10c": 0.466,
      "median_ret_10c": 0.646,
      "std_ret_10c": 5.609,
      "win_rate_ret_gt0": 57.4,
      "p25_ret_10c": -1.962,
      "p75_ret_10c": 3.143,
      "mean_mfe": 4.43,
      "mean_mae": -3.717,
      "mfe_mae_ratio": 1.192,
      "max_up_natr": {
        "n": 1467,
        "mean": 2.998,
        "median": 2.397,
        "p25": 1.183,
        "p75": 3.842,
        "hist": {
          "bin_edges": [
            0.0,
            0.25,
            0.5,
            0.75,
            1.0,
            1.25,
            1.5,
            1.75,
            2.0,
            2.25,
            2.5,
            2.75,
            3.0,
            3.25,
            3.5,
            3.75,
            4.0
          ],
          "counts": [
            88,
            71,
            58,
            89,
            78,
            78,
            67,
            83,
            88,
            63,
            59,
            86,
            61,
            71,
            41,
            386
          ],
          "bin_centers": [
            0.125,
            0.375,
            0.625,
            0.875,
            1.125,
            1.375,
            1.625,
            1.875,
            2.125,
            2.375,
            2.625,
            2.875,
            3.125,
            3.375,
            3.625,
            3.875
          ],
          "clip_lo": 0.0,
          "clip_hi": 4.0
        }
      },
      "max_down_natr": {
        "n": 1467,
        "mean": -2.554,
        "median": -1.384,
        "p25": -3.238,
        "p75": -0.362,
        "hist": {
          "bin_edges": [
            -4.0,
            -3.75,
            -3.5,
            -3.25,
            -3.0,
            -2.75,
            -2.5,
            -2.25,
            -2.0,
            -1.75,
            -1.5,
            -1.25,
            -1.0,
            -0.75,
            -0.5,
            -0.25,
            0.0
          ],
          "counts": [
            313,
            27,
            26,
            41,
            28,
            52,
            48,
            55,
            49,
            68,
            67,
            86,
            78,
            95,
            138,
            296
          ],
          "bin_centers": [
            -3.875,
            -3.625,
            -3.375,
            -3.125,
            -2.875,
            -2.625,
            -2.375,
            -2.125,
            -1.875,
            -1.625,
            -1.375,
            -1.125,
            -0.875,
            -0.625,
            -0.375,
            -0.125
          ],
          "clip_lo": -4.0,
          "clip_hi": 0.0
        }
      },
      "median_max_up_natr": 2.397,
      "median_max_down_natr": -1.384,
      "mean_max_up_natr": 2.998,
      "mean_max_down_natr": -2.554,
      "p25_max_up_natr": 1.183,
      "p75_max_up_natr": 3.842,
      "p25_max_down_natr": -3.238,
      "p75_max_down_natr": -0.362,
      "outcome_natr_moves": {
        "breakout": {
          "n": 1074,
          "max_up_natr": {
            "n": 1074,
            "mean": 3.509,
            "median": 2.86,
            "p25": 1.81,
            "p75": 4.276,
            "hist": {
              "bin_edges": [
                0.0,
                0.25,
                0.5,
                0.75,
                1.0,
                1.25,
                1.5,
                1.75,
                2.0,
                2.25,
                2.5,
                2.75,
                3.0,
                3.25,
                3.5,
                3.75,
                4.0
              ],
              "counts": [
                0,
                0,
                16,
                55,
                62,
                63,
                59,
                64,
                75,
                57,
                48,
                76,
                55,
                65,
                39,
                340
              ],
              "bin_centers": [
                0.125,
                0.375,
                0.625,
                0.875,
                1.125,
                1.375,
                1.625,
                1.875,
                2.125,
                2.375,
                2.625,
                2.875,
                3.125,
                3.375,
                3.625,
                3.875
              ],
              "clip_lo": 0.0,
              "clip_hi": 4.0
            }
          },
          "max_down_natr": {
            "n": 1074,
            "mean": -1.594,
            "median": -0.771,
            "p25": -1.993,
            "p75": -0.206,
            "hist": {
              "bin_edges": [
                -4.0,
                -3.75,
                -3.5,
                -3.25,
                -3.0,
                -2.75,
                -2.5,
                -2.25,
                -2.0,
                -1.75,
                -1.5,
                -1.25,
                -1.0,
                -0.75,
                -0.5,
                -0.25,
                0.0
              ],
              "counts": [
                116,
                17,
                14,
                18,
                11,
                32,
                26,
                34,
                34,
                50,
                44,
                78,
                73,
                94,
                137,
                296
              ],
              "bin_centers": [
                -3.875,
                -3.625,
                -3.375,
                -3.125,
                -2.875,
                -2.625,
                -2.375,
                -2.125,
                -1.875,
                -1.625,
                -1.375,
                -1.125,
                -0.875,
                -0.625,
                -0.375,
                -0.125
              ],
              "clip_lo": -4.0,
              "clip_hi": 0.0
            }
          }
        },
        "breakdown": {
          "n": 329,
          "max_up_natr": {
            "n": 329,
            "mean": 1.76,
            "median": 0.785,
            "p25": 0.234,
            "p75": 2.476,
            "hist": {
              "bin_edges": [
                0.0,
                0.25,
                0.5,
                0.75,
                1.0,
                1.25,
                1.5,
                1.75,
                2.0,
                2.25,
                2.5,
                2.75,
                3.0,
                3.25,
                3.5,
                3.75,
                4.0
              ],
              "counts": [
                87,
                56,
                19,
                20,
                13,
                13,
                5,
                18,
                12,
                6,
                11,
                10,
                6,
                5,
                2,
                46
              ],
              "bin_centers": [
                0.125,
                0.375,
                0.625,
                0.875,
                1.125,
                1.375,
                1.625,
                1.875,
                2.125,
                2.375,
                2.625,
                2.875,
                3.125,
                3.375,
                3.625,
                3.875
              ],
              "clip_lo": 0.0,
              "clip_hi": 4.0
            }
          },
          "max_down_natr": {
            "n": 329,
            "mean": -5.707,
            "median": -4.193,
            "p25": -7.05,
            "p75": -2.525,
            "hist": {
              "bin_edges": [
                -4.0,
                -3.75,
                -3.5,
                -3.25,
                -3.0,
                -2.75,
                -2.5,
                -2.25,
                -2.0,
                -1.75,
                -1.5,
                -1.25,
                -1.0,
                -0.75,
                -0.5,
                -0.25,
                0.0
              ],
              "counts": [
                191,
                4,
                9,
                16,
                12,
                17,
                17,
                18,
                7,
                15,
                19,
                2,
                2,
                0,
                0,
                0
              ],
              "bin_centers": [
                -3.875,
                -3.625,
                -3.375,
                -3.125,
                -2.875,
                -2.625,
                -2.375,
                -2.125,
                -1.875,
                -1.625,
                -1.375,
                -1.125,
                -0.875,
                -0.625,
                -0.375,
                -0.125
              ],
              "clip_lo": -4.0,
              "clip_hi": 0.0
            }
          }
        },
        "sideways": {
          "n": 64,
          "max_up_natr": {
            "n": 64,
            "mean": 0.786,
            "median": 0.636,
            "p25": 0.501,
            "p75": 0.916,
            "hist": {
              "bin_edges": [
                0.0,
                0.25,
                0.5,
                0.75,
                1.0,
                1.25,
                1.5,
                1.75,
                2.0,
                2.25,
                2.5,
                2.75,
                3.0,
                3.25,
                3.5,
                3.75,
                4.0
              ],
              "counts": [
                1,
                15,
                23,
                14,
                3,
                2,
                3,
                1,
                1,
                0,
                0,
                0,
                0,
                1,
                0,
                0
              ],
              "bin_centers": [
                0.125,
                0.375,
                0.625,
                0.875,
                1.125,
                1.375,
                1.625,
                1.875,
                2.125,
                2.375,
                2.625,
                2.875,
                3.125,
                3.375,
                3.625,
                3.875
              ],
              "clip_lo": 0.0,
              "clip_hi": 4.0
            }
          },
          "max_down_natr": {
            "n": 64,
            "mean": -2.445,
            "median": -2.424,
            "p25": -3.191,
            "p75": -1.578,
            "hist": {
              "bin_edges": [
                -4.0,
                -3.75,
                -3.5,
                -3.25,
                -3.0,
                -2.75,
                -2.5,
                -2.25,
                -2.0,
                -1.75,
                -1.5,
                -1.25,
                -1.0,
                -0.75,
                -0.5,
                -0.25,
                0.0
              ],
              "counts": [
                6,
                6,
                3,
                7,
                5,
                3,
                5,
                3,
                8,
                3,
                4,
                6,
                3,
                1,
                1,
                0
              ],
              "bin_centers": [
                -3.875,
                -3.625,
                -3.375,
                -3.125,
                -2.875,
                -2.625,
                -2.375,
                -2.125,
                -1.875,
                -1.625,
                -1.375,
                -1.125,
                -0.875,
                -0.625,
                -0.375,
                -0.125
              ],
              "clip_lo": -4.0,
              "clip_hi": 0.0
            }
          }
        },
        "forming": {
          "n": 0,
          "max_up_natr": {
            "n": 0,
            "mean": null,
            "median": null,
            "p25": null,
            "p75": null
          },
          "max_down_natr": {
            "n": 0,
            "mean": null,
            "median": null,
            "p25": null,
            "p75": null
          }
        }
      },
      "max_up_natr_hist": {
        "bin_edges": [
          0.0,
          0.25,
          0.5,
          0.75,
          1.0,
          1.25,
          1.5,
          1.75,
          2.0,
          2.25,
          2.5,
          2.75,
          3.0,
          3.25,
          3.5,
          3.75,
          4.0
        ],
        "counts": [
          88,
          71,
          58,
          89,
          78,
          78,
          67,
          83,
          88,
          63,
          59,
          86,
          61,
          71,
          41,
          386
        ],
        "bin_centers": [
          0.125,
          0.375,
          0.625,
          0.875,
          1.125,
          1.375,
          1.625,
          1.875,
          2.125,
          2.375,
          2.625,
          2.875,
          3.125,
          3.375,
          3.625,
          3.875
        ],
        "clip_lo": 0.0,
        "clip_hi": 4.0
      },
      "max_down_natr_hist": {
        "bin_edges": [
          -4.0,
          -3.75,
          -3.5,
          -3.25,
          -3.0,
          -2.75,
          -2.5,
          -2.25,
          -2.0,
          -1.75,
          -1.5,
          -1.25,
          -1.0,
          -0.75,
          -0.5,
          -0.25,
          0.0
        ],
        "counts": [
          313,
          27,
          26,
          41,
          28,
          52,
          48,
          55,
          49,
          68,
          67,
          86,
          78,
          95,
          138,
          296
        ],
        "bin_centers": [
          -3.875,
          -3.625,
          -3.375,
          -3.125,
          -2.875,
          -2.625,
          -2.375,
          -2.125,
          -1.875,
          -1.625,
          -1.375,
          -1.125,
          -0.875,
          -0.625,
          -0.375,
          -0.125
        ],
        "clip_lo": -4.0,
        "clip_hi": 0.0
      },
      "timestamp_min": 1582675200000,
      "timestamp_max": 1785466800000,
      "timestamp_min_iso": "2020-02-26T00:00:00Z",
      "timestamp_max_iso": "2026-07-31T03:00:00Z"
    },
    {
      "pattern_type": "rising_wedge",
      "pattern_name": "Rising Wedge",
      "timeframe": "1h",
      "bias": "bearish",
      "n": 7901,
      "n_symbols": 631,
      "breakout_success_rate": 25.41,
      "breakdown_success_rate": 73.07,
      "sideways_rate": 1.52,
      "forming_rate": 0.0,
      "both_cleared_rate": 39.22,
      "breakout_success_rate_ci95": [
        24.47,
        26.39
      ],
      "breakdown_success_rate_ci95": [
        72.08,
        74.03
      ],
      "sideways_rate_ci95": [
        1.27,
        1.81
      ],
      "forming_rate_ci95": [
        0.0,
        0.05
      ],
      "both_sides_rate": 39.22,
      "expected_hit_rate": 73.07,
      "expected_hit_rate_ci95": [
        72.08,
        74.03
      ],
      "mean_ret_10c": -0.484,
      "median_ret_10c": -0.83,
      "std_ret_10c": 5.547,
      "win_rate_ret_gt0": 40.65,
      "p25_ret_10c": -3.32,
      "p75_ret_10c": 1.795,
      "mean_mfe": 3.671,
      "mean_mae": -4.414,
      "mfe_mae_ratio": 0.832,
      "max_up_natr": {
        "n": 7901,
        "mean": 2.409,
        "median": 1.322,
        "p25": 0.329,
        "p75": 3.227,
        "hist": {
          "bin_edges": [
            0.0,
            0.25,
            0.5,
            0.75,
            1.0,
            1.25,
            1.5,
            1.75,
            2.0,
            2.25,
            2.5,
            2.75,
            3.0,
            3.25,
            3.5,
            3.75,
            4.0
          ],
          "counts": [
            1682,
            811,
            522,
            450,
            368,
            381,
            332,
            289,
            282,
            226,
            217,
            190,
            204,
            162,
            130,
            1655
          ],
          "bin_centers": [
            0.125,
            0.375,
            0.625,
            0.875,
            1.125,
            1.375,
            1.625,
            1.875,
            2.125,
            2.375,
            2.625,
            2.875,
            3.125,
            3.375,
            3.625,
            3.875
          ],
          "clip_lo": 0.0,
          "clip_hi": 4.0
        }
      },
      "max_down_natr": {
        "n": 7901,
        "mean": -2.882,
        "median": -2.529,
        "p25": -3.899,
        "p75": -1.414,
        "hist": {
          "bin_edges": [
            -4.0,
            -3.75,
            -3.5,
            -3.25,
            -3.0,
            -2.75,
            -2.5,
            -2.25,
            -2.0,
            -1.75,
            -1.5,
            -1.25,
            -1.0,
            -0.75,
            -0.5,
            -0.25,
            0.0
          ],
          "counts": [
            2136,
            282,
            331,
            404,
            417,
            428,
            492,
            455,
            446,
            400,
            383,
            356,
            291,
            249,
            305,
            526
          ],
          "bin_centers": [
            -3.875,
            -3.625,
            -3.375,
            -3.125,
            -2.875,
            -2.625,
            -2.375,
            -2.125,
            -1.875,
            -1.625,
            -1.375,
            -1.125,
            -0.875,
            -0.625,
            -0.375,
            -0.125
          ],
          "clip_lo": -4.0,
          "clip_hi": 0.0
        }
      },
      "median_max_up_natr": 1.322,
      "median_max_down_natr": -2.529,
      "mean_max_up_natr": 2.409,
      "mean_max_down_natr": -2.882,
      "p25_max_up_natr": 0.329,
      "p75_max_up_natr": 3.227,
      "p25_max_down_natr": -3.899,
      "p75_max_down_natr": -1.414,
      "outcome_natr_moves": {
        "breakout": {
          "n": 2008,
          "max_up_natr": {
            "n": 2008,
            "mean": 5.196,
            "median": 3.961,
            "p25": 2.478,
            "p75": 6.17,
            "hist": {
              "bin_edges": [
                0.0,
                0.25,
                0.5,
                0.75,
                1.0,
                1.25,
                1.5,
                1.75,
                2.0,
                2.25,
                2.5,
                2.75,
                3.0,
                3.25,
                3.5,
                3.75,
                4.0
              ],
              "counts": [
                0,
                0,
                9,
                22,
                46,
                73,
                91,
                81,
                99,
                91,
                80,
                88,
                108,
                83,
                66,
                1071
              ],
              "bin_centers": [
                0.125,
                0.375,
                0.625,
                0.875,
                1.125,
                1.375,
                1.625,
                1.875,
                2.125,
                2.375,
                2.625,
                2.875,
                3.125,
                3.375,
                3.625,
                3.875
              ],
              "clip_lo": 0.0,
              "clip_hi": 4.0
            }
          },
          "max_down_natr": {
            "n": 2008,
            "mean": -1.528,
            "median": -0.775,
            "p25": -2.256,
            "p75": -0.232,
            "hist": {
              "bin_edges": [
                -4.0,
                -3.75,
                -3.5,
                -3.25,
                -3.0,
                -2.75,
                -2.5,
                -2.25,
                -2.0,
                -1.75,
                -1.5,
                -1.25,
                -1.0,
                -0.75,
                -0.5,
                -0.25,
                0.0
              ],
              "counts": [
                220,
                39,
                30,
                55,
                46,
                52,
                64,
                70,
                69,
                87,
                73,
                99,
                121,
                179,
                280,
                524
              ],
              "bin_centers": [
                -3.875,
                -3.625,
                -3.375,
                -3.125,
                -2.875,
                -2.625,
                -2.375,
                -2.125,
                -1.875,
                -1.625,
                -1.375,
                -1.125,
                -0.875,
                -0.625,
                -0.375,
                -0.125
              ],
              "clip_lo": -4.0,
              "clip_hi": 0.0
            }
          }
        },
        "breakdown": {
          "n": 5773,
          "max_up_natr": {
            "n": 5773,
            "mean": 1.454,
            "median": 0.696,
            "p25": 0.203,
            "p75": 1.858,
            "hist": {
              "bin_edges": [
                0.0,
                0.25,
                0.5,
                0.75,
                1.0,
                1.25,
                1.5,
                1.75,
                2.0,
                2.25,
                2.5,
                2.75,
                3.0,
                3.25,
                3.5,
                3.75,
                4.0
              ],
              "counts": [
                1682,
                808,
                506,
                414,
                308,
                291,
                227,
                198,
                166,
                129,
                129,
                100,
                93,
                78,
                64,
                580
              ],
              "bin_centers": [
                0.125,
                0.375,
                0.625,
                0.875,
                1.125,
                1.375,
                1.625,
                1.875,
                2.125,
                2.375,
                2.625,
                2.875,
                3.125,
                3.375,
                3.625,
                3.875
              ],
              "clip_lo": 0.0,
              "clip_hi": 4.0
            }
          },
          "max_down_natr": {
            "n": 5773,
            "mean": -3.394,
            "median": -2.945,
            "p25": -4.255,
            "p75": -2.021,
            "hist": {
              "bin_edges": [
                -4.0,
                -3.75,
                -3.5,
                -3.25,
                -3.0,
                -2.75,
                -2.5,
                -2.25,
                -2.0,
                -1.75,
                -1.5,
                -1.25,
                -1.0,
                -0.75,
                -0.5,
                -0.25,
                0.0
              ],
              "counts": [
                1916,
                243,
                301,
                349,
                370,
                375,
                428,
                378,
                376,
                307,
                299,
                247,
                147,
                37,
                0,
                0
              ],
              "bin_centers": [
                -3.875,
                -3.625,
                -3.375,
                -3.125,
                -2.875,
                -2.625,
                -2.375,
                -2.125,
                -1.875,
                -1.625,
                -1.375,
                -1.125,
                -0.875,
                -0.625,
                -0.375,
                -0.125
              ],
              "clip_lo": -4.0,
              "clip_hi": 0.0
            }
          }
        },
        "sideways": {
          "n": 120,
          "max_up_natr": {
            "n": 120,
            "mean": 1.712,
            "median": 1.591,
            "p25": 1.102,
            "p75": 2.175,
            "hist": {
              "bin_edges": [
                0.0,
                0.25,
                0.5,
                0.75,
                1.0,
                1.25,
                1.5,
                1.75,
                2.0,
                2.25,
                2.5,
                2.75,
                3.0,
                3.25,
                3.5,
                3.75,
                4.0
              ],
              "counts": [
                0,
                3,
                7,
                14,
                14,
                17,
                14,
                10,
                17,
                6,
                8,
                2,
                3,
                1,
                0,
                4
              ],
              "bin_centers": [
                0.125,
                0.375,
                0.625,
                0.875,
                1.125,
                1.375,
                1.625,
                1.875,
                2.125,
                2.375,
                2.625,
                2.875,
                3.125,
                3.375,
                3.625,
                3.875
              ],
              "clip_lo": 0.0,
              "clip_hi": 4.0
            }
          },
          "max_down_natr": {
            "n": 120,
            "mean": -0.899,
            "median": -0.753,
            "p25": -1.167,
            "p75": -0.545,
            "hist": {
              "bin_edges": [
                -4.0,
                -3.75,
                -3.5,
                -3.25,
                -3.0,
                -2.75,
                -2.5,
                -2.25,
                -2.0,
                -1.75,
                -1.5,
                -1.25,
                -1.0,
                -0.75,
                -0.5,
                -0.25,
                0.0
              ],
              "counts": [
                0,
                0,
                0,
                0,
                1,
                1,
                0,
                7,
                1,
                6,
                11,
                10,
                23,
                33,
                25,
                2
              ],
              "bin_centers": [
                -3.875,
                -3.625,
                -3.375,
                -3.125,
                -2.875,
                -2.625,
                -2.375,
                -2.125,
                -1.875,
                -1.625,
                -1.375,
                -1.125,
                -0.875,
                -0.625,
                -0.375,
                -0.125
              ],
              "clip_lo": -4.0,
              "clip_hi": 0.0
            }
          }
        },
        "forming": {
          "n": 0,
          "max_up_natr": {
            "n": 0,
            "mean": null,
            "median": null,
            "p25": null,
            "p75": null
          },
          "max_down_natr": {
            "n": 0,
            "mean": null,
            "median": null,
            "p25": null,
            "p75": null
          }
        }
      },
      "max_up_natr_hist": {
        "bin_edges": [
          0.0,
          0.25,
          0.5,
          0.75,
          1.0,
          1.25,
          1.5,
          1.75,
          2.0,
          2.25,
          2.5,
          2.75,
          3.0,
          3.25,
          3.5,
          3.75,
          4.0
        ],
        "counts": [
          1682,
          811,
          522,
          450,
          368,
          381,
          332,
          289,
          282,
          226,
          217,
          190,
          204,
          162,
          130,
          1655
        ],
        "bin_centers": [
          0.125,
          0.375,
          0.625,
          0.875,
          1.125,
          1.375,
          1.625,
          1.875,
          2.125,
          2.375,
          2.625,
          2.875,
          3.125,
          3.375,
          3.625,
          3.875
        ],
        "clip_lo": 0.0,
        "clip_hi": 4.0
      },
      "max_down_natr_hist": {
        "bin_edges": [
          -4.0,
          -3.75,
          -3.5,
          -3.25,
          -3.0,
          -2.75,
          -2.5,
          -2.25,
          -2.0,
          -1.75,
          -1.5,
          -1.25,
          -1.0,
          -0.75,
          -0.5,
          -0.25,
          0.0
        ],
        "counts": [
          2136,
          282,
          331,
          404,
          417,
          428,
          492,
          455,
          446,
          400,
          383,
          356,
          291,
          249,
          305,
          526
        ],
        "bin_centers": [
          -3.875,
          -3.625,
          -3.375,
          -3.125,
          -2.875,
          -2.625,
          -2.375,
          -2.125,
          -1.875,
          -1.625,
          -1.375,
          -1.125,
          -0.875,
          -0.625,
          -0.375,
          -0.125
        ],
        "clip_lo": -4.0,
        "clip_hi": 0.0
      },
      "timestamp_min": 1579428000000,
      "timestamp_max": 1785391200000,
      "timestamp_min_iso": "2020-01-19T10:00:00Z",
      "timestamp_max_iso": "2026-07-30T06:00:00Z"
    },
    {
      "pattern_type": "triple_bottom",
      "pattern_name": "Triple Bottom",
      "timeframe": "1h",
      "bias": "bullish",
      "n": 141,
      "n_symbols": 119,
      "breakout_success_rate": 73.05,
      "breakdown_success_rate": 10.64,
      "sideways_rate": 16.31,
      "forming_rate": 0.0,
      "both_cleared_rate": 24.82,
      "breakout_success_rate_ci95": [
        65.19,
        79.69
      ],
      "breakdown_success_rate_ci95": [
        6.55,
        16.81
      ],
      "sideways_rate_ci95": [
        11.12,
        23.29
      ],
      "forming_rate_ci95": [
        0.0,
        2.65
      ],
      "both_sides_rate": 24.82,
      "expected_hit_rate": 73.05,
      "expected_hit_rate_ci95": [
        65.19,
        79.69
      ],
      "mean_ret_10c": 2.566,
      "median_ret_10c": 0.681,
      "std_ret_10c": 9.022,
      "win_rate_ret_gt0": 58.16,
      "p25_ret_10c": -1.012,
      "p75_ret_10c": 4.077,
      "mean_mfe": 7.353,
      "mean_mae": -2.444,
      "mfe_mae_ratio": 3.009,
      "max_up_natr": {
        "n": 141,
        "mean": 2.955,
        "median": 1.95,
        "p25": 1.098,
        "p75": 3.39,
        "hist": {
          "bin_edges": [
            0.0,
            0.25,
            0.5,
            0.75,
            1.0,
            1.25,
            1.5,
            1.75,
            2.0,
            2.25,
            2.5,
            2.75,
            3.0,
            3.25,
            3.5,
            3.75,
            4.0
          ],
          "counts": [
            5,
            11,
            5,
            11,
            13,
            5,
            10,
            11,
            11,
            5,
            2,
            8,
            5,
            6,
            3,
            30
          ],
          "bin_centers": [
            0.125,
            0.375,
            0.625,
            0.875,
            1.125,
            1.375,
            1.625,
            1.875,
            2.125,
            2.375,
            2.625,
            2.875,
            3.125,
            3.375,
            3.625,
            3.875
          ],
          "clip_lo": 0.0,
          "clip_hi": 4.0
        }
      },
      "max_down_natr": {
        "n": 141,
        "mean": -1.146,
        "median": -0.842,
        "p25": -1.6,
        "p75": -0.372,
        "hist": {
          "bin_edges": [
            -4.0,
            -3.75,
            -3.5,
            -3.25,
            -3.0,
            -2.75,
            -2.5,
            -2.25,
            -2.0,
            -1.75,
            -1.5,
            -1.25,
            -1.0,
            -0.75,
            -0.5,
            -0.25,
            0.0
          ],
          "counts": [
            5,
            1,
            0,
            2,
            2,
            4,
            4,
            6,
            7,
            10,
            9,
            11,
            19,
            18,
            17,
            26
          ],
          "bin_centers": [
            -3.875,
            -3.625,
            -3.375,
            -3.125,
            -2.875,
            -2.625,
            -2.375,
            -2.125,
            -1.875,
            -1.625,
            -1.375,
            -1.125,
            -0.875,
            -0.625,
            -0.375,
            -0.125
          ],
          "clip_lo": -4.0,
          "clip_hi": 0.0
        }
      },
      "median_max_up_natr": 1.95,
      "median_max_down_natr": -0.842,
      "mean_max_up_natr": 2.955,
      "mean_max_down_natr": -1.146,
      "p25_max_up_natr": 1.098,
      "p75_max_up_natr": 3.39,
      "p25_max_down_natr": -1.6,
      "p75_max_down_natr": -0.372,
      "outcome_natr_moves": {
        "breakout": {
          "n": 103,
          "max_up_natr": {
            "n": 103,
            "mean": 3.792,
            "median": 2.794,
            "p25": 1.825,
            "p75": 4.268,
            "hist": {
              "bin_edges": [
                0.0,
                0.25,
                0.5,
                0.75,
                1.0,
                1.25,
                1.5,
                1.75,
                2.0,
                2.25,
                2.5,
                2.75,
                3.0,
                3.25,
                3.5,
                3.75,
                4.0
              ],
              "counts": [
                0,
                0,
                0,
                2,
                8,
                4,
                9,
                10,
                11,
                5,
                2,
                8,
                5,
                6,
                3,
                30
              ],
              "bin_centers": [
                0.125,
                0.375,
                0.625,
                0.875,
                1.125,
                1.375,
                1.625,
                1.875,
                2.125,
                2.375,
                2.625,
                2.875,
                3.125,
                3.375,
                3.625,
                3.875
              ],
              "clip_lo": 0.0,
              "clip_hi": 4.0
            }
          },
          "max_down_natr": {
            "n": 103,
            "mean": -0.879,
            "median": -0.735,
            "p25": -1.372,
            "p75": -0.247,
            "hist": {
              "bin_edges": [
                -4.0,
                -3.75,
                -3.5,
                -3.25,
                -3.0,
                -2.75,
                -2.5,
                -2.25,
                -2.0,
                -1.75,
                -1.5,
                -1.25,
                -1.0,
                -0.75,
                -0.5,
                -0.25,
                0.0
              ],
              "counts": [
                1,
                1,
                0,
                1,
                0,
                1,
                2,
                3,
                4,
                7,
                7,
                6,
                15,
                16,
                13,
                26
              ],
              "bin_centers": [
                -3.875,
                -3.625,
                -3.375,
                -3.125,
                -2.875,
                -2.625,
                -2.375,
                -2.125,
                -1.875,
                -1.625,
                -1.375,
                -1.125,
                -0.875,
                -0.625,
                -0.375,
                -0.125
              ],
              "clip_lo": -4.0,
              "clip_hi": 0.0
            }
          }
        },
        "breakdown": {
          "n": 15,
          "max_up_natr": {
            "n": 15,
            "mean": 0.724,
            "median": 0.484,
            "p25": 0.362,
            "p75": 1.078,
            "hist": {
              "bin_edges": [
                0.0,
                0.25,
                0.5,
                0.75,
                1.0,
                1.25,
                1.5,
                1.75,
                2.0,
                2.25,
                2.5,
                2.75,
                3.0,
                3.25,
                3.5,
                3.75,
                4.0
              ],
              "counts": [
                3,
                5,
                0,
                3,
                2,
                0,
                1,
                1,
                0,
                0,
                0,
                0,
                0,
                0,
                0,
                0
              ],
              "bin_centers": [
                0.125,
                0.375,
                0.625,
                0.875,
                1.125,
                1.375,
                1.625,
                1.875,
                2.125,
                2.375,
                2.625,
                2.875,
                3.125,
                3.375,
                3.625,
                3.875
              ],
              "clip_lo": 0.0,
              "clip_hi": 4.0
            }
          },
          "max_down_natr": {
            "n": 15,
            "mean": -2.885,
            "median": -2.57,
            "p25": -3.565,
            "p75": -1.995,
            "hist": {
              "bin_edges": [
                -4.0,
                -3.75,
                -3.5,
                -3.25,
                -3.0,
                -2.75,
                -2.5,
                -2.25,
                -2.0,
                -1.75,
                -1.5,
                -1.25,
                -1.0,
                -0.75,
                -0.5,
                -0.25,
                0.0
              ],
              "counts": [
                4,
                0,
                0,
                1,
                2,
                2,
                1,
                1,
                2,
                1,
                0,
                1,
                0,
                0,
                0,
                0
              ],
              "bin_centers": [
                -3.875,
                -3.625,
                -3.375,
                -3.125,
                -2.875,
                -2.625,
                -2.375,
                -2.125,
                -1.875,
                -1.625,
                -1.375,
                -1.125,
                -0.875,
                -0.625,
                -0.375,
                -0.125
              ],
              "clip_lo": -4.0,
              "clip_hi": 0.0
            }
          }
        },
        "sideways": {
          "n": 23,
          "max_up_natr": {
            "n": 23,
            "mean": 0.664,
            "median": 0.621,
            "p25": 0.413,
            "p75": 0.911,
            "hist": {
              "bin_edges": [
                0.0,
                0.25,
                0.5,
                0.75,
                1.0,
                1.25,
                1.5,
                1.75,
                2.0,
                2.25,
                2.5,
                2.75,
                3.0,
                3.25,
                3.5,
                3.75,
                4.0
              ],
              "counts": [
                2,
                6,
                5,
                6,
                3,
                1,
                0,
                0,
                0,
                0,
                0,
                0,
                0,
                0,
                0,
                0
              ],
              "bin_centers": [
                0.125,
                0.375,
                0.625,
                0.875,
                1.125,
                1.375,
                1.625,
                1.875,
                2.125,
                2.375,
                2.625,
                2.875,
                3.125,
                3.375,
                3.625,
                3.875
              ],
              "clip_lo": 0.0,
              "clip_hi": 4.0
            }
          },
          "max_down_natr": {
            "n": 23,
            "mean": -1.206,
            "median": -1.098,
            "p25": -1.592,
            "p75": -0.768,
            "hist": {
              "bin_edges": [
                -4.0,
                -3.75,
                -3.5,
                -3.25,
                -3.0,
                -2.75,
                -2.5,
                -2.25,
                -2.0,
                -1.75,
                -1.5,
                -1.25,
                -1.0,
                -0.75,
                -0.5,
                -0.25,
                0.0
              ],
              "counts": [
                0,
                0,
                0,
                0,
                0,
                1,
                1,
                2,
                1,
                2,
                2,
                4,
                4,
                2,
                4,
                0
              ],
              "bin_centers": [
                -3.875,
                -3.625,
                -3.375,
                -3.125,
                -2.875,
                -2.625,
                -2.375,
                -2.125,
                -1.875,
                -1.625,
                -1.375,
                -1.125,
                -0.875,
                -0.625,
                -0.375,
                -0.125
              ],
              "clip_lo": -4.0,
              "clip_hi": 0.0
            }
          }
        },
        "forming": {
          "n": 0,
          "max_up_natr": {
            "n": 0,
            "mean": null,
            "median": null,
            "p25": null,
            "p75": null
          },
          "max_down_natr": {
            "n": 0,
            "mean": null,
            "median": null,
            "p25": null,
            "p75": null
          }
        }
      },
      "max_up_natr_hist": {
        "bin_edges": [
          0.0,
          0.25,
          0.5,
          0.75,
          1.0,
          1.25,
          1.5,
          1.75,
          2.0,
          2.25,
          2.5,
          2.75,
          3.0,
          3.25,
          3.5,
          3.75,
          4.0
        ],
        "counts": [
          5,
          11,
          5,
          11,
          13,
          5,
          10,
          11,
          11,
          5,
          2,
          8,
          5,
          6,
          3,
          30
        ],
        "bin_centers": [
          0.125,
          0.375,
          0.625,
          0.875,
          1.125,
          1.375,
          1.625,
          1.875,
          2.125,
          2.375,
          2.625,
          2.875,
          3.125,
          3.375,
          3.625,
          3.875
        ],
        "clip_lo": 0.0,
        "clip_hi": 4.0
      },
      "max_down_natr_hist": {
        "bin_edges": [
          -4.0,
          -3.75,
          -3.5,
          -3.25,
          -3.0,
          -2.75,
          -2.5,
          -2.25,
          -2.0,
          -1.75,
          -1.5,
          -1.25,
          -1.0,
          -0.75,
          -0.5,
          -0.25,
          0.0
        ],
        "counts": [
          5,
          1,
          0,
          2,
          2,
          4,
          4,
          6,
          7,
          10,
          9,
          11,
          19,
          18,
          17,
          26
        ],
        "bin_centers": [
          -3.875,
          -3.625,
          -3.375,
          -3.125,
          -2.875,
          -2.625,
          -2.375,
          -2.125,
          -1.875,
          -1.625,
          -1.375,
          -1.125,
          -0.875,
          -0.625,
          -0.375,
          -0.125
        ],
        "clip_lo": -4.0,
        "clip_hi": 0.0
      },
      "timestamp_min": 1600866000000,
      "timestamp_max": 1784527200000,
      "timestamp_min_iso": "2020-09-23T13:00:00Z",
      "timestamp_max_iso": "2026-07-20T06:00:00Z"
    },
    {
      "pattern_type": "falling_wedge",
      "pattern_name": "Falling Wedge",
      "timeframe": "15m",
      "bias": "bullish",
      "n": 4998,
      "n_symbols": 555,
      "breakout_success_rate": 72.85,
      "breakdown_success_rate": 24.17,
      "sideways_rate": 2.98,
      "forming_rate": 0.0,
      "both_cleared_rate": 35.67,
      "breakout_success_rate_ci95": [
        71.6,
        74.06
      ],
      "breakdown_success_rate_ci95": [
        23.0,
        25.38
      ],
      "sideways_rate_ci95": [
        2.54,
        3.49
      ],
      "forming_rate_ci95": [
        0.0,
        0.08
      ],
      "both_sides_rate": 35.67,
      "expected_hit_rate": 72.85,
      "expected_hit_rate_ci95": [
        71.6,
        74.06
      ],
      "mean_ret_10c": 0.373,
      "median_ret_10c": 0.335,
      "std_ret_10c": 3.03,
      "win_rate_ret_gt0": 57.32,
      "p25_ret_10c": -0.853,
      "p75_ret_10c": 1.548,
      "mean_mfe": 2.367,
      "mean_mae": -1.671,
      "mfe_mae_ratio": 1.417,
      "max_up_natr": {
        "n": 4998,
        "mean": 2.909,
        "median": 2.362,
        "p25": 1.171,
        "p75": 3.92,
        "hist": {
          "bin_edges": [
            0.0,
            0.25,
            0.5,
            0.75,
            1.0,
            1.25,
            1.5,
            1.75,
            2.0,
            2.25,
            2.5,
            2.75,
            3.0,
            3.25,
            3.5,
            3.75,
            4.0
          ],
          "counts": [
            403,
            197,
            221,
            237,
            297,
            265,
            255,
            234,
            285,
            235,
            239,
            226,
            200,
            194,
            159,
            1351
          ],
          "bin_centers": [
            0.125,
            0.375,
            0.625,
            0.875,
            1.125,
            1.375,
            1.625,
            1.875,
            2.125,
            2.375,
            2.625,
            2.875,
            3.125,
            3.375,
            3.625,
            3.875
          ],
          "clip_lo": 0.0,
          "clip_hi": 4.0
        }
      },
      "max_down_natr": {
        "n": 4998,
        "mean": -2.133,
        "median": -1.265,
        "p25": -3.02,
        "p75": -0.336,
        "hist": {
          "bin_edges": [
            -4.0,
            -3.75,
            -3.5,
            -3.25,
            -3.0,
            -2.75,
            -2.5,
            -2.25,
            -2.0,
            -1.75,
            -1.5,
            -1.25,
            -1.0,
            -0.75,
            -0.5,
            -0.25,
            0.0
          ],
          "counts": [
            916,
            126,
            100,
            120,
            128,
            138,
            163,
            168,
            189,
            232,
            243,
            258,
            307,
            363,
            516,
            1031
          ],
          "bin_centers": [
            -3.875,
            -3.625,
            -3.375,
            -3.125,
            -2.875,
            -2.625,
            -2.375,
            -2.125,
            -1.875,
            -1.625,
            -1.375,
            -1.125,
            -0.875,
            -0.625,
            -0.375,
            -0.125
          ],
          "clip_lo": -4.0,
          "clip_hi": 0.0
        }
      },
      "median_max_up_natr": 2.362,
      "median_max_down_natr": -1.265,
      "mean_max_up_natr": 2.909,
      "mean_max_down_natr": -2.133,
      "p25_max_up_natr": 1.171,
      "p75_max_up_natr": 3.92,
      "p25_max_down_natr": -3.02,
      "p75_max_down_natr": -0.336,
      "outcome_natr_moves": {
        "breakout": {
          "n": 3641,
          "max_up_natr": {
            "n": 3641,
            "mean": 3.505,
            "median": 2.887,
            "p25": 1.842,
            "p75": 4.409,
            "hist": {
              "bin_edges": [
                0.0,
                0.25,
                0.5,
                0.75,
                1.0,
                1.25,
                1.5,
                1.75,
                2.0,
                2.25,
                2.5,
                2.75,
                3.0,
                3.25,
                3.5,
                3.75,
                4.0
              ],
              "counts": [
                0,
                0,
                68,
                138,
                204,
                209,
                219,
                200,
                241,
                216,
                215,
                207,
                173,
                176,
                141,
                1234
              ],
              "bin_centers": [
                0.125,
                0.375,
                0.625,
                0.875,
                1.125,
                1.375,
                1.625,
                1.875,
                2.125,
                2.375,
                2.625,
                2.875,
                3.125,
                3.375,
                3.625,
                3.875
              ],
              "clip_lo": 0.0,
              "clip_hi": 4.0
            }
          },
          "max_down_natr": {
            "n": 3641,
            "mean": -1.341,
            "median": -0.691,
            "p25": -1.739,
            "p75": -0.212,
            "hist": {
              "bin_edges": [
                -4.0,
                -3.75,
                -3.5,
                -3.25,
                -3.0,
                -2.75,
                -2.5,
                -2.25,
                -2.0,
                -1.75,
                -1.5,
                -1.25,
                -1.0,
                -0.75,
                -0.5,
                -0.25,
                0.0
              ],
              "counts": [
                306,
                49,
                49,
                60,
                63,
                79,
                81,
                91,
                122,
                174,
                187,
                213,
                281,
                343,
                513,
                1030
              ],
              "bin_centers": [
                -3.875,
                -3.625,
                -3.375,
                -3.125,
                -2.875,
                -2.625,
                -2.375,
                -2.125,
                -1.875,
                -1.625,
                -1.375,
                -1.125,
                -0.875,
                -0.625,
                -0.375,
                -0.125
              ],
              "clip_lo": -4.0,
              "clip_hi": 0.0
            }
          }
        },
        "breakdown": {
          "n": 1208,
          "max_up_natr": {
            "n": 1208,
            "mean": 1.376,
            "median": 0.602,
            "p25": 0.153,
            "p75": 1.831,
            "hist": {
              "bin_edges": [
                0.0,
                0.25,
                0.5,
                0.75,
                1.0,
                1.25,
                1.5,
                1.75,
                2.0,
                2.25,
                2.5,
                2.75,
                3.0,
                3.25,
                3.5,
                3.75,
                4.0
              ],
              "counts": [
                395,
                159,
                111,
                69,
                77,
                51,
                34,
                30,
                42,
                19,
                24,
                19,
                26,
                18,
                17,
                117
              ],
              "bin_centers": [
                0.125,
                0.375,
                0.625,
                0.875,
                1.125,
                1.375,
                1.625,
                1.875,
                2.125,
                2.375,
                2.625,
                2.875,
                3.125,
                3.375,
                3.625,
                3.875
              ],
              "clip_lo": 0.0,
              "clip_hi": 4.0
            }
          },
          "max_down_natr": {
            "n": 1208,
            "mean": -4.564,
            "median": -3.76,
            "p25": -5.779,
            "p75": -2.454,
            "hist": {
              "bin_edges": [
                -4.0,
                -3.75,
                -3.5,
                -3.25,
                -3.0,
                -2.75,
                -2.5,
                -2.25,
                -2.0,
                -1.75,
                -1.5,
                -1.25,
                -1.0,
                -0.75,
                -0.5,
                -0.25,
                0.0
              ],
              "counts": [
                605,
                71,
                48,
                58,
                60,
                49,
                72,
                65,
                53,
                42,
                42,
                26,
                9,
                8,
                0,
                0
              ],
              "bin_centers": [
                -3.875,
                -3.625,
                -3.375,
                -3.125,
                -2.875,
                -2.625,
                -2.375,
                -2.125,
                -1.875,
                -1.625,
                -1.375,
                -1.125,
                -0.875,
                -0.625,
                -0.375,
                -0.125
              ],
              "clip_lo": -4.0,
              "clip_hi": 0.0
            }
          }
        },
        "sideways": {
          "n": 149,
          "max_up_natr": {
            "n": 149,
            "mean": 0.755,
            "median": 0.652,
            "p25": 0.464,
            "p75": 0.89,
            "hist": {
              "bin_edges": [
                0.0,
                0.25,
                0.5,
                0.75,
                1.0,
                1.25,
                1.5,
                1.75,
                2.0,
                2.25,
                2.5,
                2.75,
                3.0,
                3.25,
                3.5,
                3.75,
                4.0
              ],
              "counts": [
                8,
                38,
                42,
                30,
                16,
                5,
                2,
                4,
                2,
                0,
                0,
                0,
                1,
                0,
                1,
                0
              ],
              "bin_centers": [
                0.125,
                0.375,
                0.625,
                0.875,
                1.125,
                1.375,
                1.625,
                1.875,
                2.125,
                2.375,
                2.625,
                2.875,
                3.125,
                3.375,
                3.625,
                3.875
              ],
              "clip_lo": 0.0,
              "clip_hi": 4.0
            }
          },
          "max_down_natr": {
            "n": 149,
            "mean": -1.783,
            "median": -1.628,
            "p25": -2.347,
            "p75": -1.045,
            "hist": {
              "bin_edges": [
                -4.0,
                -3.75,
                -3.5,
                -3.25,
                -3.0,
                -2.75,
                -2.5,
                -2.25,
                -2.0,
                -1.75,
                -1.5,
                -1.25,
                -1.0,
                -0.75,
                -0.5,
                -0.25,
                0.0
              ],
              "counts": [
                5,
                6,
                3,
                2,
                5,
                10,
                10,
                12,
                14,
                16,
                14,
                19,
                17,
                12,
                3,
                1
              ],
              "bin_centers": [
                -3.875,
                -3.625,
                -3.375,
                -3.125,
                -2.875,
                -2.625,
                -2.375,
                -2.125,
                -1.875,
                -1.625,
                -1.375,
                -1.125,
                -0.875,
                -0.625,
                -0.375,
                -0.125
              ],
              "clip_lo": -4.0,
              "clip_hi": 0.0
            }
          }
        },
        "forming": {
          "n": 0,
          "max_up_natr": {
            "n": 0,
            "mean": null,
            "median": null,
            "p25": null,
            "p75": null
          },
          "max_down_natr": {
            "n": 0,
            "mean": null,
            "median": null,
            "p25": null,
            "p75": null
          }
        }
      },
      "max_up_natr_hist": {
        "bin_edges": [
          0.0,
          0.25,
          0.5,
          0.75,
          1.0,
          1.25,
          1.5,
          1.75,
          2.0,
          2.25,
          2.5,
          2.75,
          3.0,
          3.25,
          3.5,
          3.75,
          4.0
        ],
        "counts": [
          403,
          197,
          221,
          237,
          297,
          265,
          255,
          234,
          285,
          235,
          239,
          226,
          200,
          194,
          159,
          1351
        ],
        "bin_centers": [
          0.125,
          0.375,
          0.625,
          0.875,
          1.125,
          1.375,
          1.625,
          1.875,
          2.125,
          2.375,
          2.625,
          2.875,
          3.125,
          3.375,
          3.625,
          3.875
        ],
        "clip_lo": 0.0,
        "clip_hi": 4.0
      },
      "max_down_natr_hist": {
        "bin_edges": [
          -4.0,
          -3.75,
          -3.5,
          -3.25,
          -3.0,
          -2.75,
          -2.5,
          -2.25,
          -2.0,
          -1.75,
          -1.5,
          -1.25,
          -1.0,
          -0.75,
          -0.5,
          -0.25,
          0.0
        ],
        "counts": [
          916,
          126,
          100,
          120,
          128,
          138,
          163,
          168,
          189,
          232,
          243,
          258,
          307,
          363,
          516,
          1031
        ],
        "bin_centers": [
          -3.875,
          -3.625,
          -3.375,
          -3.125,
          -2.875,
          -2.625,
          -2.375,
          -2.125,
          -1.875,
          -1.625,
          -1.375,
          -1.125,
          -0.875,
          -0.625,
          -0.375,
          -0.125
        ],
        "clip_lo": -4.0,
        "clip_hi": 0.0
      },
      "timestamp_min": 1596957300000,
      "timestamp_max": 1785523500000,
      "timestamp_min_iso": "2020-08-09T07:15:00Z",
      "timestamp_max_iso": "2026-07-31T18:45:00Z"
    },
    {
      "pattern_type": "falling_wedge",
      "pattern_name": "Falling Wedge",
      "timeframe": "1h",
      "bias": "bullish",
      "n": 11553,
      "n_symbols": 662,
      "breakout_success_rate": 72.31,
      "breakdown_success_rate": 24.69,
      "sideways_rate": 3.0,
      "forming_rate": 0.0,
      "both_cleared_rate": 32.61,
      "breakout_success_rate_ci95": [
        71.49,
        73.12
      ],
      "breakdown_success_rate_ci95": [
        23.92,
        25.49
      ],
      "sideways_rate_ci95": [
        2.7,
        3.32
      ],
      "forming_rate_ci95": [
        0.0,
        0.03
      ],
      "both_sides_rate": 32.61,
      "expected_hit_rate": 72.31,
      "expected_hit_rate_ci95": [
        71.49,
        73.12
      ],
      "mean_ret_10c": 0.459,
      "median_ret_10c": 0.72,
      "std_ret_10c": 6.181,
      "win_rate_ret_gt0": 57.48,
      "p25_ret_10c": -2.189,
      "p75_ret_10c": 3.241,
      "mean_mfe": 4.842,
      "mean_mae": -4.021,
      "mfe_mae_ratio": 1.204,
      "max_up_natr": {
        "n": 11553,
        "mean": 2.753,
        "median": 2.18,
        "p25": 1.111,
        "p75": 3.602,
        "hist": {
          "bin_edges": [
            0.0,
            0.25,
            0.5,
            0.75,
            1.0,
            1.25,
            1.5,
            1.75,
            2.0,
            2.25,
            2.5,
            2.75,
            3.0,
            3.25,
            3.5,
            3.75,
            4.0
          ],
          "counts": [
            947,
            573,
            537,
            570,
            605,
            673,
            710,
            670,
            694,
            593,
            544,
            514,
            477,
            402,
            341,
            2703
          ],
          "bin_centers": [
            0.125,
            0.375,
            0.625,
            0.875,
            1.125,
            1.375,
            1.625,
            1.875,
            2.125,
            2.375,
            2.625,
            2.875,
            3.125,
            3.375,
            3.625,
            3.875
          ],
          "clip_lo": 0.0,
          "clip_hi": 4.0
        }
      },
      "max_down_natr": {
        "n": 11553,
        "mean": -2.435,
        "median": -1.198,
        "p25": -3.09,
        "p75": -0.329,
        "hist": {
          "bin_edges": [
            -4.0,
            -3.75,
            -3.5,
            -3.25,
            -3.0,
            -2.75,
            -2.5,
            -2.25,
            -2.0,
            -1.75,
            -1.5,
            -1.25,
            -1.0,
            -0.75,
            -0.5,
            -0.25,
            0.0
          ],
          "counts": [
            2295,
            195,
            246,
            273,
            277,
            324,
            337,
            382,
            398,
            443,
            486,
            624,
            705,
            866,
            1264,
            2438
          ],
          "bin_centers": [
            -3.875,
            -3.625,
            -3.375,
            -3.125,
            -2.875,
            -2.625,
            -2.375,
            -2.125,
            -1.875,
            -1.625,
            -1.375,
            -1.125,
            -0.875,
            -0.625,
            -0.375,
            -0.125
          ],
          "clip_lo": -4.0,
          "clip_hi": 0.0
        }
      },
      "median_max_up_natr": 2.18,
      "median_max_down_natr": -1.198,
      "mean_max_up_natr": 2.753,
      "mean_max_down_natr": -2.435,
      "p25_max_up_natr": 1.111,
      "p75_max_up_natr": 3.602,
      "p25_max_down_natr": -3.09,
      "p75_max_down_natr": -0.329,
      "outcome_natr_moves": {
        "breakout": {
          "n": 8354,
          "max_up_natr": {
            "n": 8354,
            "mean": 3.353,
            "median": 2.699,
            "p25": 1.767,
            "p75": 4.082,
            "hist": {
              "bin_edges": [
                0.0,
                0.25,
                0.5,
                0.75,
                1.0,
                1.25,
                1.5,
                1.75,
                2.0,
                2.25,
                2.5,
                2.75,
                3.0,
                3.25,
                3.5,
                3.75,
                4.0
              ],
              "counts": [
                0,
                0,
                120,
                331,
                445,
                553,
                595,
                587,
                615,
                532,
                496,
                474,
                428,
                370,
                317,
                2491
              ],
              "bin_centers": [
                0.125,
                0.375,
                0.625,
                0.875,
                1.125,
                1.375,
                1.625,
                1.875,
                2.125,
                2.375,
                2.625,
                2.875,
                3.125,
                3.375,
                3.625,
                3.875
              ],
              "clip_lo": 0.0,
              "clip_hi": 4.0
            }
          },
          "max_down_natr": {
            "n": 8354,
            "mean": -1.471,
            "median": -0.637,
            "p25": -1.687,
            "p75": -0.199,
            "hist": {
              "bin_edges": [
                -4.0,
                -3.75,
                -3.5,
                -3.25,
                -3.0,
                -2.75,
                -2.5,
                -2.25,
                -2.0,
                -1.75,
                -1.5,
                -1.25,
                -1.0,
                -0.75,
                -0.5,
                -0.25,
                0.0
              ],
              "counts": [
                686,
                70,
                116,
                119,
                151,
                174,
                196,
                227,
                270,
                307,
                375,
                507,
                644,
                832,
                1253,
                2427
              ],
              "bin_centers": [
                -3.875,
                -3.625,
                -3.375,
                -3.125,
                -2.875,
                -2.625,
                -2.375,
                -2.125,
                -1.875,
                -1.625,
                -1.375,
                -1.125,
                -0.875,
                -0.625,
                -0.375,
                -0.125
              ],
              "clip_lo": -4.0,
              "clip_hi": 0.0
            }
          }
        },
        "breakdown": {
          "n": 2853,
          "max_up_natr": {
            "n": 2853,
            "mean": 1.237,
            "median": 0.509,
            "p25": 0.169,
            "p75": 1.507,
            "hist": {
              "bin_edges": [
                0.0,
                0.25,
                0.5,
                0.75,
                1.0,
                1.25,
                1.5,
                1.75,
                2.0,
                2.25,
                2.5,
                2.75,
                3.0,
                3.25,
                3.5,
                3.75,
                4.0
              ],
              "counts": [
                933,
                476,
                300,
                178,
                138,
                110,
                105,
                79,
                76,
                60,
                46,
                39,
                48,
                31,
                24,
                210
              ],
              "bin_centers": [
                0.125,
                0.375,
                0.625,
                0.875,
                1.125,
                1.375,
                1.625,
                1.875,
                2.125,
                2.375,
                2.625,
                2.875,
                3.125,
                3.375,
                3.625,
                3.875
              ],
              "clip_lo": 0.0,
              "clip_hi": 4.0
            }
          },
          "max_down_natr": {
            "n": 2853,
            "mean": -5.334,
            "median": -4.117,
            "p25": -6.365,
            "p75": -2.658,
            "hist": {
              "bin_edges": [
                -4.0,
                -3.75,
                -3.5,
                -3.25,
                -3.0,
                -2.75,
                -2.5,
                -2.25,
                -2.0,
                -1.75,
                -1.5,
                -1.25,
                -1.0,
                -0.75,
                -0.5,
                -0.25,
                0.0
              ],
              "counts": [
                1592,
                113,
                120,
                148,
                114,
                131,
                121,
                129,
                91,
                98,
                73,
                82,
                31,
                10,
                0,
                0
              ],
              "bin_centers": [
                -3.875,
                -3.625,
                -3.375,
                -3.125,
                -2.875,
                -2.625,
                -2.375,
                -2.125,
                -1.875,
                -1.625,
                -1.375,
                -1.125,
                -0.875,
                -0.625,
                -0.375,
                -0.125
              ],
              "clip_lo": -4.0,
              "clip_hi": 0.0
            }
          }
        },
        "sideways": {
          "n": 346,
          "max_up_natr": {
            "n": 346,
            "mean": 0.743,
            "median": 0.618,
            "p25": 0.462,
            "p75": 0.842,
            "hist": {
              "bin_edges": [
                0.0,
                0.25,
                0.5,
                0.75,
                1.0,
                1.25,
                1.5,
                1.75,
                2.0,
                2.25,
                2.5,
                2.75,
                3.0,
                3.25,
                3.5,
                3.75,
                4.0
              ],
              "counts": [
                14,
                97,
                117,
                61,
                22,
                10,
                10,
                4,
                3,
                1,
                2,
                1,
                1,
                1,
                0,
                2
              ],
              "bin_centers": [
                0.125,
                0.375,
                0.625,
                0.875,
                1.125,
                1.375,
                1.625,
                1.875,
                2.125,
                2.375,
                2.625,
                2.875,
                3.125,
                3.375,
                3.625,
                3.875
              ],
              "clip_lo": 0.0,
              "clip_hi": 4.0
            }
          },
          "max_down_natr": {
            "n": 346,
            "mean": -1.814,
            "median": -1.652,
            "p25": -2.341,
            "p75": -1.09,
            "hist": {
              "bin_edges": [
                -4.0,
                -3.75,
                -3.5,
                -3.25,
                -3.0,
                -2.75,
                -2.5,
                -2.25,
                -2.0,
                -1.75,
                -1.5,
                -1.25,
                -1.0,
                -0.75,
                -0.5,
                -0.25,
                0.0
              ],
              "counts": [
                17,
                12,
                10,
                6,
                12,
                19,
                20,
                26,
                37,
                38,
                38,
                35,
                30,
                24,
                11,
                11
              ],
              "bin_centers": [
                -3.875,
                -3.625,
                -3.375,
                -3.125,
                -2.875,
                -2.625,
                -2.375,
                -2.125,
                -1.875,
                -1.625,
                -1.375,
                -1.125,
                -0.875,
                -0.625,
                -0.375,
                -0.125
              ],
              "clip_lo": -4.0,
              "clip_hi": 0.0
            }
          }
        },
        "forming": {
          "n": 0,
          "max_up_natr": {
            "n": 0,
            "mean": null,
            "median": null,
            "p25": null,
            "p75": null
          },
          "max_down_natr": {
            "n": 0,
            "mean": null,
            "median": null,
            "p25": null,
            "p75": null
          }
        }
      },
      "max_up_natr_hist": {
        "bin_edges": [
          0.0,
          0.25,
          0.5,
          0.75,
          1.0,
          1.25,
          1.5,
          1.75,
          2.0,
          2.25,
          2.5,
          2.75,
          3.0,
          3.25,
          3.5,
          3.75,
          4.0
        ],
        "counts": [
          947,
          573,
          537,
          570,
          605,
          673,
          710,
          670,
          694,
          593,
          544,
          514,
          477,
          402,
          341,
          2703
        ],
        "bin_centers": [
          0.125,
          0.375,
          0.625,
          0.875,
          1.125,
          1.375,
          1.625,
          1.875,
          2.125,
          2.375,
          2.625,
          2.875,
          3.125,
          3.375,
          3.625,
          3.875
        ],
        "clip_lo": 0.0,
        "clip_hi": 4.0
      },
      "max_down_natr_hist": {
        "bin_edges": [
          -4.0,
          -3.75,
          -3.5,
          -3.25,
          -3.0,
          -2.75,
          -2.5,
          -2.25,
          -2.0,
          -1.75,
          -1.5,
          -1.25,
          -1.0,
          -0.75,
          -0.5,
          -0.25,
          0.0
        ],
        "counts": [
          2295,
          195,
          246,
          273,
          277,
          324,
          337,
          382,
          398,
          443,
          486,
          624,
          705,
          866,
          1264,
          2438
        ],
        "bin_centers": [
          -3.875,
          -3.625,
          -3.375,
          -3.125,
          -2.875,
          -2.625,
          -2.375,
          -2.125,
          -1.875,
          -1.625,
          -1.375,
          -1.125,
          -0.875,
          -0.625,
          -0.375,
          -0.125
        ],
        "clip_lo": -4.0,
        "clip_hi": 0.0
      },
      "timestamp_min": 1579852800000,
      "timestamp_max": 1785466800000,
      "timestamp_min_iso": "2020-01-24T08:00:00Z",
      "timestamp_max_iso": "2026-07-31T03:00:00Z"
    },
    {
      "pattern_type": "head_and_shoulders",
      "pattern_name": "Head & Shoulders",
      "timeframe": "1d",
      "bias": "bearish",
      "n": 310,
      "n_symbols": 219,
      "breakout_success_rate": 26.13,
      "breakdown_success_rate": 72.26,
      "sideways_rate": 1.61,
      "forming_rate": 0.0,
      "both_cleared_rate": 35.48,
      "breakout_success_rate_ci95": [
        21.55,
        31.29
      ],
      "breakdown_success_rate_ci95": [
        67.02,
        76.95
      ],
      "sideways_rate_ci95": [
        0.69,
        3.72
      ],
      "forming_rate_ci95": [
        0.0,
        1.22
      ],
      "both_sides_rate": 35.48,
      "expected_hit_rate": 72.26,
      "expected_hit_rate_ci95": [
        67.02,
        76.95
      ],
      "mean_ret_10c": 5.921,
      "median_ret_10c": -3.466,
      "std_ret_10c": 69.249,
      "win_rate_ret_gt0": 45.16,
      "p25_ret_10c": -16.816,
      "p75_ret_10c": 12.818,
      "mean_mfe": 32.867,
      "mean_mae": -20.025,
      "mfe_mae_ratio": 1.641,
      "max_up_natr": {
        "n": 310,
        "mean": 3.64,
        "median": 1.574,
        "p25": 0.699,
        "p75": 4.027,
        "hist": {
          "bin_edges": [
            0.0,
            0.25,
            0.5,
            0.75,
            1.0,
            1.25,
            1.5,
            1.75,
            2.0,
            2.25,
            2.5,
            2.75,
            3.0,
            3.25,
            3.5,
            3.75,
            4.0
          ],
          "counts": [
            29,
            32,
            23,
            23,
            19,
            23,
            14,
            9,
            9,
            12,
            8,
            7,
            7,
            6,
            3,
            86
          ],
          "bin_centers": [
            0.125,
            0.375,
            0.625,
            0.875,
            1.125,
            1.375,
            1.625,
            1.875,
            2.125,
            2.375,
            2.625,
            2.875,
            3.125,
            3.375,
            3.625,
            3.875
          ],
          "clip_lo": 0.0,
          "clip_hi": 4.0
        }
      },
      "max_down_natr": {
        "n": 310,
        "mean": -2.237,
        "median": -1.693,
        "p25": -3.086,
        "p75": -0.751,
        "hist": {
          "bin_edges": [
            -4.0,
            -3.75,
            -3.5,
            -3.25,
            -3.0,
            -2.75,
            -2.5,
            -2.25,
            -2.0,
            -1.75,
            -1.5,
            -1.25,
            -1.0,
            -0.75,
            -0.5,
            -0.25,
            0.0
          ],
          "counts": [
            56,
            8,
            8,
            9,
            13,
            11,
            13,
            12,
            20,
            27,
            19,
            14,
            22,
            32,
            18,
            28
          ],
          "bin_centers": [
            -3.875,
            -3.625,
            -3.375,
            -3.125,
            -2.875,
            -2.625,
            -2.375,
            -2.125,
            -1.875,
            -1.625,
            -1.375,
            -1.125,
            -0.875,
            -0.625,
            -0.375,
            -0.125
          ],
          "clip_lo": -4.0,
          "clip_hi": 0.0
        }
      },
      "median_max_up_natr": 1.574,
      "median_max_down_natr": -1.693,
      "mean_max_up_natr": 3.64,
      "mean_max_down_natr": -2.237,
      "p25_max_up_natr": 0.699,
      "p75_max_up_natr": 4.027,
      "p25_max_down_natr": -3.086,
      "p75_max_down_natr": -0.751,
      "outcome_natr_moves": {
        "breakout": {
          "n": 81,
          "max_up_natr": {
            "n": 81,
            "mean": 5.295,
            "median": 3.23,
            "p25": 2.271,
            "p75": 7.096,
            "hist": {
              "bin_edges": [
                0.0,
                0.25,
                0.5,
                0.75,
                1.0,
                1.25,
                1.5,
                1.75,
                2.0,
                2.25,
                2.5,
                2.75,
                3.0,
                3.25,
                3.5,
                3.75,
                4.0
              ],
              "counts": [
                0,
                0,
                0,
                0,
                2,
                6,
                3,
                4,
                4,
                9,
                7,
                2,
                4,
                3,
                2,
                35
              ],
              "bin_centers": [
                0.125,
                0.375,
                0.625,
                0.875,
                1.125,
                1.375,
                1.625,
                1.875,
                2.125,
                2.375,
                2.625,
                2.875,
                3.125,
                3.375,
                3.625,
                3.875
              ],
              "clip_lo": 0.0,
              "clip_hi": 4.0
            }
          },
          "max_down_natr": {
            "n": 81,
            "mean": -0.98,
            "median": -0.614,
            "p25": -1.495,
            "p75": -0.193,
            "hist": {
              "bin_edges": [
                -4.0,
                -3.75,
                -3.5,
                -3.25,
                -3.0,
                -2.75,
                -2.5,
                -2.25,
                -2.0,
                -1.75,
                -1.5,
                -1.25,
                -1.0,
                -0.75,
                -0.5,
                -0.25,
                0.0
              ],
              "counts": [
                2,
                0,
                0,
                4,
                2,
                2,
                0,
                4,
                2,
                4,
                4,
                2,
                5,
                15,
                12,
                23
              ],
              "bin_centers": [
                -3.875,
                -3.625,
                -3.375,
                -3.125,
                -2.875,
                -2.625,
                -2.375,
                -2.125,
                -1.875,
                -1.625,
                -1.375,
                -1.125,
                -0.875,
                -0.625,
                -0.375,
                -0.125
              ],
              "clip_lo": -4.0,
              "clip_hi": 0.0
            }
          }
        },
        "breakdown": {
          "n": 224,
          "max_up_natr": {
            "n": 224,
            "mean": 3.114,
            "median": 1.12,
            "p25": 0.485,
            "p75": 3.179,
            "hist": {
              "bin_edges": [
                0.0,
                0.25,
                0.5,
                0.75,
                1.0,
                1.25,
                1.5,
                1.75,
                2.0,
                2.25,
                2.5,
                2.75,
                3.0,
                3.25,
                3.5,
                3.75,
                4.0
              ],
              "counts": [
                26,
                32,
                22,
                23,
                16,
                17,
                11,
                5,
                5,
                3,
                1,
                5,
                3,
                3,
                1,
                51
              ],
              "bin_centers": [
                0.125,
                0.375,
                0.625,
                0.875,
                1.125,
                1.375,
                1.625,
                1.875,
                2.125,
                2.375,
                2.625,
                2.875,
                3.125,
                3.375,
                3.625,
                3.875
              ],
              "clip_lo": 0.0,
              "clip_hi": 4.0
            }
          },
          "max_down_natr": {
            "n": 224,
            "mean": -2.733,
            "median": -2.115,
            "p25": -3.683,
            "p75": -1.345,
            "hist": {
              "bin_edges": [
                -4.0,
                -3.75,
                -3.5,
                -3.25,
                -3.0,
                -2.75,
                -2.5,
                -2.25,
                -2.0,
                -1.75,
                -1.5,
                -1.25,
                -1.0,
                -0.75,
                -0.5,
                -0.25,
                0.0
              ],
              "counts": [
                54,
                8,
                8,
                5,
                11,
                9,
                13,
                8,
                18,
                23,
                15,
                12,
                17,
                15,
                5,
                3
              ],
              "bin_centers": [
                -3.875,
                -3.625,
                -3.375,
                -3.125,
                -2.875,
                -2.625,
                -2.375,
                -2.125,
                -1.875,
                -1.625,
                -1.375,
                -1.125,
                -0.875,
                -0.625,
                -0.375,
                -0.125
              ],
              "clip_lo": -4.0,
              "clip_hi": 0.0
            }
          }
        },
        "sideways": {
          "n": 5,
          "max_up_natr": {
            "n": 5,
            "mean": 0.387,
            "median": 0.057,
            "p25": 0.052,
            "p75": 0.637
          },
          "max_down_natr": {
            "n": 5,
            "mean": -0.379,
            "median": -0.499,
            "p25": -0.586,
            "p75": -0.183
          }
        },
        "forming": {
          "n": 0,
          "max_up_natr": {
            "n": 0,
            "mean": null,
            "median": null,
            "p25": null,
            "p75": null
          },
          "max_down_natr": {
            "n": 0,
            "mean": null,
            "median": null,
            "p25": null,
            "p75": null
          }
        }
      },
      "max_up_natr_hist": {
        "bin_edges": [
          0.0,
          0.25,
          0.5,
          0.75,
          1.0,
          1.25,
          1.5,
          1.75,
          2.0,
          2.25,
          2.5,
          2.75,
          3.0,
          3.25,
          3.5,
          3.75,
          4.0
        ],
        "counts": [
          29,
          32,
          23,
          23,
          19,
          23,
          14,
          9,
          9,
          12,
          8,
          7,
          7,
          6,
          3,
          86
        ],
        "bin_centers": [
          0.125,
          0.375,
          0.625,
          0.875,
          1.125,
          1.375,
          1.625,
          1.875,
          2.125,
          2.375,
          2.625,
          2.875,
          3.125,
          3.375,
          3.625,
          3.875
        ],
        "clip_lo": 0.0,
        "clip_hi": 4.0
      },
      "max_down_natr_hist": {
        "bin_edges": [
          -4.0,
          -3.75,
          -3.5,
          -3.25,
          -3.0,
          -2.75,
          -2.5,
          -2.25,
          -2.0,
          -1.75,
          -1.5,
          -1.25,
          -1.0,
          -0.75,
          -0.5,
          -0.25,
          0.0
        ],
        "counts": [
          56,
          8,
          8,
          9,
          13,
          11,
          13,
          12,
          20,
          27,
          19,
          14,
          22,
          32,
          18,
          28
        ],
        "bin_centers": [
          -3.875,
          -3.625,
          -3.375,
          -3.125,
          -2.875,
          -2.625,
          -2.375,
          -2.125,
          -1.875,
          -1.625,
          -1.375,
          -1.125,
          -0.875,
          -0.625,
          -0.375,
          -0.125
        ],
        "clip_lo": -4.0,
        "clip_hi": 0.0
      },
      "timestamp_min": 1548547200000,
      "timestamp_max": 1782518400000,
      "timestamp_min_iso": "2019-01-27T00:00:00Z",
      "timestamp_max_iso": "2026-06-27T00:00:00Z"
    },
    {
      "pattern_type": "double_bottom",
      "pattern_name": "Double Bottom",
      "timeframe": "4h",
      "bias": "bullish",
      "n": 422,
      "n_symbols": 284,
      "breakout_success_rate": 72.04,
      "breakdown_success_rate": 10.9,
      "sideways_rate": 17.06,
      "forming_rate": 0.0,
      "both_cleared_rate": 29.62,
      "breakout_success_rate_ci95": [
        67.57,
        76.11
      ],
      "breakdown_success_rate_ci95": [
        8.27,
        14.23
      ],
      "sideways_rate_ci95": [
        13.77,
        20.94
      ],
      "forming_rate_ci95": [
        0.0,
        0.9
      ],
      "both_sides_rate": 29.62,
      "expected_hit_rate": 72.04,
      "expected_hit_rate_ci95": [
        67.57,
        76.11
      ],
      "mean_ret_10c": 3.38,
      "median_ret_10c": 2.59,
      "std_ret_10c": 10.049,
      "win_rate_ret_gt0": 68.25,
      "p25_ret_10c": -1.099,
      "p75_ret_10c": 6.729,
      "mean_mfe": 11.198,
      "mean_mae": -4.5,
      "mfe_mae_ratio": 2.488,
      "max_up_natr": {
        "n": 422,
        "mean": 2.959,
        "median": 2.313,
        "p25": 1.221,
        "p75": 3.917,
        "hist": {
          "bin_edges": [
            0.0,
            0.25,
            0.5,
            0.75,
            1.0,
            1.25,
            1.5,
            1.75,
            2.0,
            2.25,
            2.5,
            2.75,
            3.0,
            3.25,
            3.5,
            3.75,
            4.0
          ],
          "counts": [
            13,
            23,
            20,
            28,
            27,
            26,
            23,
            16,
            25,
            28,
            26,
            18,
            11,
            10,
            14,
            114
          ],
          "bin_centers": [
            0.125,
            0.375,
            0.625,
            0.875,
            1.125,
            1.375,
            1.625,
            1.875,
            2.125,
            2.375,
            2.625,
            2.875,
            3.125,
            3.375,
            3.625,
            3.875
          ],
          "clip_lo": 0.0,
          "clip_hi": 4.0
        }
      },
      "max_down_natr": {
        "n": 422,
        "mean": -1.176,
        "median": -0.941,
        "p25": -1.417,
        "p75": -0.551,
        "hist": {
          "bin_edges": [
            -4.0,
            -3.75,
            -3.5,
            -3.25,
            -3.0,
            -2.75,
            -2.5,
            -2.25,
            -2.0,
            -1.75,
            -1.5,
            -1.25,
            -1.0,
            -0.75,
            -0.5,
            -0.25,
            0.0
          ],
          "counts": [
            17,
            2,
            2,
            3,
            1,
            4,
            8,
            18,
            15,
            26,
            34,
            59,
            69,
            67,
            50,
            47
          ],
          "bin_centers": [
            -3.875,
            -3.625,
            -3.375,
            -3.125,
            -2.875,
            -2.625,
            -2.375,
            -2.125,
            -1.875,
            -1.625,
            -1.375,
            -1.125,
            -0.875,
            -0.625,
            -0.375,
            -0.125
          ],
          "clip_lo": -4.0,
          "clip_hi": 0.0
        }
      },
      "median_max_up_natr": 2.313,
      "median_max_down_natr": -0.941,
      "mean_max_up_natr": 2.959,
      "mean_max_down_natr": -1.176,
      "p25_max_up_natr": 1.221,
      "p75_max_up_natr": 3.917,
      "p25_max_down_natr": -1.417,
      "p75_max_down_natr": -0.551,
      "outcome_natr_moves": {
        "breakout": {
          "n": 304,
          "max_up_natr": {
            "n": 304,
            "mean": 3.662,
            "median": 2.805,
            "p25": 2.028,
            "p75": 4.464,
            "hist": {
              "bin_edges": [
                0.0,
                0.25,
                0.5,
                0.75,
                1.0,
                1.25,
                1.5,
                1.75,
                2.0,
                2.25,
                2.5,
                2.75,
                3.0,
                3.25,
                3.5,
                3.75,
                4.0
              ],
              "counts": [
                0,
                0,
                1,
                5,
                15,
                18,
                20,
                12,
                23,
                27,
                25,
                18,
                11,
                10,
                14,
                105
              ],
              "bin_centers": [
                0.125,
                0.375,
                0.625,
                0.875,
                1.125,
                1.375,
                1.625,
                1.875,
                2.125,
                2.375,
                2.625,
                2.875,
                3.125,
                3.375,
                3.625,
                3.875
              ],
              "clip_lo": 0.0,
              "clip_hi": 4.0
            }
          },
          "max_down_natr": {
            "n": 304,
            "mean": -0.894,
            "median": -0.778,
            "p25": -1.142,
            "p75": -0.393,
            "hist": {
              "bin_edges": [
                -4.0,
                -3.75,
                -3.5,
                -3.25,
                -3.0,
                -2.75,
                -2.5,
                -2.25,
                -2.0,
                -1.75,
                -1.5,
                -1.25,
                -1.0,
                -0.75,
                -0.5,
                -0.25,
                0.0
              ],
              "counts": [
                3,
                0,
                0,
                3,
                0,
                0,
                3,
                11,
                8,
                9,
                21,
                43,
                57,
                54,
                46,
                46
              ],
              "bin_centers": [
                -3.875,
                -3.625,
                -3.375,
                -3.125,
                -2.875,
                -2.625,
                -2.375,
                -2.125,
                -1.875,
                -1.625,
                -1.375,
                -1.125,
                -0.875,
                -0.625,
                -0.375,
                -0.125
              ],
              "clip_lo": -4.0,
              "clip_hi": 0.0
            }
          }
        },
        "breakdown": {
          "n": 46,
          "max_up_natr": {
            "n": 46,
            "mean": 1.726,
            "median": 0.985,
            "p25": 0.387,
            "p75": 2.136,
            "hist": {
              "bin_edges": [
                0.0,
                0.25,
                0.5,
                0.75,
                1.0,
                1.25,
                1.5,
                1.75,
                2.0,
                2.25,
                2.5,
                2.75,
                3.0,
                3.25,
                3.5,
                3.75,
                4.0
              ],
              "counts": [
                9,
                5,
                6,
                5,
                5,
                1,
                0,
                3,
                1,
                1,
                1,
                0,
                0,
                0,
                0,
                9
              ],
              "bin_centers": [
                0.125,
                0.375,
                0.625,
                0.875,
                1.125,
                1.375,
                1.625,
                1.875,
                2.125,
                2.375,
                2.625,
                2.875,
                3.125,
                3.375,
                3.625,
                3.875
              ],
              "clip_lo": 0.0,
              "clip_hi": 4.0
            }
          },
          "max_down_natr": {
            "n": 46,
            "mean": -2.812,
            "median": -2.147,
            "p25": -3.98,
            "p75": -1.534,
            "hist": {
              "bin_edges": [
                -4.0,
                -3.75,
                -3.5,
                -3.25,
                -3.0,
                -2.75,
                -2.5,
                -2.25,
                -2.0,
                -1.75,
                -1.5,
                -1.25,
                -1.0,
                -0.75,
                -0.5,
                -0.25,
                0.0
              ],
              "counts": [
                13,
                2,
                1,
                0,
                1,
                3,
                2,
                4,
                2,
                7,
                3,
                4,
                0,
                2,
                1,
                1
              ],
              "bin_centers": [
                -3.875,
                -3.625,
                -3.375,
                -3.125,
                -2.875,
                -2.625,
                -2.375,
                -2.125,
                -1.875,
                -1.625,
                -1.375,
                -1.125,
                -0.875,
                -0.625,
                -0.375,
                -0.125
              ],
              "clip_lo": -4.0,
              "clip_hi": 0.0
            }
          }
        },
        "sideways": {
          "n": 72,
          "max_up_natr": {
            "n": 72,
            "mean": 0.78,
            "median": 0.754,
            "p25": 0.449,
            "p75": 1.042,
            "hist": {
              "bin_edges": [
                0.0,
                0.25,
                0.5,
                0.75,
                1.0,
                1.25,
                1.5,
                1.75,
                2.0,
                2.25,
                2.5,
                2.75,
                3.0,
                3.25,
                3.5,
                3.75,
                4.0
              ],
              "counts": [
                4,
                18,
                13,
                18,
                7,
                7,
                3,
                1,
                1,
                0,
                0,
                0,
                0,
                0,
                0,
                0
              ],
              "bin_centers": [
                0.125,
                0.375,
                0.625,
                0.875,
                1.125,
                1.375,
                1.625,
                1.875,
                2.125,
                2.375,
                2.625,
                2.875,
                3.125,
                3.375,
                3.625,
                3.875
              ],
              "clip_lo": 0.0,
              "clip_hi": 4.0
            }
          },
          "max_down_natr": {
            "n": 72,
            "mean": -1.322,
            "median": -1.209,
            "p25": -1.672,
            "p75": -0.889,
            "hist": {
              "bin_edges": [
                -4.0,
                -3.75,
                -3.5,
                -3.25,
                -3.0,
                -2.75,
                -2.5,
                -2.25,
                -2.0,
                -1.75,
                -1.5,
                -1.25,
                -1.0,
                -0.75,
                -0.5,
                -0.25,
                0.0
              ],
              "counts": [
                1,
                0,
                1,
                0,
                0,
                1,
                3,
                3,
                5,
                10,
                10,
                12,
                12,
                11,
                3,
                0
              ],
              "bin_centers": [
                -3.875,
                -3.625,
                -3.375,
                -3.125,
                -2.875,
                -2.625,
                -2.375,
                -2.125,
                -1.875,
                -1.625,
                -1.375,
                -1.125,
                -0.875,
                -0.625,
                -0.375,
                -0.125
              ],
              "clip_lo": -4.0,
              "clip_hi": 0.0
            }
          }
        },
        "forming": {
          "n": 0,
          "max_up_natr": {
            "n": 0,
            "mean": null,
            "median": null,
            "p25": null,
            "p75": null
          },
          "max_down_natr": {
            "n": 0,
            "mean": null,
            "median": null,
            "p25": null,
            "p75": null
          }
        }
      },
      "max_up_natr_hist": {
        "bin_edges": [
          0.0,
          0.25,
          0.5,
          0.75,
          1.0,
          1.25,
          1.5,
          1.75,
          2.0,
          2.25,
          2.5,
          2.75,
          3.0,
          3.25,
          3.5,
          3.75,
          4.0
        ],
        "counts": [
          13,
          23,
          20,
          28,
          27,
          26,
          23,
          16,
          25,
          28,
          26,
          18,
          11,
          10,
          14,
          114
        ],
        "bin_centers": [
          0.125,
          0.375,
          0.625,
          0.875,
          1.125,
          1.375,
          1.625,
          1.875,
          2.125,
          2.375,
          2.625,
          2.875,
          3.125,
          3.375,
          3.625,
          3.875
        ],
        "clip_lo": 0.0,
        "clip_hi": 4.0
      },
      "max_down_natr_hist": {
        "bin_edges": [
          -4.0,
          -3.75,
          -3.5,
          -3.25,
          -3.0,
          -2.75,
          -2.5,
          -2.25,
          -2.0,
          -1.75,
          -1.5,
          -1.25,
          -1.0,
          -0.75,
          -0.5,
          -0.25,
          0.0
        ],
        "counts": [
          17,
          2,
          2,
          3,
          1,
          4,
          8,
          18,
          15,
          26,
          34,
          59,
          69,
          67,
          50,
          47
        ],
        "bin_centers": [
          -3.875,
          -3.625,
          -3.375,
          -3.125,
          -2.875,
          -2.625,
          -2.375,
          -2.125,
          -1.875,
          -1.625,
          -1.375,
          -1.125,
          -0.875,
          -0.625,
          -0.375,
          -0.125
        ],
        "clip_lo": -4.0,
        "clip_hi": 0.0
      },
      "timestamp_min": 1523246400000,
      "timestamp_max": 1785182400000,
      "timestamp_min_iso": "2018-04-09T04:00:00Z",
      "timestamp_max_iso": "2026-07-27T20:00:00Z"
    },
    {
      "pattern_type": "reverse_head_and_shoulders",
      "pattern_name": "Reverse Head & Shoulders",
      "timeframe": "1h",
      "bias": "bullish",
      "n": 7924,
      "n_symbols": 653,
      "breakout_success_rate": 71.54,
      "breakdown_success_rate": 27.06,
      "sideways_rate": 1.4,
      "forming_rate": 0.0,
      "both_cleared_rate": 36.74,
      "breakout_success_rate_ci95": [
        70.54,
        72.53
      ],
      "breakdown_success_rate_ci95": [
        26.09,
        28.05
      ],
      "sideways_rate_ci95": [
        1.16,
        1.68
      ],
      "forming_rate_ci95": [
        0.0,
        0.05
      ],
      "both_sides_rate": 36.74,
      "expected_hit_rate": 71.54,
      "expected_hit_rate_ci95": [
        70.54,
        72.53
      ],
      "mean_ret_10c": 0.244,
      "median_ret_10c": 0.0,
      "std_ret_10c": 6.581,
      "win_rate_ret_gt0": 49.91,
      "p25_ret_10c": -2.527,
      "p75_ret_10c": 2.552,
      "mean_mfe": 4.572,
      "mean_mae": -3.859,
      "mfe_mae_ratio": 1.185,
      "max_up_natr": {
        "n": 7924,
        "mean": 2.541,
        "median": 1.717,
        "p25": 0.8,
        "p75": 3.139,
        "hist": {
          "bin_edges": [
            0.0,
            0.25,
            0.5,
            0.75,
            1.0,
            1.25,
            1.5,
            1.75,
            2.0,
            2.25,
            2.5,
            2.75,
            3.0,
            3.25,
            3.5,
            3.75,
            4.0
          ],
          "counts": [
            679,
            596,
            578,
            589,
            573,
            539,
            470,
            478,
            374,
            348,
            286,
            286,
            235,
            212,
            173,
            1508
          ],
          "bin_centers": [
            0.125,
            0.375,
            0.625,
            0.875,
            1.125,
            1.375,
            1.625,
            1.875,
            2.125,
            2.375,
            2.625,
            2.875,
            3.125,
            3.375,
            3.625,
            3.875
          ],
          "clip_lo": 0.0,
          "clip_hi": 4.0
        }
      },
      "max_down_natr": {
        "n": 7924,
        "mean": -2.258,
        "median": -1.553,
        "p25": -2.895,
        "p75": -0.721,
        "hist": {
          "bin_edges": [
            -4.0,
            -3.75,
            -3.5,
            -3.25,
            -3.0,
            -2.75,
            -2.5,
            -2.25,
            -2.0,
            -1.75,
            -1.5,
            -1.25,
            -1.0,
            -0.75,
            -0.5,
            -0.25,
            0.0
          ],
          "counts": [
            1301,
            159,
            195,
            223,
            240,
            289,
            320,
            394,
            457,
            494,
            550,
            583,
            666,
            713,
            704,
            636
          ],
          "bin_centers": [
            -3.875,
            -3.625,
            -3.375,
            -3.125,
            -2.875,
            -2.625,
            -2.375,
            -2.125,
            -1.875,
            -1.625,
            -1.375,
            -1.125,
            -0.875,
            -0.625,
            -0.375,
            -0.125
          ],
          "clip_lo": -4.0,
          "clip_hi": 0.0
        }
      },
      "median_max_up_natr": 1.717,
      "median_max_down_natr": -1.553,
      "mean_max_up_natr": 2.541,
      "mean_max_down_natr": -2.258,
      "p25_max_up_natr": 0.8,
      "p75_max_up_natr": 3.139,
      "p25_max_down_natr": -2.895,
      "p75_max_down_natr": -0.721,
      "outcome_natr_moves": {
        "breakout": {
          "n": 5669,
          "max_up_natr": {
            "n": 5669,
            "mean": 3.074,
            "median": 2.168,
            "p25": 1.296,
            "p75": 3.698,
            "hist": {
              "bin_edges": [
                0.0,
                0.25,
                0.5,
                0.75,
                1.0,
                1.25,
                1.5,
                1.75,
                2.0,
                2.25,
                2.5,
                2.75,
                3.0,
                3.25,
                3.5,
                3.75,
                4.0
              ],
              "counts": [
                149,
                149,
                189,
                377,
                460,
                474,
                401,
                415,
                335,
                289,
                256,
                254,
                203,
                188,
                154,
                1376
              ],
              "bin_centers": [
                0.125,
                0.375,
                0.625,
                0.875,
                1.125,
                1.375,
                1.625,
                1.875,
                2.125,
                2.375,
                2.625,
                2.875,
                3.125,
                3.375,
                3.625,
                3.875
              ],
              "clip_lo": 0.0,
              "clip_hi": 4.0
            }
          },
          "max_down_natr": {
            "n": 5669,
            "mean": -1.847,
            "median": -1.092,
            "p25": -2.347,
            "p75": -0.535,
            "hist": {
              "bin_edges": [
                -4.0,
                -3.75,
                -3.5,
                -3.25,
                -3.0,
                -2.75,
                -2.5,
                -2.25,
                -2.0,
                -1.75,
                -1.5,
                -1.25,
                -1.0,
                -0.75,
                -0.5,
                -0.25,
                0.0
              ],
              "counts": [
                705,
                102,
                108,
                130,
                113,
                155,
                176,
                215,
                260,
                288,
                338,
                434,
                620,
                697,
                694,
                634
              ],
              "bin_centers": [
                -3.875,
                -3.625,
                -3.375,
                -3.125,
                -2.875,
                -2.625,
                -2.375,
                -2.125,
                -1.875,
                -1.625,
                -1.375,
                -1.125,
                -0.875,
                -0.625,
                -0.375,
                -0.125
              ],
              "clip_lo": -4.0,
              "clip_hi": 0.0
            }
          }
        },
        "breakdown": {
          "n": 2144,
          "max_up_natr": {
            "n": 2144,
            "mean": 1.23,
            "median": 0.584,
            "p25": 0.259,
            "p75": 1.347,
            "hist": {
              "bin_edges": [
                0.0,
                0.25,
                0.5,
                0.75,
                1.0,
                1.25,
                1.5,
                1.75,
                2.0,
                2.25,
                2.5,
                2.75,
                3.0,
                3.25,
                3.5,
                3.75,
                4.0
              ],
              "counts": [
                521,
                421,
                342,
                183,
                113,
                65,
                69,
                63,
                39,
                59,
                30,
                32,
                32,
                24,
                19,
                132
              ],
              "bin_centers": [
                0.125,
                0.375,
                0.625,
                0.875,
                1.125,
                1.375,
                1.625,
                1.875,
                2.125,
                2.375,
                2.625,
                2.875,
                3.125,
                3.375,
                3.625,
                3.875
              ],
              "clip_lo": 0.0,
              "clip_hi": 4.0
            }
          },
          "max_down_natr": {
            "n": 2144,
            "mean": -3.418,
            "median": -2.535,
            "p25": -3.947,
            "p75": -1.761,
            "hist": {
              "bin_edges": [
                -4.0,
                -3.75,
                -3.5,
                -3.25,
                -3.0,
                -2.75,
                -2.5,
                -2.25,
                -2.0,
                -1.75,
                -1.5,
                -1.25,
                -1.0,
                -0.75,
                -0.5,
                -0.25,
                0.0
              ],
              "counts": [
                596,
                57,
                87,
                93,
                127,
                134,
                144,
                179,
                197,
                205,
                205,
                120,
                0,
                0,
                0,
                0
              ],
              "bin_centers": [
                -3.875,
                -3.625,
                -3.375,
                -3.125,
                -2.875,
                -2.625,
                -2.375,
                -2.125,
                -1.875,
                -1.625,
                -1.375,
                -1.125,
                -0.875,
                -0.625,
                -0.375,
                -0.125
              ],
              "clip_lo": -4.0,
              "clip_hi": 0.0
            }
          }
        },
        "sideways": {
          "n": 111,
          "max_up_natr": {
            "n": 111,
            "mean": 0.592,
            "median": 0.631,
            "p25": 0.416,
            "p75": 0.753,
            "hist": {
              "bin_edges": [
                0.0,
                0.25,
                0.5,
                0.75,
                1.0,
                1.25,
                1.5,
                1.75,
                2.0,
                2.25,
                2.5,
                2.75,
                3.0,
                3.25,
                3.5,
                3.75,
                4.0
              ],
              "counts": [
                9,
                26,
                47,
                29,
                0,
                0,
                0,
                0,
                0,
                0,
                0,
                0,
                0,
                0,
                0,
                0
              ],
              "bin_centers": [
                0.125,
                0.375,
                0.625,
                0.875,
                1.125,
                1.375,
                1.625,
                1.875,
                2.125,
                2.375,
                2.625,
                2.875,
                3.125,
                3.375,
                3.625,
                3.875
              ],
              "clip_lo": 0.0,
              "clip_hi": 4.0
            }
          },
          "max_down_natr": {
            "n": 111,
            "mean": -0.884,
            "median": -0.922,
            "p25": -1.065,
            "p75": -0.745,
            "hist": {
              "bin_edges": [
                -4.0,
                -3.75,
                -3.5,
                -3.25,
                -3.0,
                -2.75,
                -2.5,
                -2.25,
                -2.0,
                -1.75,
                -1.5,
                -1.25,
                -1.0,
                -0.75,
                -0.5,
                -0.25,
                0.0
              ],
              "counts": [
                0,
                0,
                0,
                0,
                0,
                0,
                0,
                0,
                0,
                1,
                7,
                29,
                46,
                16,
                10,
                2
              ],
              "bin_centers": [
                -3.875,
                -3.625,
                -3.375,
                -3.125,
                -2.875,
                -2.625,
                -2.375,
                -2.125,
                -1.875,
                -1.625,
                -1.375,
                -1.125,
                -0.875,
                -0.625,
                -0.375,
                -0.125
              ],
              "clip_lo": -4.0,
              "clip_hi": 0.0
            }
          }
        },
        "forming": {
          "n": 0,
          "max_up_natr": {
            "n": 0,
            "mean": null,
            "median": null,
            "p25": null,
            "p75": null
          },
          "max_down_natr": {
            "n": 0,
            "mean": null,
            "median": null,
            "p25": null,
            "p75": null
          }
        }
      },
      "max_up_natr_hist": {
        "bin_edges": [
          0.0,
          0.25,
          0.5,
          0.75,
          1.0,
          1.25,
          1.5,
          1.75,
          2.0,
          2.25,
          2.5,
          2.75,
          3.0,
          3.25,
          3.5,
          3.75,
          4.0
        ],
        "counts": [
          679,
          596,
          578,
          589,
          573,
          539,
          470,
          478,
          374,
          348,
          286,
          286,
          235,
          212,
          173,
          1508
        ],
        "bin_centers": [
          0.125,
          0.375,
          0.625,
          0.875,
          1.125,
          1.375,
          1.625,
          1.875,
          2.125,
          2.375,
          2.625,
          2.875,
          3.125,
          3.375,
          3.625,
          3.875
        ],
        "clip_lo": 0.0,
        "clip_hi": 4.0
      },
      "max_down_natr_hist": {
        "bin_edges": [
          -4.0,
          -3.75,
          -3.5,
          -3.25,
          -3.0,
          -2.75,
          -2.5,
          -2.25,
          -2.0,
          -1.75,
          -1.5,
          -1.25,
          -1.0,
          -0.75,
          -0.5,
          -0.25,
          0.0
        ],
        "counts": [
          1301,
          159,
          195,
          223,
          240,
          289,
          320,
          394,
          457,
          494,
          550,
          583,
          666,
          713,
          704,
          636
        ],
        "bin_centers": [
          -3.875,
          -3.625,
          -3.375,
          -3.125,
          -2.875,
          -2.625,
          -2.375,
          -2.125,
          -1.875,
          -1.625,
          -1.375,
          -1.125,
          -0.875,
          -0.625,
          -0.375,
          -0.125
        ],
        "clip_lo": -4.0,
        "clip_hi": 0.0
      },
      "timestamp_min": 1578870000000,
      "timestamp_max": 1785466800000,
      "timestamp_min_iso": "2020-01-12T23:00:00Z",
      "timestamp_max_iso": "2026-07-31T03:00:00Z"
    },
    {
      "pattern_type": "falling_wedge",
      "pattern_name": "Falling Wedge",
      "timeframe": "4h",
      "bias": "bullish",
      "n": 4246,
      "n_symbols": 622,
      "breakout_success_rate": 71.03,
      "breakdown_success_rate": 26.35,
      "sideways_rate": 2.62,
      "forming_rate": 0.0,
      "both_cleared_rate": 32.52,
      "breakout_success_rate_ci95": [
        69.65,
        72.38
      ],
      "breakdown_success_rate_ci95": [
        25.05,
        27.7
      ],
      "sideways_rate_ci95": [
        2.18,
        3.14
      ],
      "forming_rate_ci95": [
        0.0,
        0.09
      ],
      "both_sides_rate": 32.52,
      "expected_hit_rate": 71.03,
      "expected_hit_rate_ci95": [
        69.65,
        72.38
      ],
      "mean_ret_10c": 0.438,
      "median_ret_10c": 0.777,
      "std_ret_10c": 11.955,
      "win_rate_ret_gt0": 53.41,
      "p25_ret_10c": -5.316,
      "p75_ret_10c": 5.789,
      "mean_mfe": 12.675,
      "mean_mae": -7.889,
      "mfe_mae_ratio": 1.607,
      "max_up_natr": {
        "n": 4246,
        "mean": 3.669,
        "median": 2.15,
        "p25": 1.049,
        "p75": 3.673,
        "hist": {
          "bin_edges": [
            0.0,
            0.25,
            0.5,
            0.75,
            1.0,
            1.25,
            1.5,
            1.75,
            2.0,
            2.25,
            2.5,
            2.75,
            3.0,
            3.25,
            3.5,
            3.75,
            4.0
          ],
          "counts": [
            389,
            220,
            196,
            223,
            227,
            263,
            245,
            232,
            210,
            209,
            201,
            177,
            171,
            133,
            127,
            1023
          ],
          "bin_centers": [
            0.125,
            0.375,
            0.625,
            0.875,
            1.125,
            1.375,
            1.625,
            1.875,
            2.125,
            2.375,
            2.625,
            2.875,
            3.125,
            3.375,
            3.625,
            3.875
          ],
          "clip_lo": 0.0,
          "clip_hi": 4.0
        }
      },
      "max_down_natr": {
        "n": 4246,
        "mean": -2.367,
        "median": -1.298,
        "p25": -3.317,
        "p75": -0.379,
        "hist": {
          "bin_edges": [
            -4.0,
            -3.75,
            -3.5,
            -3.25,
            -3.0,
            -2.75,
            -2.5,
            -2.25,
            -2.0,
            -1.75,
            -1.5,
            -1.25,
            -1.0,
            -0.75,
            -0.5,
            -0.25,
            0.0
          ],
          "counts": [
            919,
            75,
            104,
            94,
            107,
            107,
            125,
            127,
            145,
            159,
            206,
            200,
            255,
            351,
            479,
            793
          ],
          "bin_centers": [
            -3.875,
            -3.625,
            -3.375,
            -3.125,
            -2.875,
            -2.625,
            -2.375,
            -2.125,
            -1.875,
            -1.625,
            -1.375,
            -1.125,
            -0.875,
            -0.625,
            -0.375,
            -0.125
          ],
          "clip_lo": -4.0,
          "clip_hi": 0.0
        }
      },
      "median_max_up_natr": 2.15,
      "median_max_down_natr": -1.298,
      "mean_max_up_natr": 3.669,
      "mean_max_down_natr": -2.367,
      "p25_max_up_natr": 1.049,
      "p75_max_up_natr": 3.673,
      "p25_max_down_natr": -3.317,
      "p75_max_down_natr": -0.379,
      "outcome_natr_moves": {
        "breakout": {
          "n": 3016,
          "max_up_natr": {
            "n": 3016,
            "mean": 4.684,
            "median": 2.742,
            "p25": 1.742,
            "p75": 4.236,
            "hist": {
              "bin_edges": [
                0.0,
                0.25,
                0.5,
                0.75,
                1.0,
                1.25,
                1.5,
                1.75,
                2.0,
                2.25,
                2.5,
                2.75,
                3.0,
                3.25,
                3.5,
                3.75,
                4.0
              ],
              "counts": [
                0,
                0,
                38,
                128,
                172,
                215,
                208,
                206,
                179,
                184,
                186,
                160,
                159,
                127,
                111,
                943
              ],
              "bin_centers": [
                0.125,
                0.375,
                0.625,
                0.875,
                1.125,
                1.375,
                1.625,
                1.875,
                2.125,
                2.375,
                2.625,
                2.875,
                3.125,
                3.375,
                3.625,
                3.875
              ],
              "clip_lo": 0.0,
              "clip_hi": 4.0
            }
          },
          "max_down_natr": {
            "n": 3016,
            "mean": -1.376,
            "median": -0.665,
            "p25": -1.679,
            "p75": -0.235,
            "hist": {
              "bin_edges": [
                -4.0,
                -3.75,
                -3.5,
                -3.25,
                -3.0,
                -2.75,
                -2.5,
                -2.25,
                -2.0,
                -1.75,
                -1.5,
                -1.25,
                -1.0,
                -0.75,
                -0.5,
                -0.25,
                0.0
              ],
              "counts": [
                286,
                28,
                47,
                30,
                42,
                56,
                58,
                72,
                101,
                118,
                165,
                173,
                236,
                336,
                476,
                792
              ],
              "bin_centers": [
                -3.875,
                -3.625,
                -3.375,
                -3.125,
                -2.875,
                -2.625,
                -2.375,
                -2.125,
                -1.875,
                -1.625,
                -1.375,
                -1.125,
                -0.875,
                -0.625,
                -0.375,
                -0.125
              ],
              "clip_lo": -4.0,
              "clip_hi": 0.0
            }
          }
        },
        "breakdown": {
          "n": 1119,
          "max_up_natr": {
            "n": 1119,
            "mean": 1.227,
            "median": 0.473,
            "p25": 0.168,
            "p75": 1.357,
            "hist": {
              "bin_edges": [
                0.0,
                0.25,
                0.5,
                0.75,
                1.0,
                1.25,
                1.5,
                1.75,
                2.0,
                2.25,
                2.5,
                2.75,
                3.0,
                3.25,
                3.5,
                3.75,
                4.0
              ],
              "counts": [
                381,
                190,
                121,
                74,
                48,
                45,
                36,
                25,
                30,
                24,
                14,
                17,
                12,
                6,
                16,
                80
              ],
              "bin_centers": [
                0.125,
                0.375,
                0.625,
                0.875,
                1.125,
                1.375,
                1.625,
                1.875,
                2.125,
                2.375,
                2.625,
                2.875,
                3.125,
                3.375,
                3.625,
                3.875
              ],
              "clip_lo": 0.0,
              "clip_hi": 4.0
            }
          },
          "max_down_natr": {
            "n": 1119,
            "mean": -5.093,
            "median": -4.072,
            "p25": -6.397,
            "p75": -2.77,
            "hist": {
              "bin_edges": [
                -4.0,
                -3.75,
                -3.5,
                -3.25,
                -3.0,
                -2.75,
                -2.5,
                -2.25,
                -2.0,
                -1.75,
                -1.5,
                -1.25,
                -1.0,
                -0.75,
                -0.5,
                -0.25,
                0.0
              ],
              "counts": [
                629,
                47,
                53,
                60,
                58,
                45,
                59,
                43,
                36,
                31,
                26,
                17,
                10,
                5,
                0,
                0
              ],
              "bin_centers": [
                -3.875,
                -3.625,
                -3.375,
                -3.125,
                -2.875,
                -2.625,
                -2.375,
                -2.125,
                -1.875,
                -1.625,
                -1.375,
                -1.125,
                -0.875,
                -0.625,
                -0.375,
                -0.125
              ],
              "clip_lo": -4.0,
              "clip_hi": 0.0
            }
          }
        },
        "sideways": {
          "n": 111,
          "max_up_natr": {
            "n": 111,
            "mean": 0.693,
            "median": 0.607,
            "p25": 0.454,
            "p75": 0.841,
            "hist": {
              "bin_edges": [
                0.0,
                0.25,
                0.5,
                0.75,
                1.0,
                1.25,
                1.5,
                1.75,
                2.0,
                2.25,
                2.5,
                2.75,
                3.0,
                3.25,
                3.5,
                3.75,
                4.0
              ],
              "counts": [
                8,
                30,
                37,
                21,
                7,
                3,
                1,
                1,
                1,
                1,
                1,
                0,
                0,
                0,
                0,
                0
              ],
              "bin_centers": [
                0.125,
                0.375,
                0.625,
                0.875,
                1.125,
                1.375,
                1.625,
                1.875,
                2.125,
                2.375,
                2.625,
                2.875,
                3.125,
                3.375,
                3.625,
                3.875
              ],
              "clip_lo": 0.0,
              "clip_hi": 4.0
            }
          },
          "max_down_natr": {
            "n": 111,
            "mean": -1.8,
            "median": -1.707,
            "p25": -2.318,
            "p75": -1.093,
            "hist": {
              "bin_edges": [
                -4.0,
                -3.75,
                -3.5,
                -3.25,
                -3.0,
                -2.75,
                -2.5,
                -2.25,
                -2.0,
                -1.75,
                -1.5,
                -1.25,
                -1.0,
                -0.75,
                -0.5,
                -0.25,
                0.0
              ],
              "counts": [
                4,
                0,
                4,
                4,
                7,
                6,
                8,
                12,
                8,
                10,
                15,
                10,
                9,
                10,
                3,
                1
              ],
              "bin_centers": [
                -3.875,
                -3.625,
                -3.375,
                -3.125,
                -2.875,
                -2.625,
                -2.375,
                -2.125,
                -1.875,
                -1.625,
                -1.375,
                -1.125,
                -0.875,
                -0.625,
                -0.375,
                -0.125
              ],
              "clip_lo": -4.0,
              "clip_hi": 0.0
            }
          }
        },
        "forming": {
          "n": 0,
          "max_up_natr": {
            "n": 0,
            "mean": null,
            "median": null,
            "p25": null,
            "p75": null
          },
          "max_down_natr": {
            "n": 0,
            "mean": null,
            "median": null,
            "p25": null,
            "p75": null
          }
        }
      },
      "max_up_natr_hist": {
        "bin_edges": [
          0.0,
          0.25,
          0.5,
          0.75,
          1.0,
          1.25,
          1.5,
          1.75,
          2.0,
          2.25,
          2.5,
          2.75,
          3.0,
          3.25,
          3.5,
          3.75,
          4.0
        ],
        "counts": [
          389,
          220,
          196,
          223,
          227,
          263,
          245,
          232,
          210,
          209,
          201,
          177,
          171,
          133,
          127,
          1023
        ],
        "bin_centers": [
          0.125,
          0.375,
          0.625,
          0.875,
          1.125,
          1.375,
          1.625,
          1.875,
          2.125,
          2.375,
          2.625,
          2.875,
          3.125,
          3.375,
          3.625,
          3.875
        ],
        "clip_lo": 0.0,
        "clip_hi": 4.0
      },
      "max_down_natr_hist": {
        "bin_edges": [
          -4.0,
          -3.75,
          -3.5,
          -3.25,
          -3.0,
          -2.75,
          -2.5,
          -2.25,
          -2.0,
          -1.75,
          -1.5,
          -1.25,
          -1.0,
          -0.75,
          -0.5,
          -0.25,
          0.0
        ],
        "counts": [
          919,
          75,
          104,
          94,
          107,
          107,
          125,
          127,
          145,
          159,
          206,
          200,
          255,
          351,
          479,
          793
        ],
        "bin_centers": [
          -3.875,
          -3.625,
          -3.375,
          -3.125,
          -2.875,
          -2.625,
          -2.375,
          -2.125,
          -1.875,
          -1.625,
          -1.375,
          -1.125,
          -0.875,
          -0.625,
          -0.375,
          -0.125
        ],
        "clip_lo": -4.0,
        "clip_hi": 0.0
      },
      "timestamp_min": 1521388800000,
      "timestamp_max": 1785240000000,
      "timestamp_min_iso": "2018-03-18T16:00:00Z",
      "timestamp_max_iso": "2026-07-28T12:00:00Z"
    },
    {
      "pattern_type": "bullish_pennant",
      "pattern_name": "Bullish Pennant",
      "timeframe": "15m",
      "bias": "bullish",
      "n": 289,
      "n_symbols": 214,
      "breakout_success_rate": 70.93,
      "breakdown_success_rate": 27.68,
      "sideways_rate": 1.39,
      "forming_rate": 0.0,
      "both_cleared_rate": 41.52,
      "breakout_success_rate_ci95": [
        65.45,
        75.87
      ],
      "breakdown_success_rate_ci95": [
        22.84,
        33.11
      ],
      "sideways_rate_ci95": [
        0.54,
        3.5
      ],
      "forming_rate_ci95": [
        0.0,
        1.31
      ],
      "both_sides_rate": 41.52,
      "expected_hit_rate": 70.93,
      "expected_hit_rate_ci95": [
        65.45,
        75.87
      ],
      "mean_ret_10c": 0.644,
      "median_ret_10c": 0.07,
      "std_ret_10c": 5.051,
      "win_rate_ret_gt0": 50.52,
      "p25_ret_10c": -1.184,
      "p75_ret_10c": 1.65,
      "mean_mfe": 3.709,
      "mean_mae": -2.258,
      "mfe_mae_ratio": 1.643,
      "max_up_natr": {
        "n": 289,
        "mean": 3.619,
        "median": 2.383,
        "p25": 1.148,
        "p75": 4.5,
        "hist": {
          "bin_edges": [
            0.0,
            0.25,
            0.5,
            0.75,
            1.0,
            1.25,
            1.5,
            1.75,
            2.0,
            2.25,
            2.5,
            2.75,
            3.0,
            3.25,
            3.5,
            3.75,
            4.0
          ],
          "counts": [
            19,
            13,
            18,
            13,
            15,
            19,
            15,
            10,
            12,
            13,
            9,
            10,
            7,
            11,
            6,
            99
          ],
          "bin_centers": [
            0.125,
            0.375,
            0.625,
            0.875,
            1.125,
            1.375,
            1.625,
            1.875,
            2.125,
            2.375,
            2.625,
            2.875,
            3.125,
            3.375,
            3.625,
            3.875
          ],
          "clip_lo": 0.0,
          "clip_hi": 4.0
        }
      },
      "max_down_natr": {
        "n": 289,
        "mean": -2.212,
        "median": -1.717,
        "p25": -2.998,
        "p75": -0.628,
        "hist": {
          "bin_edges": [
            -4.0,
            -3.75,
            -3.5,
            -3.25,
            -3.0,
            -2.75,
            -2.5,
            -2.25,
            -2.0,
            -1.75,
            -1.5,
            -1.25,
            -1.0,
            -0.75,
            -0.5,
            -0.25,
            0.0
          ],
          "counts": [
            46,
            11,
            11,
            4,
            15,
            13,
            16,
            10,
            17,
            13,
            11,
            14,
            20,
            29,
            28,
            31
          ],
          "bin_centers": [
            -3.875,
            -3.625,
            -3.375,
            -3.125,
            -2.875,
            -2.625,
            -2.375,
            -2.125,
            -1.875,
            -1.625,
            -1.375,
            -1.125,
            -0.875,
            -0.625,
            -0.375,
            -0.125
          ],
          "clip_lo": -4.0,
          "clip_hi": 0.0
        }
      },
      "median_max_up_natr": 2.383,
      "median_max_down_natr": -1.717,
      "mean_max_up_natr": 3.619,
      "mean_max_down_natr": -2.212,
      "p25_max_up_natr": 1.148,
      "p75_max_up_natr": 4.5,
      "p25_max_down_natr": -2.998,
      "p75_max_down_natr": -0.628,
      "outcome_natr_moves": {
        "breakout": {
          "n": 205,
          "max_up_natr": {
            "n": 205,
            "mean": 4.439,
            "median": 3.189,
            "p25": 1.653,
            "p75": 5.452,
            "hist": {
              "bin_edges": [
                0.0,
                0.25,
                0.5,
                0.75,
                1.0,
                1.25,
                1.5,
                1.75,
                2.0,
                2.25,
                2.5,
                2.75,
                3.0,
                3.25,
                3.5,
                3.75,
                4.0
              ],
              "counts": [
                2,
                2,
                4,
                6,
                14,
                14,
                12,
                7,
                8,
                13,
                8,
                8,
                7,
                10,
                5,
                85
              ],
              "bin_centers": [
                0.125,
                0.375,
                0.625,
                0.875,
                1.125,
                1.375,
                1.625,
                1.875,
                2.125,
                2.375,
                2.625,
                2.875,
                3.125,
                3.375,
                3.625,
                3.875
              ],
              "clip_lo": 0.0,
              "clip_hi": 4.0
            }
          },
          "max_down_natr": {
            "n": 205,
            "mean": -1.668,
            "median": -1.003,
            "p25": -2.352,
            "p75": -0.437,
            "hist": {
              "bin_edges": [
                -4.0,
                -3.75,
                -3.5,
                -3.25,
                -3.0,
                -2.75,
                -2.5,
                -2.25,
                -2.0,
                -1.75,
                -1.5,
                -1.25,
                -1.0,
                -0.75,
                -0.5,
                -0.25,
                0.0
              ],
              "counts": [
                21,
                5,
                4,
                1,
                7,
                8,
                11,
                5,
                11,
                10,
                9,
                11,
                18,
                27,
                26,
                31
              ],
              "bin_centers": [
                -3.875,
                -3.625,
                -3.375,
                -3.125,
                -2.875,
                -2.625,
                -2.375,
                -2.125,
                -1.875,
                -1.625,
                -1.375,
                -1.125,
                -0.875,
                -0.625,
                -0.375,
                -0.125
              ],
              "clip_lo": -4.0,
              "clip_hi": 0.0
            }
          }
        },
        "breakdown": {
          "n": 80,
          "max_up_natr": {
            "n": 80,
            "mean": 1.642,
            "median": 0.714,
            "p25": 0.259,
            "p75": 2.14,
            "hist": {
              "bin_edges": [
                0.0,
                0.25,
                0.5,
                0.75,
                1.0,
                1.25,
                1.5,
                1.75,
                2.0,
                2.25,
                2.5,
                2.75,
                3.0,
                3.25,
                3.5,
                3.75,
                4.0
              ],
              "counts": [
                17,
                10,
                14,
                6,
                1,
                4,
                3,
                2,
                4,
                0,
                1,
                2,
                0,
                1,
                1,
                14
              ],
              "bin_centers": [
                0.125,
                0.375,
                0.625,
                0.875,
                1.125,
                1.375,
                1.625,
                1.875,
                2.125,
                2.375,
                2.625,
                2.875,
                3.125,
                3.375,
                3.625,
                3.875
              ],
              "clip_lo": 0.0,
              "clip_hi": 4.0
            }
          },
          "max_down_natr": {
            "n": 80,
            "mean": -3.676,
            "median": -3.035,
            "p25": -4.167,
            "p75": -2.228,
            "hist": {
              "bin_edges": [
                -4.0,
                -3.75,
                -3.5,
                -3.25,
                -3.0,
                -2.75,
                -2.5,
                -2.25,
                -2.0,
                -1.75,
                -1.5,
                -1.25,
                -1.0,
                -0.75,
                -0.5,
                -0.25,
                0.0
              ],
              "counts": [
                25,
                6,
                7,
                3,
                8,
                5,
                5,
                5,
                6,
                3,
                2,
                1,
                2,
                1,
                1,
                0
              ],
              "bin_centers": [
                -3.875,
                -3.625,
                -3.375,
                -3.125,
                -2.875,
                -2.625,
                -2.375,
                -2.125,
                -1.875,
                -1.625,
                -1.375,
                -1.125,
                -0.875,
                -0.625,
                -0.375,
                -0.125
              ],
              "clip_lo": -4.0,
              "clip_hi": 0.0
            }
          }
        },
        "sideways": {
          "n": 4,
          "max_up_natr": {
            "n": 4,
            "mean": 1.12,
            "median": 1.154,
            "p25": 0.705,
            "p75": 1.57
          },
          "max_down_natr": {
            "n": 4,
            "mean": -0.811,
            "median": -0.875,
            "p25": -1.012,
            "p75": -0.674
          }
        },
        "forming": {
          "n": 0,
          "max_up_natr": {
            "n": 0,
            "mean": null,
            "median": null,
            "p25": null,
            "p75": null
          },
          "max_down_natr": {
            "n": 0,
            "mean": null,
            "median": null,
            "p25": null,
            "p75": null
          }
        }
      },
      "max_up_natr_hist": {
        "bin_edges": [
          0.0,
          0.25,
          0.5,
          0.75,
          1.0,
          1.25,
          1.5,
          1.75,
          2.0,
          2.25,
          2.5,
          2.75,
          3.0,
          3.25,
          3.5,
          3.75,
          4.0
        ],
        "counts": [
          19,
          13,
          18,
          13,
          15,
          19,
          15,
          10,
          12,
          13,
          9,
          10,
          7,
          11,
          6,
          99
        ],
        "bin_centers": [
          0.125,
          0.375,
          0.625,
          0.875,
          1.125,
          1.375,
          1.625,
          1.875,
          2.125,
          2.375,
          2.625,
          2.875,
          3.125,
          3.375,
          3.625,
          3.875
        ],
        "clip_lo": 0.0,
        "clip_hi": 4.0
      },
      "max_down_natr_hist": {
        "bin_edges": [
          -4.0,
          -3.75,
          -3.5,
          -3.25,
          -3.0,
          -2.75,
          -2.5,
          -2.25,
          -2.0,
          -1.75,
          -1.5,
          -1.25,
          -1.0,
          -0.75,
          -0.5,
          -0.25,
          0.0
        ],
        "counts": [
          46,
          11,
          11,
          4,
          15,
          13,
          16,
          10,
          17,
          13,
          11,
          14,
          20,
          29,
          28,
          31
        ],
        "bin_centers": [
          -3.875,
          -3.625,
          -3.375,
          -3.125,
          -2.875,
          -2.625,
          -2.375,
          -2.125,
          -1.875,
          -1.625,
          -1.375,
          -1.125,
          -0.875,
          -0.625,
          -0.375,
          -0.125
        ],
        "clip_lo": -4.0,
        "clip_hi": 0.0
      },
      "timestamp_min": 1598274900000,
      "timestamp_max": 1785469500000,
      "timestamp_min_iso": "2020-08-24T13:15:00Z",
      "timestamp_max_iso": "2026-07-31T03:45:00Z"
    },
    {
      "pattern_type": "reverse_head_and_shoulders",
      "pattern_name": "Reverse Head & Shoulders",
      "timeframe": "4h",
      "bias": "bullish",
      "n": 2416,
      "n_symbols": 549,
      "breakout_success_rate": 70.49,
      "breakdown_success_rate": 28.15,
      "sideways_rate": 1.36,
      "forming_rate": 0.0,
      "both_cleared_rate": 41.23,
      "breakout_success_rate_ci95": [
        68.64,
        72.27
      ],
      "breakdown_success_rate_ci95": [
        26.39,
        29.97
      ],
      "sideways_rate_ci95": [
        0.97,
        1.91
      ],
      "forming_rate_ci95": [
        0.0,
        0.16
      ],
      "both_sides_rate": 41.23,
      "expected_hit_rate": 70.49,
      "expected_hit_rate_ci95": [
        68.64,
        72.27
      ],
      "mean_ret_10c": -0.077,
      "median_ret_10c": -0.536,
      "std_ret_10c": 12.825,
      "win_rate_ret_gt0": 46.94,
      "p25_ret_10c": -6.258,
      "p75_ret_10c": 4.517,
      "mean_mfe": 10.583,
      "mean_mae": -8.142,
      "mfe_mae_ratio": 1.3,
      "max_up_natr": {
        "n": 2416,
        "mean": 2.859,
        "median": 1.715,
        "p25": 0.796,
        "p75": 3.307,
        "hist": {
          "bin_edges": [
            0.0,
            0.25,
            0.5,
            0.75,
            1.0,
            1.25,
            1.5,
            1.75,
            2.0,
            2.25,
            2.5,
            2.75,
            3.0,
            3.25,
            3.5,
            3.75,
            4.0
          ],
          "counts": [
            226,
            170,
            186,
            152,
            187,
            154,
            153,
            127,
            104,
            103,
            98,
            61,
            72,
            63,
            60,
            500
          ],
          "bin_centers": [
            0.125,
            0.375,
            0.625,
            0.875,
            1.125,
            1.375,
            1.625,
            1.875,
            2.125,
            2.375,
            2.625,
            2.875,
            3.125,
            3.375,
            3.625,
            3.875
          ],
          "clip_lo": 0.0,
          "clip_hi": 4.0
        }
      },
      "max_down_natr": {
        "n": 2416,
        "mean": -2.266,
        "median": -1.677,
        "p25": -3.065,
        "p75": -0.843,
        "hist": {
          "bin_edges": [
            -4.0,
            -3.75,
            -3.5,
            -3.25,
            -3.0,
            -2.75,
            -2.5,
            -2.25,
            -2.0,
            -1.75,
            -1.5,
            -1.25,
            -1.0,
            -0.75,
            -0.5,
            -0.25,
            0.0
          ],
          "counts": [
            411,
            63,
            77,
            73,
            79,
            74,
            112,
            123,
            146,
            168,
            156,
            208,
            199,
            190,
            166,
            171
          ],
          "bin_centers": [
            -3.875,
            -3.625,
            -3.375,
            -3.125,
            -2.875,
            -2.625,
            -2.375,
            -2.125,
            -1.875,
            -1.625,
            -1.375,
            -1.125,
            -0.875,
            -0.625,
            -0.375,
            -0.125
          ],
          "clip_lo": -4.0,
          "clip_hi": 0.0
        }
      },
      "median_max_up_natr": 1.715,
      "median_max_down_natr": -1.677,
      "mean_max_up_natr": 2.859,
      "mean_max_down_natr": -2.266,
      "p25_max_up_natr": 0.796,
      "p75_max_up_natr": 3.307,
      "p25_max_down_natr": -3.065,
      "p75_max_down_natr": -0.843,
      "outcome_natr_moves": {
        "breakout": {
          "n": 1703,
          "max_up_natr": {
            "n": 1703,
            "mean": 3.552,
            "median": 2.24,
            "p25": 1.313,
            "p75": 3.88,
            "hist": {
              "bin_edges": [
                0.0,
                0.25,
                0.5,
                0.75,
                1.0,
                1.25,
                1.5,
                1.75,
                2.0,
                2.25,
                2.5,
                2.75,
                3.0,
                3.25,
                3.5,
                3.75,
                4.0
              ],
              "counts": [
                37,
                34,
                72,
                90,
                155,
                137,
                136,
                107,
                87,
                93,
                83,
                52,
                67,
                53,
                51,
                449
              ],
              "bin_centers": [
                0.125,
                0.375,
                0.625,
                0.875,
                1.125,
                1.375,
                1.625,
                1.875,
                2.125,
                2.375,
                2.625,
                2.875,
                3.125,
                3.375,
                3.625,
                3.875
              ],
              "clip_lo": 0.0,
              "clip_hi": 4.0
            }
          },
          "max_down_natr": {
            "n": 1703,
            "mean": -1.909,
            "median": -1.231,
            "p25": -2.527,
            "p75": -0.618,
            "hist": {
              "bin_edges": [
                -4.0,
                -3.75,
                -3.5,
                -3.25,
                -3.0,
                -2.75,
                -2.5,
                -2.25,
                -2.0,
                -1.75,
                -1.5,
                -1.25,
                -1.0,
                -0.75,
                -0.5,
                -0.25,
                0.0
              ],
              "counts": [
                220,
                36,
                45,
                39,
                45,
                48,
                64,
                79,
                71,
                101,
                89,
                166,
                185,
                182,
                163,
                170
              ],
              "bin_centers": [
                -3.875,
                -3.625,
                -3.375,
                -3.125,
                -2.875,
                -2.625,
                -2.375,
                -2.125,
                -1.875,
                -1.625,
                -1.375,
                -1.125,
                -0.875,
                -0.625,
                -0.375,
                -0.125
              ],
              "clip_lo": -4.0,
              "clip_hi": 0.0
            }
          }
        },
        "breakdown": {
          "n": 680,
          "max_up_natr": {
            "n": 680,
            "mean": 1.234,
            "median": 0.562,
            "p25": 0.213,
            "p75": 1.397,
            "hist": {
              "bin_edges": [
                0.0,
                0.25,
                0.5,
                0.75,
                1.0,
                1.25,
                1.5,
                1.75,
                2.0,
                2.25,
                2.5,
                2.75,
                3.0,
                3.25,
                3.5,
                3.75,
                4.0
              ],
              "counts": [
                185,
                127,
                103,
                53,
                32,
                17,
                17,
                20,
                17,
                10,
                15,
                9,
                5,
                10,
                9,
                51
              ],
              "bin_centers": [
                0.125,
                0.375,
                0.625,
                0.875,
                1.125,
                1.375,
                1.625,
                1.875,
                2.125,
                2.375,
                2.625,
                2.875,
                3.125,
                3.375,
                3.625,
                3.875
              ],
              "clip_lo": 0.0,
              "clip_hi": 4.0
            }
          },
          "max_down_natr": {
            "n": 680,
            "mean": -3.231,
            "median": -2.58,
            "p25": -3.913,
            "p75": -1.752,
            "hist": {
              "bin_edges": [
                -4.0,
                -3.75,
                -3.5,
                -3.25,
                -3.0,
                -2.75,
                -2.5,
                -2.25,
                -2.0,
                -1.75,
                -1.5,
                -1.25,
                -1.0,
                -0.75,
                -0.5,
                -0.25,
                0.0
              ],
              "counts": [
                191,
                27,
                32,
                34,
                34,
                26,
                48,
                44,
                75,
                66,
                67,
                36,
                0,
                0,
                0,
                0
              ],
              "bin_centers": [
                -3.875,
                -3.625,
                -3.375,
                -3.125,
                -2.875,
                -2.625,
                -2.375,
                -2.125,
                -1.875,
                -1.625,
                -1.375,
                -1.125,
                -0.875,
                -0.625,
                -0.375,
                -0.125
              ],
              "clip_lo": -4.0,
              "clip_hi": 0.0
            }
          }
        },
        "sideways": {
          "n": 33,
          "max_up_natr": {
            "n": 33,
            "mean": 0.562,
            "median": 0.592,
            "p25": 0.403,
            "p75": 0.779,
            "hist": {
              "bin_edges": [
                0.0,
                0.25,
                0.5,
                0.75,
                1.0,
                1.25,
                1.5,
                1.75,
                2.0,
                2.25,
                2.5,
                2.75,
                3.0,
                3.25,
                3.5,
                3.75,
                4.0
              ],
              "counts": [
                4,
                9,
                11,
                9,
                0,
                0,
                0,
                0,
                0,
                0,
                0,
                0,
                0,
                0,
                0,
                0
              ],
              "bin_centers": [
                0.125,
                0.375,
                0.625,
                0.875,
                1.125,
                1.375,
                1.625,
                1.875,
                2.125,
                2.375,
                2.625,
                2.875,
                3.125,
                3.375,
                3.625,
                3.875
              ],
              "clip_lo": 0.0,
              "clip_hi": 4.0
            }
          },
          "max_down_natr": {
            "n": 33,
            "mean": -0.792,
            "median": -0.86,
            "p25": -0.934,
            "p75": -0.586,
            "hist": {
              "bin_edges": [
                -4.0,
                -3.75,
                -3.5,
                -3.25,
                -3.0,
                -2.75,
                -2.5,
                -2.25,
                -2.0,
                -1.75,
                -1.5,
                -1.25,
                -1.0,
                -0.75,
                -0.5,
                -0.25,
                0.0
              ],
              "counts": [
                0,
                0,
                0,
                0,
                0,
                0,
                0,
                0,
                0,
                1,
                0,
                6,
                14,
                8,
                3,
                1
              ],
              "bin_centers": [
                -3.875,
                -3.625,
                -3.375,
                -3.125,
                -2.875,
                -2.625,
                -2.375,
                -2.125,
                -1.875,
                -1.625,
                -1.375,
                -1.125,
                -0.875,
                -0.625,
                -0.375,
                -0.125
              ],
              "clip_lo": -4.0,
              "clip_hi": 0.0
            }
          }
        },
        "forming": {
          "n": 0,
          "max_up_natr": {
            "n": 0,
            "mean": null,
            "median": null,
            "p25": null,
            "p75": null
          },
          "max_down_natr": {
            "n": 0,
            "mean": null,
            "median": null,
            "p25": null,
            "p75": null
          }
        }
      },
      "max_up_natr_hist": {
        "bin_edges": [
          0.0,
          0.25,
          0.5,
          0.75,
          1.0,
          1.25,
          1.5,
          1.75,
          2.0,
          2.25,
          2.5,
          2.75,
          3.0,
          3.25,
          3.5,
          3.75,
          4.0
        ],
        "counts": [
          226,
          170,
          186,
          152,
          187,
          154,
          153,
          127,
          104,
          103,
          98,
          61,
          72,
          63,
          60,
          500
        ],
        "bin_centers": [
          0.125,
          0.375,
          0.625,
          0.875,
          1.125,
          1.375,
          1.625,
          1.875,
          2.125,
          2.375,
          2.625,
          2.875,
          3.125,
          3.375,
          3.625,
          3.875
        ],
        "clip_lo": 0.0,
        "clip_hi": 4.0
      },
      "max_down_natr_hist": {
        "bin_edges": [
          -4.0,
          -3.75,
          -3.5,
          -3.25,
          -3.0,
          -2.75,
          -2.5,
          -2.25,
          -2.0,
          -1.75,
          -1.5,
          -1.25,
          -1.0,
          -0.75,
          -0.5,
          -0.25,
          0.0
        ],
        "counts": [
          411,
          63,
          77,
          73,
          79,
          74,
          112,
          123,
          146,
          168,
          156,
          208,
          199,
          190,
          166,
          171
        ],
        "bin_centers": [
          -3.875,
          -3.625,
          -3.375,
          -3.125,
          -2.875,
          -2.625,
          -2.375,
          -2.125,
          -1.875,
          -1.625,
          -1.375,
          -1.125,
          -0.875,
          -0.625,
          -0.375,
          -0.125
        ],
        "clip_lo": -4.0,
        "clip_hi": 0.0
      },
      "timestamp_min": 1505174400000,
      "timestamp_max": 1785225600000,
      "timestamp_min_iso": "2017-09-12T00:00:00Z",
      "timestamp_max_iso": "2026-07-28T08:00:00Z"
    },
    {
      "pattern_type": "bearish_pennant",
      "pattern_name": "Bearish Pennant",
      "timeframe": "1h",
      "bias": "bearish",
      "n": 788,
      "n_symbols": 408,
      "breakout_success_rate": 27.79,
      "breakdown_success_rate": 70.18,
      "sideways_rate": 2.03,
      "forming_rate": 0.0,
      "both_cleared_rate": 40.36,
      "breakout_success_rate_ci95": [
        24.78,
        31.02
      ],
      "breakdown_success_rate_ci95": [
        66.89,
        73.27
      ],
      "sideways_rate_ci95": [
        1.25,
        3.27
      ],
      "forming_rate_ci95": [
        0.0,
        0.49
      ],
      "both_sides_rate": 40.36,
      "expected_hit_rate": 70.18,
      "expected_hit_rate_ci95": [
        66.89,
        73.27
      ],
      "mean_ret_10c": -0.038,
      "median_ret_10c": -0.37,
      "std_ret_10c": 15.091,
      "win_rate_ret_gt0": 45.69,
      "p25_ret_10c": -3.19,
      "p75_ret_10c": 2.091,
      "mean_mfe": 4.47,
      "mean_mae": -4.805,
      "mfe_mae_ratio": 0.93,
      "max_up_natr": {
        "n": 788,
        "mean": 2.183,
        "median": 1.556,
        "p25": 0.65,
        "p75": 2.77,
        "hist": {
          "bin_edges": [
            0.0,
            0.25,
            0.5,
            0.75,
            1.0,
            1.25,
            1.5,
            1.75,
            2.0,
            2.25,
            2.5,
            2.75,
            3.0,
            3.25,
            3.5,
            3.75,
            4.0
          ],
          "counts": [
            82,
            93,
            57,
            49,
            51,
            50,
            56,
            47,
            38,
            39,
            28,
            29,
            23,
            16,
            16,
            114
          ],
          "bin_centers": [
            0.125,
            0.375,
            0.625,
            0.875,
            1.125,
            1.375,
            1.625,
            1.875,
            2.125,
            2.375,
            2.625,
            2.875,
            3.125,
            3.375,
            3.625,
            3.875
          ],
          "clip_lo": 0.0,
          "clip_hi": 4.0
        }
      },
      "max_down_natr": {
        "n": 788,
        "mean": -2.641,
        "median": -1.933,
        "p25": -3.424,
        "p75": -0.99,
        "hist": {
          "bin_edges": [
            -4.0,
            -3.75,
            -3.5,
            -3.25,
            -3.0,
            -2.75,
            -2.5,
            -2.25,
            -2.0,
            -1.75,
            -1.5,
            -1.25,
            -1.0,
            -0.75,
            -0.5,
            -0.25,
            0.0
          ],
          "counts": [
            166,
            23,
            25,
            27,
            28,
            30,
            33,
            47,
            46,
            55,
            52,
            57,
            64,
            48,
            44,
            43
          ],
          "bin_centers": [
            -3.875,
            -3.625,
            -3.375,
            -3.125,
            -2.875,
            -2.625,
            -2.375,
            -2.125,
            -1.875,
            -1.625,
            -1.375,
            -1.125,
            -0.875,
            -0.625,
            -0.375,
            -0.125
          ],
          "clip_lo": -4.0,
          "clip_hi": 0.0
        }
      },
      "median_max_up_natr": 1.556,
      "median_max_down_natr": -1.933,
      "mean_max_up_natr": 2.183,
      "mean_max_down_natr": -2.641,
      "p25_max_up_natr": 0.65,
      "p75_max_up_natr": 2.77,
      "p25_max_down_natr": -3.424,
      "p75_max_down_natr": -0.99,
      "outcome_natr_moves": {
        "breakout": {
          "n": 219,
          "max_up_natr": {
            "n": 219,
            "mean": 3.106,
            "median": 2.678,
            "p25": 1.822,
            "p75": 3.757,
            "hist": {
              "bin_edges": [
                0.0,
                0.25,
                0.5,
                0.75,
                1.0,
                1.25,
                1.5,
                1.75,
                2.0,
                2.25,
                2.5,
                2.75,
                3.0,
                3.25,
                3.5,
                3.75,
                4.0
              ],
              "counts": [
                0,
                0,
                1,
                4,
                7,
                15,
                26,
                12,
                21,
                14,
                14,
                13,
                14,
                10,
                13,
                55
              ],
              "bin_centers": [
                0.125,
                0.375,
                0.625,
                0.875,
                1.125,
                1.375,
                1.625,
                1.875,
                2.125,
                2.375,
                2.625,
                2.875,
                3.125,
                3.375,
                3.625,
                3.875
              ],
              "clip_lo": 0.0,
              "clip_hi": 4.0
            }
          },
          "max_down_natr": {
            "n": 219,
            "mean": -1.258,
            "median": -0.837,
            "p25": -1.523,
            "p75": -0.378,
            "hist": {
              "bin_edges": [
                -4.0,
                -3.75,
                -3.5,
                -3.25,
                -3.0,
                -2.75,
                -2.5,
                -2.25,
                -2.0,
                -1.75,
                -1.5,
                -1.25,
                -1.0,
                -0.75,
                -0.5,
                -0.25,
                0.0
              ],
              "counts": [
                13,
                1,
                8,
                2,
                1,
                3,
                0,
                3,
                9,
                16,
                12,
                16,
                31,
                30,
                37,
                37
              ],
              "bin_centers": [
                -3.875,
                -3.625,
                -3.375,
                -3.125,
                -2.875,
                -2.625,
                -2.375,
                -2.125,
                -1.875,
                -1.625,
                -1.375,
                -1.125,
                -0.875,
                -0.625,
                -0.375,
                -0.125
              ],
              "clip_lo": -4.0,
              "clip_hi": 0.0
            }
          }
        },
        "breakdown": {
          "n": 553,
          "max_up_natr": {
            "n": 553,
            "mean": 1.848,
            "median": 1.044,
            "p25": 0.412,
            "p75": 2.103,
            "hist": {
              "bin_edges": [
                0.0,
                0.25,
                0.5,
                0.75,
                1.0,
                1.25,
                1.5,
                1.75,
                2.0,
                2.25,
                2.5,
                2.75,
                3.0,
                3.25,
                3.5,
                3.75,
                4.0
              ],
              "counts": [
                82,
                91,
                54,
                43,
                39,
                33,
                30,
                32,
                17,
                25,
                14,
                16,
                9,
                6,
                3,
                59
              ],
              "bin_centers": [
                0.125,
                0.375,
                0.625,
                0.875,
                1.125,
                1.375,
                1.625,
                1.875,
                2.125,
                2.375,
                2.625,
                2.875,
                3.125,
                3.375,
                3.625,
                3.875
              ],
              "clip_lo": 0.0,
              "clip_hi": 4.0
            }
          },
          "max_down_natr": {
            "n": 553,
            "mean": -3.246,
            "median": -2.446,
            "p25": -4.07,
            "p75": -1.575,
            "hist": {
              "bin_edges": [
                -4.0,
                -3.75,
                -3.5,
                -3.25,
                -3.0,
                -2.75,
                -2.5,
                -2.25,
                -2.0,
                -1.75,
                -1.5,
                -1.25,
                -1.0,
                -0.75,
                -0.5,
                -0.25,
                0.0
              ],
              "counts": [
                153,
                22,
                17,
                25,
                27,
                27,
                33,
                44,
                37,
                39,
                39,
                41,
                30,
                12,
                3,
                4
              ],
              "bin_centers": [
                -3.875,
                -3.625,
                -3.375,
                -3.125,
                -2.875,
                -2.625,
                -2.375,
                -2.125,
                -1.875,
                -1.625,
                -1.375,
                -1.125,
                -0.875,
                -0.625,
                -0.375,
                -0.125
              ],
              "clip_lo": -4.0,
              "clip_hi": 0.0
            }
          }
        },
        "sideways": {
          "n": 16,
          "max_up_natr": {
            "n": 16,
            "mean": 1.103,
            "median": 1.1,
            "p25": 0.822,
            "p75": 1.348,
            "hist": {
              "bin_edges": [
                0.0,
                0.25,
                0.5,
                0.75,
                1.0,
                1.25,
                1.5,
                1.75,
                2.0,
                2.25,
                2.5,
                2.75,
                3.0,
                3.25,
                3.5,
                3.75,
                4.0
              ],
              "counts": [
                0,
                2,
                2,
                2,
                5,
                2,
                0,
                3,
                0,
                0,
                0,
                0,
                0,
                0,
                0,
                0
              ],
              "bin_centers": [
                0.125,
                0.375,
                0.625,
                0.875,
                1.125,
                1.375,
                1.625,
                1.875,
                2.125,
                2.375,
                2.625,
                2.875,
                3.125,
                3.375,
                3.625,
                3.875
              ],
              "clip_lo": 0.0,
              "clip_hi": 4.0
            }
          },
          "max_down_natr": {
            "n": 16,
            "mean": -0.644,
            "median": -0.69,
            "p25": -0.773,
            "p75": -0.391,
            "hist": {
              "bin_edges": [
                -4.0,
                -3.75,
                -3.5,
                -3.25,
                -3.0,
                -2.75,
                -2.5,
                -2.25,
                -2.0,
                -1.75,
                -1.5,
                -1.25,
                -1.0,
                -0.75,
                -0.5,
                -0.25,
                0.0
              ],
              "counts": [
                0,
                0,
                0,
                0,
                0,
                0,
                0,
                0,
                0,
                0,
                1,
                0,
                3,
                6,
                4,
                2
              ],
              "bin_centers": [
                -3.875,
                -3.625,
                -3.375,
                -3.125,
                -2.875,
                -2.625,
                -2.375,
                -2.125,
                -1.875,
                -1.625,
                -1.375,
                -1.125,
                -0.875,
                -0.625,
                -0.375,
                -0.125
              ],
              "clip_lo": -4.0,
              "clip_hi": 0.0
            }
          }
        },
        "forming": {
          "n": 0,
          "max_up_natr": {
            "n": 0,
            "mean": null,
            "median": null,
            "p25": null,
            "p75": null
          },
          "max_down_natr": {
            "n": 0,
            "mean": null,
            "median": null,
            "p25": null,
            "p75": null
          }
        }
      },
      "max_up_natr_hist": {
        "bin_edges": [
          0.0,
          0.25,
          0.5,
          0.75,
          1.0,
          1.25,
          1.5,
          1.75,
          2.0,
          2.25,
          2.5,
          2.75,
          3.0,
          3.25,
          3.5,
          3.75,
          4.0
        ],
        "counts": [
          82,
          93,
          57,
          49,
          51,
          50,
          56,
          47,
          38,
          39,
          28,
          29,
          23,
          16,
          16,
          114
        ],
        "bin_centers": [
          0.125,
          0.375,
          0.625,
          0.875,
          1.125,
          1.375,
          1.625,
          1.875,
          2.125,
          2.375,
          2.625,
          2.875,
          3.125,
          3.375,
          3.625,
          3.875
        ],
        "clip_lo": 0.0,
        "clip_hi": 4.0
      },
      "max_down_natr_hist": {
        "bin_edges": [
          -4.0,
          -3.75,
          -3.5,
          -3.25,
          -3.0,
          -2.75,
          -2.5,
          -2.25,
          -2.0,
          -1.75,
          -1.5,
          -1.25,
          -1.0,
          -0.75,
          -0.5,
          -0.25,
          0.0
        ],
        "counts": [
          166,
          23,
          25,
          27,
          28,
          30,
          33,
          47,
          46,
          55,
          52,
          57,
          64,
          48,
          44,
          43
        ],
        "bin_centers": [
          -3.875,
          -3.625,
          -3.375,
          -3.125,
          -2.875,
          -2.625,
          -2.375,
          -2.125,
          -1.875,
          -1.625,
          -1.375,
          -1.125,
          -0.875,
          -0.625,
          -0.375,
          -0.125
        ],
        "clip_lo": -4.0,
        "clip_hi": 0.0
      },
      "timestamp_min": 1581814800000,
      "timestamp_max": 1785286800000,
      "timestamp_min_iso": "2020-02-16T01:00:00Z",
      "timestamp_max_iso": "2026-07-29T01:00:00Z"
    },
    {
      "pattern_type": "double_bottom",
      "pattern_name": "Double Bottom",
      "timeframe": "1h",
      "bias": "bullish",
      "n": 866,
      "n_symbols": 426,
      "breakout_success_rate": 69.63,
      "breakdown_success_rate": 16.4,
      "sideways_rate": 13.97,
      "forming_rate": 0.0,
      "both_cleared_rate": 33.03,
      "breakout_success_rate_ci95": [
        66.49,
        72.6
      ],
      "breakdown_success_rate_ci95": [
        14.08,
        19.01
      ],
      "sideways_rate_ci95": [
        11.82,
        16.44
      ],
      "forming_rate_ci95": [
        0.0,
        0.44
      ],
      "both_sides_rate": 33.03,
      "expected_hit_rate": 69.63,
      "expected_hit_rate_ci95": [
        66.49,
        72.6
      ],
      "mean_ret_10c": 2.092,
      "median_ret_10c": 1.392,
      "std_ret_10c": 6.415,
      "win_rate_ret_gt0": 65.24,
      "p25_ret_10c": -0.769,
      "p75_ret_10c": 4.46,
      "mean_mfe": 6.151,
      "mean_mae": -2.905,
      "mfe_mae_ratio": 2.117,
      "max_up_natr": {
        "n": 866,
        "mean": 3.198,
        "median": 2.274,
        "p25": 1.123,
        "p75": 4.118,
        "hist": {
          "bin_edges": [
            0.0,
            0.25,
            0.5,
            0.75,
            1.0,
            1.25,
            1.5,
            1.75,
            2.0,
            2.25,
            2.5,
            2.75,
            3.0,
            3.25,
            3.5,
            3.75,
            4.0
          ],
          "counts": [
            31,
            55,
            49,
            58,
            51,
            46,
            38,
            53,
            45,
            46,
            39,
            34,
            27,
            23,
            19,
            252
          ],
          "bin_centers": [
            0.125,
            0.375,
            0.625,
            0.875,
            1.125,
            1.375,
            1.625,
            1.875,
            2.125,
            2.375,
            2.625,
            2.875,
            3.125,
            3.375,
            3.625,
            3.875
          ],
          "clip_lo": 0.0,
          "clip_hi": 4.0
        }
      },
      "max_down_natr": {
        "n": 866,
        "mean": -1.617,
        "median": -1.061,
        "p25": -1.83,
        "p75": -0.46,
        "hist": {
          "bin_edges": [
            -4.0,
            -3.75,
            -3.5,
            -3.25,
            -3.0,
            -2.75,
            -2.5,
            -2.25,
            -2.0,
            -1.75,
            -1.5,
            -1.25,
            -1.0,
            -0.75,
            -0.5,
            -0.25,
            0.0
          ],
          "counts": [
            67,
            7,
            9,
            15,
            14,
            15,
            31,
            29,
            45,
            56,
            88,
            77,
            94,
            89,
            111,
            119
          ],
          "bin_centers": [
            -3.875,
            -3.625,
            -3.375,
            -3.125,
            -2.875,
            -2.625,
            -2.375,
            -2.125,
            -1.875,
            -1.625,
            -1.375,
            -1.125,
            -0.875,
            -0.625,
            -0.375,
            -0.125
          ],
          "clip_lo": -4.0,
          "clip_hi": 0.0
        }
      },
      "median_max_up_natr": 2.274,
      "median_max_down_natr": -1.061,
      "mean_max_up_natr": 3.198,
      "mean_max_down_natr": -1.617,
      "p25_max_up_natr": 1.123,
      "p75_max_up_natr": 4.118,
      "p25_max_down_natr": -1.83,
      "p75_max_down_natr": -0.46,
      "outcome_natr_moves": {
        "breakout": {
          "n": 603,
          "max_up_natr": {
            "n": 603,
            "mean": 4.107,
            "median": 3.042,
            "p25": 2.019,
            "p75": 4.823,
            "hist": {
              "bin_edges": [
                0.0,
                0.25,
                0.5,
                0.75,
                1.0,
                1.25,
                1.5,
                1.75,
                2.0,
                2.25,
                2.5,
                2.75,
                3.0,
                3.25,
                3.5,
                3.75,
                4.0
              ],
              "counts": [
                0,
                0,
                4,
                9,
                23,
                33,
                30,
                50,
                37,
                43,
                37,
                32,
                25,
                21,
                18,
                241
              ],
              "bin_centers": [
                0.125,
                0.375,
                0.625,
                0.875,
                1.125,
                1.375,
                1.625,
                1.875,
                2.125,
                2.375,
                2.625,
                2.875,
                3.125,
                3.375,
                3.625,
                3.875
              ],
              "clip_lo": 0.0,
              "clip_hi": 4.0
            }
          },
          "max_down_natr": {
            "n": 603,
            "mean": -1.081,
            "median": -0.763,
            "p25": -1.333,
            "p75": -0.318,
            "hist": {
              "bin_edges": [
                -4.0,
                -3.75,
                -3.5,
                -3.25,
                -3.0,
                -2.75,
                -2.5,
                -2.25,
                -2.0,
                -1.75,
                -1.5,
                -1.25,
                -1.0,
                -0.75,
                -0.5,
                -0.25,
                0.0
              ],
              "counts": [
                21,
                3,
                4,
                3,
                5,
                3,
                13,
                17,
                21,
                29,
                57,
                53,
                76,
                78,
                103,
                117
              ],
              "bin_centers": [
                -3.875,
                -3.625,
                -3.375,
                -3.125,
                -2.875,
                -2.625,
                -2.375,
                -2.125,
                -1.875,
                -1.625,
                -1.375,
                -1.125,
                -0.875,
                -0.625,
                -0.375,
                -0.125
              ],
              "clip_lo": -4.0,
              "clip_hi": 0.0
            }
          }
        },
        "breakdown": {
          "n": 142,
          "max_up_natr": {
            "n": 142,
            "mean": 1.417,
            "median": 0.808,
            "p25": 0.385,
            "p75": 1.536,
            "hist": {
              "bin_edges": [
                0.0,
                0.25,
                0.5,
                0.75,
                1.0,
                1.25,
                1.5,
                1.75,
                2.0,
                2.25,
                2.5,
                2.75,
                3.0,
                3.25,
                3.5,
                3.75,
                4.0
              ],
              "counts": [
                18,
                29,
                19,
                24,
                11,
                5,
                4,
                3,
                6,
                3,
                2,
                2,
                2,
                2,
                1,
                11
              ],
              "bin_centers": [
                0.125,
                0.375,
                0.625,
                0.875,
                1.125,
                1.375,
                1.625,
                1.875,
                2.125,
                2.375,
                2.625,
                2.875,
                3.125,
                3.375,
                3.625,
                3.875
              ],
              "clip_lo": 0.0,
              "clip_hi": 4.0
            }
          },
          "max_down_natr": {
            "n": 142,
            "mean": -3.986,
            "median": -2.64,
            "p25": -4.75,
            "p75": -1.757,
            "hist": {
              "bin_edges": [
                -4.0,
                -3.75,
                -3.5,
                -3.25,
                -3.0,
                -2.75,
                -2.5,
                -2.25,
                -2.0,
                -1.75,
                -1.5,
                -1.25,
                -1.0,
                -0.75,
                -0.5,
                -0.25,
                0.0
              ],
              "counts": [
                46,
                4,
                3,
                9,
                5,
                7,
                14,
                7,
                11,
                9,
                11,
                5,
                6,
                3,
                1,
                1
              ],
              "bin_centers": [
                -3.875,
                -3.625,
                -3.375,
                -3.125,
                -2.875,
                -2.625,
                -2.375,
                -2.125,
                -1.875,
                -1.625,
                -1.375,
                -1.125,
                -0.875,
                -0.625,
                -0.375,
                -0.125
              ],
              "clip_lo": -4.0,
              "clip_hi": 0.0
            }
          }
        },
        "sideways": {
          "n": 121,
          "max_up_natr": {
            "n": 121,
            "mean": 0.754,
            "median": 0.734,
            "p25": 0.425,
            "p75": 1.012,
            "hist": {
              "bin_edges": [
                0.0,
                0.25,
                0.5,
                0.75,
                1.0,
                1.25,
                1.5,
                1.75,
                2.0,
                2.25,
                2.5,
                2.75,
                3.0,
                3.25,
                3.5,
                3.75,
                4.0
              ],
              "counts": [
                13,
                26,
                26,
                25,
                17,
                8,
                4,
                0,
                2,
                0,
                0,
                0,
                0,
                0,
                0,
                0
              ],
              "bin_centers": [
                0.125,
                0.375,
                0.625,
                0.875,
                1.125,
                1.375,
                1.625,
                1.875,
                2.125,
                2.375,
                2.625,
                2.875,
                3.125,
                3.375,
                3.625,
                3.875
              ],
              "clip_lo": 0.0,
              "clip_hi": 4.0
            }
          },
          "max_down_natr": {
            "n": 121,
            "mean": -1.508,
            "median": -1.409,
            "p25": -1.897,
            "p75": -1.057,
            "hist": {
              "bin_edges": [
                -4.0,
                -3.75,
                -3.5,
                -3.25,
                -3.0,
                -2.75,
                -2.5,
                -2.25,
                -2.0,
                -1.75,
                -1.5,
                -1.25,
                -1.0,
                -0.75,
                -0.5,
                -0.25,
                0.0
              ],
              "counts": [
                0,
                0,
                2,
                3,
                4,
                5,
                4,
                5,
                13,
                18,
                20,
                19,
                12,
                8,
                7,
                1
              ],
              "bin_centers": [
                -3.875,
                -3.625,
                -3.375,
                -3.125,
                -2.875,
                -2.625,
                -2.375,
                -2.125,
                -1.875,
                -1.625,
                -1.375,
                -1.125,
                -0.875,
                -0.625,
                -0.375,
                -0.125
              ],
              "clip_lo": -4.0,
              "clip_hi": 0.0
            }
          }
        },
        "forming": {
          "n": 0,
          "max_up_natr": {
            "n": 0,
            "mean": null,
            "median": null,
            "p25": null,
            "p75": null
          },
          "max_down_natr": {
            "n": 0,
            "mean": null,
            "median": null,
            "p25": null,
            "p75": null
          }
        }
      },
      "max_up_natr_hist": {
        "bin_edges": [
          0.0,
          0.25,
          0.5,
          0.75,
          1.0,
          1.25,
          1.5,
          1.75,
          2.0,
          2.25,
          2.5,
          2.75,
          3.0,
          3.25,
          3.5,
          3.75,
          4.0
        ],
        "counts": [
          31,
          55,
          49,
          58,
          51,
          46,
          38,
          53,
          45,
          46,
          39,
          34,
          27,
          23,
          19,
          252
        ],
        "bin_centers": [
          0.125,
          0.375,
          0.625,
          0.875,
          1.125,
          1.375,
          1.625,
          1.875,
          2.125,
          2.375,
          2.625,
          2.875,
          3.125,
          3.375,
          3.625,
          3.875
        ],
        "clip_lo": 0.0,
        "clip_hi": 4.0
      },
      "max_down_natr_hist": {
        "bin_edges": [
          -4.0,
          -3.75,
          -3.5,
          -3.25,
          -3.0,
          -2.75,
          -2.5,
          -2.25,
          -2.0,
          -1.75,
          -1.5,
          -1.25,
          -1.0,
          -0.75,
          -0.5,
          -0.25,
          0.0
        ],
        "counts": [
          67,
          7,
          9,
          15,
          14,
          15,
          31,
          29,
          45,
          56,
          88,
          77,
          94,
          89,
          111,
          119
        ],
        "bin_centers": [
          -3.875,
          -3.625,
          -3.375,
          -3.125,
          -2.875,
          -2.625,
          -2.375,
          -2.125,
          -1.875,
          -1.625,
          -1.375,
          -1.125,
          -0.875,
          -0.625,
          -0.375,
          -0.125
        ],
        "clip_lo": -4.0,
        "clip_hi": 0.0
      },
      "timestamp_min": 1583834400000,
      "timestamp_max": 1785456000000,
      "timestamp_min_iso": "2020-03-10T10:00:00Z",
      "timestamp_max_iso": "2026-07-31T00:00:00Z"
    },
    {
      "pattern_type": "ascending_broadening_wedge",
      "pattern_name": "Ascending Broadening Wedge",
      "timeframe": "4h",
      "bias": "bearish",
      "n": 2550,
      "n_symbols": 517,
      "breakout_success_rate": 22.04,
      "breakdown_success_rate": 69.45,
      "sideways_rate": 8.51,
      "forming_rate": 0.0,
      "both_cleared_rate": 40.98,
      "breakout_success_rate_ci95": [
        20.47,
        23.69
      ],
      "breakdown_success_rate_ci95": [
        67.64,
        71.21
      ],
      "sideways_rate_ci95": [
        7.49,
        9.66
      ],
      "forming_rate_ci95": [
        0.0,
        0.15
      ],
      "both_sides_rate": 40.98,
      "expected_hit_rate": 69.45,
      "expected_hit_rate_ci95": [
        67.64,
        71.21
      ],
      "mean_ret_10c": 0.813,
      "median_ret_10c": -1.374,
      "std_ret_10c": 17.755,
      "win_rate_ret_gt0": 43.84,
      "p25_ret_10c": -7.409,
      "p75_ret_10c": 5.354,
      "mean_mfe": 11.966,
      "mean_mae": -10.037,
      "mfe_mae_ratio": 1.192,
      "max_up_natr": {
        "n": 2550,
        "mean": 3.443,
        "median": 1.519,
        "p25": 0.324,
        "p75": 4.052,
        "hist": {
          "bin_edges": [
            0.0,
            0.25,
            0.5,
            0.75,
            1.0,
            1.25,
            1.5,
            1.75,
            2.0,
            2.25,
            2.5,
            2.75,
            3.0,
            3.25,
            3.5,
            3.75,
            4.0
          ],
          "counts": [
            554,
            240,
            143,
            114,
            118,
            99,
            86,
            79,
            80,
            80,
            61,
            69,
            51,
            46,
            47,
            683
          ],
          "bin_centers": [
            0.125,
            0.375,
            0.625,
            0.875,
            1.125,
            1.375,
            1.625,
            1.875,
            2.125,
            2.375,
            2.625,
            2.875,
            3.125,
            3.375,
            3.625,
            3.875
          ],
          "clip_lo": 0.0,
          "clip_hi": 4.0
        }
      },
      "max_down_natr": {
        "n": 2550,
        "mean": -2.95,
        "median": -2.599,
        "p25": -4.036,
        "p75": -1.389,
        "hist": {
          "bin_edges": [
            -4.0,
            -3.75,
            -3.5,
            -3.25,
            -3.0,
            -2.75,
            -2.5,
            -2.25,
            -2.0,
            -1.75,
            -1.5,
            -1.25,
            -1.0,
            -0.75,
            -0.5,
            -0.25,
            0.0
          ],
          "counts": [
            719,
            105,
            118,
            109,
            133,
            135,
            123,
            158,
            127,
            137,
            116,
            108,
            104,
            96,
            97,
            165
          ],
          "bin_centers": [
            -3.875,
            -3.625,
            -3.375,
            -3.125,
            -2.875,
            -2.625,
            -2.375,
            -2.125,
            -1.875,
            -1.625,
            -1.375,
            -1.125,
            -0.875,
            -0.625,
            -0.375,
            -0.125
          ],
          "clip_lo": -4.0,
          "clip_hi": 0.0
        }
      },
      "median_max_up_natr": 1.519,
      "median_max_down_natr": -2.599,
      "mean_max_up_natr": 3.443,
      "mean_max_down_natr": -2.95,
      "p25_max_up_natr": 0.324,
      "p75_max_up_natr": 4.052,
      "p25_max_down_natr": -4.036,
      "p75_max_down_natr": -1.389,
      "outcome_natr_moves": {
        "breakout": {
          "n": 562,
          "max_up_natr": {
            "n": 562,
            "mean": 9.327,
            "median": 6.882,
            "p25": 3.817,
            "p75": 11.031,
            "hist": {
              "bin_edges": [
                0.0,
                0.25,
                0.5,
                0.75,
                1.0,
                1.25,
                1.5,
                1.75,
                2.0,
                2.25,
                2.5,
                2.75,
                3.0,
                3.25,
                3.5,
                3.75,
                4.0
              ],
              "counts": [
                0,
                0,
                0,
                2,
                5,
                4,
                9,
                8,
                9,
                12,
                13,
                24,
                18,
                15,
                17,
                426
              ],
              "bin_centers": [
                0.125,
                0.375,
                0.625,
                0.875,
                1.125,
                1.375,
                1.625,
                1.875,
                2.125,
                2.375,
                2.625,
                2.875,
                3.125,
                3.375,
                3.625,
                3.875
              ],
              "clip_lo": 0.0,
              "clip_hi": 4.0
            }
          },
          "max_down_natr": {
            "n": 562,
            "mean": -1.524,
            "median": -0.807,
            "p25": -2.416,
            "p75": -0.238,
            "hist": {
              "bin_edges": [
                -4.0,
                -3.75,
                -3.5,
                -3.25,
                -3.0,
                -2.75,
                -2.5,
                -2.25,
                -2.0,
                -1.75,
                -1.5,
                -1.25,
                -1.0,
                -0.75,
                -0.5,
                -0.25,
                0.0
              ],
              "counts": [
                69,
                9,
                11,
                8,
                22,
                18,
                18,
                22,
                20,
                17,
                16,
                20,
                40,
                56,
                68,
                148
              ],
              "bin_centers": [
                -3.875,
                -3.625,
                -3.375,
                -3.125,
                -2.875,
                -2.625,
                -2.375,
                -2.125,
                -1.875,
                -1.625,
                -1.375,
                -1.125,
                -0.875,
                -0.625,
                -0.375,
                -0.125
              ],
              "clip_lo": -4.0,
              "clip_hi": 0.0
            }
          }
        },
        "breakdown": {
          "n": 1771,
          "max_up_natr": {
            "n": 1771,
            "mean": 1.661,
            "median": 0.696,
            "p25": 0.18,
            "p75": 2.052,
            "hist": {
              "bin_edges": [
                0.0,
                0.25,
                0.5,
                0.75,
                1.0,
                1.25,
                1.5,
                1.75,
                2.0,
                2.25,
                2.5,
                2.75,
                3.0,
                3.25,
                3.5,
                3.75,
                4.0
              ],
              "counts": [
                548,
                231,
                129,
                104,
                98,
                82,
                65,
                55,
                55,
                54,
                39,
                35,
                24,
                24,
                22,
                206
              ],
              "bin_centers": [
                0.125,
                0.375,
                0.625,
                0.875,
                1.125,
                1.375,
                1.625,
                1.875,
                2.125,
                2.375,
                2.625,
                2.875,
                3.125,
                3.375,
                3.625,
                3.875
              ],
              "clip_lo": 0.0,
              "clip_hi": 4.0
            }
          },
          "max_down_natr": {
            "n": 1771,
            "mean": -3.597,
            "median": -3.106,
            "p25": -4.654,
            "p75": -2.092,
            "hist": {
              "bin_edges": [
                -4.0,
                -3.75,
                -3.5,
                -3.25,
                -3.0,
                -2.75,
                -2.5,
                -2.25,
                -2.0,
                -1.75,
                -1.5,
                -1.25,
                -1.0,
                -0.75,
                -0.5,
                -0.25,
                0.0
              ],
              "counts": [
                642,
                94,
                100,
                95,
                106,
                109,
                99,
                126,
                101,
                107,
                86,
                66,
                35,
                5,
                0,
                0
              ],
              "bin_centers": [
                -3.875,
                -3.625,
                -3.375,
                -3.125,
                -2.875,
                -2.625,
                -2.375,
                -2.125,
                -1.875,
                -1.625,
                -1.375,
                -1.125,
                -0.875,
                -0.625,
                -0.375,
                -0.125
              ],
              "clip_lo": -4.0,
              "clip_hi": 0.0
            }
          }
        },
        "sideways": {
          "n": 217,
          "max_up_natr": {
            "n": 217,
            "mean": 2.753,
            "median": 2.227,
            "p25": 1.352,
            "p75": 3.683,
            "hist": {
              "bin_edges": [
                0.0,
                0.25,
                0.5,
                0.75,
                1.0,
                1.25,
                1.5,
                1.75,
                2.0,
                2.25,
                2.5,
                2.75,
                3.0,
                3.25,
                3.5,
                3.75,
                4.0
              ],
              "counts": [
                6,
                9,
                14,
                8,
                15,
                13,
                12,
                16,
                16,
                14,
                9,
                10,
                9,
                7,
                8,
                51
              ],
              "bin_centers": [
                0.125,
                0.375,
                0.625,
                0.875,
                1.125,
                1.375,
                1.625,
                1.875,
                2.125,
                2.375,
                2.625,
                2.875,
                3.125,
                3.375,
                3.625,
                3.875
              ],
              "clip_lo": 0.0,
              "clip_hi": 4.0
            }
          },
          "max_down_natr": {
            "n": 217,
            "mean": -1.363,
            "median": -0.987,
            "p25": -1.924,
            "p75": -0.597,
            "hist": {
              "bin_edges": [
                -4.0,
                -3.75,
                -3.5,
                -3.25,
                -3.0,
                -2.75,
                -2.5,
                -2.25,
                -2.0,
                -1.75,
                -1.5,
                -1.25,
                -1.0,
                -0.75,
                -0.5,
                -0.25,
                0.0
              ],
              "counts": [
                8,
                2,
                7,
                6,
                5,
                8,
                6,
                10,
                6,
                13,
                14,
                22,
                29,
                35,
                29,
                17
              ],
              "bin_centers": [
                -3.875,
                -3.625,
                -3.375,
                -3.125,
                -2.875,
                -2.625,
                -2.375,
                -2.125,
                -1.875,
                -1.625,
                -1.375,
                -1.125,
                -0.875,
                -0.625,
                -0.375,
                -0.125
              ],
              "clip_lo": -4.0,
              "clip_hi": 0.0
            }
          }
        },
        "forming": {
          "n": 0,
          "max_up_natr": {
            "n": 0,
            "mean": null,
            "median": null,
            "p25": null,
            "p75": null
          },
          "max_down_natr": {
            "n": 0,
            "mean": null,
            "median": null,
            "p25": null,
            "p75": null
          }
        }
      },
      "max_up_natr_hist": {
        "bin_edges": [
          0.0,
          0.25,
          0.5,
          0.75,
          1.0,
          1.25,
          1.5,
          1.75,
          2.0,
          2.25,
          2.5,
          2.75,
          3.0,
          3.25,
          3.5,
          3.75,
          4.0
        ],
        "counts": [
          554,
          240,
          143,
          114,
          118,
          99,
          86,
          79,
          80,
          80,
          61,
          69,
          51,
          46,
          47,
          683
        ],
        "bin_centers": [
          0.125,
          0.375,
          0.625,
          0.875,
          1.125,
          1.375,
          1.625,
          1.875,
          2.125,
          2.375,
          2.625,
          2.875,
          3.125,
          3.375,
          3.625,
          3.875
        ],
        "clip_lo": 0.0,
        "clip_hi": 4.0
      },
      "max_down_natr_hist": {
        "bin_edges": [
          -4.0,
          -3.75,
          -3.5,
          -3.25,
          -3.0,
          -2.75,
          -2.5,
          -2.25,
          -2.0,
          -1.75,
          -1.5,
          -1.25,
          -1.0,
          -0.75,
          -0.5,
          -0.25,
          0.0
        ],
        "counts": [
          719,
          105,
          118,
          109,
          133,
          135,
          123,
          158,
          127,
          137,
          116,
          108,
          104,
          96,
          97,
          165
        ],
        "bin_centers": [
          -3.875,
          -3.625,
          -3.375,
          -3.125,
          -2.875,
          -2.625,
          -2.375,
          -2.125,
          -1.875,
          -1.625,
          -1.375,
          -1.125,
          -0.875,
          -0.625,
          -0.375,
          -0.125
        ],
        "clip_lo": -4.0,
        "clip_hi": 0.0
      },
      "timestamp_min": 1519185600000,
      "timestamp_max": 1785240000000,
      "timestamp_min_iso": "2018-02-21T04:00:00Z",
      "timestamp_max_iso": "2026-07-28T12:00:00Z"
    },
    {
      "pattern_type": "head_and_shoulders",
      "pattern_name": "Head & Shoulders",
      "timeframe": "15m",
      "bias": "bearish",
      "n": 2729,
      "n_symbols": 549,
      "breakout_success_rate": 29.79,
      "breakdown_success_rate": 69.18,
      "sideways_rate": 1.03,
      "forming_rate": 0.0,
      "both_cleared_rate": 42.25,
      "breakout_success_rate_ci95": [
        28.1,
        31.53
      ],
      "breakdown_success_rate_ci95": [
        67.42,
        70.89
      ],
      "sideways_rate_ci95": [
        0.71,
        1.48
      ],
      "forming_rate_ci95": [
        0.0,
        0.14
      ],
      "both_sides_rate": 42.25,
      "expected_hit_rate": 69.18,
      "expected_hit_rate_ci95": [
        67.42,
        70.89
      ],
      "mean_ret_10c": 0.068,
      "median_ret_10c": 0.051,
      "std_ret_10c": 2.734,
      "win_rate_ret_gt0": 50.82,
      "p25_ret_10c": -0.984,
      "p75_ret_10c": 1.079,
      "mean_mfe": 1.981,
      "mean_mae": -1.824,
      "mfe_mae_ratio": 1.086,
      "max_up_natr": {
        "n": 2729,
        "mean": 2.431,
        "median": 1.824,
        "p25": 0.864,
        "p75": 3.131,
        "hist": {
          "bin_edges": [
            0.0,
            0.25,
            0.5,
            0.75,
            1.0,
            1.25,
            1.5,
            1.75,
            2.0,
            2.25,
            2.5,
            2.75,
            3.0,
            3.25,
            3.5,
            3.75,
            4.0
          ],
          "counts": [
            179,
            209,
            194,
            221,
            194,
            164,
            161,
            152,
            138,
            138,
            137,
            108,
            94,
            63,
            71,
            506
          ],
          "bin_centers": [
            0.125,
            0.375,
            0.625,
            0.875,
            1.125,
            1.375,
            1.625,
            1.875,
            2.125,
            2.375,
            2.625,
            2.875,
            3.125,
            3.375,
            3.625,
            3.875
          ],
          "clip_lo": 0.0,
          "clip_hi": 4.0
        }
      },
      "max_down_natr": {
        "n": 2729,
        "mean": -2.239,
        "median": -1.765,
        "p25": -3.01,
        "p75": -0.848,
        "hist": {
          "bin_edges": [
            -4.0,
            -3.75,
            -3.5,
            -3.25,
            -3.0,
            -2.75,
            -2.5,
            -2.25,
            -2.0,
            -1.75,
            -1.5,
            -1.25,
            -1.0,
            -0.75,
            -0.5,
            -0.25,
            0.0
          ],
          "counts": [
            448,
            67,
            92,
            80,
            101,
            131,
            148,
            141,
            166,
            163,
            199,
            185,
            196,
            205,
            197,
            210
          ],
          "bin_centers": [
            -3.875,
            -3.625,
            -3.375,
            -3.125,
            -2.875,
            -2.625,
            -2.375,
            -2.125,
            -1.875,
            -1.625,
            -1.375,
            -1.125,
            -0.875,
            -0.625,
            -0.375,
            -0.125
          ],
          "clip_lo": -4.0,
          "clip_hi": 0.0
        }
      },
      "median_max_up_natr": 1.824,
      "median_max_down_natr": -1.765,
      "mean_max_up_natr": 2.431,
      "mean_max_down_natr": -2.239,
      "p25_max_up_natr": 0.864,
      "p75_max_up_natr": 3.131,
      "p25_max_down_natr": -3.01,
      "p75_max_down_natr": -0.848,
      "outcome_natr_moves": {
        "breakout": {
          "n": 813,
          "max_up_natr": {
            "n": 813,
            "mean": 3.524,
            "median": 2.766,
            "p25": 1.93,
            "p75": 4.147,
            "hist": {
              "bin_edges": [
                0.0,
                0.25,
                0.5,
                0.75,
                1.0,
                1.25,
                1.5,
                1.75,
                2.0,
                2.25,
                2.5,
                2.75,
                3.0,
                3.25,
                3.5,
                3.75,
                4.0
              ],
              "counts": [
                0,
                0,
                0,
                0,
                31,
                52,
                73,
                68,
                53,
                60,
                67,
                52,
                41,
                30,
                35,
                251
              ],
              "bin_centers": [
                0.125,
                0.375,
                0.625,
                0.875,
                1.125,
                1.375,
                1.625,
                1.875,
                2.125,
                2.375,
                2.625,
                2.875,
                3.125,
                3.375,
                3.625,
                3.875
              ],
              "clip_lo": 0.0,
              "clip_hi": 4.0
            }
          },
          "max_down_natr": {
            "n": 813,
            "mean": -1.215,
            "median": -0.669,
            "p25": -1.554,
            "p75": -0.29,
            "hist": {
              "bin_edges": [
                -4.0,
                -3.75,
                -3.5,
                -3.25,
                -3.0,
                -2.75,
                -2.5,
                -2.25,
                -2.0,
                -1.75,
                -1.5,
                -1.25,
                -1.0,
                -0.75,
                -0.5,
                -0.25,
                0.0
              ],
              "counts": [
                54,
                8,
                8,
                10,
                14,
                15,
                23,
                28,
                25,
                25,
                40,
                37,
                77,
                128,
                145,
                176
              ],
              "bin_centers": [
                -3.875,
                -3.625,
                -3.375,
                -3.125,
                -2.875,
                -2.625,
                -2.375,
                -2.125,
                -1.875,
                -1.625,
                -1.375,
                -1.125,
                -0.875,
                -0.625,
                -0.375,
                -0.125
              ],
              "clip_lo": -4.0,
              "clip_hi": 0.0
            }
          }
        },
        "breakdown": {
          "n": 1888,
          "max_up_natr": {
            "n": 1888,
            "mean": 1.983,
            "median": 1.264,
            "p25": 0.616,
            "p75": 2.609,
            "hist": {
              "bin_edges": [
                0.0,
                0.25,
                0.5,
                0.75,
                1.0,
                1.25,
                1.5,
                1.75,
                2.0,
                2.25,
                2.5,
                2.75,
                3.0,
                3.25,
                3.5,
                3.75,
                4.0
              ],
              "counts": [
                179,
                209,
                190,
                207,
                153,
                112,
                88,
                84,
                85,
                78,
                70,
                56,
                53,
                33,
                36,
                255
              ],
              "bin_centers": [
                0.125,
                0.375,
                0.625,
                0.875,
                1.125,
                1.375,
                1.625,
                1.875,
                2.125,
                2.375,
                2.625,
                2.875,
                3.125,
                3.375,
                3.625,
                3.875
              ],
              "clip_lo": 0.0,
              "clip_hi": 4.0
            }
          },
          "max_down_natr": {
            "n": 1888,
            "mean": -2.705,
            "median": -2.237,
            "p25": -3.452,
            "p75": -1.358,
            "hist": {
              "bin_edges": [
                -4.0,
                -3.75,
                -3.5,
                -3.25,
                -3.0,
                -2.75,
                -2.5,
                -2.25,
                -2.0,
                -1.75,
                -1.5,
                -1.25,
                -1.0,
                -0.75,
                -0.5,
                -0.25,
                0.0
              ],
              "counts": [
                394,
                59,
                84,
                70,
                87,
                116,
                125,
                113,
                141,
                138,
                159,
                148,
                110,
                67,
                43,
                34
              ],
              "bin_centers": [
                -3.875,
                -3.625,
                -3.375,
                -3.125,
                -2.875,
                -2.625,
                -2.375,
                -2.125,
                -1.875,
                -1.625,
                -1.375,
                -1.125,
                -0.875,
                -0.625,
                -0.375,
                -0.125
              ],
              "clip_lo": -4.0,
              "clip_hi": 0.0
            }
          }
        },
        "sideways": {
          "n": 28,
          "max_up_natr": {
            "n": 28,
            "mean": 0.922,
            "median": 0.906,
            "p25": 0.814,
            "p75": 1.043,
            "hist": {
              "bin_edges": [
                0.0,
                0.25,
                0.5,
                0.75,
                1.0,
                1.25,
                1.5,
                1.75,
                2.0,
                2.25,
                2.5,
                2.75,
                3.0,
                3.25,
                3.5,
                3.75,
                4.0
              ],
              "counts": [
                0,
                0,
                4,
                14,
                10,
                0,
                0,
                0,
                0,
                0,
                0,
                0,
                0,
                0,
                0,
                0
              ],
              "bin_centers": [
                0.125,
                0.375,
                0.625,
                0.875,
                1.125,
                1.375,
                1.625,
                1.875,
                2.125,
                2.375,
                2.625,
                2.875,
                3.125,
                3.375,
                3.625,
                3.875
              ],
              "clip_lo": 0.0,
              "clip_hi": 4.0
            }
          },
          "max_down_natr": {
            "n": 28,
            "mean": -0.63,
            "median": -0.673,
            "p25": -0.766,
            "p75": -0.461,
            "hist": {
              "bin_edges": [
                -4.0,
                -3.75,
                -3.5,
                -3.25,
                -3.0,
                -2.75,
                -2.5,
                -2.25,
                -2.0,
                -1.75,
                -1.5,
                -1.25,
                -1.0,
                -0.75,
                -0.5,
                -0.25,
                0.0
              ],
              "counts": [
                0,
                0,
                0,
                0,
                0,
                0,
                0,
                0,
                0,
                0,
                0,
                0,
                9,
                10,
                9,
                0
              ],
              "bin_centers": [
                -3.875,
                -3.625,
                -3.375,
                -3.125,
                -2.875,
                -2.625,
                -2.375,
                -2.125,
                -1.875,
                -1.625,
                -1.375,
                -1.125,
                -0.875,
                -0.625,
                -0.375,
                -0.125
              ],
              "clip_lo": -4.0,
              "clip_hi": 0.0
            }
          }
        },
        "forming": {
          "n": 0,
          "max_up_natr": {
            "n": 0,
            "mean": null,
            "median": null,
            "p25": null,
            "p75": null
          },
          "max_down_natr": {
            "n": 0,
            "mean": null,
            "median": null,
            "p25": null,
            "p75": null
          }
        }
      },
      "max_up_natr_hist": {
        "bin_edges": [
          0.0,
          0.25,
          0.5,
          0.75,
          1.0,
          1.25,
          1.5,
          1.75,
          2.0,
          2.25,
          2.5,
          2.75,
          3.0,
          3.25,
          3.5,
          3.75,
          4.0
        ],
        "counts": [
          179,
          209,
          194,
          221,
          194,
          164,
          161,
          152,
          138,
          138,
          137,
          108,
          94,
          63,
          71,
          506
        ],
        "bin_centers": [
          0.125,
          0.375,
          0.625,
          0.875,
          1.125,
          1.375,
          1.625,
          1.875,
          2.125,
          2.375,
          2.625,
          2.875,
          3.125,
          3.375,
          3.625,
          3.875
        ],
        "clip_lo": 0.0,
        "clip_hi": 4.0
      },
      "max_down_natr_hist": {
        "bin_edges": [
          -4.0,
          -3.75,
          -3.5,
          -3.25,
          -3.0,
          -2.75,
          -2.5,
          -2.25,
          -2.0,
          -1.75,
          -1.5,
          -1.25,
          -1.0,
          -0.75,
          -0.5,
          -0.25,
          0.0
        ],
        "counts": [
          448,
          67,
          92,
          80,
          101,
          131,
          148,
          141,
          166,
          163,
          199,
          185,
          196,
          205,
          197,
          210
        ],
        "bin_centers": [
          -3.875,
          -3.625,
          -3.375,
          -3.125,
          -2.875,
          -2.625,
          -2.375,
          -2.125,
          -1.875,
          -1.625,
          -1.375,
          -1.125,
          -0.875,
          -0.625,
          -0.375,
          -0.125
        ],
        "clip_lo": -4.0,
        "clip_hi": 0.0
      },
      "timestamp_min": 1596125700000,
      "timestamp_max": 1785517200000,
      "timestamp_min_iso": "2020-07-30T16:15:00Z",
      "timestamp_max_iso": "2026-07-31T17:00:00Z"
    },
    {
      "pattern_type": "channel_ascending",
      "pattern_name": "Ascending Channel",
      "timeframe": "1h",
      "bias": "bearish",
      "n": 1121,
      "n_symbols": 404,
      "breakout_success_rate": 27.83,
      "breakdown_success_rate": 69.13,
      "sideways_rate": 3.04,
      "forming_rate": 0.0,
      "both_cleared_rate": 43.89,
      "breakout_success_rate_ci95": [
        25.29,
        30.53
      ],
      "breakdown_success_rate_ci95": [
        66.37,
        71.77
      ],
      "sideways_rate_ci95": [
        2.18,
        4.21
      ],
      "forming_rate_ci95": [
        0.0,
        0.34
      ],
      "both_sides_rate": 43.89,
      "expected_hit_rate": 69.13,
      "expected_hit_rate_ci95": [
        66.37,
        71.77
      ],
      "mean_ret_10c": -0.324,
      "median_ret_10c": -0.674,
      "std_ret_10c": 5.408,
      "win_rate_ret_gt0": 42.64,
      "p25_ret_10c": -2.966,
      "p75_ret_10c": 1.981,
      "mean_mfe": 3.651,
      "mean_mae": -4.215,
      "mfe_mae_ratio": 0.866,
      "max_up_natr": {
        "n": 1121,
        "mean": 2.892,
        "median": 1.75,
        "p25": 0.407,
        "p75": 3.951,
        "hist": {
          "bin_edges": [
            0.0,
            0.25,
            0.5,
            0.75,
            1.0,
            1.25,
            1.5,
            1.75,
            2.0,
            2.25,
            2.5,
            2.75,
            3.0,
            3.25,
            3.5,
            3.75,
            4.0
          ],
          "counts": [
            212,
            103,
            62,
            56,
            32,
            46,
            49,
            42,
            45,
            37,
            35,
            27,
            21,
            29,
            30,
            295
          ],
          "bin_centers": [
            0.125,
            0.375,
            0.625,
            0.875,
            1.125,
            1.375,
            1.625,
            1.875,
            2.125,
            2.375,
            2.625,
            2.875,
            3.125,
            3.375,
            3.625,
            3.875
          ],
          "clip_lo": 0.0,
          "clip_hi": 4.0
        }
      },
      "max_down_natr": {
        "n": 1121,
        "mean": -3.155,
        "median": -2.641,
        "p25": -4.192,
        "p75": -1.407,
        "hist": {
          "bin_edges": [
            -4.0,
            -3.75,
            -3.5,
            -3.25,
            -3.0,
            -2.75,
            -2.5,
            -2.25,
            -2.0,
            -1.75,
            -1.5,
            -1.25,
            -1.0,
            -0.75,
            -0.5,
            -0.25,
            0.0
          ],
          "counts": [
            345,
            37,
            40,
            53,
            60,
            66,
            52,
            49,
            57,
            56,
            65,
            41,
            46,
            36,
            43,
            75
          ],
          "bin_centers": [
            -3.875,
            -3.625,
            -3.375,
            -3.125,
            -2.875,
            -2.625,
            -2.375,
            -2.125,
            -1.875,
            -1.625,
            -1.375,
            -1.125,
            -0.875,
            -0.625,
            -0.375,
            -0.125
          ],
          "clip_lo": -4.0,
          "clip_hi": 0.0
        }
      },
      "median_max_up_natr": 1.75,
      "median_max_down_natr": -2.641,
      "mean_max_up_natr": 2.892,
      "mean_max_down_natr": -3.155,
      "p25_max_up_natr": 0.407,
      "p75_max_up_natr": 3.951,
      "p25_max_down_natr": -4.192,
      "p75_max_down_natr": -1.407,
      "outcome_natr_moves": {
        "breakout": {
          "n": 312,
          "max_up_natr": {
            "n": 312,
            "mean": 5.942,
            "median": 4.706,
            "p25": 2.916,
            "p75": 6.994,
            "hist": {
              "bin_edges": [
                0.0,
                0.25,
                0.5,
                0.75,
                1.0,
                1.25,
                1.5,
                1.75,
                2.0,
                2.25,
                2.5,
                2.75,
                3.0,
                3.25,
                3.5,
                3.75,
                4.0
              ],
              "counts": [
                0,
                0,
                2,
                2,
                6,
                7,
                10,
                9,
                12,
                12,
                11,
                10,
                9,
                13,
                18,
                191
              ],
              "bin_centers": [
                0.125,
                0.375,
                0.625,
                0.875,
                1.125,
                1.375,
                1.625,
                1.875,
                2.125,
                2.375,
                2.625,
                2.875,
                3.125,
                3.375,
                3.625,
                3.875
              ],
              "clip_lo": 0.0,
              "clip_hi": 4.0
            }
          },
          "max_down_natr": {
            "n": 312,
            "mean": -1.858,
            "median": -1.114,
            "p25": -2.774,
            "p75": -0.28,
            "hist": {
              "bin_edges": [
                -4.0,
                -3.75,
                -3.5,
                -3.25,
                -3.0,
                -2.75,
                -2.5,
                -2.25,
                -2.0,
                -1.75,
                -1.5,
                -1.25,
                -1.0,
                -0.75,
                -0.5,
                -0.25,
                0.0
              ],
              "counts": [
                42,
                8,
                6,
                11,
                12,
                12,
                7,
                7,
                9,
                11,
                23,
                14,
                15,
                23,
                37,
                75
              ],
              "bin_centers": [
                -3.875,
                -3.625,
                -3.375,
                -3.125,
                -2.875,
                -2.625,
                -2.375,
                -2.125,
                -1.875,
                -1.625,
                -1.375,
                -1.125,
                -0.875,
                -0.625,
                -0.375,
                -0.125
              ],
              "clip_lo": -4.0,
              "clip_hi": 0.0
            }
          }
        },
        "breakdown": {
          "n": 775,
          "max_up_natr": {
            "n": 775,
            "mean": 1.7,
            "median": 0.825,
            "p25": 0.216,
            "p75": 2.3,
            "hist": {
              "bin_edges": [
                0.0,
                0.25,
                0.5,
                0.75,
                1.0,
                1.25,
                1.5,
                1.75,
                2.0,
                2.25,
                2.5,
                2.75,
                3.0,
                3.25,
                3.5,
                3.75,
                4.0
              ],
              "counts": [
                212,
                103,
                59,
                50,
                22,
                36,
                36,
                31,
                27,
                21,
                21,
                16,
                12,
                16,
                12,
                101
              ],
              "bin_centers": [
                0.125,
                0.375,
                0.625,
                0.875,
                1.125,
                1.375,
                1.625,
                1.875,
                2.125,
                2.375,
                2.625,
                2.875,
                3.125,
                3.375,
                3.625,
                3.875
              ],
              "clip_lo": 0.0,
              "clip_hi": 4.0
            }
          },
          "max_down_natr": {
            "n": 775,
            "mean": -3.758,
            "median": -3.099,
            "p25": -4.707,
            "p75": -2.064,
            "hist": {
              "bin_edges": [
                -4.0,
                -3.75,
                -3.5,
                -3.25,
                -3.0,
                -2.75,
                -2.5,
                -2.25,
                -2.0,
                -1.75,
                -1.5,
                -1.25,
                -1.0,
                -0.75,
                -0.5,
                -0.25,
                0.0
              ],
              "counts": [
                303,
                29,
                33,
                40,
                48,
                53,
                43,
                40,
                47,
                43,
                39,
                25,
                23,
                9,
                0,
                0
              ],
              "bin_centers": [
                -3.875,
                -3.625,
                -3.375,
                -3.125,
                -2.875,
                -2.625,
                -2.375,
                -2.125,
                -1.875,
                -1.625,
                -1.375,
                -1.125,
                -0.875,
                -0.625,
                -0.375,
                -0.125
              ],
              "clip_lo": -4.0,
              "clip_hi": 0.0
            }
          }
        },
        "sideways": {
          "n": 34,
          "max_up_natr": {
            "n": 34,
            "mean": 2.053,
            "median": 1.978,
            "p25": 1.231,
            "p75": 2.304,
            "hist": {
              "bin_edges": [
                0.0,
                0.25,
                0.5,
                0.75,
                1.0,
                1.25,
                1.5,
                1.75,
                2.0,
                2.25,
                2.5,
                2.75,
                3.0,
                3.25,
                3.5,
                3.75,
                4.0
              ],
              "counts": [
                0,
                0,
                1,
                4,
                4,
                3,
                3,
                2,
                6,
                4,
                3,
                1,
                0,
                0,
                0,
                3
              ],
              "bin_centers": [
                0.125,
                0.375,
                0.625,
                0.875,
                1.125,
                1.375,
                1.625,
                1.875,
                2.125,
                2.375,
                2.625,
                2.875,
                3.125,
                3.375,
                3.625,
                3.875
              ],
              "clip_lo": 0.0,
              "clip_hi": 4.0
            }
          },
          "max_down_natr": {
            "n": 34,
            "mean": -1.303,
            "median": -0.919,
            "p25": -1.755,
            "p75": -0.705,
            "hist": {
              "bin_edges": [
                -4.0,
                -3.75,
                -3.5,
                -3.25,
                -3.0,
                -2.75,
                -2.5,
                -2.25,
                -2.0,
                -1.75,
                -1.5,
                -1.25,
                -1.0,
                -0.75,
                -0.5,
                -0.25,
                0.0
              ],
              "counts": [
                0,
                0,
                1,
                2,
                0,
                1,
                2,
                2,
                1,
                2,
                3,
                2,
                8,
                4,
                6,
                0
              ],
              "bin_centers": [
                -3.875,
                -3.625,
                -3.375,
                -3.125,
                -2.875,
                -2.625,
                -2.375,
                -2.125,
                -1.875,
                -1.625,
                -1.375,
                -1.125,
                -0.875,
                -0.625,
                -0.375,
                -0.125
              ],
              "clip_lo": -4.0,
              "clip_hi": 0.0
            }
          }
        },
        "forming": {
          "n": 0,
          "max_up_natr": {
            "n": 0,
            "mean": null,
            "median": null,
            "p25": null,
            "p75": null
          },
          "max_down_natr": {
            "n": 0,
            "mean": null,
            "median": null,
            "p25": null,
            "p75": null
          }
        }
      },
      "max_up_natr_hist": {
        "bin_edges": [
          0.0,
          0.25,
          0.5,
          0.75,
          1.0,
          1.25,
          1.5,
          1.75,
          2.0,
          2.25,
          2.5,
          2.75,
          3.0,
          3.25,
          3.5,
          3.75,
          4.0
        ],
        "counts": [
          212,
          103,
          62,
          56,
          32,
          46,
          49,
          42,
          45,
          37,
          35,
          27,
          21,
          29,
          30,
          295
        ],
        "bin_centers": [
          0.125,
          0.375,
          0.625,
          0.875,
          1.125,
          1.375,
          1.625,
          1.875,
          2.125,
          2.375,
          2.625,
          2.875,
          3.125,
          3.375,
          3.625,
          3.875
        ],
        "clip_lo": 0.0,
        "clip_hi": 4.0
      },
      "max_down_natr_hist": {
        "bin_edges": [
          -4.0,
          -3.75,
          -3.5,
          -3.25,
          -3.0,
          -2.75,
          -2.5,
          -2.25,
          -2.0,
          -1.75,
          -1.5,
          -1.25,
          -1.0,
          -0.75,
          -0.5,
          -0.25,
          0.0
        ],
        "counts": [
          345,
          37,
          40,
          53,
          60,
          66,
          52,
          49,
          57,
          56,
          65,
          41,
          46,
          36,
          43,
          75
        ],
        "bin_centers": [
          -3.875,
          -3.625,
          -3.375,
          -3.125,
          -2.875,
          -2.625,
          -2.375,
          -2.125,
          -1.875,
          -1.625,
          -1.375,
          -1.125,
          -0.875,
          -0.625,
          -0.375,
          -0.125
        ],
        "clip_lo": -4.0,
        "clip_hi": 0.0
      },
      "timestamp_min": 1581303600000,
      "timestamp_max": 1784822400000,
      "timestamp_min_iso": "2020-02-10T03:00:00Z",
      "timestamp_max_iso": "2026-07-23T16:00:00Z"
    },
    {
      "pattern_type": "bullish_pennant",
      "pattern_name": "Bullish Pennant",
      "timeframe": "1d",
      "bias": "bullish",
      "n": 32,
      "n_symbols": 31,
      "breakout_success_rate": 68.75,
      "breakdown_success_rate": 31.25,
      "sideways_rate": 0.0,
      "forming_rate": 0.0,
      "both_cleared_rate": 65.62,
      "breakout_success_rate_ci95": [
        51.43,
        82.05
      ],
      "breakdown_success_rate_ci95": [
        17.95,
        48.57
      ],
      "sideways_rate_ci95": [
        0.0,
        10.72
      ],
      "forming_rate_ci95": [
        0.0,
        10.72
      ],
      "both_sides_rate": 65.62,
      "expected_hit_rate": 68.75,
      "expected_hit_rate_ci95": [
        51.43,
        82.05
      ],
      "mean_ret_10c": 1.355,
      "median_ret_10c": 4.351,
      "std_ret_10c": 26.241,
      "win_rate_ret_gt0": 59.38,
      "p25_ret_10c": -14.453,
      "p75_ret_10c": 13.925,
      "mean_mfe": 33.914,
      "mean_mae": -19.994,
      "mfe_mae_ratio": 1.696,
      "max_up_natr": {
        "n": 32,
        "mean": 3.887,
        "median": 2.644,
        "p25": 1.365,
        "p75": 5.121,
        "hist": {
          "bin_edges": [
            0.0,
            0.25,
            0.5,
            0.75,
            1.0,
            1.25,
            1.5,
            1.75,
            2.0,
            2.25,
            2.5,
            2.75,
            3.0,
            3.25,
            3.5,
            3.75,
            4.0
          ],
          "counts": [
            0,
            0,
            4,
            1,
            3,
            1,
            1,
            0,
            2,
            2,
            3,
            0,
            0,
            1,
            2,
            12
          ],
          "bin_centers": [
            0.125,
            0.375,
            0.625,
            0.875,
            1.125,
            1.375,
            1.625,
            1.875,
            2.125,
            2.375,
            2.625,
            2.875,
            3.125,
            3.375,
            3.625,
            3.875
          ],
          "clip_lo": 0.0,
          "clip_hi": 4.0
        }
      },
      "max_down_natr": {
        "n": 32,
        "mean": -2.334,
        "median": -2.094,
        "p25": -2.925,
        "p75": -1.346,
        "hist": {
          "bin_edges": [
            -4.0,
            -3.75,
            -3.5,
            -3.25,
            -3.0,
            -2.75,
            -2.5,
            -2.25,
            -2.0,
            -1.75,
            -1.5,
            -1.25,
            -1.0,
            -0.75,
            -0.5,
            -0.25,
            0.0
          ],
          "counts": [
            6,
            1,
            0,
            1,
            1,
            1,
            5,
            1,
            2,
            2,
            5,
            1,
            0,
            2,
            0,
            4
          ],
          "bin_centers": [
            -3.875,
            -3.625,
            -3.375,
            -3.125,
            -2.875,
            -2.625,
            -2.375,
            -2.125,
            -1.875,
            -1.625,
            -1.375,
            -1.125,
            -0.875,
            -0.625,
            -0.375,
            -0.125
          ],
          "clip_lo": -4.0,
          "clip_hi": 0.0
        }
      },
      "median_max_up_natr": 2.644,
      "median_max_down_natr": -2.094,
      "mean_max_up_natr": 3.887,
      "mean_max_down_natr": -2.334,
      "p25_max_up_natr": 1.365,
      "p75_max_up_natr": 5.121,
      "p25_max_down_natr": -2.925,
      "p75_max_down_natr": -1.346,
      "outcome_natr_moves": {
        "breakout": {
          "n": 22,
          "max_up_natr": {
            "n": 22,
            "mean": 4.213,
            "median": 3.075,
            "p25": 1.154,
            "p75": 5.205,
            "hist": {
              "bin_edges": [
                0.0,
                0.25,
                0.5,
                0.75,
                1.0,
                1.25,
                1.5,
                1.75,
                2.0,
                2.25,
                2.5,
                2.75,
                3.0,
                3.25,
                3.5,
                3.75,
                4.0
              ],
              "counts": [
                0,
                0,
                3,
                1,
                3,
                1,
                0,
                0,
                1,
                1,
                1,
                0,
                0,
                1,
                1,
                9
              ],
              "bin_centers": [
                0.125,
                0.375,
                0.625,
                0.875,
                1.125,
                1.375,
                1.625,
                1.875,
                2.125,
                2.375,
                2.625,
                2.875,
                3.125,
                3.375,
                3.625,
                3.875
              ],
              "clip_lo": 0.0,
              "clip_hi": 4.0
            }
          },
          "max_down_natr": {
            "n": 22,
            "mean": -2.451,
            "median": -1.709,
            "p25": -4.068,
            "p75": -0.759,
            "hist": {
              "bin_edges": [
                -4.0,
                -3.75,
                -3.5,
                -3.25,
                -3.0,
                -2.75,
                -2.5,
                -2.25,
                -2.0,
                -1.75,
                -1.5,
                -1.25,
                -1.0,
                -0.75,
                -0.5,
                -0.25,
                0.0
              ],
              "counts": [
                6,
                1,
                0,
                1,
                0,
                1,
                1,
                0,
                1,
                2,
                2,
                1,
                0,
                2,
                0,
                4
              ],
              "bin_centers": [
                -3.875,
                -3.625,
                -3.375,
                -3.125,
                -2.875,
                -2.625,
                -2.375,
                -2.125,
                -1.875,
                -1.625,
                -1.375,
                -1.125,
                -0.875,
                -0.625,
                -0.375,
                -0.125
              ],
              "clip_lo": -4.0,
              "clip_hi": 0.0
            }
          }
        },
        "breakdown": {
          "n": 10,
          "max_up_natr": {
            "n": 10,
            "mean": 3.169,
            "median": 2.578,
            "p25": 2.228,
            "p75": 4.627
          },
          "max_down_natr": {
            "n": 10,
            "mean": -2.079,
            "median": -2.27,
            "p25": -2.38,
            "p75": -1.569
          }
        },
        "sideways": {
          "n": 0,
          "max_up_natr": {
            "n": 0,
            "mean": null,
            "median": null,
            "p25": null,
            "p75": null
          },
          "max_down_natr": {
            "n": 0,
            "mean": null,
            "median": null,
            "p25": null,
            "p75": null
          }
        },
        "forming": {
          "n": 0,
          "max_up_natr": {
            "n": 0,
            "mean": null,
            "median": null,
            "p25": null,
            "p75": null
          },
          "max_down_natr": {
            "n": 0,
            "mean": null,
            "median": null,
            "p25": null,
            "p75": null
          }
        }
      },
      "max_up_natr_hist": {
        "bin_edges": [
          0.0,
          0.25,
          0.5,
          0.75,
          1.0,
          1.25,
          1.5,
          1.75,
          2.0,
          2.25,
          2.5,
          2.75,
          3.0,
          3.25,
          3.5,
          3.75,
          4.0
        ],
        "counts": [
          0,
          0,
          4,
          1,
          3,
          1,
          1,
          0,
          2,
          2,
          3,
          0,
          0,
          1,
          2,
          12
        ],
        "bin_centers": [
          0.125,
          0.375,
          0.625,
          0.875,
          1.125,
          1.375,
          1.625,
          1.875,
          2.125,
          2.375,
          2.625,
          2.875,
          3.125,
          3.375,
          3.625,
          3.875
        ],
        "clip_lo": 0.0,
        "clip_hi": 4.0
      },
      "max_down_natr_hist": {
        "bin_edges": [
          -4.0,
          -3.75,
          -3.5,
          -3.25,
          -3.0,
          -2.75,
          -2.5,
          -2.25,
          -2.0,
          -1.75,
          -1.5,
          -1.25,
          -1.0,
          -0.75,
          -0.5,
          -0.25,
          0.0
        ],
        "counts": [
          6,
          1,
          0,
          1,
          1,
          1,
          5,
          1,
          2,
          2,
          5,
          1,
          0,
          2,
          0,
          4
        ],
        "bin_centers": [
          -3.875,
          -3.625,
          -3.375,
          -3.125,
          -2.875,
          -2.625,
          -2.375,
          -2.125,
          -1.875,
          -1.625,
          -1.375,
          -1.125,
          -0.875,
          -0.625,
          -0.375,
          -0.125
        ],
        "clip_lo": -4.0,
        "clip_hi": 0.0
      },
      "timestamp_min": 1558656000000,
      "timestamp_max": 1768262400000,
      "timestamp_min_iso": "2019-05-24T00:00:00Z",
      "timestamp_max_iso": "2026-01-13T00:00:00Z"
    },
    {
      "pattern_type": "bearish_pennant",
      "pattern_name": "Bearish Pennant",
      "timeframe": "4h",
      "bias": "bearish",
      "n": 321,
      "n_symbols": 240,
      "breakout_success_rate": 27.73,
      "breakdown_success_rate": 68.22,
      "sideways_rate": 4.05,
      "forming_rate": 0.0,
      "both_cleared_rate": 30.53,
      "breakout_success_rate_ci95": [
        23.11,
        32.86
      ],
      "breakdown_success_rate_ci95": [
        62.94,
        73.08
      ],
      "sideways_rate_ci95": [
        2.38,
        6.8
      ],
      "forming_rate_ci95": [
        0.0,
        1.18
      ],
      "both_sides_rate": 30.53,
      "expected_hit_rate": 68.22,
      "expected_hit_rate_ci95": [
        62.94,
        73.08
      ],
      "mean_ret_10c": 0.286,
      "median_ret_10c": -0.946,
      "std_ret_10c": 19.674,
      "win_rate_ret_gt0": 41.74,
      "p25_ret_10c": -6.227,
      "p75_ret_10c": 4.019,
      "mean_mfe": 10.103,
      "mean_mae": -9.995,
      "mfe_mae_ratio": 1.011,
      "max_up_natr": {
        "n": 321,
        "mean": 2.226,
        "median": 1.323,
        "p25": 0.399,
        "p75": 2.779,
        "hist": {
          "bin_edges": [
            0.0,
            0.25,
            0.5,
            0.75,
            1.0,
            1.25,
            1.5,
            1.75,
            2.0,
            2.25,
            2.5,
            2.75,
            3.0,
            3.25,
            3.5,
            3.75,
            4.0
          ],
          "counts": [
            56,
            37,
            25,
            21,
            17,
            22,
            15,
            16,
            12,
            12,
            6,
            9,
            13,
            5,
            7,
            48
          ],
          "bin_centers": [
            0.125,
            0.375,
            0.625,
            0.875,
            1.125,
            1.375,
            1.625,
            1.875,
            2.125,
            2.375,
            2.625,
            2.875,
            3.125,
            3.375,
            3.625,
            3.875
          ],
          "clip_lo": 0.0,
          "clip_hi": 4.0
        }
      },
      "max_down_natr": {
        "n": 321,
        "mean": -2.647,
        "median": -1.873,
        "p25": -2.967,
        "p75": -0.905,
        "hist": {
          "bin_edges": [
            -4.0,
            -3.75,
            -3.5,
            -3.25,
            -3.0,
            -2.75,
            -2.5,
            -2.25,
            -2.0,
            -1.75,
            -1.5,
            -1.25,
            -1.0,
            -0.75,
            -0.5,
            -0.25,
            0.0
          ],
          "counts": [
            68,
            3,
            3,
            5,
            11,
            16,
            27,
            19,
            18,
            16,
            25,
            20,
            21,
            25,
            19,
            25
          ],
          "bin_centers": [
            -3.875,
            -3.625,
            -3.375,
            -3.125,
            -2.875,
            -2.625,
            -2.375,
            -2.125,
            -1.875,
            -1.625,
            -1.375,
            -1.125,
            -0.875,
            -0.625,
            -0.375,
            -0.125
          ],
          "clip_lo": -4.0,
          "clip_hi": 0.0
        }
      },
      "median_max_up_natr": 1.323,
      "median_max_down_natr": -1.873,
      "mean_max_up_natr": 2.226,
      "mean_max_down_natr": -2.647,
      "p25_max_up_natr": 0.399,
      "p75_max_up_natr": 2.779,
      "p25_max_down_natr": -2.967,
      "p75_max_down_natr": -0.905,
      "outcome_natr_moves": {
        "breakout": {
          "n": 89,
          "max_up_natr": {
            "n": 89,
            "mean": 4.552,
            "median": 2.779,
            "p25": 1.92,
            "p75": 4.176,
            "hist": {
              "bin_edges": [
                0.0,
                0.25,
                0.5,
                0.75,
                1.0,
                1.25,
                1.5,
                1.75,
                2.0,
                2.25,
                2.5,
                2.75,
                3.0,
                3.25,
                3.5,
                3.75,
                4.0
              ],
              "counts": [
                0,
                0,
                0,
                0,
                3,
                8,
                3,
                11,
                8,
                8,
                3,
                3,
                6,
                3,
                5,
                28
              ],
              "bin_centers": [
                0.125,
                0.375,
                0.625,
                0.875,
                1.125,
                1.375,
                1.625,
                1.875,
                2.125,
                2.375,
                2.625,
                2.875,
                3.125,
                3.375,
                3.625,
                3.875
              ],
              "clip_lo": 0.0,
              "clip_hi": 4.0
            }
          },
          "max_down_natr": {
            "n": 89,
            "mean": -1.185,
            "median": -0.574,
            "p25": -1.354,
            "p75": -0.223,
            "hist": {
              "bin_edges": [
                -4.0,
                -3.75,
                -3.5,
                -3.25,
                -3.0,
                -2.75,
                -2.5,
                -2.25,
                -2.0,
                -1.75,
                -1.5,
                -1.25,
                -1.0,
                -0.75,
                -0.5,
                -0.25,
                0.0
              ],
              "counts": [
                9,
                0,
                0,
                0,
                1,
                1,
                4,
                2,
                1,
                0,
                6,
                4,
                10,
                15,
                11,
                25
              ],
              "bin_centers": [
                -3.875,
                -3.625,
                -3.375,
                -3.125,
                -2.875,
                -2.625,
                -2.375,
                -2.125,
                -1.875,
                -1.625,
                -1.375,
                -1.125,
                -0.875,
                -0.625,
                -0.375,
                -0.125
              ],
              "clip_lo": -4.0,
              "clip_hi": 0.0
            }
          }
        },
        "breakdown": {
          "n": 219,
          "max_up_natr": {
            "n": 219,
            "mean": 1.365,
            "median": 0.717,
            "p25": 0.253,
            "p75": 1.689,
            "hist": {
              "bin_edges": [
                0.0,
                0.25,
                0.5,
                0.75,
                1.0,
                1.25,
                1.5,
                1.75,
                2.0,
                2.25,
                2.5,
                2.75,
                3.0,
                3.25,
                3.5,
                3.75,
                4.0
              ],
              "counts": [
                55,
                33,
                24,
                18,
                13,
                13,
                10,
                5,
                4,
                4,
                3,
                6,
                7,
                2,
                2,
                20
              ],
              "bin_centers": [
                0.125,
                0.375,
                0.625,
                0.875,
                1.125,
                1.375,
                1.625,
                1.875,
                2.125,
                2.375,
                2.625,
                2.875,
                3.125,
                3.375,
                3.625,
                3.875
              ],
              "clip_lo": 0.0,
              "clip_hi": 4.0
            }
          },
          "max_down_natr": {
            "n": 219,
            "mean": -3.353,
            "median": -2.347,
            "p25": -3.958,
            "p75": -1.569,
            "hist": {
              "bin_edges": [
                -4.0,
                -3.75,
                -3.5,
                -3.25,
                -3.0,
                -2.75,
                -2.5,
                -2.25,
                -2.0,
                -1.75,
                -1.5,
                -1.25,
                -1.0,
                -0.75,
                -0.5,
                -0.25,
                0.0
              ],
              "counts": [
                59,
                3,
                3,
                5,
                10,
                15,
                23,
                17,
                17,
                15,
                19,
                13,
                9,
                8,
                3,
                0
              ],
              "bin_centers": [
                -3.875,
                -3.625,
                -3.375,
                -3.125,
                -2.875,
                -2.625,
                -2.375,
                -2.125,
                -1.875,
                -1.625,
                -1.375,
                -1.125,
                -0.875,
                -0.625,
                -0.375,
                -0.125
              ],
              "clip_lo": -4.0,
              "clip_hi": 0.0
            }
          }
        },
        "sideways": {
          "n": 13,
          "max_up_natr": {
            "n": 13,
            "mean": 0.818,
            "median": 0.835,
            "p25": 0.434,
            "p75": 1.031
          },
          "max_down_natr": {
            "n": 13,
            "mean": -0.755,
            "median": -0.637,
            "p25": -1.029,
            "p75": -0.439
          }
        },
        "forming": {
          "n": 0,
          "max_up_natr": {
            "n": 0,
            "mean": null,
            "median": null,
            "p25": null,
            "p75": null
          },
          "max_down_natr": {
            "n": 0,
            "mean": null,
            "median": null,
            "p25": null,
            "p75": null
          }
        }
      },
      "max_up_natr_hist": {
        "bin_edges": [
          0.0,
          0.25,
          0.5,
          0.75,
          1.0,
          1.25,
          1.5,
          1.75,
          2.0,
          2.25,
          2.5,
          2.75,
          3.0,
          3.25,
          3.5,
          3.75,
          4.0
        ],
        "counts": [
          56,
          37,
          25,
          21,
          17,
          22,
          15,
          16,
          12,
          12,
          6,
          9,
          13,
          5,
          7,
          48
        ],
        "bin_centers": [
          0.125,
          0.375,
          0.625,
          0.875,
          1.125,
          1.375,
          1.625,
          1.875,
          2.125,
          2.375,
          2.625,
          2.875,
          3.125,
          3.375,
          3.625,
          3.875
        ],
        "clip_lo": 0.0,
        "clip_hi": 4.0
      },
      "max_down_natr_hist": {
        "bin_edges": [
          -4.0,
          -3.75,
          -3.5,
          -3.25,
          -3.0,
          -2.75,
          -2.5,
          -2.25,
          -2.0,
          -1.75,
          -1.5,
          -1.25,
          -1.0,
          -0.75,
          -0.5,
          -0.25,
          0.0
        ],
        "counts": [
          68,
          3,
          3,
          5,
          11,
          16,
          27,
          19,
          18,
          16,
          25,
          20,
          21,
          25,
          19,
          25
        ],
        "bin_centers": [
          -3.875,
          -3.625,
          -3.375,
          -3.125,
          -2.875,
          -2.625,
          -2.375,
          -2.125,
          -1.875,
          -1.625,
          -1.375,
          -1.125,
          -0.875,
          -0.625,
          -0.375,
          -0.125
        ],
        "clip_lo": -4.0,
        "clip_hi": 0.0
      },
      "timestamp_min": 1523160000000,
      "timestamp_max": 1784880000000,
      "timestamp_min_iso": "2018-04-08T04:00:00Z",
      "timestamp_max_iso": "2026-07-24T08:00:00Z"
    },
    {
      "pattern_type": "reverse_head_and_shoulders",
      "pattern_name": "Reverse Head & Shoulders",
      "timeframe": "15m",
      "bias": "bullish",
      "n": 2829,
      "n_symbols": 544,
      "breakout_success_rate": 68.12,
      "breakdown_success_rate": 31.07,
      "sideways_rate": 0.81,
      "forming_rate": 0.0,
      "both_cleared_rate": 41.96,
      "breakout_success_rate_ci95": [
        66.38,
        69.81
      ],
      "breakdown_success_rate_ci95": [
        29.39,
        32.8
      ],
      "sideways_rate_ci95": [
        0.54,
        1.22
      ],
      "forming_rate_ci95": [
        0.0,
        0.14
      ],
      "both_sides_rate": 41.96,
      "expected_hit_rate": 68.12,
      "expected_hit_rate_ci95": [
        66.38,
        69.81
      ],
      "mean_ret_10c": -0.115,
      "median_ret_10c": -0.231,
      "std_ret_10c": 3.545,
      "win_rate_ret_gt0": 42.28,
      "p25_ret_10c": -1.389,
      "p75_ret_10c": 0.941,
      "mean_mfe": 2.076,
      "mean_mae": -2.05,
      "mfe_mae_ratio": 1.013,
      "max_up_natr": {
        "n": 2829,
        "mean": 2.609,
        "median": 1.688,
        "p25": 0.694,
        "p75": 3.243,
        "hist": {
          "bin_edges": [
            0.0,
            0.25,
            0.5,
            0.75,
            1.0,
            1.25,
            1.5,
            1.75,
            2.0,
            2.25,
            2.5,
            2.75,
            3.0,
            3.25,
            3.5,
            3.75,
            4.0
          ],
          "counts": [
            293,
            228,
            229,
            190,
            179,
            172,
            160,
            151,
            126,
            118,
            113,
            83,
            83,
            69,
            63,
            572
          ],
          "bin_centers": [
            0.125,
            0.375,
            0.625,
            0.875,
            1.125,
            1.375,
            1.625,
            1.875,
            2.125,
            2.375,
            2.625,
            2.875,
            3.125,
            3.375,
            3.625,
            3.875
          ],
          "clip_lo": 0.0,
          "clip_hi": 4.0
        }
      },
      "max_down_natr": {
        "n": 2829,
        "mean": -2.687,
        "median": -1.982,
        "p25": -3.481,
        "p75": -0.96,
        "hist": {
          "bin_edges": [
            -4.0,
            -3.75,
            -3.5,
            -3.25,
            -3.0,
            -2.75,
            -2.5,
            -2.25,
            -2.0,
            -1.75,
            -1.5,
            -1.25,
            -1.0,
            -0.75,
            -0.5,
            -0.25,
            0.0
          ],
          "counts": [
            627,
            75,
            88,
            87,
            83,
            118,
            172,
            156,
            161,
            165,
            181,
            185,
            191,
            193,
            175,
            172
          ],
          "bin_centers": [
            -3.875,
            -3.625,
            -3.375,
            -3.125,
            -2.875,
            -2.625,
            -2.375,
            -2.125,
            -1.875,
            -1.625,
            -1.375,
            -1.125,
            -0.875,
            -0.625,
            -0.375,
            -0.125
          ],
          "clip_lo": -4.0,
          "clip_hi": 0.0
        }
      },
      "median_max_up_natr": 1.688,
      "median_max_down_natr": -1.982,
      "mean_max_up_natr": 2.609,
      "mean_max_down_natr": -2.687,
      "p25_max_up_natr": 0.694,
      "p75_max_up_natr": 3.243,
      "p25_max_down_natr": -3.481,
      "p75_max_down_natr": -0.96,
      "outcome_natr_moves": {
        "breakout": {
          "n": 1927,
          "max_up_natr": {
            "n": 1927,
            "mean": 3.269,
            "median": 2.241,
            "p25": 1.306,
            "p75": 3.888,
            "hist": {
              "bin_edges": [
                0.0,
                0.25,
                0.5,
                0.75,
                1.0,
                1.25,
                1.5,
                1.75,
                2.0,
                2.25,
                2.5,
                2.75,
                3.0,
                3.25,
                3.5,
                3.75,
                4.0
              ],
              "counts": [
                46,
                70,
                73,
                114,
                146,
                145,
                138,
                129,
                106,
                103,
                100,
                69,
                69,
                57,
                52,
                510
              ],
              "bin_centers": [
                0.125,
                0.375,
                0.625,
                0.875,
                1.125,
                1.375,
                1.625,
                1.875,
                2.125,
                2.375,
                2.625,
                2.875,
                3.125,
                3.375,
                3.625,
                3.875
              ],
              "clip_lo": 0.0,
              "clip_hi": 4.0
            }
          },
          "max_down_natr": {
            "n": 1927,
            "mean": -2.269,
            "median": -1.468,
            "p25": -2.943,
            "p75": -0.669,
            "hist": {
              "bin_edges": [
                -4.0,
                -3.75,
                -3.5,
                -3.25,
                -3.0,
                -2.75,
                -2.5,
                -2.25,
                -2.0,
                -1.75,
                -1.5,
                -1.25,
                -1.0,
                -0.75,
                -0.5,
                -0.25,
                0.0
              ],
              "counts": [
                337,
                42,
                48,
                43,
                45,
                66,
                90,
                85,
                105,
                91,
                118,
                141,
                182,
                187,
                175,
                172
              ],
              "bin_centers": [
                -3.875,
                -3.625,
                -3.375,
                -3.125,
                -2.875,
                -2.625,
                -2.375,
                -2.125,
                -1.875,
                -1.625,
                -1.375,
                -1.125,
                -0.875,
                -0.625,
                -0.375,
                -0.125
              ],
              "clip_lo": -4.0,
              "clip_hi": 0.0
            }
          }
        },
        "breakdown": {
          "n": 879,
          "max_up_natr": {
            "n": 879,
            "mean": 1.215,
            "median": 0.564,
            "p25": 0.22,
            "p75": 1.356,
            "hist": {
              "bin_edges": [
                0.0,
                0.25,
                0.5,
                0.75,
                1.0,
                1.25,
                1.5,
                1.75,
                2.0,
                2.25,
                2.5,
                2.75,
                3.0,
                3.25,
                3.5,
                3.75,
                4.0
              ],
              "counts": [
                243,
                153,
                147,
                71,
                33,
                27,
                22,
                22,
                20,
                15,
                13,
                14,
                14,
                12,
                11,
                62
              ],
              "bin_centers": [
                0.125,
                0.375,
                0.625,
                0.875,
                1.125,
                1.375,
                1.625,
                1.875,
                2.125,
                2.375,
                2.625,
                2.875,
                3.125,
                3.375,
                3.625,
                3.875
              ],
              "clip_lo": 0.0,
              "clip_hi": 4.0
            }
          },
          "max_down_natr": {
            "n": 879,
            "mean": -3.649,
            "median": -2.772,
            "p25": -4.322,
            "p75": -1.965,
            "hist": {
              "bin_edges": [
                -4.0,
                -3.75,
                -3.5,
                -3.25,
                -3.0,
                -2.75,
                -2.5,
                -2.25,
                -2.0,
                -1.75,
                -1.5,
                -1.25,
                -1.0,
                -0.75,
                -0.5,
                -0.25,
                0.0
              ],
              "counts": [
                290,
                33,
                40,
                44,
                38,
                52,
                82,
                71,
                56,
                74,
                62,
                37,
                0,
                0,
                0,
                0
              ],
              "bin_centers": [
                -3.875,
                -3.625,
                -3.375,
                -3.125,
                -2.875,
                -2.625,
                -2.375,
                -2.125,
                -1.875,
                -1.625,
                -1.375,
                -1.125,
                -0.875,
                -0.625,
                -0.375,
                -0.125
              ],
              "clip_lo": -4.0,
              "clip_hi": 0.0
            }
          }
        },
        "sideways": {
          "n": 23,
          "max_up_natr": {
            "n": 23,
            "mean": 0.543,
            "median": 0.563,
            "p25": 0.328,
            "p75": 0.728,
            "hist": {
              "bin_edges": [
                0.0,
                0.25,
                0.5,
                0.75,
                1.0,
                1.25,
                1.5,
                1.75,
                2.0,
                2.25,
                2.5,
                2.75,
                3.0,
                3.25,
                3.5,
                3.75,
                4.0
              ],
              "counts": [
                4,
                5,
                9,
                5,
                0,
                0,
                0,
                0,
                0,
                0,
                0,
                0,
                0,
                0,
                0,
                0
              ],
              "bin_centers": [
                0.125,
                0.375,
                0.625,
                0.875,
                1.125,
                1.375,
                1.625,
                1.875,
                2.125,
                2.375,
                2.625,
                2.875,
                3.125,
                3.375,
                3.625,
                3.875
              ],
              "clip_lo": 0.0,
              "clip_hi": 4.0
            }
          },
          "max_down_natr": {
            "n": 23,
            "mean": -0.898,
            "median": -0.912,
            "p25": -1.051,
            "p75": -0.751,
            "hist": {
              "bin_edges": [
                -4.0,
                -3.75,
                -3.5,
                -3.25,
                -3.0,
                -2.75,
                -2.5,
                -2.25,
                -2.0,
                -1.75,
                -1.5,
                -1.25,
                -1.0,
                -0.75,
                -0.5,
                -0.25,
                0.0
              ],
              "counts": [
                0,
                0,
                0,
                0,
                0,
                0,
                0,
                0,
                0,
                0,
                1,
                7,
                9,
                6,
                0,
                0
              ],
              "bin_centers": [
                -3.875,
                -3.625,
                -3.375,
                -3.125,
                -2.875,
                -2.625,
                -2.375,
                -2.125,
                -1.875,
                -1.625,
                -1.375,
                -1.125,
                -0.875,
                -0.625,
                -0.375,
                -0.125
              ],
              "clip_lo": -4.0,
              "clip_hi": 0.0
            }
          }
        },
        "forming": {
          "n": 0,
          "max_up_natr": {
            "n": 0,
            "mean": null,
            "median": null,
            "p25": null,
            "p75": null
          },
          "max_down_natr": {
            "n": 0,
            "mean": null,
            "median": null,
            "p25": null,
            "p75": null
          }
        }
      },
      "max_up_natr_hist": {
        "bin_edges": [
          0.0,
          0.25,
          0.5,
          0.75,
          1.0,
          1.25,
          1.5,
          1.75,
          2.0,
          2.25,
          2.5,
          2.75,
          3.0,
          3.25,
          3.5,
          3.75,
          4.0
        ],
        "counts": [
          293,
          228,
          229,
          190,
          179,
          172,
          160,
          151,
          126,
          118,
          113,
          83,
          83,
          69,
          63,
          572
        ],
        "bin_centers": [
          0.125,
          0.375,
          0.625,
          0.875,
          1.125,
          1.375,
          1.625,
          1.875,
          2.125,
          2.375,
          2.625,
          2.875,
          3.125,
          3.375,
          3.625,
          3.875
        ],
        "clip_lo": 0.0,
        "clip_hi": 4.0
      },
      "max_down_natr_hist": {
        "bin_edges": [
          -4.0,
          -3.75,
          -3.5,
          -3.25,
          -3.0,
          -2.75,
          -2.5,
          -2.25,
          -2.0,
          -1.75,
          -1.5,
          -1.25,
          -1.0,
          -0.75,
          -0.5,
          -0.25,
          0.0
        ],
        "counts": [
          627,
          75,
          88,
          87,
          83,
          118,
          172,
          156,
          161,
          165,
          181,
          185,
          191,
          193,
          175,
          172
        ],
        "bin_centers": [
          -3.875,
          -3.625,
          -3.375,
          -3.125,
          -2.875,
          -2.625,
          -2.375,
          -2.125,
          -1.875,
          -1.625,
          -1.375,
          -1.125,
          -0.875,
          -0.625,
          -0.375,
          -0.125
        ],
        "clip_lo": -4.0,
        "clip_hi": 0.0
      },
      "timestamp_min": 1596501900000,
      "timestamp_max": 1785523500000,
      "timestamp_min_iso": "2020-08-04T00:45:00Z",
      "timestamp_max_iso": "2026-07-31T18:45:00Z"
    },
    {
      "pattern_type": "bearish_pennant",
      "pattern_name": "Bearish Pennant",
      "timeframe": "1d",
      "bias": "bearish",
      "n": 90,
      "n_symbols": 86,
      "breakout_success_rate": 30.0,
      "breakdown_success_rate": 67.78,
      "sideways_rate": 2.22,
      "forming_rate": 0.0,
      "both_cleared_rate": 25.56,
      "breakout_success_rate_ci95": [
        21.51,
        40.13
      ],
      "breakdown_success_rate_ci95": [
        57.57,
        76.53
      ],
      "sideways_rate_ci95": [
        0.61,
        7.74
      ],
      "forming_rate_ci95": [
        0.0,
        4.09
      ],
      "both_sides_rate": 25.56,
      "expected_hit_rate": 67.78,
      "expected_hit_rate_ci95": [
        57.57,
        76.53
      ],
      "mean_ret_10c": -3.37,
      "median_ret_10c": -0.686,
      "std_ret_10c": 24.003,
      "win_rate_ret_gt0": 50.0,
      "p25_ret_10c": -23.078,
      "p75_ret_10c": 12.741,
      "mean_mfe": 19.895,
      "mean_mae": -21.87,
      "mfe_mae_ratio": 0.91,
      "max_up_natr": {
        "n": 90,
        "mean": 1.876,
        "median": 1.194,
        "p25": 0.384,
        "p75": 2.492,
        "hist": {
          "bin_edges": [
            0.0,
            0.25,
            0.5,
            0.75,
            1.0,
            1.25,
            1.5,
            1.75,
            2.0,
            2.25,
            2.5,
            2.75,
            3.0,
            3.25,
            3.5,
            3.75,
            4.0
          ],
          "counts": [
            14,
            14,
            2,
            8,
            9,
            2,
            4,
            4,
            7,
            3,
            5,
            0,
            1,
            0,
            2,
            15
          ],
          "bin_centers": [
            0.125,
            0.375,
            0.625,
            0.875,
            1.125,
            1.375,
            1.625,
            1.875,
            2.125,
            2.375,
            2.625,
            2.875,
            3.125,
            3.375,
            3.625,
            3.875
          ],
          "clip_lo": 0.0,
          "clip_hi": 4.0
        }
      },
      "max_down_natr": {
        "n": 90,
        "mean": -2.176,
        "median": -1.679,
        "p25": -2.602,
        "p75": -0.768,
        "hist": {
          "bin_edges": [
            -4.0,
            -3.75,
            -3.5,
            -3.25,
            -3.0,
            -2.75,
            -2.5,
            -2.25,
            -2.0,
            -1.75,
            -1.5,
            -1.25,
            -1.0,
            -0.75,
            -0.5,
            -0.25,
            0.0
          ],
          "counts": [
            10,
            0,
            3,
            1,
            4,
            6,
            9,
            5,
            4,
            4,
            5,
            8,
            9,
            5,
            8,
            9
          ],
          "bin_centers": [
            -3.875,
            -3.625,
            -3.375,
            -3.125,
            -2.875,
            -2.625,
            -2.375,
            -2.125,
            -1.875,
            -1.625,
            -1.375,
            -1.125,
            -0.875,
            -0.625,
            -0.375,
            -0.125
          ],
          "clip_lo": -4.0,
          "clip_hi": 0.0
        }
      },
      "median_max_up_natr": 1.194,
      "median_max_down_natr": -1.679,
      "mean_max_up_natr": 1.876,
      "mean_max_down_natr": -2.176,
      "p25_max_up_natr": 0.384,
      "p75_max_up_natr": 2.492,
      "p25_max_down_natr": -2.602,
      "p75_max_down_natr": -0.768,
      "outcome_natr_moves": {
        "breakout": {
          "n": 27,
          "max_up_natr": {
            "n": 27,
            "mean": 3.398,
            "median": 2.581,
            "p25": 2.146,
            "p75": 4.238,
            "hist": {
              "bin_edges": [
                0.0,
                0.25,
                0.5,
                0.75,
                1.0,
                1.25,
                1.5,
                1.75,
                2.0,
                2.25,
                2.5,
                2.75,
                3.0,
                3.25,
                3.5,
                3.75,
                4.0
              ],
              "counts": [
                0,
                0,
                0,
                2,
                1,
                0,
                1,
                2,
                5,
                1,
                4,
                0,
                0,
                0,
                2,
                9
              ],
              "bin_centers": [
                0.125,
                0.375,
                0.625,
                0.875,
                1.125,
                1.375,
                1.625,
                1.875,
                2.125,
                2.375,
                2.625,
                2.875,
                3.125,
                3.375,
                3.625,
                3.875
              ],
              "clip_lo": 0.0,
              "clip_hi": 4.0
            }
          },
          "max_down_natr": {
            "n": 27,
            "mean": -1.487,
            "median": -0.426,
            "p25": -0.911,
            "p75": -0.199,
            "hist": {
              "bin_edges": [
                -4.0,
                -3.75,
                -3.5,
                -3.25,
                -3.0,
                -2.75,
                -2.5,
                -2.25,
                -2.0,
                -1.75,
                -1.5,
                -1.25,
                -1.0,
                -0.75,
                -0.5,
                -0.25,
                0.0
              ],
              "counts": [
                3,
                0,
                0,
                0,
                1,
                0,
                1,
                0,
                0,
                0,
                0,
                1,
                4,
                2,
                6,
                9
              ],
              "bin_centers": [
                -3.875,
                -3.625,
                -3.375,
                -3.125,
                -2.875,
                -2.625,
                -2.375,
                -2.125,
                -1.875,
                -1.625,
                -1.375,
                -1.125,
                -0.875,
                -0.625,
                -0.375,
                -0.125
              ],
              "clip_lo": -4.0,
              "clip_hi": 0.0
            }
          }
        },
        "breakdown": {
          "n": 61,
          "max_up_natr": {
            "n": 61,
            "mean": 1.216,
            "median": 0.787,
            "p25": 0.269,
            "p75": 1.543,
            "hist": {
              "bin_edges": [
                0.0,
                0.25,
                0.5,
                0.75,
                1.0,
                1.25,
                1.5,
                1.75,
                2.0,
                2.25,
                2.5,
                2.75,
                3.0,
                3.25,
                3.5,
                3.75,
                4.0
              ],
              "counts": [
                14,
                14,
                2,
                6,
                7,
                2,
                3,
                1,
                2,
                2,
                1,
                0,
                1,
                0,
                0,
                6
              ],
              "bin_centers": [
                0.125,
                0.375,
                0.625,
                0.875,
                1.125,
                1.375,
                1.625,
                1.875,
                2.125,
                2.375,
                2.625,
                2.875,
                3.125,
                3.375,
                3.625,
                3.875
              ],
              "clip_lo": 0.0,
              "clip_hi": 4.0
            }
          },
          "max_down_natr": {
            "n": 61,
            "mean": -2.538,
            "median": -2.098,
            "p25": -2.706,
            "p75": -1.25,
            "hist": {
              "bin_edges": [
                -4.0,
                -3.75,
                -3.5,
                -3.25,
                -3.0,
                -2.75,
                -2.5,
                -2.25,
                -2.0,
                -1.75,
                -1.5,
                -1.25,
                -1.0,
                -0.75,
                -0.5,
                -0.25,
                0.0
              ],
              "counts": [
                7,
                0,
                3,
                1,
                3,
                6,
                8,
                5,
                4,
                4,
                5,
                7,
                5,
                2,
                1,
                0
              ],
              "bin_centers": [
                -3.875,
                -3.625,
                -3.375,
                -3.125,
                -2.875,
                -2.625,
                -2.375,
                -2.125,
                -1.875,
                -1.625,
                -1.375,
                -1.125,
                -0.875,
                -0.625,
                -0.375,
                -0.125
              ],
              "clip_lo": -4.0,
              "clip_hi": 0.0
            }
          }
        },
        "sideways": {
          "n": 2,
          "max_up_natr": {
            "n": 2,
            "mean": 1.49,
            "median": 1.49,
            "p25": 1.317,
            "p75": 1.663
          },
          "max_down_natr": {
            "n": 2,
            "mean": -0.463,
            "median": -0.463,
            "p25": -0.482,
            "p75": -0.445
          }
        },
        "forming": {
          "n": 0,
          "max_up_natr": {
            "n": 0,
            "mean": null,
            "median": null,
            "p25": null,
            "p75": null
          },
          "max_down_natr": {
            "n": 0,
            "mean": null,
            "median": null,
            "p25": null,
            "p75": null
          }
        }
      },
      "max_up_natr_hist": {
        "bin_edges": [
          0.0,
          0.25,
          0.5,
          0.75,
          1.0,
          1.25,
          1.5,
          1.75,
          2.0,
          2.25,
          2.5,
          2.75,
          3.0,
          3.25,
          3.5,
          3.75,
          4.0
        ],
        "counts": [
          14,
          14,
          2,
          8,
          9,
          2,
          4,
          4,
          7,
          3,
          5,
          0,
          1,
          0,
          2,
          15
        ],
        "bin_centers": [
          0.125,
          0.375,
          0.625,
          0.875,
          1.125,
          1.375,
          1.625,
          1.875,
          2.125,
          2.375,
          2.625,
          2.875,
          3.125,
          3.375,
          3.625,
          3.875
        ],
        "clip_lo": 0.0,
        "clip_hi": 4.0
      },
      "max_down_natr_hist": {
        "bin_edges": [
          -4.0,
          -3.75,
          -3.5,
          -3.25,
          -3.0,
          -2.75,
          -2.5,
          -2.25,
          -2.0,
          -1.75,
          -1.5,
          -1.25,
          -1.0,
          -0.75,
          -0.5,
          -0.25,
          0.0
        ],
        "counts": [
          10,
          0,
          3,
          1,
          4,
          6,
          9,
          5,
          4,
          4,
          5,
          8,
          9,
          5,
          8,
          9
        ],
        "bin_centers": [
          -3.875,
          -3.625,
          -3.375,
          -3.125,
          -2.875,
          -2.625,
          -2.375,
          -2.125,
          -1.875,
          -1.625,
          -1.375,
          -1.125,
          -0.875,
          -0.625,
          -0.375,
          -0.125
        ],
        "clip_lo": -4.0,
        "clip_hi": 0.0
      },
      "timestamp_min": 1543795200000,
      "timestamp_max": 1781740800000,
      "timestamp_min_iso": "2018-12-03T00:00:00Z",
      "timestamp_max_iso": "2026-06-18T00:00:00Z"
    },
    {
      "pattern_type": "bullish_pennant",
      "pattern_name": "Bullish Pennant",
      "timeframe": "4h",
      "bias": "bullish",
      "n": 189,
      "n_symbols": 152,
      "breakout_success_rate": 67.72,
      "breakdown_success_rate": 30.16,
      "sideways_rate": 2.12,
      "forming_rate": 0.0,
      "both_cleared_rate": 43.92,
      "breakout_success_rate_ci95": [
        60.76,
        73.98
      ],
      "breakdown_success_rate_ci95": [
        24.06,
        37.04
      ],
      "sideways_rate_ci95": [
        0.83,
        5.31
      ],
      "forming_rate_ci95": [
        0.0,
        1.99
      ],
      "both_sides_rate": 43.92,
      "expected_hit_rate": 67.72,
      "expected_hit_rate_ci95": [
        60.76,
        73.98
      ],
      "mean_ret_10c": 1.337,
      "median_ret_10c": -0.197,
      "std_ret_10c": 14.321,
      "win_rate_ret_gt0": 48.68,
      "p25_ret_10c": -6.302,
      "p75_ret_10c": 5.533,
      "mean_mfe": 12.881,
      "mean_mae": -8.224,
      "mfe_mae_ratio": 1.566,
      "max_up_natr": {
        "n": 189,
        "mean": 3.296,
        "median": 2.054,
        "p25": 0.898,
        "p75": 3.871,
        "hist": {
          "bin_edges": [
            0.0,
            0.25,
            0.5,
            0.75,
            1.0,
            1.25,
            1.5,
            1.75,
            2.0,
            2.25,
            2.5,
            2.75,
            3.0,
            3.25,
            3.5,
            3.75,
            4.0
          ],
          "counts": [
            13,
            14,
            12,
            12,
            8,
            15,
            12,
            6,
            8,
            13,
            10,
            7,
            3,
            4,
            4,
            48
          ],
          "bin_centers": [
            0.125,
            0.375,
            0.625,
            0.875,
            1.125,
            1.375,
            1.625,
            1.875,
            2.125,
            2.375,
            2.625,
            2.875,
            3.125,
            3.375,
            3.625,
            3.875
          ],
          "clip_lo": 0.0,
          "clip_hi": 4.0
        }
      },
      "max_down_natr": {
        "n": 189,
        "mean": -2.181,
        "median": -1.801,
        "p25": -3.146,
        "p75": -0.885,
        "hist": {
          "bin_edges": [
            -4.0,
            -3.75,
            -3.5,
            -3.25,
            -3.0,
            -2.75,
            -2.5,
            -2.25,
            -2.0,
            -1.75,
            -1.5,
            -1.25,
            -1.0,
            -0.75,
            -0.5,
            -0.25,
            0.0
          ],
          "counts": [
            29,
            8,
            7,
            6,
            4,
            11,
            6,
            11,
            18,
            9,
            10,
            13,
            17,
            5,
            20,
            15
          ],
          "bin_centers": [
            -3.875,
            -3.625,
            -3.375,
            -3.125,
            -2.875,
            -2.625,
            -2.375,
            -2.125,
            -1.875,
            -1.625,
            -1.375,
            -1.125,
            -0.875,
            -0.625,
            -0.375,
            -0.125
          ],
          "clip_lo": -4.0,
          "clip_hi": 0.0
        }
      },
      "median_max_up_natr": 2.054,
      "median_max_down_natr": -1.801,
      "mean_max_up_natr": 3.296,
      "mean_max_down_natr": -2.181,
      "p25_max_up_natr": 0.898,
      "p75_max_up_natr": 3.871,
      "p25_max_down_natr": -3.146,
      "p75_max_down_natr": -0.885,
      "outcome_natr_moves": {
        "breakout": {
          "n": 128,
          "max_up_natr": {
            "n": 128,
            "mean": 3.767,
            "median": 2.523,
            "p25": 1.504,
            "p75": 5.148,
            "hist": {
              "bin_edges": [
                0.0,
                0.25,
                0.5,
                0.75,
                1.0,
                1.25,
                1.5,
                1.75,
                2.0,
                2.25,
                2.5,
                2.75,
                3.0,
                3.25,
                3.5,
                3.75,
                4.0
              ],
              "counts": [
                0,
                3,
                6,
                6,
                6,
                11,
                10,
                4,
                6,
                11,
                7,
                7,
                2,
                3,
                4,
                42
              ],
              "bin_centers": [
                0.125,
                0.375,
                0.625,
                0.875,
                1.125,
                1.375,
                1.625,
                1.875,
                2.125,
                2.375,
                2.625,
                2.875,
                3.125,
                3.375,
                3.625,
                3.875
              ],
              "clip_lo": 0.0,
              "clip_hi": 4.0
            }
          },
          "max_down_natr": {
            "n": 128,
            "mean": -1.805,
            "median": -1.235,
            "p25": -2.372,
            "p75": -0.469,
            "hist": {
              "bin_edges": [
                -4.0,
                -3.75,
                -3.5,
                -3.25,
                -3.0,
                -2.75,
                -2.5,
                -2.25,
                -2.0,
                -1.75,
                -1.5,
                -1.25,
                -1.0,
                -0.75,
                -0.5,
                -0.25,
                0.0
              ],
              "counts": [
                16,
                0,
                2,
                4,
                2,
                7,
                2,
                6,
                11,
                6,
                7,
                12,
                16,
                4,
                19,
                14
              ],
              "bin_centers": [
                -3.875,
                -3.625,
                -3.375,
                -3.125,
                -2.875,
                -2.625,
                -2.375,
                -2.125,
                -1.875,
                -1.625,
                -1.375,
                -1.125,
                -0.875,
                -0.625,
                -0.375,
                -0.125
              ],
              "clip_lo": -4.0,
              "clip_hi": 0.0
            }
          }
        },
        "breakdown": {
          "n": 57,
          "max_up_natr": {
            "n": 57,
            "mean": 2.438,
            "median": 0.785,
            "p25": 0.263,
            "p75": 2.0,
            "hist": {
              "bin_edges": [
                0.0,
                0.25,
                0.5,
                0.75,
                1.0,
                1.25,
                1.5,
                1.75,
                2.0,
                2.25,
                2.5,
                2.75,
                3.0,
                3.25,
                3.5,
                3.75,
                4.0
              ],
              "counts": [
                13,
                9,
                4,
                6,
                2,
                4,
                2,
                2,
                2,
                2,
                3,
                0,
                1,
                1,
                0,
                6
              ],
              "bin_centers": [
                0.125,
                0.375,
                0.625,
                0.875,
                1.125,
                1.375,
                1.625,
                1.875,
                2.125,
                2.375,
                2.625,
                2.875,
                3.125,
                3.375,
                3.625,
                3.875
              ],
              "clip_lo": 0.0,
              "clip_hi": 4.0
            }
          },
          "max_down_natr": {
            "n": 57,
            "mean": -3.111,
            "median": -2.991,
            "p25": -3.679,
            "p75": -2.013,
            "hist": {
              "bin_edges": [
                -4.0,
                -3.75,
                -3.5,
                -3.25,
                -3.0,
                -2.75,
                -2.5,
                -2.25,
                -2.0,
                -1.75,
                -1.5,
                -1.25,
                -1.0,
                -0.75,
                -0.5,
                -0.25,
                0.0
              ],
              "counts": [
                13,
                8,
                5,
                2,
                2,
                4,
                4,
                5,
                7,
                3,
                2,
                0,
                0,
                0,
                1,
                1
              ],
              "bin_centers": [
                -3.875,
                -3.625,
                -3.375,
                -3.125,
                -2.875,
                -2.625,
                -2.375,
                -2.125,
                -1.875,
                -1.625,
                -1.375,
                -1.125,
                -0.875,
                -0.625,
                -0.375,
                -0.125
              ],
              "clip_lo": -4.0,
              "clip_hi": 0.0
            }
          }
        },
        "sideways": {
          "n": 4,
          "max_up_natr": {
            "n": 4,
            "mean": 0.457,
            "median": 0.45,
            "p25": 0.366,
            "p75": 0.541
          },
          "max_down_natr": {
            "n": 4,
            "mean": -0.969,
            "median": -0.999,
            "p25": -1.154,
            "p75": -0.814
          }
        },
        "forming": {
          "n": 0,
          "max_up_natr": {
            "n": 0,
            "mean": null,
            "median": null,
            "p25": null,
            "p75": null
          },
          "max_down_natr": {
            "n": 0,
            "mean": null,
            "median": null,
            "p25": null,
            "p75": null
          }
        }
      },
      "max_up_natr_hist": {
        "bin_edges": [
          0.0,
          0.25,
          0.5,
          0.75,
          1.0,
          1.25,
          1.5,
          1.75,
          2.0,
          2.25,
          2.5,
          2.75,
          3.0,
          3.25,
          3.5,
          3.75,
          4.0
        ],
        "counts": [
          13,
          14,
          12,
          12,
          8,
          15,
          12,
          6,
          8,
          13,
          10,
          7,
          3,
          4,
          4,
          48
        ],
        "bin_centers": [
          0.125,
          0.375,
          0.625,
          0.875,
          1.125,
          1.375,
          1.625,
          1.875,
          2.125,
          2.375,
          2.625,
          2.875,
          3.125,
          3.375,
          3.625,
          3.875
        ],
        "clip_lo": 0.0,
        "clip_hi": 4.0
      },
      "max_down_natr_hist": {
        "bin_edges": [
          -4.0,
          -3.75,
          -3.5,
          -3.25,
          -3.0,
          -2.75,
          -2.5,
          -2.25,
          -2.0,
          -1.75,
          -1.5,
          -1.25,
          -1.0,
          -0.75,
          -0.5,
          -0.25,
          0.0
        ],
        "counts": [
          29,
          8,
          7,
          6,
          4,
          11,
          6,
          11,
          18,
          9,
          10,
          13,
          17,
          5,
          20,
          15
        ],
        "bin_centers": [
          -3.875,
          -3.625,
          -3.375,
          -3.125,
          -2.875,
          -2.625,
          -2.375,
          -2.125,
          -1.875,
          -1.625,
          -1.375,
          -1.125,
          -0.875,
          -0.625,
          -0.375,
          -0.125
        ],
        "clip_lo": -4.0,
        "clip_hi": 0.0
      },
      "timestamp_min": 1507406400000,
      "timestamp_max": 1784448000000,
      "timestamp_min_iso": "2017-10-07T20:00:00Z",
      "timestamp_max_iso": "2026-07-19T08:00:00Z"
    },
    {
      "pattern_type": "channel_descending",
      "pattern_name": "Descending Channel",
      "timeframe": "4h",
      "bias": "bullish",
      "n": 184,
      "n_symbols": 135,
      "breakout_success_rate": 67.39,
      "breakdown_success_rate": 26.63,
      "sideways_rate": 5.98,
      "forming_rate": 0.0,
      "both_cleared_rate": 37.5,
      "breakout_success_rate_ci95": [
        60.32,
        73.75
      ],
      "breakdown_success_rate_ci95": [
        20.77,
        33.45
      ],
      "sideways_rate_ci95": [
        3.37,
        10.39
      ],
      "forming_rate_ci95": [
        0.0,
        2.05
      ],
      "both_sides_rate": 37.5,
      "expected_hit_rate": 67.39,
      "expected_hit_rate_ci95": [
        60.32,
        73.75
      ],
      "mean_ret_10c": -0.533,
      "median_ret_10c": -0.417,
      "std_ret_10c": 7.869,
      "win_rate_ret_gt0": 47.83,
      "p25_ret_10c": -5.295,
      "p75_ret_10c": 4.482,
      "mean_mfe": 6.965,
      "mean_mae": -6.925,
      "mfe_mae_ratio": 1.006,
      "max_up_natr": {
        "n": 184,
        "mean": 2.744,
        "median": 2.018,
        "p25": 0.878,
        "p75": 3.748,
        "hist": {
          "bin_edges": [
            0.0,
            0.25,
            0.5,
            0.75,
            1.0,
            1.25,
            1.5,
            1.75,
            2.0,
            2.25,
            2.5,
            2.75,
            3.0,
            3.25,
            3.5,
            3.75,
            4.0
          ],
          "counts": [
            18,
            11,
            12,
            12,
            10,
            9,
            12,
            7,
            8,
            7,
            10,
            7,
            6,
            4,
            5,
            46
          ],
          "bin_centers": [
            0.125,
            0.375,
            0.625,
            0.875,
            1.125,
            1.375,
            1.625,
            1.875,
            2.125,
            2.375,
            2.625,
            2.875,
            3.125,
            3.375,
            3.625,
            3.875
          ],
          "clip_lo": 0.0,
          "clip_hi": 4.0
        }
      },
      "max_down_natr": {
        "n": 184,
        "mean": -2.707,
        "median": -1.753,
        "p25": -3.513,
        "p75": -0.421,
        "hist": {
          "bin_edges": [
            -4.0,
            -3.75,
            -3.5,
            -3.25,
            -3.0,
            -2.75,
            -2.5,
            -2.25,
            -2.0,
            -1.75,
            -1.5,
            -1.25,
            -1.0,
            -0.75,
            -0.5,
            -0.25,
            0.0
          ],
          "counts": [
            43,
            7,
            1,
            6,
            5,
            4,
            5,
            8,
            14,
            8,
            10,
            9,
            5,
            10,
            17,
            32
          ],
          "bin_centers": [
            -3.875,
            -3.625,
            -3.375,
            -3.125,
            -2.875,
            -2.625,
            -2.375,
            -2.125,
            -1.875,
            -1.625,
            -1.375,
            -1.125,
            -0.875,
            -0.625,
            -0.375,
            -0.125
          ],
          "clip_lo": -4.0,
          "clip_hi": 0.0
        }
      },
      "median_max_up_natr": 2.018,
      "median_max_down_natr": -1.753,
      "mean_max_up_natr": 2.744,
      "mean_max_down_natr": -2.707,
      "p25_max_up_natr": 0.878,
      "p75_max_up_natr": 3.748,
      "p25_max_down_natr": -3.513,
      "p75_max_down_natr": -0.421,
      "outcome_natr_moves": {
        "breakout": {
          "n": 124,
          "max_up_natr": {
            "n": 124,
            "mean": 3.539,
            "median": 2.734,
            "p25": 1.637,
            "p75": 4.453,
            "hist": {
              "bin_edges": [
                0.0,
                0.25,
                0.5,
                0.75,
                1.0,
                1.25,
                1.5,
                1.75,
                2.0,
                2.25,
                2.5,
                2.75,
                3.0,
                3.25,
                3.5,
                3.75,
                4.0
              ],
              "counts": [
                0,
                0,
                1,
                6,
                9,
                8,
                10,
                7,
                6,
                6,
                10,
                5,
                5,
                4,
                5,
                42
              ],
              "bin_centers": [
                0.125,
                0.375,
                0.625,
                0.875,
                1.125,
                1.375,
                1.625,
                1.875,
                2.125,
                2.375,
                2.625,
                2.875,
                3.125,
                3.375,
                3.625,
                3.875
              ],
              "clip_lo": 0.0,
              "clip_hi": 4.0
            }
          },
          "max_down_natr": {
            "n": 124,
            "mean": -1.325,
            "median": -0.874,
            "p25": -1.933,
            "p75": -0.231,
            "hist": {
              "bin_edges": [
                -4.0,
                -3.75,
                -3.5,
                -3.25,
                -3.0,
                -2.75,
                -2.5,
                -2.25,
                -2.0,
                -1.75,
                -1.5,
                -1.25,
                -1.0,
                -0.75,
                -0.5,
                -0.25,
                0.0
              ],
              "counts": [
                8,
                5,
                0,
                2,
                2,
                3,
                2,
                6,
                11,
                6,
                8,
                7,
                5,
                10,
                17,
                32
              ],
              "bin_centers": [
                -3.875,
                -3.625,
                -3.375,
                -3.125,
                -2.875,
                -2.625,
                -2.375,
                -2.125,
                -1.875,
                -1.625,
                -1.375,
                -1.125,
                -0.875,
                -0.625,
                -0.375,
                -0.125
              ],
              "clip_lo": -4.0,
              "clip_hi": 0.0
            }
          }
        },
        "breakdown": {
          "n": 49,
          "max_up_natr": {
            "n": 49,
            "mean": 1.173,
            "median": 0.386,
            "p25": 0.211,
            "p75": 1.217,
            "hist": {
              "bin_edges": [
                0.0,
                0.25,
                0.5,
                0.75,
                1.0,
                1.25,
                1.5,
                1.75,
                2.0,
                2.25,
                2.5,
                2.75,
                3.0,
                3.25,
                3.5,
                3.75,
                4.0
              ],
              "counts": [
                18,
                9,
                7,
                2,
                1,
                1,
                2,
                0,
                1,
                1,
                0,
                2,
                1,
                0,
                0,
                4
              ],
              "bin_centers": [
                0.125,
                0.375,
                0.625,
                0.875,
                1.125,
                1.375,
                1.625,
                1.875,
                2.125,
                2.375,
                2.625,
                2.875,
                3.125,
                3.375,
                3.625,
                3.875
              ],
              "clip_lo": 0.0,
              "clip_hi": 4.0
            }
          },
          "max_down_natr": {
            "n": 49,
            "mean": -6.3,
            "median": -5.909,
            "p25": -7.384,
            "p75": -3.509,
            "hist": {
              "bin_edges": [
                -4.0,
                -3.75,
                -3.5,
                -3.25,
                -3.0,
                -2.75,
                -2.5,
                -2.25,
                -2.0,
                -1.75,
                -1.5,
                -1.25,
                -1.0,
                -0.75,
                -0.5,
                -0.25,
                0.0
              ],
              "counts": [
                35,
                2,
                1,
                2,
                2,
                1,
                0,
                2,
                0,
                0,
                2,
                2,
                0,
                0,
                0,
                0
              ],
              "bin_centers": [
                -3.875,
                -3.625,
                -3.375,
                -3.125,
                -2.875,
                -2.625,
                -2.375,
                -2.125,
                -1.875,
                -1.625,
                -1.375,
                -1.125,
                -0.875,
                -0.625,
                -0.375,
                -0.125
              ],
              "clip_lo": -4.0,
              "clip_hi": 0.0
            }
          }
        },
        "sideways": {
          "n": 11,
          "max_up_natr": {
            "n": 11,
            "mean": 0.774,
            "median": 0.594,
            "p25": 0.523,
            "p75": 0.817
          },
          "max_down_natr": {
            "n": 11,
            "mean": -2.28,
            "median": -2.288,
            "p25": -2.647,
            "p75": -1.813
          }
        },
        "forming": {
          "n": 0,
          "max_up_natr": {
            "n": 0,
            "mean": null,
            "median": null,
            "p25": null,
            "p75": null
          },
          "max_down_natr": {
            "n": 0,
            "mean": null,
            "median": null,
            "p25": null,
            "p75": null
          }
        }
      },
      "max_up_natr_hist": {
        "bin_edges": [
          0.0,
          0.25,
          0.5,
          0.75,
          1.0,
          1.25,
          1.5,
          1.75,
          2.0,
          2.25,
          2.5,
          2.75,
          3.0,
          3.25,
          3.5,
          3.75,
          4.0
        ],
        "counts": [
          18,
          11,
          12,
          12,
          10,
          9,
          12,
          7,
          8,
          7,
          10,
          7,
          6,
          4,
          5,
          46
        ],
        "bin_centers": [
          0.125,
          0.375,
          0.625,
          0.875,
          1.125,
          1.375,
          1.625,
          1.875,
          2.125,
          2.375,
          2.625,
          2.875,
          3.125,
          3.375,
          3.625,
          3.875
        ],
        "clip_lo": 0.0,
        "clip_hi": 4.0
      },
      "max_down_natr_hist": {
        "bin_edges": [
          -4.0,
          -3.75,
          -3.5,
          -3.25,
          -3.0,
          -2.75,
          -2.5,
          -2.25,
          -2.0,
          -1.75,
          -1.5,
          -1.25,
          -1.0,
          -0.75,
          -0.5,
          -0.25,
          0.0
        ],
        "counts": [
          43,
          7,
          1,
          6,
          5,
          4,
          5,
          8,
          14,
          8,
          10,
          9,
          5,
          10,
          17,
          32
        ],
        "bin_centers": [
          -3.875,
          -3.625,
          -3.375,
          -3.125,
          -2.875,
          -2.625,
          -2.375,
          -2.125,
          -1.875,
          -1.625,
          -1.375,
          -1.125,
          -0.875,
          -0.625,
          -0.375,
          -0.125
        ],
        "clip_lo": -4.0,
        "clip_hi": 0.0
      },
      "timestamp_min": 1533657600000,
      "timestamp_max": 1785139200000,
      "timestamp_min_iso": "2018-08-07T16:00:00Z",
      "timestamp_max_iso": "2026-07-27T08:00:00Z"
    },
    {
      "pattern_type": "rising_wedge",
      "pattern_name": "Rising Wedge",
      "timeframe": "4h",
      "bias": "bearish",
      "n": 1503,
      "n_symbols": 436,
      "breakout_success_rate": 32.8,
      "breakdown_success_rate": 66.0,
      "sideways_rate": 1.2,
      "forming_rate": 0.0,
      "both_cleared_rate": 41.45,
      "breakout_success_rate_ci95": [
        30.47,
        35.22
      ],
      "breakdown_success_rate_ci95": [
        63.57,
        68.35
      ],
      "sideways_rate_ci95": [
        0.76,
        1.89
      ],
      "forming_rate_ci95": [
        0.0,
        0.25
      ],
      "both_sides_rate": 41.45,
      "expected_hit_rate": 66.0,
      "expected_hit_rate_ci95": [
        63.57,
        68.35
      ],
      "mean_ret_10c": 0.852,
      "median_ret_10c": -0.712,
      "std_ret_10c": 12.998,
      "win_rate_ret_gt0": 46.17,
      "p25_ret_10c": -6.354,
      "p75_ret_10c": 5.868,
      "mean_mfe": 10.509,
      "mean_mae": -8.715,
      "mfe_mae_ratio": 1.206,
      "max_up_natr": {
        "n": 1503,
        "mean": 3.233,
        "median": 1.878,
        "p25": 0.414,
        "p75": 4.492,
        "hist": {
          "bin_edges": [
            0.0,
            0.25,
            0.5,
            0.75,
            1.0,
            1.25,
            1.5,
            1.75,
            2.0,
            2.25,
            2.5,
            2.75,
            3.0,
            3.25,
            3.5,
            3.75,
            4.0
          ],
          "counts": [
            273,
            142,
            89,
            71,
            58,
            40,
            50,
            53,
            44,
            38,
            38,
            37,
            39,
            34,
            38,
            459
          ],
          "bin_centers": [
            0.125,
            0.375,
            0.625,
            0.875,
            1.125,
            1.375,
            1.625,
            1.875,
            2.125,
            2.375,
            2.625,
            2.875,
            3.125,
            3.375,
            3.625,
            3.875
          ],
          "clip_lo": 0.0,
          "clip_hi": 4.0
        }
      },
      "max_down_natr": {
        "n": 1503,
        "mean": -2.701,
        "median": -2.355,
        "p25": -3.817,
        "p75": -1.218,
        "hist": {
          "bin_edges": [
            -4.0,
            -3.75,
            -3.5,
            -3.25,
            -3.0,
            -2.75,
            -2.5,
            -2.25,
            -2.0,
            -1.75,
            -1.5,
            -1.25,
            -1.0,
            -0.75,
            -0.5,
            -0.25,
            0.0
          ],
          "counts": [
            383,
            47,
            67,
            62,
            68,
            75,
            80,
            88,
            90,
            82,
            75,
            76,
            66,
            67,
            54,
            123
          ],
          "bin_centers": [
            -3.875,
            -3.625,
            -3.375,
            -3.125,
            -2.875,
            -2.625,
            -2.375,
            -2.125,
            -1.875,
            -1.625,
            -1.375,
            -1.125,
            -0.875,
            -0.625,
            -0.375,
            -0.125
          ],
          "clip_lo": -4.0,
          "clip_hi": 0.0
        }
      },
      "median_max_up_natr": 1.878,
      "median_max_down_natr": -2.355,
      "mean_max_up_natr": 3.233,
      "mean_max_down_natr": -2.701,
      "p25_max_up_natr": 0.414,
      "p75_max_up_natr": 4.492,
      "p25_max_down_natr": -3.817,
      "p75_max_down_natr": -1.218,
      "outcome_natr_moves": {
        "breakout": {
          "n": 493,
          "max_up_natr": {
            "n": 493,
            "mean": 6.101,
            "median": 4.654,
            "p25": 2.996,
            "p75": 7.242,
            "hist": {
              "bin_edges": [
                0.0,
                0.25,
                0.5,
                0.75,
                1.0,
                1.25,
                1.5,
                1.75,
                2.0,
                2.25,
                2.5,
                2.75,
                3.0,
                3.25,
                3.5,
                3.75,
                4.0
              ],
              "counts": [
                0,
                0,
                2,
                3,
                11,
                10,
                12,
                13,
                24,
                15,
                19,
                15,
                22,
                17,
                18,
                312
              ],
              "bin_centers": [
                0.125,
                0.375,
                0.625,
                0.875,
                1.125,
                1.375,
                1.625,
                1.875,
                2.125,
                2.375,
                2.625,
                2.875,
                3.125,
                3.375,
                3.625,
                3.875
              ],
              "clip_lo": 0.0,
              "clip_hi": 4.0
            }
          },
          "max_down_natr": {
            "n": 493,
            "mean": -1.554,
            "median": -0.894,
            "p25": -2.33,
            "p75": -0.252,
            "hist": {
              "bin_edges": [
                -4.0,
                -3.75,
                -3.5,
                -3.25,
                -3.0,
                -2.75,
                -2.5,
                -2.25,
                -2.0,
                -1.75,
                -1.5,
                -1.25,
                -1.0,
                -0.75,
                -0.5,
                -0.25,
                0.0
              ],
              "counts": [
                61,
                5,
                16,
                14,
                11,
                8,
                14,
                21,
                23,
                11,
                18,
                34,
                30,
                52,
                52,
                123
              ],
              "bin_centers": [
                -3.875,
                -3.625,
                -3.375,
                -3.125,
                -2.875,
                -2.625,
                -2.375,
                -2.125,
                -1.875,
                -1.625,
                -1.375,
                -1.125,
                -0.875,
                -0.625,
                -0.375,
                -0.125
              ],
              "clip_lo": -4.0,
              "clip_hi": 0.0
            }
          }
        },
        "breakdown": {
          "n": 992,
          "max_up_natr": {
            "n": 992,
            "mean": 1.831,
            "median": 0.727,
            "p25": 0.22,
            "p75": 2.377,
            "hist": {
              "bin_edges": [
                0.0,
                0.25,
                0.5,
                0.75,
                1.0,
                1.25,
                1.5,
                1.75,
                2.0,
                2.25,
                2.5,
                2.75,
                3.0,
                3.25,
                3.5,
                3.75,
                4.0
              ],
              "counts": [
                273,
                142,
                85,
                67,
                45,
                30,
                34,
                37,
                20,
                22,
                17,
                22,
                16,
                17,
                18,
                147
              ],
              "bin_centers": [
                0.125,
                0.375,
                0.625,
                0.875,
                1.125,
                1.375,
                1.625,
                1.875,
                2.125,
                2.375,
                2.625,
                2.875,
                3.125,
                3.375,
                3.625,
                3.875
              ],
              "clip_lo": 0.0,
              "clip_hi": 4.0
            }
          },
          "max_down_natr": {
            "n": 992,
            "mean": -3.303,
            "median": -2.855,
            "p25": -4.386,
            "p75": -1.905,
            "hist": {
              "bin_edges": [
                -4.0,
                -3.75,
                -3.5,
                -3.25,
                -3.0,
                -2.75,
                -2.5,
                -2.25,
                -2.0,
                -1.75,
                -1.5,
                -1.25,
                -1.0,
                -0.75,
                -0.5,
                -0.25,
                0.0
              ],
              "counts": [
                322,
                42,
                51,
                48,
                57,
                67,
                66,
                66,
                67,
                71,
                55,
                38,
                35,
                7,
                0,
                0
              ],
              "bin_centers": [
                -3.875,
                -3.625,
                -3.375,
                -3.125,
                -2.875,
                -2.625,
                -2.375,
                -2.125,
                -1.875,
                -1.625,
                -1.375,
                -1.125,
                -0.875,
                -0.625,
                -0.375,
                -0.125
              ],
              "clip_lo": -4.0,
              "clip_hi": 0.0
            }
          }
        },
        "sideways": {
          "n": 18,
          "max_up_natr": {
            "n": 18,
            "mean": 1.96,
            "median": 1.799,
            "p25": 1.337,
            "p75": 2.59,
            "hist": {
              "bin_edges": [
                0.0,
                0.25,
                0.5,
                0.75,
                1.0,
                1.25,
                1.5,
                1.75,
                2.0,
                2.25,
                2.5,
                2.75,
                3.0,
                3.25,
                3.5,
                3.75,
                4.0
              ],
              "counts": [
                0,
                0,
                2,
                1,
                2,
                0,
                4,
                3,
                0,
                1,
                2,
                0,
                1,
                0,
                2,
                0
              ],
              "bin_centers": [
                0.125,
                0.375,
                0.625,
                0.875,
                1.125,
                1.375,
                1.625,
                1.875,
                2.125,
                2.375,
                2.625,
                2.875,
                3.125,
                3.375,
                3.625,
                3.875
              ],
              "clip_lo": 0.0,
              "clip_hi": 4.0
            }
          },
          "max_down_natr": {
            "n": 18,
            "mean": -0.903,
            "median": -0.702,
            "p25": -1.164,
            "p75": -0.602,
            "hist": {
              "bin_edges": [
                -4.0,
                -3.75,
                -3.5,
                -3.25,
                -3.0,
                -2.75,
                -2.5,
                -2.25,
                -2.0,
                -1.75,
                -1.5,
                -1.25,
                -1.0,
                -0.75,
                -0.5,
                -0.25,
                0.0
              ],
              "counts": [
                0,
                0,
                0,
                0,
                0,
                0,
                0,
                1,
                0,
                0,
                2,
                4,
                1,
                8,
                2,
                0
              ],
              "bin_centers": [
                -3.875,
                -3.625,
                -3.375,
                -3.125,
                -2.875,
                -2.625,
                -2.375,
                -2.125,
                -1.875,
                -1.625,
                -1.375,
                -1.125,
                -0.875,
                -0.625,
                -0.375,
                -0.125
              ],
              "clip_lo": -4.0,
              "clip_hi": 0.0
            }
          }
        },
        "forming": {
          "n": 0,
          "max_up_natr": {
            "n": 0,
            "mean": null,
            "median": null,
            "p25": null,
            "p75": null
          },
          "max_down_natr": {
            "n": 0,
            "mean": null,
            "median": null,
            "p25": null,
            "p75": null
          }
        }
      },
      "max_up_natr_hist": {
        "bin_edges": [
          0.0,
          0.25,
          0.5,
          0.75,
          1.0,
          1.25,
          1.5,
          1.75,
          2.0,
          2.25,
          2.5,
          2.75,
          3.0,
          3.25,
          3.5,
          3.75,
          4.0
        ],
        "counts": [
          273,
          142,
          89,
          71,
          58,
          40,
          50,
          53,
          44,
          38,
          38,
          37,
          39,
          34,
          38,
          459
        ],
        "bin_centers": [
          0.125,
          0.375,
          0.625,
          0.875,
          1.125,
          1.375,
          1.625,
          1.875,
          2.125,
          2.375,
          2.625,
          2.875,
          3.125,
          3.375,
          3.625,
          3.875
        ],
        "clip_lo": 0.0,
        "clip_hi": 4.0
      },
      "max_down_natr_hist": {
        "bin_edges": [
          -4.0,
          -3.75,
          -3.5,
          -3.25,
          -3.0,
          -2.75,
          -2.5,
          -2.25,
          -2.0,
          -1.75,
          -1.5,
          -1.25,
          -1.0,
          -0.75,
          -0.5,
          -0.25,
          0.0
        ],
        "counts": [
          383,
          47,
          67,
          62,
          68,
          75,
          80,
          88,
          90,
          82,
          75,
          76,
          66,
          67,
          54,
          123
        ],
        "bin_centers": [
          -3.875,
          -3.625,
          -3.375,
          -3.125,
          -2.875,
          -2.625,
          -2.375,
          -2.125,
          -1.875,
          -1.625,
          -1.375,
          -1.125,
          -0.875,
          -0.625,
          -0.375,
          -0.125
        ],
        "clip_lo": -4.0,
        "clip_hi": 0.0
      },
      "timestamp_min": 1506988800000,
      "timestamp_max": 1785052800000,
      "timestamp_min_iso": "2017-10-03T00:00:00Z",
      "timestamp_max_iso": "2026-07-26T08:00:00Z"
    },
    {
      "pattern_type": "bullish_pennant",
      "pattern_name": "Bullish Pennant",
      "timeframe": "1h",
      "bias": "bullish",
      "n": 757,
      "n_symbols": 372,
      "breakout_success_rate": 65.92,
      "breakdown_success_rate": 32.36,
      "sideways_rate": 1.72,
      "forming_rate": 0.0,
      "both_cleared_rate": 43.33,
      "breakout_success_rate_ci95": [
        62.47,
        69.21
      ],
      "breakdown_success_rate_ci95": [
        29.13,
        35.78
      ],
      "sideways_rate_ci95": [
        1.01,
        2.92
      ],
      "forming_rate_ci95": [
        0.0,
        0.5
      ],
      "both_sides_rate": 43.33,
      "expected_hit_rate": 65.92,
      "expected_hit_rate_ci95": [
        62.47,
        69.21
      ],
      "mean_ret_10c": -0.301,
      "median_ret_10c": -0.621,
      "std_ret_10c": 6.382,
      "win_rate_ret_gt0": 43.59,
      "p25_ret_10c": -3.073,
      "p75_ret_10c": 2.225,
      "mean_mfe": 5.016,
      "mean_mae": -4.643,
      "mfe_mae_ratio": 1.08,
      "max_up_natr": {
        "n": 757,
        "mean": 2.674,
        "median": 1.726,
        "p25": 0.84,
        "p75": 3.409,
        "hist": {
          "bin_edges": [
            0.0,
            0.25,
            0.5,
            0.75,
            1.0,
            1.25,
            1.5,
            1.75,
            2.0,
            2.25,
            2.5,
            2.75,
            3.0,
            3.25,
            3.5,
            3.75,
            4.0
          ],
          "counts": [
            64,
            61,
            47,
            63,
            51,
            47,
            51,
            38,
            29,
            36,
            21,
            24,
            21,
            21,
            17,
            166
          ],
          "bin_centers": [
            0.125,
            0.375,
            0.625,
            0.875,
            1.125,
            1.375,
            1.625,
            1.875,
            2.125,
            2.375,
            2.625,
            2.875,
            3.125,
            3.375,
            3.625,
            3.875
          ],
          "clip_lo": 0.0,
          "clip_hi": 4.0
        }
      },
      "max_down_natr": {
        "n": 757,
        "mean": -2.439,
        "median": -1.95,
        "p25": -3.177,
        "p75": -0.988,
        "hist": {
          "bin_edges": [
            -4.0,
            -3.75,
            -3.5,
            -3.25,
            -3.0,
            -2.75,
            -2.5,
            -2.25,
            -2.0,
            -1.75,
            -1.5,
            -1.25,
            -1.0,
            -0.75,
            -0.5,
            -0.25,
            0.0
          ],
          "counts": [
            135,
            20,
            25,
            23,
            32,
            33,
            52,
            47,
            42,
            39,
            67,
            46,
            50,
            37,
            51,
            58
          ],
          "bin_centers": [
            -3.875,
            -3.625,
            -3.375,
            -3.125,
            -2.875,
            -2.625,
            -2.375,
            -2.125,
            -1.875,
            -1.625,
            -1.375,
            -1.125,
            -0.875,
            -0.625,
            -0.375,
            -0.125
          ],
          "clip_lo": -4.0,
          "clip_hi": 0.0
        }
      },
      "median_max_up_natr": 1.726,
      "median_max_down_natr": -1.95,
      "mean_max_up_natr": 2.674,
      "mean_max_down_natr": -2.439,
      "p25_max_up_natr": 0.84,
      "p75_max_up_natr": 3.409,
      "p25_max_down_natr": -3.177,
      "p75_max_down_natr": -0.988,
      "outcome_natr_moves": {
        "breakout": {
          "n": 499,
          "max_up_natr": {
            "n": 499,
            "mean": 3.308,
            "median": 2.293,
            "p25": 1.323,
            "p75": 3.915,
            "hist": {
              "bin_edges": [
                0.0,
                0.25,
                0.5,
                0.75,
                1.0,
                1.25,
                1.5,
                1.75,
                2.0,
                2.25,
                2.5,
                2.75,
                3.0,
                3.25,
                3.5,
                3.75,
                4.0
              ],
              "counts": [
                5,
                13,
                11,
                42,
                39,
                40,
                36,
                33,
                27,
                29,
                19,
                17,
                19,
                20,
                14,
                135
              ],
              "bin_centers": [
                0.125,
                0.375,
                0.625,
                0.875,
                1.125,
                1.375,
                1.625,
                1.875,
                2.125,
                2.375,
                2.625,
                2.875,
                3.125,
                3.375,
                3.625,
                3.875
              ],
              "clip_lo": 0.0,
              "clip_hi": 4.0
            }
          },
          "max_down_natr": {
            "n": 499,
            "mean": -2.078,
            "median": -1.454,
            "p25": -2.702,
            "p75": -0.662,
            "hist": {
              "bin_edges": [
                -4.0,
                -3.75,
                -3.5,
                -3.25,
                -3.0,
                -2.75,
                -2.5,
                -2.25,
                -2.0,
                -1.75,
                -1.5,
                -1.25,
                -1.0,
                -0.75,
                -0.5,
                -0.25,
                0.0
              ],
              "counts": [
                68,
                9,
                10,
                15,
                21,
                16,
                30,
                24,
                24,
                22,
                50,
                25,
                46,
                36,
                47,
                56
              ],
              "bin_centers": [
                -3.875,
                -3.625,
                -3.375,
                -3.125,
                -2.875,
                -2.625,
                -2.375,
                -2.125,
                -1.875,
                -1.625,
                -1.375,
                -1.125,
                -0.875,
                -0.625,
                -0.375,
                -0.125
              ],
              "clip_lo": -4.0,
              "clip_hi": 0.0
            }
          }
        },
        "breakdown": {
          "n": 245,
          "max_up_natr": {
            "n": 245,
            "mean": 1.492,
            "median": 0.687,
            "p25": 0.264,
            "p75": 1.727,
            "hist": {
              "bin_edges": [
                0.0,
                0.25,
                0.5,
                0.75,
                1.0,
                1.25,
                1.5,
                1.75,
                2.0,
                2.25,
                2.5,
                2.75,
                3.0,
                3.25,
                3.5,
                3.75,
                4.0
              ],
              "counts": [
                57,
                43,
                35,
                18,
                11,
                7,
                14,
                5,
                2,
                7,
                2,
                7,
                2,
                1,
                3,
                31
              ],
              "bin_centers": [
                0.125,
                0.375,
                0.625,
                0.875,
                1.125,
                1.375,
                1.625,
                1.875,
                2.125,
                2.375,
                2.625,
                2.875,
                3.125,
                3.375,
                3.625,
                3.875
              ],
              "clip_lo": 0.0,
              "clip_hi": 4.0
            }
          },
          "max_down_natr": {
            "n": 245,
            "mean": -3.246,
            "median": -2.557,
            "p25": -3.934,
            "p75": -1.903,
            "hist": {
              "bin_edges": [
                -4.0,
                -3.75,
                -3.5,
                -3.25,
                -3.0,
                -2.75,
                -2.5,
                -2.25,
                -2.0,
                -1.75,
                -1.5,
                -1.25,
                -1.0,
                -0.75,
                -0.5,
                -0.25,
                0.0
              ],
              "counts": [
                67,
                11,
                15,
                8,
                11,
                17,
                22,
                23,
                18,
                15,
                16,
                14,
                3,
                0,
                4,
                1
              ],
              "bin_centers": [
                -3.875,
                -3.625,
                -3.375,
                -3.125,
                -2.875,
                -2.625,
                -2.375,
                -2.125,
                -1.875,
                -1.625,
                -1.375,
                -1.125,
                -0.875,
                -0.625,
                -0.375,
                -0.125
              ],
              "clip_lo": -4.0,
              "clip_hi": 0.0
            }
          }
        },
        "sideways": {
          "n": 13,
          "max_up_natr": {
            "n": 13,
            "mean": 0.648,
            "median": 0.497,
            "p25": 0.369,
            "p75": 0.884
          },
          "max_down_natr": {
            "n": 13,
            "mean": -1.087,
            "median": -1.212,
            "p25": -1.234,
            "p75": -1.01
          }
        },
        "forming": {
          "n": 0,
          "max_up_natr": {
            "n": 0,
            "mean": null,
            "median": null,
            "p25": null,
            "p75": null
          },
          "max_down_natr": {
            "n": 0,
            "mean": null,
            "median": null,
            "p25": null,
            "p75": null
          }
        }
      },
      "max_up_natr_hist": {
        "bin_edges": [
          0.0,
          0.25,
          0.5,
          0.75,
          1.0,
          1.25,
          1.5,
          1.75,
          2.0,
          2.25,
          2.5,
          2.75,
          3.0,
          3.25,
          3.5,
          3.75,
          4.0
        ],
        "counts": [
          64,
          61,
          47,
          63,
          51,
          47,
          51,
          38,
          29,
          36,
          21,
          24,
          21,
          21,
          17,
          166
        ],
        "bin_centers": [
          0.125,
          0.375,
          0.625,
          0.875,
          1.125,
          1.375,
          1.625,
          1.875,
          2.125,
          2.375,
          2.625,
          2.875,
          3.125,
          3.375,
          3.625,
          3.875
        ],
        "clip_lo": 0.0,
        "clip_hi": 4.0
      },
      "max_down_natr_hist": {
        "bin_edges": [
          -4.0,
          -3.75,
          -3.5,
          -3.25,
          -3.0,
          -2.75,
          -2.5,
          -2.25,
          -2.0,
          -1.75,
          -1.5,
          -1.25,
          -1.0,
          -0.75,
          -0.5,
          -0.25,
          0.0
        ],
        "counts": [
          135,
          20,
          25,
          23,
          32,
          33,
          52,
          47,
          42,
          39,
          67,
          46,
          50,
          37,
          51,
          58
        ],
        "bin_centers": [
          -3.875,
          -3.625,
          -3.375,
          -3.125,
          -2.875,
          -2.625,
          -2.375,
          -2.125,
          -1.875,
          -1.625,
          -1.375,
          -1.125,
          -0.875,
          -0.625,
          -0.375,
          -0.125
        ],
        "clip_lo": -4.0,
        "clip_hi": 0.0
      },
      "timestamp_min": 1581721200000,
      "timestamp_max": 1785049200000,
      "timestamp_min_iso": "2020-02-14T23:00:00Z",
      "timestamp_max_iso": "2026-07-26T07:00:00Z"
    },
    {
      "pattern_type": "bearish_pennant",
      "pattern_name": "Bearish Pennant",
      "timeframe": "15m",
      "bias": "bearish",
      "n": 370,
      "n_symbols": 266,
      "breakout_success_rate": 32.43,
      "breakdown_success_rate": 64.86,
      "sideways_rate": 2.71,
      "forming_rate": 0.0,
      "both_cleared_rate": 35.95,
      "breakout_success_rate_ci95": [
        27.86,
        37.36
      ],
      "breakdown_success_rate_ci95": [
        59.87,
        69.55
      ],
      "sideways_rate_ci95": [
        1.47,
        4.9
      ],
      "forming_rate_ci95": [
        0.0,
        1.03
      ],
      "both_sides_rate": 35.95,
      "expected_hit_rate": 64.86,
      "expected_hit_rate_ci95": [
        59.87,
        69.55
      ],
      "mean_ret_10c": -0.061,
      "median_ret_10c": -0.048,
      "std_ret_10c": 2.457,
      "win_rate_ret_gt0": 47.84,
      "p25_ret_10c": -1.189,
      "p75_ret_10c": 1.101,
      "mean_mfe": 1.85,
      "mean_mae": -1.966,
      "mfe_mae_ratio": 0.941,
      "max_up_natr": {
        "n": 370,
        "mean": 2.068,
        "median": 1.594,
        "p25": 0.658,
        "p75": 3.034,
        "hist": {
          "bin_edges": [
            0.0,
            0.25,
            0.5,
            0.75,
            1.0,
            1.25,
            1.5,
            1.75,
            2.0,
            2.25,
            2.5,
            2.75,
            3.0,
            3.25,
            3.5,
            3.75,
            4.0
          ],
          "counts": [
            37,
            34,
            31,
            34,
            18,
            26,
            18,
            25,
            14,
            11,
            14,
            13,
            11,
            16,
            10,
            58
          ],
          "bin_centers": [
            0.125,
            0.375,
            0.625,
            0.875,
            1.125,
            1.375,
            1.625,
            1.875,
            2.125,
            2.375,
            2.625,
            2.875,
            3.125,
            3.375,
            3.625,
            3.875
          ],
          "clip_lo": 0.0,
          "clip_hi": 4.0
        }
      },
      "max_down_natr": {
        "n": 370,
        "mean": -2.214,
        "median": -1.722,
        "p25": -2.836,
        "p75": -0.883,
        "hist": {
          "bin_edges": [
            -4.0,
            -3.75,
            -3.5,
            -3.25,
            -3.0,
            -2.75,
            -2.5,
            -2.25,
            -2.0,
            -1.75,
            -1.5,
            -1.25,
            -1.0,
            -0.75,
            -0.5,
            -0.25,
            0.0
          ],
          "counts": [
            56,
            7,
            10,
            13,
            12,
            17,
            18,
            24,
            22,
            30,
            31,
            20,
            28,
            27,
            29,
            26
          ],
          "bin_centers": [
            -3.875,
            -3.625,
            -3.375,
            -3.125,
            -2.875,
            -2.625,
            -2.375,
            -2.125,
            -1.875,
            -1.625,
            -1.375,
            -1.125,
            -0.875,
            -0.625,
            -0.375,
            -0.125
          ],
          "clip_lo": -4.0,
          "clip_hi": 0.0
        }
      },
      "median_max_up_natr": 1.594,
      "median_max_down_natr": -1.722,
      "mean_max_up_natr": 2.068,
      "mean_max_down_natr": -2.214,
      "p25_max_up_natr": 0.658,
      "p75_max_up_natr": 3.034,
      "p25_max_down_natr": -2.836,
      "p75_max_down_natr": -0.883,
      "outcome_natr_moves": {
        "breakout": {
          "n": 120,
          "max_up_natr": {
            "n": 120,
            "mean": 3.139,
            "median": 2.921,
            "p25": 1.855,
            "p75": 3.912,
            "hist": {
              "bin_edges": [
                0.0,
                0.25,
                0.5,
                0.75,
                1.0,
                1.25,
                1.5,
                1.75,
                2.0,
                2.25,
                2.5,
                2.75,
                3.0,
                3.25,
                3.5,
                3.75,
                4.0
              ],
              "counts": [
                0,
                0,
                0,
                3,
                3,
                5,
                12,
                15,
                5,
                5,
                6,
                11,
                6,
                8,
                5,
                36
              ],
              "bin_centers": [
                0.125,
                0.375,
                0.625,
                0.875,
                1.125,
                1.375,
                1.625,
                1.875,
                2.125,
                2.375,
                2.625,
                2.875,
                3.125,
                3.375,
                3.625,
                3.875
              ],
              "clip_lo": 0.0,
              "clip_hi": 4.0
            }
          },
          "max_down_natr": {
            "n": 120,
            "mean": -1.215,
            "median": -0.618,
            "p25": -1.284,
            "p75": -0.307,
            "hist": {
              "bin_edges": [
                -4.0,
                -3.75,
                -3.5,
                -3.25,
                -3.0,
                -2.75,
                -2.5,
                -2.25,
                -2.0,
                -1.75,
                -1.5,
                -1.25,
                -1.0,
                -0.75,
                -0.5,
                -0.25,
                0.0
              ],
              "counts": [
                9,
                1,
                0,
                0,
                2,
                1,
                2,
                5,
                3,
                3,
                6,
                9,
                10,
                17,
                26,
                26
              ],
              "bin_centers": [
                -3.875,
                -3.625,
                -3.375,
                -3.125,
                -2.875,
                -2.625,
                -2.375,
                -2.125,
                -1.875,
                -1.625,
                -1.375,
                -1.125,
                -0.875,
                -0.625,
                -0.375,
                -0.125
              ],
              "clip_lo": -4.0,
              "clip_hi": 0.0
            }
          }
        },
        "breakdown": {
          "n": 240,
          "max_up_natr": {
            "n": 240,
            "mean": 1.571,
            "median": 0.915,
            "p25": 0.425,
            "p75": 2.115,
            "hist": {
              "bin_edges": [
                0.0,
                0.25,
                0.5,
                0.75,
                1.0,
                1.25,
                1.5,
                1.75,
                2.0,
                2.25,
                2.5,
                2.75,
                3.0,
                3.25,
                3.5,
                3.75,
                4.0
              ],
              "counts": [
                37,
                33,
                30,
                29,
                14,
                17,
                6,
                9,
                9,
                6,
                8,
                2,
                5,
                8,
                5,
                22
              ],
              "bin_centers": [
                0.125,
                0.375,
                0.625,
                0.875,
                1.125,
                1.375,
                1.625,
                1.875,
                2.125,
                2.375,
                2.625,
                2.875,
                3.125,
                3.375,
                3.625,
                3.875
              ],
              "clip_lo": 0.0,
              "clip_hi": 4.0
            }
          },
          "max_down_natr": {
            "n": 240,
            "mean": -2.777,
            "median": -2.208,
            "p25": -3.318,
            "p75": -1.528,
            "hist": {
              "bin_edges": [
                -4.0,
                -3.75,
                -3.5,
                -3.25,
                -3.0,
                -2.75,
                -2.5,
                -2.25,
                -2.0,
                -1.75,
                -1.5,
                -1.25,
                -1.0,
                -0.75,
                -0.5,
                -0.25,
                0.0
              ],
              "counts": [
                47,
                6,
                10,
                13,
                10,
                16,
                16,
                19,
                19,
                27,
                24,
                11,
                17,
                5,
                0,
                0
              ],
              "bin_centers": [
                -3.875,
                -3.625,
                -3.375,
                -3.125,
                -2.875,
                -2.625,
                -2.375,
                -2.125,
                -1.875,
                -1.625,
                -1.375,
                -1.125,
                -0.875,
                -0.625,
                -0.375,
                -0.125
              ],
              "clip_lo": -4.0,
              "clip_hi": 0.0
            }
          }
        },
        "sideways": {
          "n": 10,
          "max_up_natr": {
            "n": 10,
            "mean": 1.111,
            "median": 1.244,
            "p25": 0.841,
            "p75": 1.329
          },
          "max_down_natr": {
            "n": 10,
            "mean": -0.679,
            "median": -0.69,
            "p25": -0.745,
            "p75": -0.485
          }
        },
        "forming": {
          "n": 0,
          "max_up_natr": {
            "n": 0,
            "mean": null,
            "median": null,
            "p25": null,
            "p75": null
          },
          "max_down_natr": {
            "n": 0,
            "mean": null,
            "median": null,
            "p25": null,
            "p75": null
          }
        }
      },
      "max_up_natr_hist": {
        "bin_edges": [
          0.0,
          0.25,
          0.5,
          0.75,
          1.0,
          1.25,
          1.5,
          1.75,
          2.0,
          2.25,
          2.5,
          2.75,
          3.0,
          3.25,
          3.5,
          3.75,
          4.0
        ],
        "counts": [
          37,
          34,
          31,
          34,
          18,
          26,
          18,
          25,
          14,
          11,
          14,
          13,
          11,
          16,
          10,
          58
        ],
        "bin_centers": [
          0.125,
          0.375,
          0.625,
          0.875,
          1.125,
          1.375,
          1.625,
          1.875,
          2.125,
          2.375,
          2.625,
          2.875,
          3.125,
          3.375,
          3.625,
          3.875
        ],
        "clip_lo": 0.0,
        "clip_hi": 4.0
      },
      "max_down_natr_hist": {
        "bin_edges": [
          -4.0,
          -3.75,
          -3.5,
          -3.25,
          -3.0,
          -2.75,
          -2.5,
          -2.25,
          -2.0,
          -1.75,
          -1.5,
          -1.25,
          -1.0,
          -0.75,
          -0.5,
          -0.25,
          0.0
        ],
        "counts": [
          56,
          7,
          10,
          13,
          12,
          17,
          18,
          24,
          22,
          30,
          31,
          20,
          28,
          27,
          29,
          26
        ],
        "bin_centers": [
          -3.875,
          -3.625,
          -3.375,
          -3.125,
          -2.875,
          -2.625,
          -2.375,
          -2.125,
          -1.875,
          -1.625,
          -1.375,
          -1.125,
          -0.875,
          -0.625,
          -0.375,
          -0.125
        ],
        "clip_lo": -4.0,
        "clip_hi": 0.0
      },
      "timestamp_min": 1631392200000,
      "timestamp_max": 1785492000000,
      "timestamp_min_iso": "2021-09-11T20:30:00Z",
      "timestamp_max_iso": "2026-07-31T10:00:00Z"
    },
    {
      "pattern_type": "inverted_cup_and_handle",
      "pattern_name": "Inverted Cup & Handle",
      "timeframe": "4h",
      "bias": "bearish",
      "n": 17,
      "n_symbols": 15,
      "breakout_success_rate": 35.29,
      "breakdown_success_rate": 64.71,
      "sideways_rate": 0.0,
      "forming_rate": 0.0,
      "both_cleared_rate": 17.65,
      "breakout_success_rate_ci95": [
        17.31,
        58.7
      ],
      "breakdown_success_rate_ci95": [
        41.3,
        82.69
      ],
      "sideways_rate_ci95": [
        0.0,
        18.43
      ],
      "forming_rate_ci95": [
        0.0,
        18.43
      ],
      "both_sides_rate": 17.65,
      "expected_hit_rate": 64.71,
      "expected_hit_rate_ci95": [
        41.3,
        82.69
      ],
      "mean_ret_10c": -2.167,
      "median_ret_10c": -2.1,
      "std_ret_10c": 12.09,
      "win_rate_ret_gt0": 41.18,
      "p25_ret_10c": -7.097,
      "p75_ret_10c": 1.66,
      "mean_mfe": 5.405,
      "mean_mae": -9.235,
      "mfe_mae_ratio": 0.585,
      "max_up_natr": {
        "n": 17,
        "mean": 1.699,
        "median": 0.873,
        "p25": 0.427,
        "p75": 2.137,
        "hist": {
          "bin_edges": [
            0.0,
            0.25,
            0.5,
            0.75,
            1.0,
            1.25,
            1.5,
            1.75,
            2.0,
            2.25,
            2.5,
            2.75,
            3.0,
            3.25,
            3.5,
            3.75,
            4.0
          ],
          "counts": [
            1,
            4,
            2,
            3,
            1,
            1,
            0,
            0,
            1,
            1,
            2,
            0,
            0,
            0,
            0,
            1
          ],
          "bin_centers": [
            0.125,
            0.375,
            0.625,
            0.875,
            1.125,
            1.375,
            1.625,
            1.875,
            2.125,
            2.375,
            2.625,
            2.875,
            3.125,
            3.375,
            3.625,
            3.875
          ],
          "clip_lo": 0.0,
          "clip_hi": 4.0
        }
      },
      "max_down_natr": {
        "n": 17,
        "mean": -2.738,
        "median": -2.224,
        "p25": -4.138,
        "p75": -0.692,
        "hist": {
          "bin_edges": [
            -4.0,
            -3.75,
            -3.5,
            -3.25,
            -3.0,
            -2.75,
            -2.5,
            -2.25,
            -2.0,
            -1.75,
            -1.5,
            -1.25,
            -1.0,
            -0.75,
            -0.5,
            -0.25,
            0.0
          ],
          "counts": [
            5,
            0,
            1,
            0,
            1,
            0,
            1,
            2,
            0,
            0,
            2,
            0,
            0,
            3,
            2,
            0
          ],
          "bin_centers": [
            -3.875,
            -3.625,
            -3.375,
            -3.125,
            -2.875,
            -2.625,
            -2.375,
            -2.125,
            -1.875,
            -1.625,
            -1.375,
            -1.125,
            -0.875,
            -0.625,
            -0.375,
            -0.125
          ],
          "clip_lo": -4.0,
          "clip_hi": 0.0
        }
      },
      "median_max_up_natr": 0.873,
      "median_max_down_natr": -2.224,
      "mean_max_up_natr": 1.699,
      "mean_max_down_natr": -2.738,
      "p25_max_up_natr": 0.427,
      "p75_max_up_natr": 2.137,
      "p25_max_down_natr": -4.138,
      "p75_max_down_natr": -0.692,
      "outcome_natr_moves": {
        "breakout": {
          "n": 6,
          "max_up_natr": {
            "n": 6,
            "mean": 3.345,
            "median": 2.326,
            "p25": 1.161,
            "p75": 2.631
          },
          "max_down_natr": {
            "n": 6,
            "mean": -0.98,
            "median": -0.532,
            "p25": -0.656,
            "p75": -0.391
          }
        },
        "breakdown": {
          "n": 11,
          "max_up_natr": {
            "n": 11,
            "mean": 0.802,
            "median": 0.724,
            "p25": 0.387,
            "p75": 0.981
          },
          "max_down_natr": {
            "n": 11,
            "mean": -3.697,
            "median": -2.947,
            "p25": -5.37,
            "p75": -2.167
          }
        },
        "sideways": {
          "n": 0,
          "max_up_natr": {
            "n": 0,
            "mean": null,
            "median": null,
            "p25": null,
            "p75": null
          },
          "max_down_natr": {
            "n": 0,
            "mean": null,
            "median": null,
            "p25": null,
            "p75": null
          }
        },
        "forming": {
          "n": 0,
          "max_up_natr": {
            "n": 0,
            "mean": null,
            "median": null,
            "p25": null,
            "p75": null
          },
          "max_down_natr": {
            "n": 0,
            "mean": null,
            "median": null,
            "p25": null,
            "p75": null
          }
        }
      },
      "max_up_natr_hist": {
        "bin_edges": [
          0.0,
          0.25,
          0.5,
          0.75,
          1.0,
          1.25,
          1.5,
          1.75,
          2.0,
          2.25,
          2.5,
          2.75,
          3.0,
          3.25,
          3.5,
          3.75,
          4.0
        ],
        "counts": [
          1,
          4,
          2,
          3,
          1,
          1,
          0,
          0,
          1,
          1,
          2,
          0,
          0,
          0,
          0,
          1
        ],
        "bin_centers": [
          0.125,
          0.375,
          0.625,
          0.875,
          1.125,
          1.375,
          1.625,
          1.875,
          2.125,
          2.375,
          2.625,
          2.875,
          3.125,
          3.375,
          3.625,
          3.875
        ],
        "clip_lo": 0.0,
        "clip_hi": 4.0
      },
      "max_down_natr_hist": {
        "bin_edges": [
          -4.0,
          -3.75,
          -3.5,
          -3.25,
          -3.0,
          -2.75,
          -2.5,
          -2.25,
          -2.0,
          -1.75,
          -1.5,
          -1.25,
          -1.0,
          -0.75,
          -0.5,
          -0.25,
          0.0
        ],
        "counts": [
          5,
          0,
          1,
          0,
          1,
          0,
          1,
          2,
          0,
          0,
          2,
          0,
          0,
          3,
          2,
          0
        ],
        "bin_centers": [
          -3.875,
          -3.625,
          -3.375,
          -3.125,
          -2.875,
          -2.625,
          -2.375,
          -2.125,
          -1.875,
          -1.625,
          -1.375,
          -1.125,
          -0.875,
          -0.625,
          -0.375,
          -0.125
        ],
        "clip_lo": -4.0,
        "clip_hi": 0.0
      },
      "timestamp_min": 1618214400000,
      "timestamp_max": 1782302400000,
      "timestamp_min_iso": "2021-04-12T08:00:00Z",
      "timestamp_max_iso": "2026-06-24T12:00:00Z"
    },
    {
      "pattern_type": "ascending_broadening_wedge",
      "pattern_name": "Ascending Broadening Wedge",
      "timeframe": "1d",
      "bias": "bearish",
      "n": 175,
      "n_symbols": 131,
      "breakout_success_rate": 31.43,
      "breakdown_success_rate": 61.14,
      "sideways_rate": 7.43,
      "forming_rate": 0.0,
      "both_cleared_rate": 30.86,
      "breakout_success_rate_ci95": [
        25.01,
        38.64
      ],
      "breakdown_success_rate_ci95": [
        53.76,
        68.05
      ],
      "sideways_rate_ci95": [
        4.39,
        12.29
      ],
      "forming_rate_ci95": [
        0.0,
        2.15
      ],
      "both_sides_rate": 30.86,
      "expected_hit_rate": 61.14,
      "expected_hit_rate_ci95": [
        53.76,
        68.05
      ],
      "mean_ret_10c": 7.82,
      "median_ret_10c": -1.857,
      "std_ret_10c": 38.943,
      "win_rate_ret_gt0": 48.0,
      "p25_ret_10c": -16.66,
      "p75_ret_10c": 19.945,
      "mean_mfe": 35.394,
      "mean_mae": -18.895,
      "mfe_mae_ratio": 1.873,
      "max_up_natr": {
        "n": 175,
        "mean": 4.148,
        "median": 1.751,
        "p25": 0.308,
        "p75": 6.051,
        "hist": {
          "bin_edges": [
            0.0,
            0.25,
            0.5,
            0.75,
            1.0,
            1.25,
            1.5,
            1.75,
            2.0,
            2.25,
            2.5,
            2.75,
            3.0,
            3.25,
            3.5,
            3.75,
            4.0
          ],
          "counts": [
            40,
            10,
            11,
            8,
            9,
            5,
            4,
            6,
            7,
            2,
            4,
            0,
            4,
            4,
            1,
            60
          ],
          "bin_centers": [
            0.125,
            0.375,
            0.625,
            0.875,
            1.125,
            1.375,
            1.625,
            1.875,
            2.125,
            2.375,
            2.625,
            2.875,
            3.125,
            3.375,
            3.625,
            3.875
          ],
          "clip_lo": 0.0,
          "clip_hi": 4.0
        }
      },
      "max_down_natr": {
        "n": 175,
        "mean": -2.345,
        "median": -1.98,
        "p25": -3.349,
        "p75": -0.85,
        "hist": {
          "bin_edges": [
            -4.0,
            -3.75,
            -3.5,
            -3.25,
            -3.0,
            -2.75,
            -2.5,
            -2.25,
            -2.0,
            -1.75,
            -1.5,
            -1.25,
            -1.0,
            -0.75,
            -0.5,
            -0.25,
            0.0
          ],
          "counts": [
            37,
            5,
            3,
            6,
            9,
            7,
            5,
            14,
            8,
            12,
            7,
            8,
            14,
            10,
            12,
            18
          ],
          "bin_centers": [
            -3.875,
            -3.625,
            -3.375,
            -3.125,
            -2.875,
            -2.625,
            -2.375,
            -2.125,
            -1.875,
            -1.625,
            -1.375,
            -1.125,
            -0.875,
            -0.625,
            -0.375,
            -0.125
          ],
          "clip_lo": -4.0,
          "clip_hi": 0.0
        }
      },
      "median_max_up_natr": 1.751,
      "median_max_down_natr": -1.98,
      "mean_max_up_natr": 4.148,
      "mean_max_down_natr": -2.345,
      "p25_max_up_natr": 0.308,
      "p75_max_up_natr": 6.051,
      "p25_max_down_natr": -3.349,
      "p75_max_down_natr": -0.85,
      "outcome_natr_moves": {
        "breakout": {
          "n": 55,
          "max_up_natr": {
            "n": 55,
            "mean": 9.716,
            "median": 8.445,
            "p25": 5.179,
            "p75": 13.219,
            "hist": {
              "bin_edges": [
                0.0,
                0.25,
                0.5,
                0.75,
                1.0,
                1.25,
                1.5,
                1.75,
                2.0,
                2.25,
                2.5,
                2.75,
                3.0,
                3.25,
                3.5,
                3.75,
                4.0
              ],
              "counts": [
                0,
                0,
                0,
                0,
                0,
                1,
                1,
                2,
                0,
                0,
                1,
                0,
                1,
                1,
                1,
                47
              ],
              "bin_centers": [
                0.125,
                0.375,
                0.625,
                0.875,
                1.125,
                1.375,
                1.625,
                1.875,
                2.125,
                2.375,
                2.625,
                2.875,
                3.125,
                3.375,
                3.625,
                3.875
              ],
              "clip_lo": 0.0,
              "clip_hi": 4.0
            }
          },
          "max_down_natr": {
            "n": 55,
            "mean": -1.061,
            "median": -0.534,
            "p25": -1.476,
            "p75": -0.134,
            "hist": {
              "bin_edges": [
                -4.0,
                -3.75,
                -3.5,
                -3.25,
                -3.0,
                -2.75,
                -2.5,
                -2.25,
                -2.0,
                -1.75,
                -1.5,
                -1.25,
                -1.0,
                -0.75,
                -0.5,
                -0.25,
                0.0
              ],
              "counts": [
                5,
                0,
                0,
                1,
                2,
                0,
                0,
                2,
                2,
                1,
                3,
                1,
                4,
                9,
                8,
                17
              ],
              "bin_centers": [
                -3.875,
                -3.625,
                -3.375,
                -3.125,
                -2.875,
                -2.625,
                -2.375,
                -2.125,
                -1.875,
                -1.625,
                -1.375,
                -1.125,
                -0.875,
                -0.625,
                -0.375,
                -0.125
              ],
              "clip_lo": -4.0,
              "clip_hi": 0.0
            }
          }
        },
        "breakdown": {
          "n": 107,
          "max_up_natr": {
            "n": 107,
            "mean": 1.411,
            "median": 0.701,
            "p25": 0.198,
            "p75": 1.579,
            "hist": {
              "bin_edges": [
                0.0,
                0.25,
                0.5,
                0.75,
                1.0,
                1.25,
                1.5,
                1.75,
                2.0,
                2.25,
                2.5,
                2.75,
                3.0,
                3.25,
                3.5,
                3.75,
                4.0
              ],
              "counts": [
                38,
                10,
                10,
                8,
                9,
                4,
                3,
                3,
                6,
                1,
                2,
                0,
                1,
                2,
                0,
                10
              ],
              "bin_centers": [
                0.125,
                0.375,
                0.625,
                0.875,
                1.125,
                1.375,
                1.625,
                1.875,
                2.125,
                2.375,
                2.625,
                2.875,
                3.125,
                3.375,
                3.625,
                3.875
              ],
              "clip_lo": 0.0,
              "clip_hi": 4.0
            }
          },
          "max_down_natr": {
            "n": 107,
            "mean": -3.19,
            "median": -2.668,
            "p25": -3.903,
            "p75": -1.826,
            "hist": {
              "bin_edges": [
                -4.0,
                -3.75,
                -3.5,
                -3.25,
                -3.0,
                -2.75,
                -2.5,
                -2.25,
                -2.0,
                -1.75,
                -1.5,
                -1.25,
                -1.0,
                -0.75,
                -0.5,
                -0.25,
                0.0
              ],
              "counts": [
                32,
                5,
                3,
                5,
                7,
                7,
                5,
                11,
                6,
                10,
                4,
                5,
                7,
                0,
                0,
                0
              ],
              "bin_centers": [
                -3.875,
                -3.625,
                -3.375,
                -3.125,
                -2.875,
                -2.625,
                -2.375,
                -2.125,
                -1.875,
                -1.625,
                -1.375,
                -1.125,
                -0.875,
                -0.625,
                -0.375,
                -0.125
              ],
              "clip_lo": -4.0,
              "clip_hi": 0.0
            }
          }
        },
        "sideways": {
          "n": 13,
          "max_up_natr": {
            "n": 13,
            "mean": 3.127,
            "median": 2.703,
            "p25": 1.842,
            "p75": 3.474
          },
          "max_down_natr": {
            "n": 13,
            "mean": -0.817,
            "median": -0.84,
            "p25": -1.112,
            "p75": -0.441
          }
        },
        "forming": {
          "n": 0,
          "max_up_natr": {
            "n": 0,
            "mean": null,
            "median": null,
            "p25": null,
            "p75": null
          },
          "max_down_natr": {
            "n": 0,
            "mean": null,
            "median": null,
            "p25": null,
            "p75": null
          }
        }
      },
      "max_up_natr_hist": {
        "bin_edges": [
          0.0,
          0.25,
          0.5,
          0.75,
          1.0,
          1.25,
          1.5,
          1.75,
          2.0,
          2.25,
          2.5,
          2.75,
          3.0,
          3.25,
          3.5,
          3.75,
          4.0
        ],
        "counts": [
          40,
          10,
          11,
          8,
          9,
          5,
          4,
          6,
          7,
          2,
          4,
          0,
          4,
          4,
          1,
          60
        ],
        "bin_centers": [
          0.125,
          0.375,
          0.625,
          0.875,
          1.125,
          1.375,
          1.625,
          1.875,
          2.125,
          2.375,
          2.625,
          2.875,
          3.125,
          3.375,
          3.625,
          3.875
        ],
        "clip_lo": 0.0,
        "clip_hi": 4.0
      },
      "max_down_natr_hist": {
        "bin_edges": [
          -4.0,
          -3.75,
          -3.5,
          -3.25,
          -3.0,
          -2.75,
          -2.5,
          -2.25,
          -2.0,
          -1.75,
          -1.5,
          -1.25,
          -1.0,
          -0.75,
          -0.5,
          -0.25,
          0.0
        ],
        "counts": [
          37,
          5,
          3,
          6,
          9,
          7,
          5,
          14,
          8,
          12,
          7,
          8,
          14,
          10,
          12,
          18
        ],
        "bin_centers": [
          -3.875,
          -3.625,
          -3.375,
          -3.125,
          -2.875,
          -2.625,
          -2.375,
          -2.125,
          -1.875,
          -1.625,
          -1.375,
          -1.125,
          -0.875,
          -0.625,
          -0.375,
          -0.125
        ],
        "clip_lo": -4.0,
        "clip_hi": 0.0
      },
      "timestamp_min": 1557100800000,
      "timestamp_max": 1783728000000,
      "timestamp_min_iso": "2019-05-06T00:00:00Z",
      "timestamp_max_iso": "2026-07-11T00:00:00Z"
    },
    {
      "pattern_type": "rsi_regular_bearish_divergence",
      "pattern_name": "RSI Regular Bearish Divergence",
      "timeframe": "15m",
      "bias": "bearish",
      "n": 672,
      "n_symbols": 391,
      "breakout_success_rate": 41.52,
      "breakdown_success_rate": 58.33,
      "sideways_rate": 0.15,
      "forming_rate": 0.0,
      "both_cleared_rate": 50.89,
      "breakout_success_rate_ci95": [
        37.85,
        45.28
      ],
      "breakdown_success_rate_ci95": [
        54.57,
        62.0
      ],
      "sideways_rate_ci95": [
        0.03,
        0.84
      ],
      "forming_rate_ci95": [
        0.0,
        0.57
      ],
      "both_sides_rate": 50.89,
      "expected_hit_rate": 58.33,
      "expected_hit_rate_ci95": [
        54.57,
        62.0
      ],
      "mean_ret_10c": -0.516,
      "median_ret_10c": -0.635,
      "std_ret_10c": 3.75,
      "win_rate_ret_gt0": 38.24,
      "p25_ret_10c": -1.872,
      "p75_ret_10c": 0.719,
      "mean_mfe": 2.518,
      "mean_mae": -2.696,
      "mfe_mae_ratio": 0.934,
      "max_up_natr": {
        "n": 672,
        "mean": 2.658,
        "median": 1.683,
        "p25": 0.711,
        "p75": 3.543,
        "hist": {
          "bin_edges": [
            0.0,
            0.25,
            0.5,
            0.75,
            1.0,
            1.25,
            1.5,
            1.75,
            2.0,
            2.25,
            2.5,
            2.75,
            3.0,
            3.25,
            3.5,
            3.75,
            4.0
          ],
          "counts": [
            71,
            53,
            52,
            46,
            40,
            41,
            38,
            28,
            22,
            36,
            25,
            23,
            13,
            14,
            18,
            152
          ],
          "bin_centers": [
            0.125,
            0.375,
            0.625,
            0.875,
            1.125,
            1.375,
            1.625,
            1.875,
            2.125,
            2.375,
            2.625,
            2.875,
            3.125,
            3.375,
            3.625,
            3.875
          ],
          "clip_lo": 0.0,
          "clip_hi": 4.0
        }
      },
      "max_down_natr": {
        "n": 672,
        "mean": -2.841,
        "median": -2.303,
        "p25": -3.694,
        "p75": -1.35,
        "hist": {
          "bin_edges": [
            -4.0,
            -3.75,
            -3.5,
            -3.25,
            -3.0,
            -2.75,
            -2.5,
            -2.25,
            -2.0,
            -1.75,
            -1.5,
            -1.25,
            -1.0,
            -0.75,
            -0.5,
            -0.25,
            0.0
          ],
          "counts": [
            161,
            34,
            24,
            20,
            32,
            35,
            38,
            47,
            42,
            45,
            43,
            42,
            31,
            32,
            21,
            25
          ],
          "bin_centers": [
            -3.875,
            -3.625,
            -3.375,
            -3.125,
            -2.875,
            -2.625,
            -2.375,
            -2.125,
            -1.875,
            -1.625,
            -1.375,
            -1.125,
            -0.875,
            -0.625,
            -0.375,
            -0.125
          ],
          "clip_lo": -4.0,
          "clip_hi": 0.0
        }
      },
      "median_max_up_natr": 1.683,
      "median_max_down_natr": -2.303,
      "mean_max_up_natr": 2.658,
      "mean_max_down_natr": -2.841,
      "p25_max_up_natr": 0.711,
      "p75_max_up_natr": 3.543,
      "p25_max_down_natr": -3.694,
      "p75_max_down_natr": -1.35,
      "outcome_natr_moves": {
        "breakout": {
          "n": 279,
          "max_up_natr": {
            "n": 279,
            "mean": 3.985,
            "median": 2.828,
            "p25": 1.719,
            "p75": 5.19,
            "hist": {
              "bin_edges": [
                0.0,
                0.25,
                0.5,
                0.75,
                1.0,
                1.25,
                1.5,
                1.75,
                2.0,
                2.25,
                2.5,
                2.75,
                3.0,
                3.25,
                3.5,
                3.75,
                4.0
              ],
              "counts": [
                0,
                0,
                0,
                0,
                23,
                27,
                21,
                19,
                14,
                20,
                14,
                10,
                7,
                10,
                9,
                105
              ],
              "bin_centers": [
                0.125,
                0.375,
                0.625,
                0.875,
                1.125,
                1.375,
                1.625,
                1.875,
                2.125,
                2.375,
                2.625,
                2.875,
                3.125,
                3.375,
                3.625,
                3.875
              ],
              "clip_lo": 0.0,
              "clip_hi": 4.0
            }
          },
          "max_down_natr": {
            "n": 279,
            "mean": -2.121,
            "median": -1.484,
            "p25": -2.872,
            "p75": -0.68,
            "hist": {
              "bin_edges": [
                -4.0,
                -3.75,
                -3.5,
                -3.25,
                -3.0,
                -2.75,
                -2.5,
                -2.25,
                -2.0,
                -1.75,
                -1.5,
                -1.25,
                -1.0,
                -0.75,
                -0.5,
                -0.25,
                0.0
              ],
              "counts": [
                43,
                11,
                8,
                5,
                8,
                10,
                10,
                16,
                15,
                13,
                14,
                18,
                30,
                32,
                21,
                25
              ],
              "bin_centers": [
                -3.875,
                -3.625,
                -3.375,
                -3.125,
                -2.875,
                -2.625,
                -2.375,
                -2.125,
                -1.875,
                -1.625,
                -1.375,
                -1.125,
                -0.875,
                -0.625,
                -0.375,
                -0.125
              ],
              "clip_lo": -4.0,
              "clip_hi": 0.0
            }
          }
        },
        "breakdown": {
          "n": 392,
          "max_up_natr": {
            "n": 392,
            "mean": 1.718,
            "median": 0.858,
            "p25": 0.346,
            "p75": 2.357,
            "hist": {
              "bin_edges": [
                0.0,
                0.25,
                0.5,
                0.75,
                1.0,
                1.25,
                1.5,
                1.75,
                2.0,
                2.25,
                2.5,
                2.75,
                3.0,
                3.25,
                3.5,
                3.75,
                4.0
              ],
              "counts": [
                71,
                53,
                52,
                45,
                17,
                14,
                17,
                9,
                8,
                16,
                11,
                13,
                6,
                4,
                9,
                47
              ],
              "bin_centers": [
                0.125,
                0.375,
                0.625,
                0.875,
                1.125,
                1.375,
                1.625,
                1.875,
                2.125,
                2.375,
                2.625,
                2.875,
                3.125,
                3.375,
                3.625,
                3.875
              ],
              "clip_lo": 0.0,
              "clip_hi": 4.0
            }
          },
          "max_down_natr": {
            "n": 392,
            "mean": -3.359,
            "median": -2.755,
            "p25": -3.968,
            "p75": -1.87,
            "hist": {
              "bin_edges": [
                -4.0,
                -3.75,
                -3.5,
                -3.25,
                -3.0,
                -2.75,
                -2.5,
                -2.25,
                -2.0,
                -1.75,
                -1.5,
                -1.25,
                -1.0,
                -0.75,
                -0.5,
                -0.25,
                0.0
              ],
              "counts": [
                118,
                23,
                16,
                15,
                24,
                25,
                28,
                31,
                27,
                32,
                29,
                24,
                0,
                0,
                0,
                0
              ],
              "bin_centers": [
                -3.875,
                -3.625,
                -3.375,
                -3.125,
                -2.875,
                -2.625,
                -2.375,
                -2.125,
                -1.875,
                -1.625,
                -1.375,
                -1.125,
                -0.875,
                -0.625,
                -0.375,
                -0.125
              ],
              "clip_lo": -4.0,
              "clip_hi": 0.0
            }
          }
        },
        "sideways": {
          "n": 1,
          "max_up_natr": {
            "n": 1,
            "mean": 0.785,
            "median": 0.785,
            "p25": 0.785,
            "p75": 0.785
          },
          "max_down_natr": {
            "n": 1,
            "mean": -0.954,
            "median": -0.954,
            "p25": -0.954,
            "p75": -0.954
          }
        },
        "forming": {
          "n": 0,
          "max_up_natr": {
            "n": 0,
            "mean": null,
            "median": null,
            "p25": null,
            "p75": null
          },
          "max_down_natr": {
            "n": 0,
            "mean": null,
            "median": null,
            "p25": null,
            "p75": null
          }
        }
      },
      "max_up_natr_hist": {
        "bin_edges": [
          0.0,
          0.25,
          0.5,
          0.75,
          1.0,
          1.25,
          1.5,
          1.75,
          2.0,
          2.25,
          2.5,
          2.75,
          3.0,
          3.25,
          3.5,
          3.75,
          4.0
        ],
        "counts": [
          71,
          53,
          52,
          46,
          40,
          41,
          38,
          28,
          22,
          36,
          25,
          23,
          13,
          14,
          18,
          152
        ],
        "bin_centers": [
          0.125,
          0.375,
          0.625,
          0.875,
          1.125,
          1.375,
          1.625,
          1.875,
          2.125,
          2.375,
          2.625,
          2.875,
          3.125,
          3.375,
          3.625,
          3.875
        ],
        "clip_lo": 0.0,
        "clip_hi": 4.0
      },
      "max_down_natr_hist": {
        "bin_edges": [
          -4.0,
          -3.75,
          -3.5,
          -3.25,
          -3.0,
          -2.75,
          -2.5,
          -2.25,
          -2.0,
          -1.75,
          -1.5,
          -1.25,
          -1.0,
          -0.75,
          -0.5,
          -0.25,
          0.0
        ],
        "counts": [
          161,
          34,
          24,
          20,
          32,
          35,
          38,
          47,
          42,
          45,
          43,
          42,
          31,
          32,
          21,
          25
        ],
        "bin_centers": [
          -3.875,
          -3.625,
          -3.375,
          -3.125,
          -2.875,
          -2.625,
          -2.375,
          -2.125,
          -1.875,
          -1.625,
          -1.375,
          -1.125,
          -0.875,
          -0.625,
          -0.375,
          -0.125
        ],
        "clip_lo": -4.0,
        "clip_hi": 0.0
      },
      "timestamp_min": 1596897000000,
      "timestamp_max": 1785451500000,
      "timestamp_min_iso": "2020-08-08T14:30:00Z",
      "timestamp_max_iso": "2026-07-30T22:45:00Z"
    },
    {
      "pattern_type": "cup_and_handle",
      "pattern_name": "Cup & Handle",
      "timeframe": "4h",
      "bias": "bullish",
      "n": 12,
      "n_symbols": 12,
      "breakout_success_rate": 58.33,
      "breakdown_success_rate": 41.67,
      "sideways_rate": 0.0,
      "forming_rate": 0.0,
      "both_cleared_rate": 41.67,
      "breakout_success_rate_ci95": [
        31.95,
        80.67
      ],
      "breakdown_success_rate_ci95": [
        19.33,
        68.05
      ],
      "sideways_rate_ci95": [
        0.0,
        24.25
      ],
      "forming_rate_ci95": [
        0.0,
        24.25
      ],
      "both_sides_rate": 41.67,
      "expected_hit_rate": 58.33,
      "expected_hit_rate_ci95": [
        31.95,
        80.67
      ],
      "mean_ret_10c": -2.063,
      "median_ret_10c": -0.968,
      "std_ret_10c": 6.717,
      "win_rate_ret_gt0": 50.0,
      "p25_ret_10c": -4.81,
      "p75_ret_10c": 1.86,
      "mean_mfe": 7.493,
      "mean_mae": -6.833,
      "mfe_mae_ratio": 1.097,
      "max_up_natr": {
        "n": 12,
        "mean": 2.808,
        "median": 1.431,
        "p25": 0.992,
        "p75": 2.901
      },
      "max_down_natr": {
        "n": 12,
        "mean": -2.306,
        "median": -1.751,
        "p25": -2.861,
        "p75": -0.709
      },
      "median_max_up_natr": 1.431,
      "median_max_down_natr": -1.751,
      "mean_max_up_natr": 2.808,
      "mean_max_down_natr": -2.306,
      "p25_max_up_natr": 0.992,
      "p75_max_up_natr": 2.901,
      "p25_max_down_natr": -2.861,
      "p75_max_down_natr": -0.709,
      "outcome_natr_moves": {
        "breakout": {
          "n": 7,
          "max_up_natr": {
            "n": 7,
            "mean": 4.261,
            "median": 2.824,
            "p25": 1.718,
            "p75": 3.644
          },
          "max_down_natr": {
            "n": 7,
            "mean": -1.172,
            "median": -0.753,
            "p25": -1.671,
            "p75": -0.528
          }
        },
        "breakdown": {
          "n": 5,
          "max_up_natr": {
            "n": 5,
            "mean": 0.773,
            "median": 0.682,
            "p25": 0.644,
            "p75": 1.096
          },
          "max_down_natr": {
            "n": 5,
            "mean": -3.893,
            "median": -2.94,
            "p25": -3.91,
            "p75": -2.792
          }
        },
        "sideways": {
          "n": 0,
          "max_up_natr": {
            "n": 0,
            "mean": null,
            "median": null,
            "p25": null,
            "p75": null
          },
          "max_down_natr": {
            "n": 0,
            "mean": null,
            "median": null,
            "p25": null,
            "p75": null
          }
        },
        "forming": {
          "n": 0,
          "max_up_natr": {
            "n": 0,
            "mean": null,
            "median": null,
            "p25": null,
            "p75": null
          },
          "max_down_natr": {
            "n": 0,
            "mean": null,
            "median": null,
            "p25": null,
            "p75": null
          }
        }
      },
      "max_up_natr_hist": null,
      "max_down_natr_hist": null,
      "timestamp_min": 1553860800000,
      "timestamp_max": 1781308800000,
      "timestamp_min_iso": "2019-03-29T12:00:00Z",
      "timestamp_max_iso": "2026-06-13T00:00:00Z"
    },
    {
      "pattern_type": "cup_and_handle",
      "pattern_name": "Cup & Handle",
      "timeframe": "1h",
      "bias": "bullish",
      "n": 75,
      "n_symbols": 73,
      "breakout_success_rate": 57.33,
      "breakdown_success_rate": 42.67,
      "sideways_rate": 0.0,
      "forming_rate": 0.0,
      "both_cleared_rate": 34.67,
      "breakout_success_rate_ci95": [
        46.05,
        67.9
      ],
      "breakdown_success_rate_ci95": [
        32.1,
        53.95
      ],
      "sideways_rate_ci95": [
        0.0,
        4.87
      ],
      "forming_rate_ci95": [
        0.0,
        4.87
      ],
      "both_sides_rate": 34.67,
      "expected_hit_rate": 57.33,
      "expected_hit_rate_ci95": [
        46.05,
        67.9
      ],
      "mean_ret_10c": 1.304,
      "median_ret_10c": 0.243,
      "std_ret_10c": 5.176,
      "win_rate_ret_gt0": 52.0,
      "p25_ret_10c": -1.867,
      "p75_ret_10c": 3.322,
      "mean_mfe": 4.919,
      "mean_mae": -3.046,
      "mfe_mae_ratio": 1.615,
      "max_up_natr": {
        "n": 75,
        "mean": 2.995,
        "median": 2.125,
        "p25": 0.818,
        "p75": 4.072,
        "hist": {
          "bin_edges": [
            0.0,
            0.25,
            0.5,
            0.75,
            1.0,
            1.25,
            1.5,
            1.75,
            2.0,
            2.25,
            2.5,
            2.75,
            3.0,
            3.25,
            3.5,
            3.75,
            4.0
          ],
          "counts": [
            6,
            4,
            7,
            9,
            1,
            2,
            4,
            1,
            6,
            5,
            2,
            1,
            2,
            2,
            2,
            21
          ],
          "bin_centers": [
            0.125,
            0.375,
            0.625,
            0.875,
            1.125,
            1.375,
            1.625,
            1.875,
            2.125,
            2.375,
            2.625,
            2.875,
            3.125,
            3.375,
            3.625,
            3.875
          ],
          "clip_lo": 0.0,
          "clip_hi": 4.0
        }
      },
      "max_down_natr": {
        "n": 75,
        "mean": -1.9,
        "median": -1.588,
        "p25": -2.859,
        "p75": -0.854,
        "hist": {
          "bin_edges": [
            -4.0,
            -3.75,
            -3.5,
            -3.25,
            -3.0,
            -2.75,
            -2.5,
            -2.25,
            -2.0,
            -1.75,
            -1.5,
            -1.25,
            -1.0,
            -0.75,
            -0.5,
            -0.25,
            0.0
          ],
          "counts": [
            7,
            4,
            4,
            1,
            4,
            2,
            4,
            2,
            7,
            5,
            4,
            7,
            9,
            5,
            3,
            7
          ],
          "bin_centers": [
            -3.875,
            -3.625,
            -3.375,
            -3.125,
            -2.875,
            -2.625,
            -2.375,
            -2.125,
            -1.875,
            -1.625,
            -1.375,
            -1.125,
            -0.875,
            -0.625,
            -0.375,
            -0.125
          ],
          "clip_lo": -4.0,
          "clip_hi": 0.0
        }
      },
      "median_max_up_natr": 2.125,
      "median_max_down_natr": -1.588,
      "mean_max_up_natr": 2.995,
      "mean_max_down_natr": -1.9,
      "p25_max_up_natr": 0.818,
      "p75_max_up_natr": 4.072,
      "p25_max_down_natr": -2.859,
      "p75_max_down_natr": -0.854,
      "outcome_natr_moves": {
        "breakout": {
          "n": 43,
          "max_up_natr": {
            "n": 43,
            "mean": 3.784,
            "median": 2.596,
            "p25": 1.955,
            "p75": 4.257,
            "hist": {
              "bin_edges": [
                0.0,
                0.25,
                0.5,
                0.75,
                1.0,
                1.25,
                1.5,
                1.75,
                2.0,
                2.25,
                2.5,
                2.75,
                3.0,
                3.25,
                3.5,
                3.75,
                4.0
              ],
              "counts": [
                0,
                0,
                1,
                3,
                1,
                2,
                3,
                1,
                5,
                5,
                1,
                1,
                2,
                0,
                2,
                16
              ],
              "bin_centers": [
                0.125,
                0.375,
                0.625,
                0.875,
                1.125,
                1.375,
                1.625,
                1.875,
                2.125,
                2.375,
                2.625,
                2.875,
                3.125,
                3.375,
                3.625,
                3.875
              ],
              "clip_lo": 0.0,
              "clip_hi": 4.0
            }
          },
          "max_down_natr": {
            "n": 43,
            "mean": -1.448,
            "median": -0.953,
            "p25": -1.884,
            "p75": -0.527,
            "hist": {
              "bin_edges": [
                -4.0,
                -3.75,
                -3.5,
                -3.25,
                -3.0,
                -2.75,
                -2.5,
                -2.25,
                -2.0,
                -1.75,
                -1.5,
                -1.25,
                -1.0,
                -0.75,
                -0.5,
                -0.25,
                0.0
              ],
              "counts": [
                3,
                0,
                1,
                0,
                2,
                1,
                1,
                1,
                4,
                2,
                2,
                4,
                7,
                5,
                3,
                7
              ],
              "bin_centers": [
                -3.875,
                -3.625,
                -3.375,
                -3.125,
                -2.875,
                -2.625,
                -2.375,
                -2.125,
                -1.875,
                -1.625,
                -1.375,
                -1.125,
                -0.875,
                -0.625,
                -0.375,
                -0.125
              ],
              "clip_lo": -4.0,
              "clip_hi": 0.0
            }
          }
        },
        "breakdown": {
          "n": 32,
          "max_up_natr": {
            "n": 32,
            "mean": 1.936,
            "median": 0.719,
            "p25": 0.345,
            "p75": 2.212,
            "hist": {
              "bin_edges": [
                0.0,
                0.25,
                0.5,
                0.75,
                1.0,
                1.25,
                1.5,
                1.75,
                2.0,
                2.25,
                2.5,
                2.75,
                3.0,
                3.25,
                3.5,
                3.75,
                4.0
              ],
              "counts": [
                6,
                4,
                6,
                6,
                0,
                0,
                1,
                0,
                1,
                0,
                1,
                0,
                0,
                2,
                0,
                5
              ],
              "bin_centers": [
                0.125,
                0.375,
                0.625,
                0.875,
                1.125,
                1.375,
                1.625,
                1.875,
                2.125,
                2.375,
                2.625,
                2.875,
                3.125,
                3.375,
                3.625,
                3.875
              ],
              "clip_lo": 0.0,
              "clip_hi": 4.0
            }
          },
          "max_down_natr": {
            "n": 32,
            "mean": -2.509,
            "median": -2.313,
            "p25": -3.434,
            "p75": -1.586,
            "hist": {
              "bin_edges": [
                -4.0,
                -3.75,
                -3.5,
                -3.25,
                -3.0,
                -2.75,
                -2.5,
                -2.25,
                -2.0,
                -1.75,
                -1.5,
                -1.25,
                -1.0,
                -0.75,
                -0.5,
                -0.25,
                0.0
              ],
              "counts": [
                4,
                4,
                3,
                1,
                2,
                1,
                3,
                1,
                3,
                3,
                2,
                3,
                2,
                0,
                0,
                0
              ],
              "bin_centers": [
                -3.875,
                -3.625,
                -3.375,
                -3.125,
                -2.875,
                -2.625,
                -2.375,
                -2.125,
                -1.875,
                -1.625,
                -1.375,
                -1.125,
                -0.875,
                -0.625,
                -0.375,
                -0.125
              ],
              "clip_lo": -4.0,
              "clip_hi": 0.0
            }
          }
        },
        "sideways": {
          "n": 0,
          "max_up_natr": {
            "n": 0,
            "mean": null,
            "median": null,
            "p25": null,
            "p75": null
          },
          "max_down_natr": {
            "n": 0,
            "mean": null,
            "median": null,
            "p25": null,
            "p75": null
          }
        },
        "forming": {
          "n": 0,
          "max_up_natr": {
            "n": 0,
            "mean": null,
            "median": null,
            "p25": null,
            "p75": null
          },
          "max_down_natr": {
            "n": 0,
            "mean": null,
            "median": null,
            "p25": null,
            "p75": null
          }
        }
      },
      "max_up_natr_hist": {
        "bin_edges": [
          0.0,
          0.25,
          0.5,
          0.75,
          1.0,
          1.25,
          1.5,
          1.75,
          2.0,
          2.25,
          2.5,
          2.75,
          3.0,
          3.25,
          3.5,
          3.75,
          4.0
        ],
        "counts": [
          6,
          4,
          7,
          9,
          1,
          2,
          4,
          1,
          6,
          5,
          2,
          1,
          2,
          2,
          2,
          21
        ],
        "bin_centers": [
          0.125,
          0.375,
          0.625,
          0.875,
          1.125,
          1.375,
          1.625,
          1.875,
          2.125,
          2.375,
          2.625,
          2.875,
          3.125,
          3.375,
          3.625,
          3.875
        ],
        "clip_lo": 0.0,
        "clip_hi": 4.0
      },
      "max_down_natr_hist": {
        "bin_edges": [
          -4.0,
          -3.75,
          -3.5,
          -3.25,
          -3.0,
          -2.75,
          -2.5,
          -2.25,
          -2.0,
          -1.75,
          -1.5,
          -1.25,
          -1.0,
          -0.75,
          -0.5,
          -0.25,
          0.0
        ],
        "counts": [
          7,
          4,
          4,
          1,
          4,
          2,
          4,
          2,
          7,
          5,
          4,
          7,
          9,
          5,
          3,
          7
        ],
        "bin_centers": [
          -3.875,
          -3.625,
          -3.375,
          -3.125,
          -2.875,
          -2.625,
          -2.375,
          -2.125,
          -1.875,
          -1.625,
          -1.375,
          -1.125,
          -0.875,
          -0.625,
          -0.375,
          -0.125
        ],
        "clip_lo": -4.0,
        "clip_hi": 0.0
      },
      "timestamp_min": 1597950000000,
      "timestamp_max": 1783188000000,
      "timestamp_min_iso": "2020-08-20T19:00:00Z",
      "timestamp_max_iso": "2026-07-04T18:00:00Z"
    },
    {
      "pattern_type": "channel_ascending",
      "pattern_name": "Ascending Channel",
      "timeframe": "4h",
      "bias": "bearish",
      "n": 112,
      "n_symbols": 96,
      "breakout_success_rate": 42.86,
      "breakdown_success_rate": 56.25,
      "sideways_rate": 0.89,
      "forming_rate": 0.0,
      "both_cleared_rate": 49.11,
      "breakout_success_rate_ci95": [
        34.08,
        52.11
      ],
      "breakdown_success_rate_ci95": [
        47.01,
        65.08
      ],
      "sideways_rate_ci95": [
        0.16,
        4.88
      ],
      "forming_rate_ci95": [
        0.0,
        3.32
      ],
      "both_sides_rate": 49.11,
      "expected_hit_rate": 56.25,
      "expected_hit_rate_ci95": [
        47.01,
        65.08
      ],
      "mean_ret_10c": 0.331,
      "median_ret_10c": -0.355,
      "std_ret_10c": 8.923,
      "win_rate_ret_gt0": 48.21,
      "p25_ret_10c": -4.551,
      "p75_ret_10c": 5.62,
      "mean_mfe": 9.556,
      "mean_mae": -7.55,
      "mfe_mae_ratio": 1.266,
      "max_up_natr": {
        "n": 112,
        "mean": 3.714,
        "median": 2.424,
        "p25": 0.632,
        "p75": 5.461,
        "hist": {
          "bin_edges": [
            0.0,
            0.25,
            0.5,
            0.75,
            1.0,
            1.25,
            1.5,
            1.75,
            2.0,
            2.25,
            2.5,
            2.75,
            3.0,
            3.25,
            3.5,
            3.75,
            4.0
          ],
          "counts": [
            20,
            6,
            3,
            5,
            4,
            1,
            6,
            5,
            5,
            1,
            2,
            2,
            2,
            1,
            1,
            48
          ],
          "bin_centers": [
            0.125,
            0.375,
            0.625,
            0.875,
            1.125,
            1.375,
            1.625,
            1.875,
            2.125,
            2.375,
            2.625,
            2.875,
            3.125,
            3.375,
            3.625,
            3.875
          ],
          "clip_lo": 0.0,
          "clip_hi": 4.0
        }
      },
      "max_down_natr": {
        "n": 112,
        "mean": -2.876,
        "median": -2.463,
        "p25": -3.87,
        "p75": -1.223,
        "hist": {
          "bin_edges": [
            -4.0,
            -3.75,
            -3.5,
            -3.25,
            -3.0,
            -2.75,
            -2.5,
            -2.25,
            -2.0,
            -1.75,
            -1.5,
            -1.25,
            -1.0,
            -0.75,
            -0.5,
            -0.25,
            0.0
          ],
          "counts": [
            32,
            4,
            2,
            5,
            4,
            7,
            7,
            13,
            3,
            4,
            2,
            5,
            5,
            6,
            4,
            9
          ],
          "bin_centers": [
            -3.875,
            -3.625,
            -3.375,
            -3.125,
            -2.875,
            -2.625,
            -2.375,
            -2.125,
            -1.875,
            -1.625,
            -1.375,
            -1.125,
            -0.875,
            -0.625,
            -0.375,
            -0.125
          ],
          "clip_lo": -4.0,
          "clip_hi": 0.0
        }
      },
      "median_max_up_natr": 2.424,
      "median_max_down_natr": -2.463,
      "mean_max_up_natr": 3.714,
      "mean_max_down_natr": -2.876,
      "p25_max_up_natr": 0.632,
      "p75_max_up_natr": 5.461,
      "p25_max_down_natr": -3.87,
      "p75_max_down_natr": -1.223,
      "outcome_natr_moves": {
        "breakout": {
          "n": 48,
          "max_up_natr": {
            "n": 48,
            "mean": 5.991,
            "median": 5.424,
            "p25": 4.153,
            "p75": 7.701,
            "hist": {
              "bin_edges": [
                0.0,
                0.25,
                0.5,
                0.75,
                1.0,
                1.25,
                1.5,
                1.75,
                2.0,
                2.25,
                2.5,
                2.75,
                3.0,
                3.25,
                3.5,
                3.75,
                4.0
              ],
              "counts": [
                0,
                0,
                0,
                0,
                0,
                0,
                2,
                1,
                2,
                0,
                1,
                1,
                1,
                1,
                1,
                38
              ],
              "bin_centers": [
                0.125,
                0.375,
                0.625,
                0.875,
                1.125,
                1.375,
                1.625,
                1.875,
                2.125,
                2.375,
                2.625,
                2.875,
                3.125,
                3.375,
                3.625,
                3.875
              ],
              "clip_lo": 0.0,
              "clip_hi": 4.0
            }
          },
          "max_down_natr": {
            "n": 48,
            "mean": -1.947,
            "median": -1.609,
            "p25": -2.92,
            "p75": -0.43,
            "hist": {
              "bin_edges": [
                -4.0,
                -3.75,
                -3.5,
                -3.25,
                -3.0,
                -2.75,
                -2.5,
                -2.25,
                -2.0,
                -1.75,
                -1.5,
                -1.25,
                -1.0,
                -0.75,
                -0.5,
                -0.25,
                0.0
              ],
              "counts": [
                7,
                1,
                0,
                3,
                2,
                1,
                1,
                6,
                3,
                0,
                1,
                4,
                2,
                4,
                4,
                9
              ],
              "bin_centers": [
                -3.875,
                -3.625,
                -3.375,
                -3.125,
                -2.875,
                -2.625,
                -2.375,
                -2.125,
                -1.875,
                -1.625,
                -1.375,
                -1.125,
                -0.875,
                -0.625,
                -0.375,
                -0.125
              ],
              "clip_lo": -4.0,
              "clip_hi": 0.0
            }
          }
        },
        "breakdown": {
          "n": 63,
          "max_up_natr": {
            "n": 63,
            "mean": 2.025,
            "median": 0.855,
            "p25": 0.144,
            "p75": 2.101,
            "hist": {
              "bin_edges": [
                0.0,
                0.25,
                0.5,
                0.75,
                1.0,
                1.25,
                1.5,
                1.75,
                2.0,
                2.25,
                2.5,
                2.75,
                3.0,
                3.25,
                3.5,
                3.75,
                4.0
              ],
              "counts": [
                20,
                6,
                3,
                4,
                4,
                1,
                4,
                4,
                3,
                1,
                1,
                1,
                1,
                0,
                0,
                10
              ],
              "bin_centers": [
                0.125,
                0.375,
                0.625,
                0.875,
                1.125,
                1.375,
                1.625,
                1.875,
                2.125,
                2.375,
                2.625,
                2.875,
                3.125,
                3.375,
                3.625,
                3.875
              ],
              "clip_lo": 0.0,
              "clip_hi": 4.0
            }
          },
          "max_down_natr": {
            "n": 63,
            "mean": -3.62,
            "median": -3.149,
            "p25": -4.343,
            "p75": -2.222,
            "hist": {
              "bin_edges": [
                -4.0,
                -3.75,
                -3.5,
                -3.25,
                -3.0,
                -2.75,
                -2.5,
                -2.25,
                -2.0,
                -1.75,
                -1.5,
                -1.25,
                -1.0,
                -0.75,
                -0.5,
                -0.25,
                0.0
              ],
              "counts": [
                25,
                3,
                2,
                2,
                2,
                6,
                6,
                7,
                0,
                4,
                1,
                1,
                3,
                1,
                0,
                0
              ],
              "bin_centers": [
                -3.875,
                -3.625,
                -3.375,
                -3.125,
                -2.875,
                -2.625,
                -2.375,
                -2.125,
                -1.875,
                -1.625,
                -1.375,
                -1.125,
                -0.875,
                -0.625,
                -0.375,
                -0.125
              ],
              "clip_lo": -4.0,
              "clip_hi": 0.0
            }
          }
        },
        "sideways": {
          "n": 1,
          "max_up_natr": {
            "n": 1,
            "mean": 0.874,
            "median": 0.874,
            "p25": 0.874,
            "p75": 0.874
          },
          "max_down_natr": {
            "n": 1,
            "mean": -0.651,
            "median": -0.651,
            "p25": -0.651,
            "p75": -0.651
          }
        },
        "forming": {
          "n": 0,
          "max_up_natr": {
            "n": 0,
            "mean": null,
            "median": null,
            "p25": null,
            "p75": null
          },
          "max_down_natr": {
            "n": 0,
            "mean": null,
            "median": null,
            "p25": null,
            "p75": null
          }
        }
      },
      "max_up_natr_hist": {
        "bin_edges": [
          0.0,
          0.25,
          0.5,
          0.75,
          1.0,
          1.25,
          1.5,
          1.75,
          2.0,
          2.25,
          2.5,
          2.75,
          3.0,
          3.25,
          3.5,
          3.75,
          4.0
        ],
        "counts": [
          20,
          6,
          3,
          5,
          4,
          1,
          6,
          5,
          5,
          1,
          2,
          2,
          2,
          1,
          1,
          48
        ],
        "bin_centers": [
          0.125,
          0.375,
          0.625,
          0.875,
          1.125,
          1.375,
          1.625,
          1.875,
          2.125,
          2.375,
          2.625,
          2.875,
          3.125,
          3.375,
          3.625,
          3.875
        ],
        "clip_lo": 0.0,
        "clip_hi": 4.0
      },
      "max_down_natr_hist": {
        "bin_edges": [
          -4.0,
          -3.75,
          -3.5,
          -3.25,
          -3.0,
          -2.75,
          -2.5,
          -2.25,
          -2.0,
          -1.75,
          -1.5,
          -1.25,
          -1.0,
          -0.75,
          -0.5,
          -0.25,
          0.0
        ],
        "counts": [
          32,
          4,
          2,
          5,
          4,
          7,
          7,
          13,
          3,
          4,
          2,
          5,
          5,
          6,
          4,
          9
        ],
        "bin_centers": [
          -3.875,
          -3.625,
          -3.375,
          -3.125,
          -2.875,
          -2.625,
          -2.375,
          -2.125,
          -1.875,
          -1.625,
          -1.375,
          -1.125,
          -0.875,
          -0.625,
          -0.375,
          -0.125
        ],
        "clip_lo": -4.0,
        "clip_hi": 0.0
      },
      "timestamp_min": 1579190400000,
      "timestamp_max": 1779696000000,
      "timestamp_min_iso": "2020-01-16T16:00:00Z",
      "timestamp_max_iso": "2026-05-25T08:00:00Z"
    },
    {
      "pattern_type": "descending_triangle",
      "pattern_name": "Descending Triangle",
      "timeframe": "1d",
      "bias": "bearish",
      "n": 15,
      "n_symbols": 15,
      "breakout_success_rate": 46.67,
      "breakdown_success_rate": 53.33,
      "sideways_rate": 0.0,
      "forming_rate": 0.0,
      "both_cleared_rate": 6.67,
      "breakout_success_rate_ci95": [
        24.81,
        69.88
      ],
      "breakdown_success_rate_ci95": [
        30.12,
        75.19
      ],
      "sideways_rate_ci95": [
        0.0,
        20.39
      ],
      "forming_rate_ci95": [
        0.0,
        20.39
      ],
      "both_sides_rate": 6.67,
      "expected_hit_rate": 53.33,
      "expected_hit_rate_ci95": [
        30.12,
        75.19
      ],
      "mean_ret_10c": -4.488,
      "median_ret_10c": -7.046,
      "std_ret_10c": 24.215,
      "win_rate_ret_gt0": 26.67,
      "p25_ret_10c": -20.044,
      "p75_ret_10c": 1.815,
      "mean_mfe": 14.058,
      "mean_mae": -20.491,
      "mfe_mae_ratio": 0.686,
      "max_up_natr": {
        "n": 15,
        "mean": 1.77,
        "median": 0.628,
        "p25": 0.154,
        "p75": 2.349,
        "hist": {
          "bin_edges": [
            0.0,
            0.25,
            0.5,
            0.75,
            1.0,
            1.25,
            1.5,
            1.75,
            2.0,
            2.25,
            2.5,
            2.75,
            3.0,
            3.25,
            3.5,
            3.75,
            4.0
          ],
          "counts": [
            6,
            0,
            2,
            1,
            1,
            0,
            0,
            1,
            0,
            0,
            0,
            1,
            0,
            0,
            1,
            2
          ],
          "bin_centers": [
            0.125,
            0.375,
            0.625,
            0.875,
            1.125,
            1.375,
            1.625,
            1.875,
            2.125,
            2.375,
            2.625,
            2.875,
            3.125,
            3.375,
            3.625,
            3.875
          ],
          "clip_lo": 0.0,
          "clip_hi": 4.0
        }
      },
      "max_down_natr": {
        "n": 15,
        "mean": -2.124,
        "median": -2.435,
        "p25": -3.372,
        "p75": -0.426,
        "hist": {
          "bin_edges": [
            -4.0,
            -3.75,
            -3.5,
            -3.25,
            -3.0,
            -2.75,
            -2.5,
            -2.25,
            -2.0,
            -1.75,
            -1.5,
            -1.25,
            -1.0,
            -0.75,
            -0.5,
            -0.25,
            0.0
          ],
          "counts": [
            2,
            2,
            0,
            1,
            2,
            0,
            1,
            0,
            1,
            1,
            0,
            0,
            0,
            1,
            1,
            3
          ],
          "bin_centers": [
            -3.875,
            -3.625,
            -3.375,
            -3.125,
            -2.875,
            -2.625,
            -2.375,
            -2.125,
            -1.875,
            -1.625,
            -1.375,
            -1.125,
            -0.875,
            -0.625,
            -0.375,
            -0.125
          ],
          "clip_lo": -4.0,
          "clip_hi": 0.0
        }
      },
      "median_max_up_natr": 0.628,
      "median_max_down_natr": -2.435,
      "mean_max_up_natr": 1.77,
      "mean_max_down_natr": -2.124,
      "p25_max_up_natr": 0.154,
      "p75_max_up_natr": 2.349,
      "p25_max_down_natr": -3.372,
      "p75_max_down_natr": -0.426,
      "outcome_natr_moves": {
        "breakout": {
          "n": 7,
          "max_up_natr": {
            "n": 7,
            "mean": 3.531,
            "median": 2.946,
            "p25": 1.436,
            "p75": 5.119
          },
          "max_down_natr": {
            "n": 7,
            "mean": -0.997,
            "median": -0.275,
            "p25": -1.248,
            "p75": -0.226
          }
        },
        "breakdown": {
          "n": 8,
          "max_up_natr": {
            "n": 8,
            "mean": 0.23,
            "median": 0.154,
            "p25": 0.087,
            "p75": 0.282
          },
          "max_down_natr": {
            "n": 8,
            "mean": -3.109,
            "median": -3.011,
            "p25": -3.756,
            "p75": -2.811
          }
        },
        "sideways": {
          "n": 0,
          "max_up_natr": {
            "n": 0,
            "mean": null,
            "median": null,
            "p25": null,
            "p75": null
          },
          "max_down_natr": {
            "n": 0,
            "mean": null,
            "median": null,
            "p25": null,
            "p75": null
          }
        },
        "forming": {
          "n": 0,
          "max_up_natr": {
            "n": 0,
            "mean": null,
            "median": null,
            "p25": null,
            "p75": null
          },
          "max_down_natr": {
            "n": 0,
            "mean": null,
            "median": null,
            "p25": null,
            "p75": null
          }
        }
      },
      "max_up_natr_hist": {
        "bin_edges": [
          0.0,
          0.25,
          0.5,
          0.75,
          1.0,
          1.25,
          1.5,
          1.75,
          2.0,
          2.25,
          2.5,
          2.75,
          3.0,
          3.25,
          3.5,
          3.75,
          4.0
        ],
        "counts": [
          6,
          0,
          2,
          1,
          1,
          0,
          0,
          1,
          0,
          0,
          0,
          1,
          0,
          0,
          1,
          2
        ],
        "bin_centers": [
          0.125,
          0.375,
          0.625,
          0.875,
          1.125,
          1.375,
          1.625,
          1.875,
          2.125,
          2.375,
          2.625,
          2.875,
          3.125,
          3.375,
          3.625,
          3.875
        ],
        "clip_lo": 0.0,
        "clip_hi": 4.0
      },
      "max_down_natr_hist": {
        "bin_edges": [
          -4.0,
          -3.75,
          -3.5,
          -3.25,
          -3.0,
          -2.75,
          -2.5,
          -2.25,
          -2.0,
          -1.75,
          -1.5,
          -1.25,
          -1.0,
          -0.75,
          -0.5,
          -0.25,
          0.0
        ],
        "counts": [
          2,
          2,
          0,
          1,
          2,
          0,
          1,
          0,
          1,
          1,
          0,
          0,
          0,
          1,
          1,
          3
        ],
        "bin_centers": [
          -3.875,
          -3.625,
          -3.375,
          -3.125,
          -2.875,
          -2.625,
          -2.375,
          -2.125,
          -1.875,
          -1.625,
          -1.375,
          -1.125,
          -0.875,
          -0.625,
          -0.375,
          -0.125
        ],
        "clip_lo": -4.0,
        "clip_hi": 0.0
      },
      "timestamp_min": 1642636800000,
      "timestamp_max": 1775088000000,
      "timestamp_min_iso": "2022-01-20T00:00:00Z",
      "timestamp_max_iso": "2026-04-02T00:00:00Z"
    },
    {
      "pattern_type": "rising_wedge",
      "pattern_name": "Rising Wedge",
      "timeframe": "1d",
      "bias": "bearish",
      "n": 54,
      "n_symbols": 50,
      "breakout_success_rate": 48.15,
      "breakdown_success_rate": 50.0,
      "sideways_rate": 1.85,
      "forming_rate": 0.0,
      "both_cleared_rate": 48.15,
      "breakout_success_rate_ci95": [
        35.39,
        61.15
      ],
      "breakdown_success_rate_ci95": [
        37.11,
        62.89
      ],
      "sideways_rate_ci95": [
        0.33,
        9.77
      ],
      "forming_rate_ci95": [
        0.0,
        6.64
      ],
      "both_sides_rate": 48.15,
      "expected_hit_rate": 50.0,
      "expected_hit_rate_ci95": [
        37.11,
        62.89
      ],
      "mean_ret_10c": 23.505,
      "median_ret_10c": 1.379,
      "std_ret_10c": 87.541,
      "win_rate_ret_gt0": 53.7,
      "p25_ret_10c": -12.736,
      "p75_ret_10c": 31.438,
      "mean_mfe": 55.663,
      "mean_mae": -16.67,
      "mfe_mae_ratio": 3.339,
      "max_up_natr": {
        "n": 54,
        "mean": 6.522,
        "median": 2.707,
        "p25": 1.075,
        "p75": 6.806,
        "hist": {
          "bin_edges": [
            0.0,
            0.25,
            0.5,
            0.75,
            1.0,
            1.25,
            1.5,
            1.75,
            2.0,
            2.25,
            2.5,
            2.75,
            3.0,
            3.25,
            3.5,
            3.75,
            4.0
          ],
          "counts": [
            8,
            2,
            1,
            1,
            3,
            2,
            5,
            0,
            3,
            1,
            1,
            2,
            2,
            0,
            1,
            22
          ],
          "bin_centers": [
            0.125,
            0.375,
            0.625,
            0.875,
            1.125,
            1.375,
            1.625,
            1.875,
            2.125,
            2.375,
            2.625,
            2.875,
            3.125,
            3.375,
            3.625,
            3.875
          ],
          "clip_lo": 0.0,
          "clip_hi": 4.0
        }
      },
      "max_down_natr": {
        "n": 54,
        "mean": -2.257,
        "median": -1.847,
        "p25": -3.299,
        "p75": -0.788,
        "hist": {
          "bin_edges": [
            -4.0,
            -3.75,
            -3.5,
            -3.25,
            -3.0,
            -2.75,
            -2.5,
            -2.25,
            -2.0,
            -1.75,
            -1.5,
            -1.25,
            -1.0,
            -0.75,
            -0.5,
            -0.25,
            0.0
          ],
          "counts": [
            13,
            0,
            3,
            1,
            2,
            4,
            0,
            3,
            2,
            4,
            4,
            2,
            3,
            3,
            3,
            7
          ],
          "bin_centers": [
            -3.875,
            -3.625,
            -3.375,
            -3.125,
            -2.875,
            -2.625,
            -2.375,
            -2.125,
            -1.875,
            -1.625,
            -1.375,
            -1.125,
            -0.875,
            -0.625,
            -0.375,
            -0.125
          ],
          "clip_lo": -4.0,
          "clip_hi": 0.0
        }
      },
      "median_max_up_natr": 2.707,
      "median_max_down_natr": -1.847,
      "mean_max_up_natr": 6.522,
      "mean_max_down_natr": -2.257,
      "p25_max_up_natr": 1.075,
      "p75_max_up_natr": 6.806,
      "p25_max_down_natr": -3.299,
      "p75_max_down_natr": -0.788,
      "outcome_natr_moves": {
        "breakout": {
          "n": 26,
          "max_up_natr": {
            "n": 26,
            "mean": 10.452,
            "median": 5.659,
            "p25": 2.295,
            "p75": 9.23,
            "hist": {
              "bin_edges": [
                0.0,
                0.25,
                0.5,
                0.75,
                1.0,
                1.25,
                1.5,
                1.75,
                2.0,
                2.25,
                2.5,
                2.75,
                3.0,
                3.25,
                3.5,
                3.75,
                4.0
              ],
              "counts": [
                0,
                0,
                0,
                1,
                1,
                1,
                3,
                0,
                1,
                0,
                1,
                1,
                1,
                0,
                0,
                16
              ],
              "bin_centers": [
                0.125,
                0.375,
                0.625,
                0.875,
                1.125,
                1.375,
                1.625,
                1.875,
                2.125,
                2.375,
                2.625,
                2.875,
                3.125,
                3.375,
                3.625,
                3.875
              ],
              "clip_lo": 0.0,
              "clip_hi": 4.0
            }
          },
          "max_down_natr": {
            "n": 26,
            "mean": -1.76,
            "median": -0.889,
            "p25": -3.544,
            "p75": -0.237,
            "hist": {
              "bin_edges": [
                -4.0,
                -3.75,
                -3.5,
                -3.25,
                -3.0,
                -2.75,
                -2.5,
                -2.25,
                -2.0,
                -1.75,
                -1.5,
                -1.25,
                -1.0,
                -0.75,
                -0.5,
                -0.25,
                0.0
              ],
              "counts": [
                7,
                0,
                0,
                0,
                0,
                0,
                0,
                1,
                1,
                1,
                2,
                1,
                0,
                3,
                3,
                7
              ],
              "bin_centers": [
                -3.875,
                -3.625,
                -3.375,
                -3.125,
                -2.875,
                -2.625,
                -2.375,
                -2.125,
                -1.875,
                -1.625,
                -1.375,
                -1.125,
                -0.875,
                -0.625,
                -0.375,
                -0.125
              ],
              "clip_lo": -4.0,
              "clip_hi": 0.0
            }
          }
        },
        "breakdown": {
          "n": 27,
          "max_up_natr": {
            "n": 27,
            "mean": 2.938,
            "median": 1.637,
            "p25": 0.187,
            "p75": 3.337,
            "hist": {
              "bin_edges": [
                0.0,
                0.25,
                0.5,
                0.75,
                1.0,
                1.25,
                1.5,
                1.75,
                2.0,
                2.25,
                2.5,
                2.75,
                3.0,
                3.25,
                3.5,
                3.75,
                4.0
              ],
              "counts": [
                8,
                2,
                1,
                0,
                1,
                1,
                2,
                0,
                2,
                1,
                0,
                1,
                1,
                0,
                1,
                6
              ],
              "bin_centers": [
                0.125,
                0.375,
                0.625,
                0.875,
                1.125,
                1.375,
                1.625,
                1.875,
                2.125,
                2.375,
                2.625,
                2.875,
                3.125,
                3.375,
                3.625,
                3.875
              ],
              "clip_lo": 0.0,
              "clip_hi": 4.0
            }
          },
          "max_down_natr": {
            "n": 27,
            "mean": -2.788,
            "median": -2.679,
            "p25": -3.298,
            "p75": -1.692,
            "hist": {
              "bin_edges": [
                -4.0,
                -3.75,
                -3.5,
                -3.25,
                -3.0,
                -2.75,
                -2.5,
                -2.25,
                -2.0,
                -1.75,
                -1.5,
                -1.25,
                -1.0,
                -0.75,
                -0.5,
                -0.25,
                0.0
              ],
              "counts": [
                6,
                0,
                3,
                1,
                2,
                4,
                0,
                2,
                1,
                3,
                2,
                1,
                2,
                0,
                0,
                0
              ],
              "bin_centers": [
                -3.875,
                -3.625,
                -3.375,
                -3.125,
                -2.875,
                -2.625,
                -2.375,
                -2.125,
                -1.875,
                -1.625,
                -1.375,
                -1.125,
                -0.875,
                -0.625,
                -0.375,
                -0.125
              ],
              "clip_lo": -4.0,
              "clip_hi": 0.0
            }
          }
        },
        "sideways": {
          "n": 1,
          "max_up_natr": {
            "n": 1,
            "mean": 1.124,
            "median": 1.124,
            "p25": 1.124,
            "p75": 1.124
          },
          "max_down_natr": {
            "n": 1,
            "mean": -0.808,
            "median": -0.808,
            "p25": -0.808,
            "p75": -0.808
          }
        },
        "forming": {
          "n": 0,
          "max_up_natr": {
            "n": 0,
            "mean": null,
            "median": null,
            "p25": null,
            "p75": null
          },
          "max_down_natr": {
            "n": 0,
            "mean": null,
            "median": null,
            "p25": null,
            "p75": null
          }
        }
      },
      "max_up_natr_hist": {
        "bin_edges": [
          0.0,
          0.25,
          0.5,
          0.75,
          1.0,
          1.25,
          1.5,
          1.75,
          2.0,
          2.25,
          2.5,
          2.75,
          3.0,
          3.25,
          3.5,
          3.75,
          4.0
        ],
        "counts": [
          8,
          2,
          1,
          1,
          3,
          2,
          5,
          0,
          3,
          1,
          1,
          2,
          2,
          0,
          1,
          22
        ],
        "bin_centers": [
          0.125,
          0.375,
          0.625,
          0.875,
          1.125,
          1.375,
          1.625,
          1.875,
          2.125,
          2.375,
          2.625,
          2.875,
          3.125,
          3.375,
          3.625,
          3.875
        ],
        "clip_lo": 0.0,
        "clip_hi": 4.0
      },
      "max_down_natr_hist": {
        "bin_edges": [
          -4.0,
          -3.75,
          -3.5,
          -3.25,
          -3.0,
          -2.75,
          -2.5,
          -2.25,
          -2.0,
          -1.75,
          -1.5,
          -1.25,
          -1.0,
          -0.75,
          -0.5,
          -0.25,
          0.0
        ],
        "counts": [
          13,
          0,
          3,
          1,
          2,
          4,
          0,
          3,
          2,
          4,
          4,
          2,
          3,
          3,
          3,
          7
        ],
        "bin_centers": [
          -3.875,
          -3.625,
          -3.375,
          -3.125,
          -2.875,
          -2.625,
          -2.375,
          -2.125,
          -1.875,
          -1.625,
          -1.375,
          -1.125,
          -0.875,
          -0.625,
          -0.375,
          -0.125
        ],
        "clip_lo": -4.0,
        "clip_hi": 0.0
      },
      "timestamp_min": 1553472000000,
      "timestamp_max": 1779321600000,
      "timestamp_min_iso": "2019-03-25T00:00:00Z",
      "timestamp_max_iso": "2026-05-21T00:00:00Z"
    },
    {
      "pattern_type": "rsi_regular_bearish_divergence",
      "pattern_name": "RSI Regular Bearish Divergence",
      "timeframe": "1h",
      "bias": "bearish",
      "n": 1980,
      "n_symbols": 507,
      "breakout_success_rate": 50.61,
      "breakdown_success_rate": 49.29,
      "sideways_rate": 0.1,
      "forming_rate": 0.0,
      "both_cleared_rate": 48.64,
      "breakout_success_rate_ci95": [
        48.4,
        52.8
      ],
      "breakdown_success_rate_ci95": [
        47.09,
        51.49
      ],
      "sideways_rate_ci95": [
        0.03,
        0.37
      ],
      "forming_rate_ci95": [
        0.0,
        0.19
      ],
      "both_sides_rate": 48.64,
      "expected_hit_rate": 49.29,
      "expected_hit_rate_ci95": [
        47.09,
        51.49
      ],
      "mean_ret_10c": 0.278,
      "median_ret_10c": -0.386,
      "std_ret_10c": 8.136,
      "win_rate_ret_gt0": 45.96,
      "p25_ret_10c": -3.002,
      "p75_ret_10c": 2.3,
      "mean_mfe": 5.294,
      "mean_mae": -4.259,
      "mfe_mae_ratio": 1.243,
      "max_up_natr": {
        "n": 1980,
        "mean": 2.915,
        "median": 1.901,
        "p25": 0.899,
        "p75": 3.623,
        "hist": {
          "bin_edges": [
            0.0,
            0.25,
            0.5,
            0.75,
            1.0,
            1.25,
            1.5,
            1.75,
            2.0,
            2.25,
            2.5,
            2.75,
            3.0,
            3.25,
            3.5,
            3.75,
            4.0
          ],
          "counts": [
            149,
            126,
            148,
            125,
            130,
            134,
            111,
            117,
            87,
            86,
            68,
            68,
            64,
            46,
            50,
            471
          ],
          "bin_centers": [
            0.125,
            0.375,
            0.625,
            0.875,
            1.125,
            1.375,
            1.625,
            1.875,
            2.125,
            2.375,
            2.625,
            2.875,
            3.125,
            3.375,
            3.625,
            3.875
          ],
          "clip_lo": 0.0,
          "clip_hi": 4.0
        }
      },
      "max_down_natr": {
        "n": 1980,
        "mean": -2.491,
        "median": -2.024,
        "p25": -3.365,
        "p75": -1.053,
        "hist": {
          "bin_edges": [
            -4.0,
            -3.75,
            -3.5,
            -3.25,
            -3.0,
            -2.75,
            -2.5,
            -2.25,
            -2.0,
            -1.75,
            -1.5,
            -1.25,
            -1.0,
            -0.75,
            -0.5,
            -0.25,
            0.0
          ],
          "counts": [
            397,
            59,
            72,
            91,
            84,
            97,
            95,
            105,
            136,
            128,
            113,
            132,
            130,
            109,
            128,
            104
          ],
          "bin_centers": [
            -3.875,
            -3.625,
            -3.375,
            -3.125,
            -2.875,
            -2.625,
            -2.375,
            -2.125,
            -1.875,
            -1.625,
            -1.375,
            -1.125,
            -0.875,
            -0.625,
            -0.375,
            -0.125
          ],
          "clip_lo": -4.0,
          "clip_hi": 0.0
        }
      },
      "median_max_up_natr": 1.901,
      "median_max_down_natr": -2.024,
      "mean_max_up_natr": 2.915,
      "mean_max_down_natr": -2.491,
      "p25_max_up_natr": 0.899,
      "p75_max_up_natr": 3.623,
      "p25_max_down_natr": -3.365,
      "p75_max_down_natr": -1.053,
      "outcome_natr_moves": {
        "breakout": {
          "n": 1002,
          "max_up_natr": {
            "n": 1002,
            "mean": 4.081,
            "median": 2.902,
            "p25": 1.809,
            "p75": 4.718,
            "hist": {
              "bin_edges": [
                0.0,
                0.25,
                0.5,
                0.75,
                1.0,
                1.25,
                1.5,
                1.75,
                2.0,
                2.25,
                2.5,
                2.75,
                3.0,
                3.25,
                3.5,
                3.75,
                4.0
              ],
              "counts": [
                0,
                0,
                0,
                0,
                84,
                82,
                69,
                69,
                58,
                57,
                53,
                44,
                48,
                34,
                35,
                369
              ],
              "bin_centers": [
                0.125,
                0.375,
                0.625,
                0.875,
                1.125,
                1.375,
                1.625,
                1.875,
                2.125,
                2.375,
                2.625,
                2.875,
                3.125,
                3.375,
                3.625,
                3.875
              ],
              "clip_lo": 0.0,
              "clip_hi": 4.0
            }
          },
          "max_down_natr": {
            "n": 1002,
            "mean": -1.76,
            "median": -1.105,
            "p25": -2.499,
            "p75": -0.539,
            "hist": {
              "bin_edges": [
                -4.0,
                -3.75,
                -3.5,
                -3.25,
                -3.0,
                -2.75,
                -2.5,
                -2.25,
                -2.0,
                -1.75,
                -1.5,
                -1.25,
                -1.0,
                -0.75,
                -0.5,
                -0.25,
                0.0
              ],
              "counts": [
                113,
                19,
                22,
                30,
                32,
                35,
                27,
                37,
                49,
                57,
                42,
                70,
                128,
                109,
                128,
                104
              ],
              "bin_centers": [
                -3.875,
                -3.625,
                -3.375,
                -3.125,
                -2.875,
                -2.625,
                -2.375,
                -2.125,
                -1.875,
                -1.625,
                -1.375,
                -1.125,
                -0.875,
                -0.625,
                -0.375,
                -0.125
              ],
              "clip_lo": -4.0,
              "clip_hi": 0.0
            }
          }
        },
        "breakdown": {
          "n": 976,
          "max_up_natr": {
            "n": 976,
            "mean": 1.723,
            "median": 0.885,
            "p25": 0.445,
            "p75": 1.987,
            "hist": {
              "bin_edges": [
                0.0,
                0.25,
                0.5,
                0.75,
                1.0,
                1.25,
                1.5,
                1.75,
                2.0,
                2.25,
                2.5,
                2.75,
                3.0,
                3.25,
                3.5,
                3.75,
                4.0
              ],
              "counts": [
                148,
                126,
                148,
                124,
                46,
                52,
                42,
                48,
                29,
                29,
                15,
                24,
                16,
                12,
                15,
                102
              ],
              "bin_centers": [
                0.125,
                0.375,
                0.625,
                0.875,
                1.125,
                1.375,
                1.625,
                1.875,
                2.125,
                2.375,
                2.625,
                2.875,
                3.125,
                3.375,
                3.625,
                3.875
              ],
              "clip_lo": 0.0,
              "clip_hi": 4.0
            }
          },
          "max_down_natr": {
            "n": 976,
            "mean": -3.245,
            "median": -2.738,
            "p25": -4.037,
            "p75": -1.874,
            "hist": {
              "bin_edges": [
                -4.0,
                -3.75,
                -3.5,
                -3.25,
                -3.0,
                -2.75,
                -2.5,
                -2.25,
                -2.0,
                -1.75,
                -1.5,
                -1.25,
                -1.0,
                -0.75,
                -0.5,
                -0.25,
                0.0
              ],
              "counts": [
                284,
                40,
                50,
                61,
                52,
                62,
                68,
                68,
                87,
                71,
                71,
                62,
                0,
                0,
                0,
                0
              ],
              "bin_centers": [
                -3.875,
                -3.625,
                -3.375,
                -3.125,
                -2.875,
                -2.625,
                -2.375,
                -2.125,
                -1.875,
                -1.625,
                -1.375,
                -1.125,
                -0.875,
                -0.625,
                -0.375,
                -0.125
              ],
              "clip_lo": -4.0,
              "clip_hi": 0.0
            }
          }
        },
        "sideways": {
          "n": 2,
          "max_up_natr": {
            "n": 2,
            "mean": 0.558,
            "median": 0.558,
            "p25": 0.374,
            "p75": 0.742
          },
          "max_down_natr": {
            "n": 2,
            "mean": -0.863,
            "median": -0.863,
            "p25": -0.864,
            "p75": -0.861
          }
        },
        "forming": {
          "n": 0,
          "max_up_natr": {
            "n": 0,
            "mean": null,
            "median": null,
            "p25": null,
            "p75": null
          },
          "max_down_natr": {
            "n": 0,
            "mean": null,
            "median": null,
            "p25": null,
            "p75": null
          }
        }
      },
      "max_up_natr_hist": {
        "bin_edges": [
          0.0,
          0.25,
          0.5,
          0.75,
          1.0,
          1.25,
          1.5,
          1.75,
          2.0,
          2.25,
          2.5,
          2.75,
          3.0,
          3.25,
          3.5,
          3.75,
          4.0
        ],
        "counts": [
          149,
          126,
          148,
          125,
          130,
          134,
          111,
          117,
          87,
          86,
          68,
          68,
          64,
          46,
          50,
          471
        ],
        "bin_centers": [
          0.125,
          0.375,
          0.625,
          0.875,
          1.125,
          1.375,
          1.625,
          1.875,
          2.125,
          2.375,
          2.625,
          2.875,
          3.125,
          3.375,
          3.625,
          3.875
        ],
        "clip_lo": 0.0,
        "clip_hi": 4.0
      },
      "max_down_natr_hist": {
        "bin_edges": [
          -4.0,
          -3.75,
          -3.5,
          -3.25,
          -3.0,
          -2.75,
          -2.5,
          -2.25,
          -2.0,
          -1.75,
          -1.5,
          -1.25,
          -1.0,
          -0.75,
          -0.5,
          -0.25,
          0.0
        ],
        "counts": [
          397,
          59,
          72,
          91,
          84,
          97,
          95,
          105,
          136,
          128,
          113,
          132,
          130,
          109,
          128,
          104
        ],
        "bin_centers": [
          -3.875,
          -3.625,
          -3.375,
          -3.125,
          -2.875,
          -2.625,
          -2.375,
          -2.125,
          -1.875,
          -1.625,
          -1.375,
          -1.125,
          -0.875,
          -0.625,
          -0.375,
          -0.125
        ],
        "clip_lo": -4.0,
        "clip_hi": 0.0
      },
      "timestamp_min": 1580958000000,
      "timestamp_max": 1785322800000,
      "timestamp_min_iso": "2020-02-06T03:00:00Z",
      "timestamp_max_iso": "2026-07-29T11:00:00Z"
    },
    {
      "pattern_type": "rsi_regular_bullish_divergence",
      "pattern_name": "RSI Regular Bullish Divergence",
      "timeframe": "15m",
      "bias": "bullish",
      "n": 633,
      "n_symbols": 382,
      "breakout_success_rate": 48.34,
      "breakdown_success_rate": 51.03,
      "sideways_rate": 0.63,
      "forming_rate": 0.0,
      "both_cleared_rate": 40.6,
      "breakout_success_rate_ci95": [
        44.47,
        52.23
      ],
      "breakdown_success_rate_ci95": [
        47.14,
        54.9
      ],
      "sideways_rate_ci95": [
        0.25,
        1.61
      ],
      "forming_rate_ci95": [
        0.0,
        0.6
      ],
      "both_sides_rate": 40.6,
      "expected_hit_rate": 48.34,
      "expected_hit_rate_ci95": [
        44.47,
        52.23
      ],
      "mean_ret_10c": 0.11,
      "median_ret_10c": -0.016,
      "std_ret_10c": 3.286,
      "win_rate_ret_gt0": 48.82,
      "p25_ret_10c": -1.149,
      "p75_ret_10c": 1.208,
      "mean_mfe": 2.079,
      "mean_mae": -1.907,
      "mfe_mae_ratio": 1.09,
      "max_up_natr": {
        "n": 633,
        "mean": 2.593,
        "median": 1.754,
        "p25": 0.911,
        "p75": 3.279,
        "hist": {
          "bin_edges": [
            0.0,
            0.25,
            0.5,
            0.75,
            1.0,
            1.25,
            1.5,
            1.75,
            2.0,
            2.25,
            2.5,
            2.75,
            3.0,
            3.25,
            3.5,
            3.75,
            4.0
          ],
          "counts": [
            45,
            44,
            42,
            47,
            50,
            38,
            50,
            33,
            37,
            25,
            20,
            20,
            20,
            22,
            12,
            128
          ],
          "bin_centers": [
            0.125,
            0.375,
            0.625,
            0.875,
            1.125,
            1.375,
            1.625,
            1.875,
            2.125,
            2.375,
            2.625,
            2.875,
            3.125,
            3.375,
            3.625,
            3.875
          ],
          "clip_lo": 0.0,
          "clip_hi": 4.0
        }
      },
      "max_down_natr": {
        "n": 633,
        "mean": -2.346,
        "median": -1.662,
        "p25": -3.4,
        "p75": -0.762,
        "hist": {
          "bin_edges": [
            -4.0,
            -3.75,
            -3.5,
            -3.25,
            -3.0,
            -2.75,
            -2.5,
            -2.25,
            -2.0,
            -1.75,
            -1.5,
            -1.25,
            -1.0,
            -0.75,
            -0.5,
            -0.25,
            0.0
          ],
          "counts": [
            131,
            21,
            16,
            19,
            20,
            18,
            21,
            31,
            27,
            37,
            43,
            47,
            44,
            54,
            49,
            55
          ],
          "bin_centers": [
            -3.875,
            -3.625,
            -3.375,
            -3.125,
            -2.875,
            -2.625,
            -2.375,
            -2.125,
            -1.875,
            -1.625,
            -1.375,
            -1.125,
            -0.875,
            -0.625,
            -0.375,
            -0.125
          ],
          "clip_lo": -4.0,
          "clip_hi": 0.0
        }
      },
      "median_max_up_natr": 1.754,
      "median_max_down_natr": -1.662,
      "mean_max_up_natr": 2.593,
      "mean_max_down_natr": -2.346,
      "p25_max_up_natr": 0.911,
      "p75_max_up_natr": 3.279,
      "p25_max_down_natr": -3.4,
      "p75_max_down_natr": -0.762,
      "outcome_natr_moves": {
        "breakout": {
          "n": 306,
          "max_up_natr": {
            "n": 306,
            "mean": 3.31,
            "median": 2.523,
            "p25": 1.679,
            "p75": 3.978,
            "hist": {
              "bin_edges": [
                0.0,
                0.25,
                0.5,
                0.75,
                1.0,
                1.25,
                1.5,
                1.75,
                2.0,
                2.25,
                2.5,
                2.75,
                3.0,
                3.25,
                3.5,
                3.75,
                4.0
              ],
              "counts": [
                0,
                0,
                0,
                0,
                30,
                21,
                36,
                24,
                22,
                17,
                14,
                13,
                16,
                14,
                10,
                89
              ],
              "bin_centers": [
                0.125,
                0.375,
                0.625,
                0.875,
                1.125,
                1.375,
                1.625,
                1.875,
                2.125,
                2.375,
                2.625,
                2.875,
                3.125,
                3.375,
                3.625,
                3.875
              ],
              "clip_lo": 0.0,
              "clip_hi": 4.0
            }
          },
          "max_down_natr": {
            "n": 306,
            "mean": -1.361,
            "median": -0.736,
            "p25": -1.484,
            "p75": -0.419,
            "hist": {
              "bin_edges": [
                -4.0,
                -3.75,
                -3.5,
                -3.25,
                -3.0,
                -2.75,
                -2.5,
                -2.25,
                -2.0,
                -1.75,
                -1.5,
                -1.25,
                -1.0,
                -0.75,
                -0.5,
                -0.25,
                0.0
              ],
              "counts": [
                32,
                4,
                5,
                2,
                2,
                2,
                3,
                7,
                11,
                6,
                19,
                15,
                42,
                52,
                49,
                55
              ],
              "bin_centers": [
                -3.875,
                -3.625,
                -3.375,
                -3.125,
                -2.875,
                -2.625,
                -2.375,
                -2.125,
                -1.875,
                -1.625,
                -1.375,
                -1.125,
                -0.875,
                -0.625,
                -0.375,
                -0.125
              ],
              "clip_lo": -4.0,
              "clip_hi": 0.0
            }
          }
        },
        "breakdown": {
          "n": 323,
          "max_up_natr": {
            "n": 323,
            "mean": 1.934,
            "median": 0.939,
            "p25": 0.465,
            "p75": 2.125,
            "hist": {
              "bin_edges": [
                0.0,
                0.25,
                0.5,
                0.75,
                1.0,
                1.25,
                1.5,
                1.75,
                2.0,
                2.25,
                2.5,
                2.75,
                3.0,
                3.25,
                3.5,
                3.75,
                4.0
              ],
              "counts": [
                45,
                44,
                42,
                43,
                20,
                17,
                14,
                9,
                15,
                8,
                6,
                7,
                4,
                8,
                2,
                39
              ],
              "bin_centers": [
                0.125,
                0.375,
                0.625,
                0.875,
                1.125,
                1.375,
                1.625,
                1.875,
                2.125,
                2.375,
                2.625,
                2.875,
                3.125,
                3.375,
                3.625,
                3.875
              ],
              "clip_lo": 0.0,
              "clip_hi": 4.0
            }
          },
          "max_down_natr": {
            "n": 323,
            "mean": -3.299,
            "median": -2.791,
            "p25": -4.311,
            "p75": -1.708,
            "hist": {
              "bin_edges": [
                -4.0,
                -3.75,
                -3.5,
                -3.25,
                -3.0,
                -2.75,
                -2.5,
                -2.25,
                -2.0,
                -1.75,
                -1.5,
                -1.25,
                -1.0,
                -0.75,
                -0.5,
                -0.25,
                0.0
              ],
              "counts": [
                99,
                17,
                11,
                17,
                18,
                16,
                18,
                24,
                16,
                31,
                24,
                32,
                0,
                0,
                0,
                0
              ],
              "bin_centers": [
                -3.875,
                -3.625,
                -3.375,
                -3.125,
                -2.875,
                -2.625,
                -2.375,
                -2.125,
                -1.875,
                -1.625,
                -1.375,
                -1.125,
                -0.875,
                -0.625,
                -0.375,
                -0.125
              ],
              "clip_lo": -4.0,
              "clip_hi": 0.0
            }
          }
        },
        "sideways": {
          "n": 4,
          "max_up_natr": {
            "n": 4,
            "mean": 0.943,
            "median": 0.944,
            "p25": 0.928,
            "p75": 0.96
          },
          "max_down_natr": {
            "n": 4,
            "mean": -0.801,
            "median": -0.835,
            "p25": -0.94,
            "p75": -0.696
          }
        },
        "forming": {
          "n": 0,
          "max_up_natr": {
            "n": 0,
            "mean": null,
            "median": null,
            "p25": null,
            "p75": null
          },
          "max_down_natr": {
            "n": 0,
            "mean": null,
            "median": null,
            "p25": null,
            "p75": null
          }
        }
      },
      "max_up_natr_hist": {
        "bin_edges": [
          0.0,
          0.25,
          0.5,
          0.75,
          1.0,
          1.25,
          1.5,
          1.75,
          2.0,
          2.25,
          2.5,
          2.75,
          3.0,
          3.25,
          3.5,
          3.75,
          4.0
        ],
        "counts": [
          45,
          44,
          42,
          47,
          50,
          38,
          50,
          33,
          37,
          25,
          20,
          20,
          20,
          22,
          12,
          128
        ],
        "bin_centers": [
          0.125,
          0.375,
          0.625,
          0.875,
          1.125,
          1.375,
          1.625,
          1.875,
          2.125,
          2.375,
          2.625,
          2.875,
          3.125,
          3.375,
          3.625,
          3.875
        ],
        "clip_lo": 0.0,
        "clip_hi": 4.0
      },
      "max_down_natr_hist": {
        "bin_edges": [
          -4.0,
          -3.75,
          -3.5,
          -3.25,
          -3.0,
          -2.75,
          -2.5,
          -2.25,
          -2.0,
          -1.75,
          -1.5,
          -1.25,
          -1.0,
          -0.75,
          -0.5,
          -0.25,
          0.0
        ],
        "counts": [
          131,
          21,
          16,
          19,
          20,
          18,
          21,
          31,
          27,
          37,
          43,
          47,
          44,
          54,
          49,
          55
        ],
        "bin_centers": [
          -3.875,
          -3.625,
          -3.375,
          -3.125,
          -2.875,
          -2.625,
          -2.375,
          -2.125,
          -1.875,
          -1.625,
          -1.375,
          -1.125,
          -0.875,
          -0.625,
          -0.375,
          -0.125
        ],
        "clip_lo": -4.0,
        "clip_hi": 0.0
      },
      "timestamp_min": 1596627000000,
      "timestamp_max": 1785451500000,
      "timestamp_min_iso": "2020-08-05T11:30:00Z",
      "timestamp_max_iso": "2026-07-30T22:45:00Z"
    },
    {
      "pattern_type": "rsi_regular_bearish_divergence",
      "pattern_name": "RSI Regular Bearish Divergence",
      "timeframe": "4h",
      "bias": "bearish",
      "n": 594,
      "n_symbols": 323,
      "breakout_success_rate": 51.52,
      "breakdown_success_rate": 48.15,
      "sideways_rate": 0.33,
      "forming_rate": 0.0,
      "both_cleared_rate": 52.86,
      "breakout_success_rate_ci95": [
        47.5,
        55.51
      ],
      "breakdown_success_rate_ci95": [
        44.15,
        52.17
      ],
      "sideways_rate_ci95": [
        0.09,
        1.22
      ],
      "forming_rate_ci95": [
        0.0,
        0.64
      ],
      "both_sides_rate": 52.86,
      "expected_hit_rate": 48.15,
      "expected_hit_rate_ci95": [
        44.15,
        52.17
      ],
      "mean_ret_10c": 0.398,
      "median_ret_10c": -0.825,
      "std_ret_10c": 13.674,
      "win_rate_ret_gt0": 45.45,
      "p25_ret_10c": -6.326,
      "p75_ret_10c": 5.365,
      "mean_mfe": 11.82,
      "mean_mae": -8.454,
      "mfe_mae_ratio": 1.398,
      "max_up_natr": {
        "n": 594,
        "mean": 3.17,
        "median": 2.114,
        "p25": 1.008,
        "p75": 4.187,
        "hist": {
          "bin_edges": [
            0.0,
            0.25,
            0.5,
            0.75,
            1.0,
            1.25,
            1.5,
            1.75,
            2.0,
            2.25,
            2.5,
            2.75,
            3.0,
            3.25,
            3.5,
            3.75,
            4.0
          ],
          "counts": [
            43,
            38,
            37,
            29,
            29,
            42,
            37,
            29,
            25,
            20,
            28,
            19,
            20,
            12,
            15,
            171
          ],
          "bin_centers": [
            0.125,
            0.375,
            0.625,
            0.875,
            1.125,
            1.375,
            1.625,
            1.875,
            2.125,
            2.375,
            2.625,
            2.875,
            3.125,
            3.375,
            3.625,
            3.875
          ],
          "clip_lo": 0.0,
          "clip_hi": 4.0
        }
      },
      "max_down_natr": {
        "n": 594,
        "mean": -2.411,
        "median": -2.059,
        "p25": -3.295,
        "p75": -1.092,
        "hist": {
          "bin_edges": [
            -4.0,
            -3.75,
            -3.5,
            -3.25,
            -3.0,
            -2.75,
            -2.5,
            -2.25,
            -2.0,
            -1.75,
            -1.5,
            -1.25,
            -1.0,
            -0.75,
            -0.5,
            -0.25,
            0.0
          ],
          "counts": [
            112,
            18,
            21,
            27,
            24,
            31,
            39,
            32,
            44,
            31,
            35,
            45,
            39,
            37,
            34,
            25
          ],
          "bin_centers": [
            -3.875,
            -3.625,
            -3.375,
            -3.125,
            -2.875,
            -2.625,
            -2.375,
            -2.125,
            -1.875,
            -1.625,
            -1.375,
            -1.125,
            -0.875,
            -0.625,
            -0.375,
            -0.125
          ],
          "clip_lo": -4.0,
          "clip_hi": 0.0
        }
      },
      "median_max_up_natr": 2.114,
      "median_max_down_natr": -2.059,
      "mean_max_up_natr": 3.17,
      "mean_max_down_natr": -2.411,
      "p25_max_up_natr": 1.008,
      "p75_max_up_natr": 4.187,
      "p25_max_down_natr": -3.295,
      "p75_max_down_natr": -1.092,
      "outcome_natr_moves": {
        "breakout": {
          "n": 306,
          "max_up_natr": {
            "n": 306,
            "mean": 4.334,
            "median": 3.022,
            "p25": 1.842,
            "p75": 5.157,
            "hist": {
              "bin_edges": [
                0.0,
                0.25,
                0.5,
                0.75,
                1.0,
                1.25,
                1.5,
                1.75,
                2.0,
                2.25,
                2.5,
                2.75,
                3.0,
                3.25,
                3.5,
                3.75,
                4.0
              ],
              "counts": [
                0,
                0,
                0,
                0,
                17,
                29,
                24,
                15,
                22,
                14,
                19,
                12,
                9,
                8,
                11,
                126
              ],
              "bin_centers": [
                0.125,
                0.375,
                0.625,
                0.875,
                1.125,
                1.375,
                1.625,
                1.875,
                2.125,
                2.375,
                2.625,
                2.875,
                3.125,
                3.375,
                3.625,
                3.875
              ],
              "clip_lo": 0.0,
              "clip_hi": 4.0
            }
          },
          "max_down_natr": {
            "n": 306,
            "mean": -1.776,
            "median": -1.274,
            "p25": -2.45,
            "p75": -0.594,
            "hist": {
              "bin_edges": [
                -4.0,
                -3.75,
                -3.5,
                -3.25,
                -3.0,
                -2.75,
                -2.5,
                -2.25,
                -2.0,
                -1.75,
                -1.5,
                -1.25,
                -1.0,
                -0.75,
                -0.5,
                -0.25,
                0.0
              ],
              "counts": [
                35,
                9,
                11,
                8,
                6,
                6,
                11,
                22,
                19,
                10,
                17,
                19,
                37,
                37,
                34,
                25
              ],
              "bin_centers": [
                -3.875,
                -3.625,
                -3.375,
                -3.125,
                -2.875,
                -2.625,
                -2.375,
                -2.125,
                -1.875,
                -1.625,
                -1.375,
                -1.125,
                -0.875,
                -0.625,
                -0.375,
                -0.125
              ],
              "clip_lo": -4.0,
              "clip_hi": 0.0
            }
          }
        },
        "breakdown": {
          "n": 286,
          "max_up_natr": {
            "n": 286,
            "mean": 1.942,
            "median": 0.984,
            "p25": 0.448,
            "p75": 2.745,
            "hist": {
              "bin_edges": [
                0.0,
                0.25,
                0.5,
                0.75,
                1.0,
                1.25,
                1.5,
                1.75,
                2.0,
                2.25,
                2.5,
                2.75,
                3.0,
                3.25,
                3.5,
                3.75,
                4.0
              ],
              "counts": [
                43,
                38,
                36,
                28,
                12,
                13,
                13,
                14,
                3,
                6,
                9,
                7,
                11,
                4,
                4,
                45
              ],
              "bin_centers": [
                0.125,
                0.375,
                0.625,
                0.875,
                1.125,
                1.375,
                1.625,
                1.875,
                2.125,
                2.375,
                2.625,
                2.875,
                3.125,
                3.375,
                3.625,
                3.875
              ],
              "clip_lo": 0.0,
              "clip_hi": 4.0
            }
          },
          "max_down_natr": {
            "n": 286,
            "mean": -3.101,
            "median": -2.651,
            "p25": -3.87,
            "p75": -1.792,
            "hist": {
              "bin_edges": [
                -4.0,
                -3.75,
                -3.5,
                -3.25,
                -3.0,
                -2.75,
                -2.5,
                -2.25,
                -2.0,
                -1.75,
                -1.5,
                -1.25,
                -1.0,
                -0.75,
                -0.5,
                -0.25,
                0.0
              ],
              "counts": [
                77,
                9,
                10,
                19,
                18,
                25,
                28,
                10,
                25,
                21,
                18,
                26,
                0,
                0,
                0,
                0
              ],
              "bin_centers": [
                -3.875,
                -3.625,
                -3.375,
                -3.125,
                -2.875,
                -2.625,
                -2.375,
                -2.125,
                -1.875,
                -1.625,
                -1.375,
                -1.125,
                -0.875,
                -0.625,
                -0.375,
                -0.125
              ],
              "clip_lo": -4.0,
              "clip_hi": 0.0
            }
          }
        },
        "sideways": {
          "n": 2,
          "max_up_natr": {
            "n": 2,
            "mean": 0.791,
            "median": 0.791,
            "p25": 0.756,
            "p75": 0.825
          },
          "max_down_natr": {
            "n": 2,
            "mean": -0.879,
            "median": -0.879,
            "p25": -0.919,
            "p75": -0.839
          }
        },
        "forming": {
          "n": 0,
          "max_up_natr": {
            "n": 0,
            "mean": null,
            "median": null,
            "p25": null,
            "p75": null
          },
          "max_down_natr": {
            "n": 0,
            "mean": null,
            "median": null,
            "p25": null,
            "p75": null
          }
        }
      },
      "max_up_natr_hist": {
        "bin_edges": [
          0.0,
          0.25,
          0.5,
          0.75,
          1.0,
          1.25,
          1.5,
          1.75,
          2.0,
          2.25,
          2.5,
          2.75,
          3.0,
          3.25,
          3.5,
          3.75,
          4.0
        ],
        "counts": [
          43,
          38,
          37,
          29,
          29,
          42,
          37,
          29,
          25,
          20,
          28,
          19,
          20,
          12,
          15,
          171
        ],
        "bin_centers": [
          0.125,
          0.375,
          0.625,
          0.875,
          1.125,
          1.375,
          1.625,
          1.875,
          2.125,
          2.375,
          2.625,
          2.875,
          3.125,
          3.375,
          3.625,
          3.875
        ],
        "clip_lo": 0.0,
        "clip_hi": 4.0
      },
      "max_down_natr_hist": {
        "bin_edges": [
          -4.0,
          -3.75,
          -3.5,
          -3.25,
          -3.0,
          -2.75,
          -2.5,
          -2.25,
          -2.0,
          -1.75,
          -1.5,
          -1.25,
          -1.0,
          -0.75,
          -0.5,
          -0.25,
          0.0
        ],
        "counts": [
          112,
          18,
          21,
          27,
          24,
          31,
          39,
          32,
          44,
          31,
          35,
          45,
          39,
          37,
          34,
          25
        ],
        "bin_centers": [
          -3.875,
          -3.625,
          -3.375,
          -3.125,
          -2.875,
          -2.625,
          -2.375,
          -2.125,
          -1.875,
          -1.625,
          -1.375,
          -1.125,
          -0.875,
          -0.625,
          -0.375,
          -0.125
        ],
        "clip_lo": -4.0,
        "clip_hi": 0.0
      },
      "timestamp_min": 1511582400000,
      "timestamp_max": 1784980800000,
      "timestamp_min_iso": "2017-11-25T04:00:00Z",
      "timestamp_max_iso": "2026-07-25T12:00:00Z"
    },
    {
      "pattern_type": "rsi_regular_bullish_divergence",
      "pattern_name": "RSI Regular Bullish Divergence",
      "timeframe": "1d",
      "bias": "bullish",
      "n": 178,
      "n_symbols": 148,
      "breakout_success_rate": 47.75,
      "breakdown_success_rate": 50.0,
      "sideways_rate": 2.25,
      "forming_rate": 0.0,
      "both_cleared_rate": 29.21,
      "breakout_success_rate_ci95": [
        40.54,
        55.06
      ],
      "breakdown_success_rate_ci95": [
        42.73,
        57.27
      ],
      "sideways_rate_ci95": [
        0.88,
        5.63
      ],
      "forming_rate_ci95": [
        0.0,
        2.11
      ],
      "both_sides_rate": 29.21,
      "expected_hit_rate": 47.75,
      "expected_hit_rate_ci95": [
        40.54,
        55.06
      ],
      "mean_ret_10c": -2.831,
      "median_ret_10c": -3.925,
      "std_ret_10c": 25.818,
      "win_rate_ret_gt0": 41.57,
      "p25_ret_10c": -17.554,
      "p75_ret_10c": 8.326,
      "mean_mfe": 22.358,
      "mean_mae": -19.765,
      "mfe_mae_ratio": 1.131,
      "max_up_natr": {
        "n": 178,
        "mean": 2.36,
        "median": 1.265,
        "p25": 0.721,
        "p75": 2.638,
        "hist": {
          "bin_edges": [
            0.0,
            0.25,
            0.5,
            0.75,
            1.0,
            1.25,
            1.5,
            1.75,
            2.0,
            2.25,
            2.5,
            2.75,
            3.0,
            3.25,
            3.5,
            3.75,
            4.0
          ],
          "counts": [
            22,
            10,
            17,
            20,
            19,
            10,
            9,
            10,
            5,
            9,
            3,
            4,
            4,
            7,
            1,
            28
          ],
          "bin_centers": [
            0.125,
            0.375,
            0.625,
            0.875,
            1.125,
            1.375,
            1.625,
            1.875,
            2.125,
            2.375,
            2.625,
            2.875,
            3.125,
            3.375,
            3.625,
            3.875
          ],
          "clip_lo": 0.0,
          "clip_hi": 4.0
        }
      },
      "max_down_natr": {
        "n": 178,
        "mean": -1.977,
        "median": -1.575,
        "p25": -2.625,
        "p75": -0.665,
        "hist": {
          "bin_edges": [
            -4.0,
            -3.75,
            -3.5,
            -3.25,
            -3.0,
            -2.75,
            -2.5,
            -2.25,
            -2.0,
            -1.75,
            -1.5,
            -1.25,
            -1.0,
            -0.75,
            -0.5,
            -0.25,
            0.0
          ],
          "counts": [
            24,
            9,
            3,
            2,
            5,
            7,
            10,
            9,
            13,
            11,
            13,
            11,
            12,
            14,
            16,
            19
          ],
          "bin_centers": [
            -3.875,
            -3.625,
            -3.375,
            -3.125,
            -2.875,
            -2.625,
            -2.375,
            -2.125,
            -1.875,
            -1.625,
            -1.375,
            -1.125,
            -0.875,
            -0.625,
            -0.375,
            -0.125
          ],
          "clip_lo": -4.0,
          "clip_hi": 0.0
        }
      },
      "median_max_up_natr": 1.265,
      "median_max_down_natr": -1.575,
      "mean_max_up_natr": 2.36,
      "mean_max_down_natr": -1.977,
      "p25_max_up_natr": 0.721,
      "p75_max_up_natr": 2.638,
      "p25_max_down_natr": -2.625,
      "p75_max_down_natr": -0.665,
      "outcome_natr_moves": {
        "breakout": {
          "n": 85,
          "max_up_natr": {
            "n": 85,
            "mean": 3.372,
            "median": 2.125,
            "p25": 1.504,
            "p75": 3.359,
            "hist": {
              "bin_edges": [
                0.0,
                0.25,
                0.5,
                0.75,
                1.0,
                1.25,
                1.5,
                1.75,
                2.0,
                2.25,
                2.5,
                2.75,
                3.0,
                3.25,
                3.5,
                3.75,
                4.0
              ],
              "counts": [
                0,
                0,
                0,
                0,
                13,
                8,
                8,
                9,
                5,
                7,
                2,
                4,
                4,
                4,
                1,
                20
              ],
              "bin_centers": [
                0.125,
                0.375,
                0.625,
                0.875,
                1.125,
                1.375,
                1.625,
                1.875,
                2.125,
                2.375,
                2.625,
                2.875,
                3.125,
                3.375,
                3.625,
                3.875
              ],
              "clip_lo": 0.0,
              "clip_hi": 4.0
            }
          },
          "max_down_natr": {
            "n": 85,
            "mean": -1.101,
            "median": -0.661,
            "p25": -1.373,
            "p75": -0.339,
            "hist": {
              "bin_edges": [
                -4.0,
                -3.75,
                -3.5,
                -3.25,
                -3.0,
                -2.75,
                -2.5,
                -2.25,
                -2.0,
                -1.75,
                -1.5,
                -1.25,
                -1.0,
                -0.75,
                -0.5,
                -0.25,
                0.0
              ],
              "counts": [
                4,
                2,
                0,
                1,
                1,
                0,
                5,
                0,
                1,
                5,
                6,
                3,
                10,
                14,
                16,
                17
              ],
              "bin_centers": [
                -3.875,
                -3.625,
                -3.375,
                -3.125,
                -2.875,
                -2.625,
                -2.375,
                -2.125,
                -1.875,
                -1.625,
                -1.375,
                -1.125,
                -0.875,
                -0.625,
                -0.375,
                -0.125
              ],
              "clip_lo": -4.0,
              "clip_hi": 0.0
            }
          }
        },
        "breakdown": {
          "n": 89,
          "max_up_natr": {
            "n": 89,
            "mean": 1.475,
            "median": 0.729,
            "p25": 0.284,
            "p75": 1.056,
            "hist": {
              "bin_edges": [
                0.0,
                0.25,
                0.5,
                0.75,
                1.0,
                1.25,
                1.5,
                1.75,
                2.0,
                2.25,
                2.5,
                2.75,
                3.0,
                3.25,
                3.5,
                3.75,
                4.0
              ],
              "counts": [
                21,
                10,
                16,
                18,
                6,
                2,
                1,
                1,
                0,
                2,
                1,
                0,
                0,
                3,
                0,
                8
              ],
              "bin_centers": [
                0.125,
                0.375,
                0.625,
                0.875,
                1.125,
                1.375,
                1.625,
                1.875,
                2.125,
                2.375,
                2.625,
                2.875,
                3.125,
                3.375,
                3.625,
                3.875
              ],
              "clip_lo": 0.0,
              "clip_hi": 4.0
            }
          },
          "max_down_natr": {
            "n": 89,
            "mean": -2.881,
            "median": -2.406,
            "p25": -3.664,
            "p75": -1.77,
            "hist": {
              "bin_edges": [
                -4.0,
                -3.75,
                -3.5,
                -3.25,
                -3.0,
                -2.75,
                -2.5,
                -2.25,
                -2.0,
                -1.75,
                -1.5,
                -1.25,
                -1.0,
                -0.75,
                -0.5,
                -0.25,
                0.0
              ],
              "counts": [
                20,
                7,
                3,
                1,
                4,
                7,
                5,
                9,
                12,
                6,
                7,
                8,
                0,
                0,
                0,
                0
              ],
              "bin_centers": [
                -3.875,
                -3.625,
                -3.375,
                -3.125,
                -2.875,
                -2.625,
                -2.375,
                -2.125,
                -1.875,
                -1.625,
                -1.375,
                -1.125,
                -0.875,
                -0.625,
                -0.375,
                -0.125
              ],
              "clip_lo": -4.0,
              "clip_hi": 0.0
            }
          }
        },
        "sideways": {
          "n": 4,
          "max_up_natr": {
            "n": 4,
            "mean": 0.557,
            "median": 0.683,
            "p25": 0.46,
            "p75": 0.78
          },
          "max_down_natr": {
            "n": 4,
            "mean": -0.463,
            "median": -0.457,
            "p25": -0.875,
            "p75": -0.046
          }
        },
        "forming": {
          "n": 0,
          "max_up_natr": {
            "n": 0,
            "mean": null,
            "median": null,
            "p25": null,
            "p75": null
          },
          "max_down_natr": {
            "n": 0,
            "mean": null,
            "median": null,
            "p25": null,
            "p75": null
          }
        }
      },
      "max_up_natr_hist": {
        "bin_edges": [
          0.0,
          0.25,
          0.5,
          0.75,
          1.0,
          1.25,
          1.5,
          1.75,
          2.0,
          2.25,
          2.5,
          2.75,
          3.0,
          3.25,
          3.5,
          3.75,
          4.0
        ],
        "counts": [
          22,
          10,
          17,
          20,
          19,
          10,
          9,
          10,
          5,
          9,
          3,
          4,
          4,
          7,
          1,
          28
        ],
        "bin_centers": [
          0.125,
          0.375,
          0.625,
          0.875,
          1.125,
          1.375,
          1.625,
          1.875,
          2.125,
          2.375,
          2.625,
          2.875,
          3.125,
          3.375,
          3.625,
          3.875
        ],
        "clip_lo": 0.0,
        "clip_hi": 4.0
      },
      "max_down_natr_hist": {
        "bin_edges": [
          -4.0,
          -3.75,
          -3.5,
          -3.25,
          -3.0,
          -2.75,
          -2.5,
          -2.25,
          -2.0,
          -1.75,
          -1.5,
          -1.25,
          -1.0,
          -0.75,
          -0.5,
          -0.25,
          0.0
        ],
        "counts": [
          24,
          9,
          3,
          2,
          5,
          7,
          10,
          9,
          13,
          11,
          13,
          11,
          12,
          14,
          16,
          19
        ],
        "bin_centers": [
          -3.875,
          -3.625,
          -3.375,
          -3.125,
          -2.875,
          -2.625,
          -2.375,
          -2.125,
          -1.875,
          -1.625,
          -1.375,
          -1.125,
          -0.875,
          -0.625,
          -0.375,
          -0.125
        ],
        "clip_lo": -4.0,
        "clip_hi": 0.0
      },
      "timestamp_min": 1528761600000,
      "timestamp_max": 1782259200000,
      "timestamp_min_iso": "2018-06-12T00:00:00Z",
      "timestamp_max_iso": "2026-06-24T00:00:00Z"
    },
    {
      "pattern_type": "rsi_regular_bullish_divergence",
      "pattern_name": "RSI Regular Bullish Divergence",
      "timeframe": "4h",
      "bias": "bullish",
      "n": 735,
      "n_symbols": 374,
      "breakout_success_rate": 47.62,
      "breakdown_success_rate": 52.11,
      "sideways_rate": 0.27,
      "forming_rate": 0.0,
      "both_cleared_rate": 39.32,
      "breakout_success_rate_ci95": [
        44.03,
        51.23
      ],
      "breakdown_success_rate_ci95": [
        48.5,
        55.7
      ],
      "sideways_rate_ci95": [
        0.07,
        0.99
      ],
      "forming_rate_ci95": [
        0.0,
        0.52
      ],
      "both_sides_rate": 39.32,
      "expected_hit_rate": 47.62,
      "expected_hit_rate_ci95": [
        44.03,
        51.23
      ],
      "mean_ret_10c": 0.48,
      "median_ret_10c": 0.162,
      "std_ret_10c": 12.281,
      "win_rate_ret_gt0": 51.02,
      "p25_ret_10c": -5.631,
      "p75_ret_10c": 5.791,
      "mean_mfe": 9.487,
      "mean_mae": -9.526,
      "mfe_mae_ratio": 0.996,
      "max_up_natr": {
        "n": 735,
        "mean": 2.588,
        "median": 1.752,
        "p25": 0.766,
        "p75": 3.236,
        "hist": {
          "bin_edges": [
            0.0,
            0.25,
            0.5,
            0.75,
            1.0,
            1.25,
            1.5,
            1.75,
            2.0,
            2.25,
            2.5,
            2.75,
            3.0,
            3.25,
            3.5,
            3.75,
            4.0
          ],
          "counts": [
            50,
            64,
            67,
            43,
            45,
            56,
            42,
            41,
            36,
            30,
            27,
            23,
            29,
            15,
            14,
            153
          ],
          "bin_centers": [
            0.125,
            0.375,
            0.625,
            0.875,
            1.125,
            1.375,
            1.625,
            1.875,
            2.125,
            2.375,
            2.625,
            2.875,
            3.125,
            3.375,
            3.625,
            3.875
          ],
          "clip_lo": 0.0,
          "clip_hi": 4.0
        }
      },
      "max_down_natr": {
        "n": 735,
        "mean": -2.814,
        "median": -1.883,
        "p25": -3.63,
        "p75": -0.763,
        "hist": {
          "bin_edges": [
            -4.0,
            -3.75,
            -3.5,
            -3.25,
            -3.0,
            -2.75,
            -2.5,
            -2.25,
            -2.0,
            -1.75,
            -1.5,
            -1.25,
            -1.0,
            -0.75,
            -0.5,
            -0.25,
            0.0
          ],
          "counts": [
            171,
            22,
            22,
            11,
            26,
            28,
            37,
            28,
            39,
            35,
            41,
            51,
            43,
            59,
            65,
            57
          ],
          "bin_centers": [
            -3.875,
            -3.625,
            -3.375,
            -3.125,
            -2.875,
            -2.625,
            -2.375,
            -2.125,
            -1.875,
            -1.625,
            -1.375,
            -1.125,
            -0.875,
            -0.625,
            -0.375,
            -0.125
          ],
          "clip_lo": -4.0,
          "clip_hi": 0.0
        }
      },
      "median_max_up_natr": 1.752,
      "median_max_down_natr": -1.883,
      "mean_max_up_natr": 2.588,
      "mean_max_down_natr": -2.814,
      "p25_max_up_natr": 0.766,
      "p75_max_up_natr": 3.236,
      "p25_max_down_natr": -3.63,
      "p75_max_down_natr": -0.763,
      "outcome_natr_moves": {
        "breakout": {
          "n": 350,
          "max_up_natr": {
            "n": 350,
            "mean": 3.532,
            "median": 2.57,
            "p25": 1.71,
            "p75": 4.002,
            "hist": {
              "bin_edges": [
                0.0,
                0.25,
                0.5,
                0.75,
                1.0,
                1.25,
                1.5,
                1.75,
                2.0,
                2.25,
                2.5,
                2.75,
                3.0,
                3.25,
                3.5,
                3.75,
                4.0
              ],
              "counts": [
                0,
                0,
                0,
                0,
                26,
                37,
                30,
                30,
                28,
                20,
                16,
                16,
                23,
                14,
                11,
                99
              ],
              "bin_centers": [
                0.125,
                0.375,
                0.625,
                0.875,
                1.125,
                1.375,
                1.625,
                1.875,
                2.125,
                2.375,
                2.625,
                2.875,
                3.125,
                3.375,
                3.625,
                3.875
              ],
              "clip_lo": 0.0,
              "clip_hi": 4.0
            }
          },
          "max_down_natr": {
            "n": 350,
            "mean": -1.563,
            "median": -0.734,
            "p25": -1.703,
            "p75": -0.353,
            "hist": {
              "bin_edges": [
                -4.0,
                -3.75,
                -3.5,
                -3.25,
                -3.0,
                -2.75,
                -2.5,
                -2.25,
                -2.0,
                -1.75,
                -1.5,
                -1.25,
                -1.0,
                -0.75,
                -0.5,
                -0.25,
                0.0
              ],
              "counts": [
                35,
                5,
                6,
                2,
                5,
                9,
                10,
                5,
                7,
                16,
                13,
                15,
                43,
                57,
                65,
                57
              ],
              "bin_centers": [
                -3.875,
                -3.625,
                -3.375,
                -3.125,
                -2.875,
                -2.625,
                -2.375,
                -2.125,
                -1.875,
                -1.625,
                -1.375,
                -1.125,
                -0.875,
                -0.625,
                -0.375,
                -0.125
              ],
              "clip_lo": -4.0,
              "clip_hi": 0.0
            }
          }
        },
        "breakdown": {
          "n": 383,
          "max_up_natr": {
            "n": 383,
            "mean": 1.737,
            "median": 0.814,
            "p25": 0.421,
            "p75": 2.049,
            "hist": {
              "bin_edges": [
                0.0,
                0.25,
                0.5,
                0.75,
                1.0,
                1.25,
                1.5,
                1.75,
                2.0,
                2.25,
                2.5,
                2.75,
                3.0,
                3.25,
                3.5,
                3.75,
                4.0
              ],
              "counts": [
                50,
                63,
                67,
                42,
                19,
                19,
                12,
                11,
                8,
                10,
                11,
                7,
                6,
                1,
                3,
                54
              ],
              "bin_centers": [
                0.125,
                0.375,
                0.625,
                0.875,
                1.125,
                1.375,
                1.625,
                1.875,
                2.125,
                2.375,
                2.625,
                2.875,
                3.125,
                3.375,
                3.625,
                3.875
              ],
              "clip_lo": 0.0,
              "clip_hi": 4.0
            }
          },
          "max_down_natr": {
            "n": 383,
            "mean": -3.968,
            "median": -2.789,
            "p25": -4.655,
            "p75": -1.831,
            "hist": {
              "bin_edges": [
                -4.0,
                -3.75,
                -3.5,
                -3.25,
                -3.0,
                -2.75,
                -2.5,
                -2.25,
                -2.0,
                -1.75,
                -1.5,
                -1.25,
                -1.0,
                -0.75,
                -0.5,
                -0.25,
                0.0
              ],
              "counts": [
                136,
                17,
                16,
                9,
                21,
                19,
                27,
                23,
                32,
                19,
                28,
                36,
                0,
                0,
                0,
                0
              ],
              "bin_centers": [
                -3.875,
                -3.625,
                -3.375,
                -3.125,
                -2.875,
                -2.625,
                -2.375,
                -2.125,
                -1.875,
                -1.625,
                -1.375,
                -1.125,
                -0.875,
                -0.625,
                -0.375,
                -0.125
              ],
              "clip_lo": -4.0,
              "clip_hi": 0.0
            }
          }
        },
        "sideways": {
          "n": 2,
          "max_up_natr": {
            "n": 2,
            "mean": 0.599,
            "median": 0.599,
            "p25": 0.483,
            "p75": 0.714
          },
          "max_down_natr": {
            "n": 2,
            "mean": -0.637,
            "median": -0.637,
            "p25": -0.653,
            "p75": -0.621
          }
        },
        "forming": {
          "n": 0,
          "max_up_natr": {
            "n": 0,
            "mean": null,
            "median": null,
            "p25": null,
            "p75": null
          },
          "max_down_natr": {
            "n": 0,
            "mean": null,
            "median": null,
            "p25": null,
            "p75": null
          }
        }
      },
      "max_up_natr_hist": {
        "bin_edges": [
          0.0,
          0.25,
          0.5,
          0.75,
          1.0,
          1.25,
          1.5,
          1.75,
          2.0,
          2.25,
          2.5,
          2.75,
          3.0,
          3.25,
          3.5,
          3.75,
          4.0
        ],
        "counts": [
          50,
          64,
          67,
          43,
          45,
          56,
          42,
          41,
          36,
          30,
          27,
          23,
          29,
          15,
          14,
          153
        ],
        "bin_centers": [
          0.125,
          0.375,
          0.625,
          0.875,
          1.125,
          1.375,
          1.625,
          1.875,
          2.125,
          2.375,
          2.625,
          2.875,
          3.125,
          3.375,
          3.625,
          3.875
        ],
        "clip_lo": 0.0,
        "clip_hi": 4.0
      },
      "max_down_natr_hist": {
        "bin_edges": [
          -4.0,
          -3.75,
          -3.5,
          -3.25,
          -3.0,
          -2.75,
          -2.5,
          -2.25,
          -2.0,
          -1.75,
          -1.5,
          -1.25,
          -1.0,
          -0.75,
          -0.5,
          -0.25,
          0.0
        ],
        "counts": [
          171,
          22,
          22,
          11,
          26,
          28,
          37,
          28,
          39,
          35,
          41,
          51,
          43,
          59,
          65,
          57
        ],
        "bin_centers": [
          -3.875,
          -3.625,
          -3.375,
          -3.125,
          -2.875,
          -2.625,
          -2.375,
          -2.125,
          -1.875,
          -1.625,
          -1.375,
          -1.125,
          -0.875,
          -0.625,
          -0.375,
          -0.125
        ],
        "clip_lo": -4.0,
        "clip_hi": 0.0
      },
      "timestamp_min": 1521302400000,
      "timestamp_max": 1784937600000,
      "timestamp_min_iso": "2018-03-17T16:00:00Z",
      "timestamp_max_iso": "2026-07-25T00:00:00Z"
    },
    {
      "pattern_type": "rsi_regular_bullish_divergence",
      "pattern_name": "RSI Regular Bullish Divergence",
      "timeframe": "1h",
      "bias": "bullish",
      "n": 2444,
      "n_symbols": 572,
      "breakout_success_rate": 46.28,
      "breakdown_success_rate": 53.19,
      "sideways_rate": 0.53,
      "forming_rate": 0.0,
      "both_cleared_rate": 43.82,
      "breakout_success_rate_ci95": [
        44.31,
        48.26
      ],
      "breakdown_success_rate_ci95": [
        51.21,
        55.16
      ],
      "sideways_rate_ci95": [
        0.31,
        0.91
      ],
      "forming_rate_ci95": [
        0.0,
        0.16
      ],
      "both_sides_rate": 43.82,
      "expected_hit_rate": 46.28,
      "expected_hit_rate_ci95": [
        44.31,
        48.26
      ],
      "mean_ret_10c": -0.205,
      "median_ret_10c": 0.032,
      "std_ret_10c": 6.41,
      "win_rate_ret_gt0": 50.2,
      "p25_ret_10c": -2.908,
      "p75_ret_10c": 2.759,
      "mean_mfe": 4.217,
      "mean_mae": -4.88,
      "mfe_mae_ratio": 0.864,
      "max_up_natr": {
        "n": 2444,
        "mean": 2.333,
        "median": 1.761,
        "p25": 0.846,
        "p75": 3.154,
        "hist": {
          "bin_edges": [
            0.0,
            0.25,
            0.5,
            0.75,
            1.0,
            1.25,
            1.5,
            1.75,
            2.0,
            2.25,
            2.5,
            2.75,
            3.0,
            3.25,
            3.5,
            3.75,
            4.0
          ],
          "counts": [
            184,
            181,
            166,
            200,
            181,
            156,
            146,
            152,
            131,
            105,
            86,
            82,
            91,
            83,
            59,
            441
          ],
          "bin_centers": [
            0.125,
            0.375,
            0.625,
            0.875,
            1.125,
            1.375,
            1.625,
            1.875,
            2.125,
            2.375,
            2.625,
            2.875,
            3.125,
            3.375,
            3.625,
            3.875
          ],
          "clip_lo": 0.0,
          "clip_hi": 4.0
        }
      },
      "max_down_natr": {
        "n": 2444,
        "mean": -2.842,
        "median": -2.045,
        "p25": -3.669,
        "p75": -0.913,
        "hist": {
          "bin_edges": [
            -4.0,
            -3.75,
            -3.5,
            -3.25,
            -3.0,
            -2.75,
            -2.5,
            -2.25,
            -2.0,
            -1.75,
            -1.5,
            -1.25,
            -1.0,
            -0.75,
            -0.5,
            -0.25,
            0.0
          ],
          "counts": [
            595,
            64,
            77,
            59,
            105,
            111,
            108,
            129,
            130,
            136,
            131,
            144,
            148,
            154,
            155,
            198
          ],
          "bin_centers": [
            -3.875,
            -3.625,
            -3.375,
            -3.125,
            -2.875,
            -2.625,
            -2.375,
            -2.125,
            -1.875,
            -1.625,
            -1.375,
            -1.125,
            -0.875,
            -0.625,
            -0.375,
            -0.125
          ],
          "clip_lo": -4.0,
          "clip_hi": 0.0
        }
      },
      "median_max_up_natr": 1.761,
      "median_max_down_natr": -2.045,
      "mean_max_up_natr": 2.333,
      "mean_max_down_natr": -2.842,
      "p25_max_up_natr": 0.846,
      "p75_max_up_natr": 3.154,
      "p25_max_down_natr": -3.669,
      "p75_max_down_natr": -0.913,
      "outcome_natr_moves": {
        "breakout": {
          "n": 1131,
          "max_up_natr": {
            "n": 1131,
            "mean": 3.234,
            "median": 2.655,
            "p25": 1.756,
            "p75": 4.085,
            "hist": {
              "bin_edges": [
                0.0,
                0.25,
                0.5,
                0.75,
                1.0,
                1.25,
                1.5,
                1.75,
                2.0,
                2.25,
                2.5,
                2.75,
                3.0,
                3.25,
                3.5,
                3.75,
                4.0
              ],
              "counts": [
                0,
                0,
                0,
                0,
                108,
                88,
                84,
                87,
                86,
                75,
                54,
                59,
                66,
                53,
                43,
                328
              ],
              "bin_centers": [
                0.125,
                0.375,
                0.625,
                0.875,
                1.125,
                1.375,
                1.625,
                1.875,
                2.125,
                2.375,
                2.625,
                2.875,
                3.125,
                3.375,
                3.625,
                3.875
              ],
              "clip_lo": 0.0,
              "clip_hi": 4.0
            }
          },
          "max_down_natr": {
            "n": 1131,
            "mean": -1.671,
            "median": -0.843,
            "p25": -2.194,
            "p75": -0.389,
            "hist": {
              "bin_edges": [
                -4.0,
                -3.75,
                -3.5,
                -3.25,
                -3.0,
                -2.75,
                -2.5,
                -2.25,
                -2.0,
                -1.75,
                -1.5,
                -1.25,
                -1.0,
                -0.75,
                -0.5,
                -0.25,
                0.0
              ],
              "counts": [
                133,
                20,
                14,
                15,
                26,
                34,
                30,
                37,
                39,
                48,
                43,
                50,
                139,
                151,
                154,
                198
              ],
              "bin_centers": [
                -3.875,
                -3.625,
                -3.375,
                -3.125,
                -2.875,
                -2.625,
                -2.375,
                -2.125,
                -1.875,
                -1.625,
                -1.375,
                -1.125,
                -0.875,
                -0.625,
                -0.375,
                -0.125
              ],
              "clip_lo": -4.0,
              "clip_hi": 0.0
            }
          }
        },
        "breakdown": {
          "n": 1300,
          "max_up_natr": {
            "n": 1300,
            "mean": 1.564,
            "median": 0.915,
            "p25": 0.448,
            "p75": 1.943,
            "hist": {
              "bin_edges": [
                0.0,
                0.25,
                0.5,
                0.75,
                1.0,
                1.25,
                1.5,
                1.75,
                2.0,
                2.25,
                2.5,
                2.75,
                3.0,
                3.25,
                3.5,
                3.75,
                4.0
              ],
              "counts": [
                184,
                181,
                162,
                191,
                73,
                68,
                62,
                65,
                45,
                30,
                32,
                23,
                25,
                30,
                16,
                113
              ],
              "bin_centers": [
                0.125,
                0.375,
                0.625,
                0.875,
                1.125,
                1.375,
                1.625,
                1.875,
                2.125,
                2.375,
                2.625,
                2.875,
                3.125,
                3.375,
                3.625,
                3.875
              ],
              "clip_lo": 0.0,
              "clip_hi": 4.0
            }
          },
          "max_down_natr": {
            "n": 1300,
            "mean": -3.882,
            "median": -2.877,
            "p25": -4.471,
            "p75": -1.9,
            "hist": {
              "bin_edges": [
                -4.0,
                -3.75,
                -3.5,
                -3.25,
                -3.0,
                -2.75,
                -2.5,
                -2.25,
                -2.0,
                -1.75,
                -1.5,
                -1.25,
                -1.0,
                -0.75,
                -0.5,
                -0.25,
                0.0
              ],
              "counts": [
                462,
                44,
                63,
                44,
                79,
                77,
                78,
                92,
                91,
                88,
                88,
                94,
                0,
                0,
                0,
                0
              ],
              "bin_centers": [
                -3.875,
                -3.625,
                -3.375,
                -3.125,
                -2.875,
                -2.625,
                -2.375,
                -2.125,
                -1.875,
                -1.625,
                -1.375,
                -1.125,
                -0.875,
                -0.625,
                -0.375,
                -0.125
              ],
              "clip_lo": -4.0,
              "clip_hi": 0.0
            }
          }
        },
        "sideways": {
          "n": 13,
          "max_up_natr": {
            "n": 13,
            "mean": 0.815,
            "median": 0.845,
            "p25": 0.709,
            "p75": 0.899
          },
          "max_down_natr": {
            "n": 13,
            "mean": -0.772,
            "median": -0.796,
            "p25": -0.868,
            "p75": -0.706
          }
        },
        "forming": {
          "n": 0,
          "max_up_natr": {
            "n": 0,
            "mean": null,
            "median": null,
            "p25": null,
            "p75": null
          },
          "max_down_natr": {
            "n": 0,
            "mean": null,
            "median": null,
            "p25": null,
            "p75": null
          }
        }
      },
      "max_up_natr_hist": {
        "bin_edges": [
          0.0,
          0.25,
          0.5,
          0.75,
          1.0,
          1.25,
          1.5,
          1.75,
          2.0,
          2.25,
          2.5,
          2.75,
          3.0,
          3.25,
          3.5,
          3.75,
          4.0
        ],
        "counts": [
          184,
          181,
          166,
          200,
          181,
          156,
          146,
          152,
          131,
          105,
          86,
          82,
          91,
          83,
          59,
          441
        ],
        "bin_centers": [
          0.125,
          0.375,
          0.625,
          0.875,
          1.125,
          1.375,
          1.625,
          1.875,
          2.125,
          2.375,
          2.625,
          2.875,
          3.125,
          3.375,
          3.625,
          3.875
        ],
        "clip_lo": 0.0,
        "clip_hi": 4.0
      },
      "max_down_natr_hist": {
        "bin_edges": [
          -4.0,
          -3.75,
          -3.5,
          -3.25,
          -3.0,
          -2.75,
          -2.5,
          -2.25,
          -2.0,
          -1.75,
          -1.5,
          -1.25,
          -1.0,
          -0.75,
          -0.5,
          -0.25,
          0.0
        ],
        "counts": [
          595,
          64,
          77,
          59,
          105,
          111,
          108,
          129,
          130,
          136,
          131,
          144,
          148,
          154,
          155,
          198
        ],
        "bin_centers": [
          -3.875,
          -3.625,
          -3.375,
          -3.125,
          -2.875,
          -2.625,
          -2.375,
          -2.125,
          -1.875,
          -1.625,
          -1.375,
          -1.125,
          -0.875,
          -0.625,
          -0.375,
          -0.125
        ],
        "clip_lo": -4.0,
        "clip_hi": 0.0
      },
      "timestamp_min": 1582412400000,
      "timestamp_max": 1785420000000,
      "timestamp_min_iso": "2020-02-22T23:00:00Z",
      "timestamp_max_iso": "2026-07-30T14:00:00Z"
    },
    {
      "pattern_type": "rsi_regular_bearish_divergence",
      "pattern_name": "RSI Regular Bearish Divergence",
      "timeframe": "1d",
      "bias": "bearish",
      "n": 55,
      "n_symbols": 46,
      "breakout_success_rate": 54.55,
      "breakdown_success_rate": 45.45,
      "sideways_rate": 0.0,
      "forming_rate": 0.0,
      "both_cleared_rate": 65.45,
      "breakout_success_rate_ci95": [
        41.52,
        66.97
      ],
      "breakdown_success_rate_ci95": [
        33.03,
        58.48
      ],
      "sideways_rate_ci95": [
        0.0,
        6.53
      ],
      "forming_rate_ci95": [
        0.0,
        6.53
      ],
      "both_sides_rate": 65.45,
      "expected_hit_rate": 45.45,
      "expected_hit_rate_ci95": [
        33.03,
        58.48
      ],
      "mean_ret_10c": 4.431,
      "median_ret_10c": -4.451,
      "std_ret_10c": 47.41,
      "win_rate_ret_gt0": 38.18,
      "p25_ret_10c": -19.758,
      "p75_ret_10c": 8.993,
      "mean_mfe": 38.999,
      "mean_mae": -21.604,
      "mfe_mae_ratio": 1.805,
      "max_up_natr": {
        "n": 55,
        "mean": 4.301,
        "median": 2.73,
        "p25": 1.225,
        "p75": 4.91,
        "hist": {
          "bin_edges": [
            0.0,
            0.25,
            0.5,
            0.75,
            1.0,
            1.25,
            1.5,
            1.75,
            2.0,
            2.25,
            2.5,
            2.75,
            3.0,
            3.25,
            3.5,
            3.75,
            4.0
          ],
          "counts": [
            2,
            5,
            3,
            2,
            4,
            1,
            3,
            1,
            2,
            3,
            2,
            6,
            1,
            1,
            2,
            17
          ],
          "bin_centers": [
            0.125,
            0.375,
            0.625,
            0.875,
            1.125,
            1.375,
            1.625,
            1.875,
            2.125,
            2.375,
            2.625,
            2.875,
            3.125,
            3.375,
            3.625,
            3.875
          ],
          "clip_lo": 0.0,
          "clip_hi": 4.0
        }
      },
      "max_down_natr": {
        "n": 55,
        "mean": -2.513,
        "median": -2.267,
        "p25": -3.27,
        "p75": -1.34,
        "hist": {
          "bin_edges": [
            -4.0,
            -3.75,
            -3.5,
            -3.25,
            -3.0,
            -2.75,
            -2.5,
            -2.25,
            -2.0,
            -1.75,
            -1.5,
            -1.25,
            -1.0,
            -0.75,
            -0.5,
            -0.25,
            0.0
          ],
          "counts": [
            10,
            2,
            2,
            4,
            4,
            3,
            4,
            3,
            2,
            5,
            4,
            5,
            1,
            5,
            0,
            1
          ],
          "bin_centers": [
            -3.875,
            -3.625,
            -3.375,
            -3.125,
            -2.875,
            -2.625,
            -2.375,
            -2.125,
            -1.875,
            -1.625,
            -1.375,
            -1.125,
            -0.875,
            -0.625,
            -0.375,
            -0.125
          ],
          "clip_lo": -4.0,
          "clip_hi": 0.0
        }
      },
      "median_max_up_natr": 2.73,
      "median_max_down_natr": -2.267,
      "mean_max_up_natr": 4.301,
      "mean_max_down_natr": -2.513,
      "p25_max_up_natr": 1.225,
      "p75_max_up_natr": 4.91,
      "p25_max_down_natr": -3.27,
      "p75_max_down_natr": -1.34,
      "outcome_natr_moves": {
        "breakout": {
          "n": 30,
          "max_up_natr": {
            "n": 30,
            "mean": 4.727,
            "median": 3.178,
            "p25": 1.894,
            "p75": 5.608,
            "hist": {
              "bin_edges": [
                0.0,
                0.25,
                0.5,
                0.75,
                1.0,
                1.25,
                1.5,
                1.75,
                2.0,
                2.25,
                2.5,
                2.75,
                3.0,
                3.25,
                3.5,
                3.75,
                4.0
              ],
              "counts": [
                0,
                0,
                0,
                0,
                4,
                1,
                2,
                1,
                0,
                2,
                1,
                3,
                1,
                1,
                2,
                12
              ],
              "bin_centers": [
                0.125,
                0.375,
                0.625,
                0.875,
                1.125,
                1.375,
                1.625,
                1.875,
                2.125,
                2.375,
                2.625,
                2.875,
                3.125,
                3.375,
                3.625,
                3.875
              ],
              "clip_lo": 0.0,
              "clip_hi": 4.0
            }
          },
          "max_down_natr": {
            "n": 30,
            "mean": -1.871,
            "median": -1.584,
            "p25": -2.438,
            "p75": -1.039,
            "hist": {
              "bin_edges": [
                -4.0,
                -3.75,
                -3.5,
                -3.25,
                -3.0,
                -2.75,
                -2.5,
                -2.25,
                -2.0,
                -1.75,
                -1.5,
                -1.25,
                -1.0,
                -0.75,
                -0.5,
                -0.25,
                0.0
              ],
              "counts": [
                3,
                0,
                1,
                0,
                3,
                0,
                2,
                3,
                1,
                3,
                3,
                4,
                1,
                5,
                0,
                1
              ],
              "bin_centers": [
                -3.875,
                -3.625,
                -3.375,
                -3.125,
                -2.875,
                -2.625,
                -2.375,
                -2.125,
                -1.875,
                -1.625,
                -1.375,
                -1.125,
                -0.875,
                -0.625,
                -0.375,
                -0.125
              ],
              "clip_lo": -4.0,
              "clip_hi": 0.0
            }
          }
        },
        "breakdown": {
          "n": 25,
          "max_up_natr": {
            "n": 25,
            "mean": 3.789,
            "median": 1.668,
            "p25": 0.439,
            "p75": 2.889,
            "hist": {
              "bin_edges": [
                0.0,
                0.25,
                0.5,
                0.75,
                1.0,
                1.25,
                1.5,
                1.75,
                2.0,
                2.25,
                2.5,
                2.75,
                3.0,
                3.25,
                3.5,
                3.75,
                4.0
              ],
              "counts": [
                2,
                5,
                3,
                2,
                0,
                0,
                1,
                0,
                2,
                1,
                1,
                3,
                0,
                0,
                0,
                5
              ],
              "bin_centers": [
                0.125,
                0.375,
                0.625,
                0.875,
                1.125,
                1.375,
                1.625,
                1.875,
                2.125,
                2.375,
                2.625,
                2.875,
                3.125,
                3.375,
                3.625,
                3.875
              ],
              "clip_lo": 0.0,
              "clip_hi": 4.0
            }
          },
          "max_down_natr": {
            "n": 25,
            "mean": -3.283,
            "median": -3.143,
            "p25": -3.939,
            "p75": -2.325,
            "hist": {
              "bin_edges": [
                -4.0,
                -3.75,
                -3.5,
                -3.25,
                -3.0,
                -2.75,
                -2.5,
                -2.25,
                -2.0,
                -1.75,
                -1.5,
                -1.25,
                -1.0,
                -0.75,
                -0.5,
                -0.25,
                0.0
              ],
              "counts": [
                7,
                2,
                1,
                4,
                1,
                3,
                2,
                0,
                1,
                2,
                1,
                1,
                0,
                0,
                0,
                0
              ],
              "bin_centers": [
                -3.875,
                -3.625,
                -3.375,
                -3.125,
                -2.875,
                -2.625,
                -2.375,
                -2.125,
                -1.875,
                -1.625,
                -1.375,
                -1.125,
                -0.875,
                -0.625,
                -0.375,
                -0.125
              ],
              "clip_lo": -4.0,
              "clip_hi": 0.0
            }
          }
        },
        "sideways": {
          "n": 0,
          "max_up_natr": {
            "n": 0,
            "mean": null,
            "median": null,
            "p25": null,
            "p75": null
          },
          "max_down_natr": {
            "n": 0,
            "mean": null,
            "median": null,
            "p25": null,
            "p75": null
          }
        },
        "forming": {
          "n": 0,
          "max_up_natr": {
            "n": 0,
            "mean": null,
            "median": null,
            "p25": null,
            "p75": null
          },
          "max_down_natr": {
            "n": 0,
            "mean": null,
            "median": null,
            "p25": null,
            "p75": null
          }
        }
      },
      "max_up_natr_hist": {
        "bin_edges": [
          0.0,
          0.25,
          0.5,
          0.75,
          1.0,
          1.25,
          1.5,
          1.75,
          2.0,
          2.25,
          2.5,
          2.75,
          3.0,
          3.25,
          3.5,
          3.75,
          4.0
        ],
        "counts": [
          2,
          5,
          3,
          2,
          4,
          1,
          3,
          1,
          2,
          3,
          2,
          6,
          1,
          1,
          2,
          17
        ],
        "bin_centers": [
          0.125,
          0.375,
          0.625,
          0.875,
          1.125,
          1.375,
          1.625,
          1.875,
          2.125,
          2.375,
          2.625,
          2.875,
          3.125,
          3.375,
          3.625,
          3.875
        ],
        "clip_lo": 0.0,
        "clip_hi": 4.0
      },
      "max_down_natr_hist": {
        "bin_edges": [
          -4.0,
          -3.75,
          -3.5,
          -3.25,
          -3.0,
          -2.75,
          -2.5,
          -2.25,
          -2.0,
          -1.75,
          -1.5,
          -1.25,
          -1.0,
          -0.75,
          -0.5,
          -0.25,
          0.0
        ],
        "counts": [
          10,
          2,
          2,
          4,
          4,
          3,
          4,
          3,
          2,
          5,
          4,
          5,
          1,
          5,
          0,
          1
        ],
        "bin_centers": [
          -3.875,
          -3.625,
          -3.375,
          -3.125,
          -2.875,
          -2.625,
          -2.375,
          -2.125,
          -1.875,
          -1.625,
          -1.375,
          -1.125,
          -0.875,
          -0.625,
          -0.375,
          -0.125
        ],
        "clip_lo": -4.0,
        "clip_hi": 0.0
      },
      "timestamp_min": 1594425600000,
      "timestamp_max": 1776988800000,
      "timestamp_min_iso": "2020-07-11T00:00:00Z",
      "timestamp_max_iso": "2026-04-24T00:00:00Z"
    },
    {
      "pattern_type": "inverted_cup_and_handle",
      "pattern_name": "Inverted Cup & Handle",
      "timeframe": "15m",
      "bias": "bearish",
      "n": 25,
      "n_symbols": 25,
      "breakout_success_rate": 60.0,
      "breakdown_success_rate": 36.0,
      "sideways_rate": 4.0,
      "forming_rate": 0.0,
      "both_cleared_rate": 28.0,
      "breakout_success_rate_ci95": [
        40.74,
        76.6
      ],
      "breakdown_success_rate_ci95": [
        20.25,
        55.48
      ],
      "sideways_rate_ci95": [
        0.71,
        19.54
      ],
      "forming_rate_ci95": [
        0.0,
        13.32
      ],
      "both_sides_rate": 28.0,
      "expected_hit_rate": 36.0,
      "expected_hit_rate_ci95": [
        20.25,
        55.48
      ],
      "mean_ret_10c": -0.313,
      "median_ret_10c": 0.571,
      "std_ret_10c": 2.886,
      "win_rate_ret_gt0": 56.0,
      "p25_ret_10c": -1.201,
      "p75_ret_10c": 1.639,
      "mean_mfe": 2.098,
      "mean_mae": -2.111,
      "mfe_mae_ratio": 0.994,
      "max_up_natr": {
        "n": 25,
        "mean": 2.064,
        "median": 1.7,
        "p25": 0.8,
        "p75": 3.2,
        "hist": {
          "bin_edges": [
            0.0,
            0.25,
            0.5,
            0.75,
            1.0,
            1.25,
            1.5,
            1.75,
            2.0,
            2.25,
            2.5,
            2.75,
            3.0,
            3.25,
            3.5,
            3.75,
            4.0
          ],
          "counts": [
            2,
            3,
            1,
            2,
            2,
            1,
            2,
            0,
            0,
            1,
            1,
            1,
            4,
            1,
            1,
            3
          ],
          "bin_centers": [
            0.125,
            0.375,
            0.625,
            0.875,
            1.125,
            1.375,
            1.625,
            1.875,
            2.125,
            2.375,
            2.625,
            2.875,
            3.125,
            3.375,
            3.625,
            3.875
          ],
          "clip_lo": 0.0,
          "clip_hi": 4.0
        }
      },
      "max_down_natr": {
        "n": 25,
        "mean": -1.96,
        "median": -1.319,
        "p25": -2.967,
        "p75": -0.57,
        "hist": {
          "bin_edges": [
            -4.0,
            -3.75,
            -3.5,
            -3.25,
            -3.0,
            -2.75,
            -2.5,
            -2.25,
            -2.0,
            -1.75,
            -1.5,
            -1.25,
            -1.0,
            -0.75,
            -0.5,
            -0.25,
            0.0
          ],
          "counts": [
            4,
            0,
            0,
            2,
            2,
            0,
            1,
            0,
            0,
            1,
            3,
            0,
            2,
            5,
            2,
            3
          ],
          "bin_centers": [
            -3.875,
            -3.625,
            -3.375,
            -3.125,
            -2.875,
            -2.625,
            -2.375,
            -2.125,
            -1.875,
            -1.625,
            -1.375,
            -1.125,
            -0.875,
            -0.625,
            -0.375,
            -0.125
          ],
          "clip_lo": -4.0,
          "clip_hi": 0.0
        }
      },
      "median_max_up_natr": 1.7,
      "median_max_down_natr": -1.319,
      "mean_max_up_natr": 2.064,
      "mean_max_down_natr": -1.96,
      "p25_max_up_natr": 0.8,
      "p75_max_up_natr": 3.2,
      "p25_max_down_natr": -2.967,
      "p75_max_down_natr": -0.57,
      "outcome_natr_moves": {
        "breakout": {
          "n": 15,
          "max_up_natr": {
            "n": 15,
            "mean": 2.622,
            "median": 3.064,
            "p25": 1.611,
            "p75": 3.249,
            "hist": {
              "bin_edges": [
                0.0,
                0.25,
                0.5,
                0.75,
                1.0,
                1.25,
                1.5,
                1.75,
                2.0,
                2.25,
                2.5,
                2.75,
                3.0,
                3.25,
                3.5,
                3.75,
                4.0
              ],
              "counts": [
                0,
                0,
                0,
                1,
                2,
                0,
                2,
                0,
                0,
                1,
                1,
                0,
                4,
                1,
                1,
                2
              ],
              "bin_centers": [
                0.125,
                0.375,
                0.625,
                0.875,
                1.125,
                1.375,
                1.625,
                1.875,
                2.125,
                2.375,
                2.625,
                2.875,
                3.125,
                3.375,
                3.625,
                3.875
              ],
              "clip_lo": 0.0,
              "clip_hi": 4.0
            }
          },
          "max_down_natr": {
            "n": 15,
            "mean": -1.196,
            "median": -0.72,
            "p25": -1.632,
            "p75": -0.291,
            "hist": {
              "bin_edges": [
                -4.0,
                -3.75,
                -3.5,
                -3.25,
                -3.0,
                -2.75,
                -2.5,
                -2.25,
                -2.0,
                -1.75,
                -1.5,
                -1.25,
                -1.0,
                -0.75,
                -0.5,
                -0.25,
                0.0
              ],
              "counts": [
                1,
                0,
                0,
                2,
                0,
                0,
                1,
                0,
                0,
                0,
                0,
                0,
                2,
                4,
                2,
                3
              ],
              "bin_centers": [
                -3.875,
                -3.625,
                -3.375,
                -3.125,
                -2.875,
                -2.625,
                -2.375,
                -2.125,
                -1.875,
                -1.625,
                -1.375,
                -1.125,
                -0.875,
                -0.625,
                -0.375,
                -0.125
              ],
              "clip_lo": -4.0,
              "clip_hi": 0.0
            }
          }
        },
        "breakdown": {
          "n": 9,
          "max_up_natr": {
            "n": 9,
            "mean": 1.276,
            "median": 0.439,
            "p25": 0.433,
            "p75": 1.313
          },
          "max_down_natr": {
            "n": 9,
            "mean": -3.395,
            "median": -2.951,
            "p25": -4.869,
            "p75": -1.435
          }
        },
        "sideways": {
          "n": 1,
          "max_up_natr": {
            "n": 1,
            "mean": 0.8,
            "median": 0.8,
            "p25": 0.8,
            "p75": 0.8
          },
          "max_down_natr": {
            "n": 1,
            "mean": -0.505,
            "median": -0.505,
            "p25": -0.505,
            "p75": -0.505
          }
        },
        "forming": {
          "n": 0,
          "max_up_natr": {
            "n": 0,
            "mean": null,
            "median": null,
            "p25": null,
            "p75": null
          },
          "max_down_natr": {
            "n": 0,
            "mean": null,
            "median": null,
            "p25": null,
            "p75": null
          }
        }
      },
      "max_up_natr_hist": {
        "bin_edges": [
          0.0,
          0.25,
          0.5,
          0.75,
          1.0,
          1.25,
          1.5,
          1.75,
          2.0,
          2.25,
          2.5,
          2.75,
          3.0,
          3.25,
          3.5,
          3.75,
          4.0
        ],
        "counts": [
          2,
          3,
          1,
          2,
          2,
          1,
          2,
          0,
          0,
          1,
          1,
          1,
          4,
          1,
          1,
          3
        ],
        "bin_centers": [
          0.125,
          0.375,
          0.625,
          0.875,
          1.125,
          1.375,
          1.625,
          1.875,
          2.125,
          2.375,
          2.625,
          2.875,
          3.125,
          3.375,
          3.625,
          3.875
        ],
        "clip_lo": 0.0,
        "clip_hi": 4.0
      },
      "max_down_natr_hist": {
        "bin_edges": [
          -4.0,
          -3.75,
          -3.5,
          -3.25,
          -3.0,
          -2.75,
          -2.5,
          -2.25,
          -2.0,
          -1.75,
          -1.5,
          -1.25,
          -1.0,
          -0.75,
          -0.5,
          -0.25,
          0.0
        ],
        "counts": [
          4,
          0,
          0,
          2,
          2,
          0,
          1,
          0,
          0,
          1,
          3,
          0,
          2,
          5,
          2,
          3
        ],
        "bin_centers": [
          -3.875,
          -3.625,
          -3.375,
          -3.125,
          -2.875,
          -2.625,
          -2.375,
          -2.125,
          -1.875,
          -1.625,
          -1.375,
          -1.125,
          -0.875,
          -0.625,
          -0.375,
          -0.125
        ],
        "clip_lo": -4.0,
        "clip_hi": 0.0
      },
      "timestamp_min": 1775115000000,
      "timestamp_max": 1785151800000,
      "timestamp_min_iso": "2026-04-02T07:30:00Z",
      "timestamp_max_iso": "2026-07-27T11:30:00Z"
    },
    {
      "pattern_type": "ascending_triangle",
      "pattern_name": "Ascending Triangle",
      "timeframe": "1d",
      "bias": "bullish",
      "n": 3,
      "n_symbols": 3,
      "breakout_success_rate": 33.33,
      "breakdown_success_rate": 66.67,
      "sideways_rate": 0.0,
      "forming_rate": 0.0,
      "both_cleared_rate": 33.33,
      "breakout_success_rate_ci95": [
        6.15,
        79.23
      ],
      "breakdown_success_rate_ci95": [
        20.77,
        93.85
      ],
      "sideways_rate_ci95": [
        0.0,
        56.15
      ],
      "forming_rate_ci95": [
        0.0,
        56.15
      ],
      "both_sides_rate": 33.33,
      "expected_hit_rate": 33.33,
      "expected_hit_rate_ci95": [
        6.15,
        79.23
      ],
      "mean_ret_10c": 1.363,
      "median_ret_10c": 8.82,
      "std_ret_10c": 28.325,
      "win_rate_ret_gt0": 66.67,
      "p25_ret_10c": -10.563,
      "p75_ret_10c": 17.016,
      "mean_mfe": 17.999,
      "mean_mae": -29.844,
      "mfe_mae_ratio": 0.603,
      "max_up_natr": {
        "n": 3,
        "mean": 1.701,
        "median": 1.865,
        "p25": 0.957,
        "p75": 2.527
      },
      "max_down_natr": {
        "n": 3,
        "mean": -3.189,
        "median": -1.01,
        "p25": -4.52,
        "p75": -0.768
      },
      "median_max_up_natr": 1.865,
      "median_max_down_natr": -1.01,
      "mean_max_up_natr": 1.701,
      "mean_max_down_natr": -3.189,
      "p25_max_up_natr": 0.957,
      "p75_max_up_natr": 2.527,
      "p25_max_down_natr": -4.52,
      "p75_max_down_natr": -0.768,
      "outcome_natr_moves": {
        "breakout": {
          "n": 1,
          "max_up_natr": {
            "n": 1,
            "mean": 3.189,
            "median": 3.189,
            "p25": 3.189,
            "p75": 3.189
          },
          "max_down_natr": {
            "n": 1,
            "mean": -0.526,
            "median": -0.526,
            "p25": -0.526,
            "p75": -0.526
          }
        },
        "breakdown": {
          "n": 2,
          "max_up_natr": {
            "n": 2,
            "mean": 0.957,
            "median": 0.957,
            "p25": 0.502,
            "p75": 1.411
          },
          "max_down_natr": {
            "n": 2,
            "mean": -4.52,
            "median": -4.52,
            "p25": -6.276,
            "p75": -2.765
          }
        },
        "sideways": {
          "n": 0,
          "max_up_natr": {
            "n": 0,
            "mean": null,
            "median": null,
            "p25": null,
            "p75": null
          },
          "max_down_natr": {
            "n": 0,
            "mean": null,
            "median": null,
            "p25": null,
            "p75": null
          }
        },
        "forming": {
          "n": 0,
          "max_up_natr": {
            "n": 0,
            "mean": null,
            "median": null,
            "p25": null,
            "p75": null
          },
          "max_down_natr": {
            "n": 0,
            "mean": null,
            "median": null,
            "p25": null,
            "p75": null
          }
        }
      },
      "max_up_natr_hist": null,
      "max_down_natr_hist": null,
      "timestamp_min": 1588636800000,
      "timestamp_max": 1758412800000,
      "timestamp_min_iso": "2020-05-05T00:00:00Z",
      "timestamp_max_iso": "2025-09-21T00:00:00Z"
    },
    {
      "pattern_type": "descending_triangle",
      "pattern_name": "Descending Triangle",
      "timeframe": "4h",
      "bias": "bearish",
      "n": 89,
      "n_symbols": 79,
      "breakout_success_rate": 67.42,
      "breakdown_success_rate": 31.46,
      "sideways_rate": 1.12,
      "forming_rate": 0.0,
      "both_cleared_rate": 20.22,
      "breakout_success_rate_ci95": [
        57.13,
        76.26
      ],
      "breakdown_success_rate_ci95": [
        22.75,
        41.7
      ],
      "sideways_rate_ci95": [
        0.2,
        6.09
      ],
      "forming_rate_ci95": [
        0.0,
        4.14
      ],
      "both_sides_rate": 20.22,
      "expected_hit_rate": 31.46,
      "expected_hit_rate_ci95": [
        22.75,
        41.7
      ],
      "mean_ret_10c": 3.779,
      "median_ret_10c": 1.959,
      "std_ret_10c": 10.407,
      "win_rate_ret_gt0": 68.54,
      "p25_ret_10c": -0.949,
      "p75_ret_10c": 7.799,
      "mean_mfe": 13.402,
      "mean_mae": -4.831,
      "mfe_mae_ratio": 2.774,
      "max_up_natr": {
        "n": 89,
        "mean": 4.355,
        "median": 2.389,
        "p25": 1.305,
        "p75": 3.916,
        "hist": {
          "bin_edges": [
            0.0,
            0.25,
            0.5,
            0.75,
            1.0,
            1.25,
            1.5,
            1.75,
            2.0,
            2.25,
            2.5,
            2.75,
            3.0,
            3.25,
            3.5,
            3.75,
            4.0
          ],
          "counts": [
            7,
            3,
            5,
            6,
            1,
            10,
            3,
            2,
            5,
            5,
            2,
            1,
            3,
            6,
            4,
            26
          ],
          "bin_centers": [
            0.125,
            0.375,
            0.625,
            0.875,
            1.125,
            1.375,
            1.625,
            1.875,
            2.125,
            2.375,
            2.625,
            2.875,
            3.125,
            3.375,
            3.625,
            3.875
          ],
          "clip_lo": 0.0,
          "clip_hi": 4.0
        }
      },
      "max_down_natr": {
        "n": 89,
        "mean": -1.563,
        "median": -0.717,
        "p25": -2.341,
        "p75": -0.239,
        "hist": {
          "bin_edges": [
            -4.0,
            -3.75,
            -3.5,
            -3.25,
            -3.0,
            -2.75,
            -2.5,
            -2.25,
            -2.0,
            -1.75,
            -1.5,
            -1.25,
            -1.0,
            -0.75,
            -0.5,
            -0.25,
            0.0
          ],
          "counts": [
            12,
            2,
            0,
            2,
            1,
            3,
            3,
            0,
            0,
            3,
            3,
            7,
            7,
            7,
            16,
            23
          ],
          "bin_centers": [
            -3.875,
            -3.625,
            -3.375,
            -3.125,
            -2.875,
            -2.625,
            -2.375,
            -2.125,
            -1.875,
            -1.625,
            -1.375,
            -1.125,
            -0.875,
            -0.625,
            -0.375,
            -0.125
          ],
          "clip_lo": -4.0,
          "clip_hi": 0.0
        }
      },
      "median_max_up_natr": 2.389,
      "median_max_down_natr": -0.717,
      "mean_max_up_natr": 4.355,
      "mean_max_down_natr": -1.563,
      "p25_max_up_natr": 1.305,
      "p75_max_up_natr": 3.916,
      "p25_max_down_natr": -2.341,
      "p75_max_down_natr": -0.239,
      "outcome_natr_moves": {
        "breakout": {
          "n": 60,
          "max_up_natr": {
            "n": 60,
            "mean": 5.366,
            "median": 3.348,
            "p25": 2.05,
            "p75": 4.271,
            "hist": {
              "bin_edges": [
                0.0,
                0.25,
                0.5,
                0.75,
                1.0,
                1.25,
                1.5,
                1.75,
                2.0,
                2.25,
                2.5,
                2.75,
                3.0,
                3.25,
                3.5,
                3.75,
                4.0
              ],
              "counts": [
                0,
                0,
                0,
                3,
                1,
                6,
                2,
                1,
                5,
                5,
                2,
                1,
                2,
                5,
                4,
                23
              ],
              "bin_centers": [
                0.125,
                0.375,
                0.625,
                0.875,
                1.125,
                1.375,
                1.625,
                1.875,
                2.125,
                2.375,
                2.625,
                2.875,
                3.125,
                3.375,
                3.625,
                3.875
              ],
              "clip_lo": 0.0,
              "clip_hi": 4.0
            }
          },
          "max_down_natr": {
            "n": 60,
            "mean": -0.777,
            "median": -0.355,
            "p25": -0.734,
            "p75": -0.129,
            "hist": {
              "bin_edges": [
                -4.0,
                -3.75,
                -3.5,
                -3.25,
                -3.0,
                -2.75,
                -2.5,
                -2.25,
                -2.0,
                -1.75,
                -1.5,
                -1.25,
                -1.0,
                -0.75,
                -0.5,
                -0.25,
                0.0
              ],
              "counts": [
                1,
                0,
                0,
                0,
                0,
                1,
                2,
                0,
                0,
                0,
                2,
                4,
                5,
                7,
                15,
                23
              ],
              "bin_centers": [
                -3.875,
                -3.625,
                -3.375,
                -3.125,
                -2.875,
                -2.625,
                -2.375,
                -2.125,
                -1.875,
                -1.625,
                -1.375,
                -1.125,
                -0.875,
                -0.625,
                -0.375,
                -0.125
              ],
              "clip_lo": -4.0,
              "clip_hi": 0.0
            }
          }
        },
        "breakdown": {
          "n": 28,
          "max_up_natr": {
            "n": 28,
            "mean": 2.333,
            "median": 0.74,
            "p25": 0.276,
            "p75": 1.506,
            "hist": {
              "bin_edges": [
                0.0,
                0.25,
                0.5,
                0.75,
                1.0,
                1.25,
                1.5,
                1.75,
                2.0,
                2.25,
                2.5,
                2.75,
                3.0,
                3.25,
                3.5,
                3.75,
                4.0
              ],
              "counts": [
                7,
                2,
                5,
                3,
                0,
                4,
                1,
                1,
                0,
                0,
                0,
                0,
                1,
                1,
                0,
                3
              ],
              "bin_centers": [
                0.125,
                0.375,
                0.625,
                0.875,
                1.125,
                1.375,
                1.625,
                1.875,
                2.125,
                2.375,
                2.625,
                2.875,
                3.125,
                3.375,
                3.625,
                3.875
              ],
              "clip_lo": 0.0,
              "clip_hi": 4.0
            }
          },
          "max_down_natr": {
            "n": 28,
            "mean": -3.293,
            "median": -3.214,
            "p25": -4.413,
            "p75": -1.679,
            "hist": {
              "bin_edges": [
                -4.0,
                -3.75,
                -3.5,
                -3.25,
                -3.0,
                -2.75,
                -2.5,
                -2.25,
                -2.0,
                -1.75,
                -1.5,
                -1.25,
                -1.0,
                -0.75,
                -0.5,
                -0.25,
                0.0
              ],
              "counts": [
                11,
                2,
                0,
                2,
                1,
                2,
                1,
                0,
                0,
                3,
                1,
                3,
                2,
                0,
                0,
                0
              ],
              "bin_centers": [
                -3.875,
                -3.625,
                -3.375,
                -3.125,
                -2.875,
                -2.625,
                -2.375,
                -2.125,
                -1.875,
                -1.625,
                -1.375,
                -1.125,
                -0.875,
                -0.625,
                -0.375,
                -0.125
              ],
              "clip_lo": -4.0,
              "clip_hi": 0.0
            }
          }
        },
        "sideways": {
          "n": 1,
          "max_up_natr": {
            "n": 1,
            "mean": 0.291,
            "median": 0.291,
            "p25": 0.291,
            "p75": 0.291
          },
          "max_down_natr": {
            "n": 1,
            "mean": -0.25,
            "median": -0.25,
            "p25": -0.25,
            "p75": -0.25
          }
        },
        "forming": {
          "n": 0,
          "max_up_natr": {
            "n": 0,
            "mean": null,
            "median": null,
            "p25": null,
            "p75": null
          },
          "max_down_natr": {
            "n": 0,
            "mean": null,
            "median": null,
            "p25": null,
            "p75": null
          }
        }
      },
      "max_up_natr_hist": {
        "bin_edges": [
          0.0,
          0.25,
          0.5,
          0.75,
          1.0,
          1.25,
          1.5,
          1.75,
          2.0,
          2.25,
          2.5,
          2.75,
          3.0,
          3.25,
          3.5,
          3.75,
          4.0
        ],
        "counts": [
          7,
          3,
          5,
          6,
          1,
          10,
          3,
          2,
          5,
          5,
          2,
          1,
          3,
          6,
          4,
          26
        ],
        "bin_centers": [
          0.125,
          0.375,
          0.625,
          0.875,
          1.125,
          1.375,
          1.625,
          1.875,
          2.125,
          2.375,
          2.625,
          2.875,
          3.125,
          3.375,
          3.625,
          3.875
        ],
        "clip_lo": 0.0,
        "clip_hi": 4.0
      },
      "max_down_natr_hist": {
        "bin_edges": [
          -4.0,
          -3.75,
          -3.5,
          -3.25,
          -3.0,
          -2.75,
          -2.5,
          -2.25,
          -2.0,
          -1.75,
          -1.5,
          -1.25,
          -1.0,
          -0.75,
          -0.5,
          -0.25,
          0.0
        ],
        "counts": [
          12,
          2,
          0,
          2,
          1,
          3,
          3,
          0,
          0,
          3,
          3,
          7,
          7,
          7,
          16,
          23
        ],
        "bin_centers": [
          -3.875,
          -3.625,
          -3.375,
          -3.125,
          -2.875,
          -2.625,
          -2.375,
          -2.125,
          -1.875,
          -1.625,
          -1.375,
          -1.125,
          -0.875,
          -0.625,
          -0.375,
          -0.125
        ],
        "clip_lo": -4.0,
        "clip_hi": 0.0
      },
      "timestamp_min": 1567771200000,
      "timestamp_max": 1784980800000,
      "timestamp_min_iso": "2019-09-06T12:00:00Z",
      "timestamp_max_iso": "2026-07-25T12:00:00Z"
    },
    {
      "pattern_type": "ascending_triangle",
      "pattern_name": "Ascending Triangle",
      "timeframe": "15m",
      "bias": "bullish",
      "n": 102,
      "n_symbols": 85,
      "breakout_success_rate": 30.39,
      "breakdown_success_rate": 64.71,
      "sideways_rate": 4.9,
      "forming_rate": 0.0,
      "both_cleared_rate": 28.43,
      "breakout_success_rate_ci95": [
        22.31,
        39.9
      ],
      "breakdown_success_rate_ci95": [
        55.05,
        73.29
      ],
      "sideways_rate_ci95": [
        2.11,
        10.97
      ],
      "forming_rate_ci95": [
        0.0,
        3.63
      ],
      "both_sides_rate": 28.43,
      "expected_hit_rate": 30.39,
      "expected_hit_rate_ci95": [
        22.31,
        39.9
      ],
      "mean_ret_10c": 0.406,
      "median_ret_10c": -0.453,
      "std_ret_10c": 4.398,
      "win_rate_ret_gt0": 39.22,
      "p25_ret_10c": -1.108,
      "p75_ret_10c": 1.12,
      "mean_mfe": 2.253,
      "mean_mae": -2.004,
      "mfe_mae_ratio": 1.124,
      "max_up_natr": {
        "n": 102,
        "mean": 2.528,
        "median": 1.201,
        "p25": 0.37,
        "p75": 3.276,
        "hist": {
          "bin_edges": [
            0.0,
            0.25,
            0.5,
            0.75,
            1.0,
            1.25,
            1.5,
            1.75,
            2.0,
            2.25,
            2.5,
            2.75,
            3.0,
            3.25,
            3.5,
            3.75,
            4.0
          ],
          "counts": [
            21,
            11,
            8,
            5,
            7,
            5,
            4,
            2,
            1,
            6,
            2,
            3,
            1,
            2,
            0,
            24
          ],
          "bin_centers": [
            0.125,
            0.375,
            0.625,
            0.875,
            1.125,
            1.375,
            1.625,
            1.875,
            2.125,
            2.375,
            2.625,
            2.875,
            3.125,
            3.375,
            3.625,
            3.875
          ],
          "clip_lo": 0.0,
          "clip_hi": 4.0
        }
      },
      "max_down_natr": {
        "n": 102,
        "mean": -2.336,
        "median": -2.033,
        "p25": -2.894,
        "p75": -0.869,
        "hist": {
          "bin_edges": [
            -4.0,
            -3.75,
            -3.5,
            -3.25,
            -3.0,
            -2.75,
            -2.5,
            -2.25,
            -2.0,
            -1.75,
            -1.5,
            -1.25,
            -1.0,
            -0.75,
            -0.5,
            -0.25,
            0.0
          ],
          "counts": [
            18,
            2,
            2,
            3,
            5,
            6,
            8,
            9,
            5,
            3,
            9,
            3,
            7,
            6,
            6,
            10
          ],
          "bin_centers": [
            -3.875,
            -3.625,
            -3.375,
            -3.125,
            -2.875,
            -2.625,
            -2.375,
            -2.125,
            -1.875,
            -1.625,
            -1.375,
            -1.125,
            -0.875,
            -0.625,
            -0.375,
            -0.125
          ],
          "clip_lo": -4.0,
          "clip_hi": 0.0
        }
      },
      "median_max_up_natr": 1.201,
      "median_max_down_natr": -2.033,
      "mean_max_up_natr": 2.528,
      "mean_max_down_natr": -2.336,
      "p25_max_up_natr": 0.37,
      "p75_max_up_natr": 3.276,
      "p25_max_down_natr": -2.894,
      "p75_max_down_natr": -0.869,
      "outcome_natr_moves": {
        "breakout": {
          "n": 31,
          "max_up_natr": {
            "n": 31,
            "mean": 5.59,
            "median": 5.214,
            "p25": 2.775,
            "p75": 6.594,
            "hist": {
              "bin_edges": [
                0.0,
                0.25,
                0.5,
                0.75,
                1.0,
                1.25,
                1.5,
                1.75,
                2.0,
                2.25,
                2.5,
                2.75,
                3.0,
                3.25,
                3.5,
                3.75,
                4.0
              ],
              "counts": [
                0,
                0,
                0,
                0,
                0,
                0,
                1,
                1,
                1,
                3,
                2,
                1,
                1,
                1,
                0,
                20
              ],
              "bin_centers": [
                0.125,
                0.375,
                0.625,
                0.875,
                1.125,
                1.375,
                1.625,
                1.875,
                2.125,
                2.375,
                2.625,
                2.875,
                3.125,
                3.375,
                3.625,
                3.875
              ],
              "clip_lo": 0.0,
              "clip_hi": 4.0
            }
          },
          "max_down_natr": {
            "n": 31,
            "mean": -0.945,
            "median": -0.503,
            "p25": -1.193,
            "p75": -0.187,
            "hist": {
              "bin_edges": [
                -4.0,
                -3.75,
                -3.5,
                -3.25,
                -3.0,
                -2.75,
                -2.5,
                -2.25,
                -2.0,
                -1.75,
                -1.5,
                -1.25,
                -1.0,
                -0.75,
                -0.5,
                -0.25,
                0.0
              ],
              "counts": [
                1,
                0,
                0,
                0,
                1,
                0,
                1,
                0,
                0,
                2,
                3,
                1,
                4,
                3,
                5,
                10
              ],
              "bin_centers": [
                -3.875,
                -3.625,
                -3.375,
                -3.125,
                -2.875,
                -2.625,
                -2.375,
                -2.125,
                -1.875,
                -1.625,
                -1.375,
                -1.125,
                -0.875,
                -0.625,
                -0.375,
                -0.125
              ],
              "clip_lo": -4.0,
              "clip_hi": 0.0
            }
          }
        },
        "breakdown": {
          "n": 66,
          "max_up_natr": {
            "n": 66,
            "mean": 1.161,
            "median": 0.518,
            "p25": 0.173,
            "p75": 1.196,
            "hist": {
              "bin_edges": [
                0.0,
                0.25,
                0.5,
                0.75,
                1.0,
                1.25,
                1.5,
                1.75,
                2.0,
                2.25,
                2.5,
                2.75,
                3.0,
                3.25,
                3.5,
                3.75,
                4.0
              ],
              "counts": [
                21,
                11,
                8,
                5,
                6,
                3,
                2,
                1,
                0,
                2,
                0,
                2,
                0,
                1,
                0,
                4
              ],
              "bin_centers": [
                0.125,
                0.375,
                0.625,
                0.875,
                1.125,
                1.375,
                1.625,
                1.875,
                2.125,
                2.375,
                2.625,
                2.875,
                3.125,
                3.375,
                3.625,
                3.875
              ],
              "clip_lo": 0.0,
              "clip_hi": 4.0
            }
          },
          "max_down_natr": {
            "n": 66,
            "mean": -3.115,
            "median": -2.51,
            "p25": -3.747,
            "p75": -2.012,
            "hist": {
              "bin_edges": [
                -4.0,
                -3.75,
                -3.5,
                -3.25,
                -3.0,
                -2.75,
                -2.5,
                -2.25,
                -2.0,
                -1.75,
                -1.5,
                -1.25,
                -1.0,
                -0.75,
                -0.5,
                -0.25,
                0.0
              ],
              "counts": [
                17,
                2,
                2,
                3,
                4,
                6,
                7,
                9,
                5,
                1,
                6,
                1,
                2,
                1,
                0,
                0
              ],
              "bin_centers": [
                -3.875,
                -3.625,
                -3.375,
                -3.125,
                -2.875,
                -2.625,
                -2.375,
                -2.125,
                -1.875,
                -1.625,
                -1.375,
                -1.125,
                -0.875,
                -0.625,
                -0.375,
                -0.125
              ],
              "clip_lo": -4.0,
              "clip_hi": 0.0
            }
          }
        },
        "sideways": {
          "n": 5,
          "max_up_natr": {
            "n": 5,
            "mean": 1.598,
            "median": 1.495,
            "p25": 1.276,
            "p75": 1.646
          },
          "max_down_natr": {
            "n": 5,
            "mean": -0.684,
            "median": -0.736,
            "p25": -0.808,
            "p75": -0.514
          }
        },
        "forming": {
          "n": 0,
          "max_up_natr": {
            "n": 0,
            "mean": null,
            "median": null,
            "p25": null,
            "p75": null
          },
          "max_down_natr": {
            "n": 0,
            "mean": null,
            "median": null,
            "p25": null,
            "p75": null
          }
        }
      },
      "max_up_natr_hist": {
        "bin_edges": [
          0.0,
          0.25,
          0.5,
          0.75,
          1.0,
          1.25,
          1.5,
          1.75,
          2.0,
          2.25,
          2.5,
          2.75,
          3.0,
          3.25,
          3.5,
          3.75,
          4.0
        ],
        "counts": [
          21,
          11,
          8,
          5,
          7,
          5,
          4,
          2,
          1,
          6,
          2,
          3,
          1,
          2,
          0,
          24
        ],
        "bin_centers": [
          0.125,
          0.375,
          0.625,
          0.875,
          1.125,
          1.375,
          1.625,
          1.875,
          2.125,
          2.375,
          2.625,
          2.875,
          3.125,
          3.375,
          3.625,
          3.875
        ],
        "clip_lo": 0.0,
        "clip_hi": 4.0
      },
      "max_down_natr_hist": {
        "bin_edges": [
          -4.0,
          -3.75,
          -3.5,
          -3.25,
          -3.0,
          -2.75,
          -2.5,
          -2.25,
          -2.0,
          -1.75,
          -1.5,
          -1.25,
          -1.0,
          -0.75,
          -0.5,
          -0.25,
          0.0
        ],
        "counts": [
          18,
          2,
          2,
          3,
          5,
          6,
          8,
          9,
          5,
          3,
          9,
          3,
          7,
          6,
          6,
          10
        ],
        "bin_centers": [
          -3.875,
          -3.625,
          -3.375,
          -3.125,
          -2.875,
          -2.625,
          -2.375,
          -2.125,
          -1.875,
          -1.625,
          -1.375,
          -1.125,
          -0.875,
          -0.625,
          -0.375,
          -0.125
        ],
        "clip_lo": -4.0,
        "clip_hi": 0.0
      },
      "timestamp_min": 1641715200000,
      "timestamp_max": 1785448800000,
      "timestamp_min_iso": "2022-01-09T08:00:00Z",
      "timestamp_max_iso": "2026-07-30T22:00:00Z"
    },
    {
      "pattern_type": "descending_triangle",
      "pattern_name": "Descending Triangle",
      "timeframe": "1h",
      "bias": "bearish",
      "n": 236,
      "n_symbols": 189,
      "breakout_success_rate": 72.46,
      "breakdown_success_rate": 26.69,
      "sideways_rate": 0.85,
      "forming_rate": 0.0,
      "both_cleared_rate": 24.58,
      "breakout_success_rate_ci95": [
        66.43,
        77.76
      ],
      "breakdown_success_rate_ci95": [
        21.46,
        32.68
      ],
      "sideways_rate_ci95": [
        0.23,
        3.04
      ],
      "forming_rate_ci95": [
        0.0,
        1.6
      ],
      "both_sides_rate": 24.58,
      "expected_hit_rate": 26.69,
      "expected_hit_rate_ci95": [
        21.46,
        32.68
      ],
      "mean_ret_10c": 1.478,
      "median_ret_10c": 1.087,
      "std_ret_10c": 5.654,
      "win_rate_ret_gt0": 63.98,
      "p25_ret_10c": -1.371,
      "p75_ret_10c": 3.192,
      "mean_mfe": 5.649,
      "mean_mae": -2.72,
      "mfe_mae_ratio": 2.077,
      "max_up_natr": {
        "n": 236,
        "mean": 3.318,
        "median": 2.285,
        "p25": 1.209,
        "p75": 3.75,
        "hist": {
          "bin_edges": [
            0.0,
            0.25,
            0.5,
            0.75,
            1.0,
            1.25,
            1.5,
            1.75,
            2.0,
            2.25,
            2.5,
            2.75,
            3.0,
            3.25,
            3.5,
            3.75,
            4.0
          ],
          "counts": [
            18,
            16,
            9,
            9,
            9,
            12,
            17,
            13,
            14,
            13,
            9,
            8,
            13,
            8,
            9,
            59
          ],
          "bin_centers": [
            0.125,
            0.375,
            0.625,
            0.875,
            1.125,
            1.375,
            1.625,
            1.875,
            2.125,
            2.375,
            2.625,
            2.875,
            3.125,
            3.375,
            3.625,
            3.875
          ],
          "clip_lo": 0.0,
          "clip_hi": 4.0
        }
      },
      "max_down_natr": {
        "n": 236,
        "mean": -1.639,
        "median": -0.826,
        "p25": -2.29,
        "p75": -0.211,
        "hist": {
          "bin_edges": [
            -4.0,
            -3.75,
            -3.5,
            -3.25,
            -3.0,
            -2.75,
            -2.5,
            -2.25,
            -2.0,
            -1.75,
            -1.5,
            -1.25,
            -1.0,
            -0.75,
            -0.5,
            -0.25,
            0.0
          ],
          "counts": [
            28,
            5,
            7,
            2,
            8,
            4,
            7,
            6,
            9,
            10,
            13,
            9,
            17,
            14,
            33,
            64
          ],
          "bin_centers": [
            -3.875,
            -3.625,
            -3.375,
            -3.125,
            -2.875,
            -2.625,
            -2.375,
            -2.125,
            -1.875,
            -1.625,
            -1.375,
            -1.125,
            -0.875,
            -0.625,
            -0.375,
            -0.125
          ],
          "clip_lo": -4.0,
          "clip_hi": 0.0
        }
      },
      "median_max_up_natr": 2.285,
      "median_max_down_natr": -0.826,
      "mean_max_up_natr": 3.318,
      "mean_max_down_natr": -1.639,
      "p25_max_up_natr": 1.209,
      "p75_max_up_natr": 3.75,
      "p25_max_down_natr": -2.29,
      "p75_max_down_natr": -0.211,
      "outcome_natr_moves": {
        "breakout": {
          "n": 171,
          "max_up_natr": {
            "n": 171,
            "mean": 4.106,
            "median": 2.924,
            "p25": 1.917,
            "p75": 4.366,
            "hist": {
              "bin_edges": [
                0.0,
                0.25,
                0.5,
                0.75,
                1.0,
                1.25,
                1.5,
                1.75,
                2.0,
                2.25,
                2.5,
                2.75,
                3.0,
                3.25,
                3.5,
                3.75,
                4.0
              ],
              "counts": [
                0,
                1,
                3,
                3,
                9,
                11,
                10,
                12,
                13,
                10,
                9,
                8,
                12,
                6,
                8,
                56
              ],
              "bin_centers": [
                0.125,
                0.375,
                0.625,
                0.875,
                1.125,
                1.375,
                1.625,
                1.875,
                2.125,
                2.375,
                2.625,
                2.875,
                3.125,
                3.375,
                3.625,
                3.875
              ],
              "clip_lo": 0.0,
              "clip_hi": 4.0
            }
          },
          "max_down_natr": {
            "n": 171,
            "mean": -0.886,
            "median": -0.379,
            "p25": -1.072,
            "p75": -0.134,
            "hist": {
              "bin_edges": [
                -4.0,
                -3.75,
                -3.5,
                -3.25,
                -3.0,
                -2.75,
                -2.5,
                -2.25,
                -2.0,
                -1.75,
                -1.5,
                -1.25,
                -1.0,
                -0.75,
                -0.5,
                -0.25,
                0.0
              ],
              "counts": [
                6,
                2,
                1,
                1,
                3,
                0,
                2,
                3,
                5,
                5,
                10,
                7,
                16,
                14,
                33,
                63
              ],
              "bin_centers": [
                -3.875,
                -3.625,
                -3.375,
                -3.125,
                -2.875,
                -2.625,
                -2.375,
                -2.125,
                -1.875,
                -1.625,
                -1.375,
                -1.125,
                -0.875,
                -0.625,
                -0.375,
                -0.125
              ],
              "clip_lo": -4.0,
              "clip_hi": 0.0
            }
          }
        },
        "breakdown": {
          "n": 63,
          "max_up_natr": {
            "n": 63,
            "mean": 1.256,
            "median": 0.468,
            "p25": 0.223,
            "p75": 1.571,
            "hist": {
              "bin_edges": [
                0.0,
                0.25,
                0.5,
                0.75,
                1.0,
                1.25,
                1.5,
                1.75,
                2.0,
                2.25,
                2.5,
                2.75,
                3.0,
                3.25,
                3.5,
                3.75,
                4.0
              ],
              "counts": [
                18,
                15,
                6,
                4,
                0,
                1,
                7,
                1,
                1,
                3,
                0,
                0,
                1,
                2,
                1,
                3
              ],
              "bin_centers": [
                0.125,
                0.375,
                0.625,
                0.875,
                1.125,
                1.375,
                1.625,
                1.875,
                2.125,
                2.375,
                2.625,
                2.875,
                3.125,
                3.375,
                3.625,
                3.875
              ],
              "clip_lo": 0.0,
              "clip_hi": 4.0
            }
          },
          "max_down_natr": {
            "n": 63,
            "mean": -3.709,
            "median": -3.128,
            "p25": -4.226,
            "p75": -2.116,
            "hist": {
              "bin_edges": [
                -4.0,
                -3.75,
                -3.5,
                -3.25,
                -3.0,
                -2.75,
                -2.5,
                -2.25,
                -2.0,
                -1.75,
                -1.5,
                -1.25,
                -1.0,
                -0.75,
                -0.5,
                -0.25,
                0.0
              ],
              "counts": [
                22,
                3,
                6,
                1,
                5,
                4,
                5,
                3,
                4,
                5,
                2,
                2,
                1,
                0,
                0,
                0
              ],
              "bin_centers": [
                -3.875,
                -3.625,
                -3.375,
                -3.125,
                -2.875,
                -2.625,
                -2.375,
                -2.125,
                -1.875,
                -1.625,
                -1.375,
                -1.125,
                -0.875,
                -0.625,
                -0.375,
                -0.125
              ],
              "clip_lo": -4.0,
              "clip_hi": 0.0
            }
          }
        },
        "sideways": {
          "n": 2,
          "max_up_natr": {
            "n": 2,
            "mean": 0.876,
            "median": 0.876,
            "p25": 0.816,
            "p75": 0.936
          },
          "max_down_natr": {
            "n": 2,
            "mean": -0.761,
            "median": -0.761,
            "p25": -1.083,
            "p75": -0.44
          }
        },
        "forming": {
          "n": 0,
          "max_up_natr": {
            "n": 0,
            "mean": null,
            "median": null,
            "p25": null,
            "p75": null
          },
          "max_down_natr": {
            "n": 0,
            "mean": null,
            "median": null,
            "p25": null,
            "p75": null
          }
        }
      },
      "max_up_natr_hist": {
        "bin_edges": [
          0.0,
          0.25,
          0.5,
          0.75,
          1.0,
          1.25,
          1.5,
          1.75,
          2.0,
          2.25,
          2.5,
          2.75,
          3.0,
          3.25,
          3.5,
          3.75,
          4.0
        ],
        "counts": [
          18,
          16,
          9,
          9,
          9,
          12,
          17,
          13,
          14,
          13,
          9,
          8,
          13,
          8,
          9,
          59
        ],
        "bin_centers": [
          0.125,
          0.375,
          0.625,
          0.875,
          1.125,
          1.375,
          1.625,
          1.875,
          2.125,
          2.375,
          2.625,
          2.875,
          3.125,
          3.375,
          3.625,
          3.875
        ],
        "clip_lo": 0.0,
        "clip_hi": 4.0
      },
      "max_down_natr_hist": {
        "bin_edges": [
          -4.0,
          -3.75,
          -3.5,
          -3.25,
          -3.0,
          -2.75,
          -2.5,
          -2.25,
          -2.0,
          -1.75,
          -1.5,
          -1.25,
          -1.0,
          -0.75,
          -0.5,
          -0.25,
          0.0
        ],
        "counts": [
          28,
          5,
          7,
          2,
          8,
          4,
          7,
          6,
          9,
          10,
          13,
          9,
          17,
          14,
          33,
          64
        ],
        "bin_centers": [
          -3.875,
          -3.625,
          -3.375,
          -3.125,
          -2.875,
          -2.625,
          -2.375,
          -2.125,
          -1.875,
          -1.625,
          -1.375,
          -1.125,
          -0.875,
          -0.625,
          -0.375,
          -0.125
        ],
        "clip_lo": -4.0,
        "clip_hi": 0.0
      },
      "timestamp_min": 1586127600000,
      "timestamp_max": 1784556000000,
      "timestamp_min_iso": "2020-04-05T23:00:00Z",
      "timestamp_max_iso": "2026-07-20T14:00:00Z"
    },
    {
      "pattern_type": "descending_triangle",
      "pattern_name": "Descending Triangle",
      "timeframe": "15m",
      "bias": "bearish",
      "n": 135,
      "n_symbols": 115,
      "breakout_success_rate": 71.85,
      "breakdown_success_rate": 25.93,
      "sideways_rate": 2.22,
      "forming_rate": 0.0,
      "both_cleared_rate": 29.63,
      "breakout_success_rate_ci95": [
        63.74,
        78.75
      ],
      "breakdown_success_rate_ci95": [
        19.27,
        33.91
      ],
      "sideways_rate_ci95": [
        0.76,
        6.33
      ],
      "forming_rate_ci95": [
        0.0,
        2.77
      ],
      "both_sides_rate": 29.63,
      "expected_hit_rate": 25.93,
      "expected_hit_rate_ci95": [
        19.27,
        33.91
      ],
      "mean_ret_10c": 0.277,
      "median_ret_10c": 0.367,
      "std_ret_10c": 2.307,
      "win_rate_ret_gt0": 60.0,
      "p25_ret_10c": -0.662,
      "p75_ret_10c": 1.3,
      "mean_mfe": 2.141,
      "mean_mae": -1.365,
      "mfe_mae_ratio": 1.568,
      "max_up_natr": {
        "n": 135,
        "mean": 2.797,
        "median": 2.553,
        "p25": 1.232,
        "p75": 3.686,
        "hist": {
          "bin_edges": [
            0.0,
            0.25,
            0.5,
            0.75,
            1.0,
            1.25,
            1.5,
            1.75,
            2.0,
            2.25,
            2.5,
            2.75,
            3.0,
            3.25,
            3.5,
            3.75,
            4.0
          ],
          "counts": [
            14,
            4,
            4,
            7,
            6,
            5,
            7,
            9,
            6,
            5,
            13,
            7,
            4,
            7,
            4,
            33
          ],
          "bin_centers": [
            0.125,
            0.375,
            0.625,
            0.875,
            1.125,
            1.375,
            1.625,
            1.875,
            2.125,
            2.375,
            2.625,
            2.875,
            3.125,
            3.375,
            3.625,
            3.875
          ],
          "clip_lo": 0.0,
          "clip_hi": 4.0
        }
      },
      "max_down_natr": {
        "n": 135,
        "mean": -1.768,
        "median": -0.856,
        "p25": -2.329,
        "p75": -0.262,
        "hist": {
          "bin_edges": [
            -4.0,
            -3.75,
            -3.5,
            -3.25,
            -3.0,
            -2.75,
            -2.5,
            -2.25,
            -2.0,
            -1.75,
            -1.5,
            -1.25,
            -1.0,
            -0.75,
            -0.5,
            -0.25,
            0.0
          ],
          "counts": [
            19,
            0,
            3,
            2,
            1,
            5,
            6,
            3,
            2,
            11,
            6,
            7,
            5,
            17,
            15,
            33
          ],
          "bin_centers": [
            -3.875,
            -3.625,
            -3.375,
            -3.125,
            -2.875,
            -2.625,
            -2.375,
            -2.125,
            -1.875,
            -1.625,
            -1.375,
            -1.125,
            -0.875,
            -0.625,
            -0.375,
            -0.125
          ],
          "clip_lo": -4.0,
          "clip_hi": 0.0
        }
      },
      "median_max_up_natr": 2.553,
      "median_max_down_natr": -0.856,
      "mean_max_up_natr": 2.797,
      "mean_max_down_natr": -1.768,
      "p25_max_up_natr": 1.232,
      "p75_max_up_natr": 3.686,
      "p25_max_down_natr": -2.329,
      "p75_max_down_natr": -0.262,
      "outcome_natr_moves": {
        "breakout": {
          "n": 97,
          "max_up_natr": {
            "n": 97,
            "mean": 3.388,
            "median": 2.841,
            "p25": 1.989,
            "p75": 4.114,
            "hist": {
              "bin_edges": [
                0.0,
                0.25,
                0.5,
                0.75,
                1.0,
                1.25,
                1.5,
                1.75,
                2.0,
                2.25,
                2.5,
                2.75,
                3.0,
                3.25,
                3.5,
                3.75,
                4.0
              ],
              "counts": [
                0,
                0,
                2,
                2,
                4,
                4,
                5,
                8,
                6,
                4,
                11,
                6,
                3,
                6,
                4,
                32
              ],
              "bin_centers": [
                0.125,
                0.375,
                0.625,
                0.875,
                1.125,
                1.375,
                1.625,
                1.875,
                2.125,
                2.375,
                2.625,
                2.875,
                3.125,
                3.375,
                3.625,
                3.875
              ],
              "clip_lo": 0.0,
              "clip_hi": 4.0
            }
          },
          "max_down_natr": {
            "n": 97,
            "mean": -1.024,
            "median": -0.506,
            "p25": -1.141,
            "p75": -0.178,
            "hist": {
              "bin_edges": [
                -4.0,
                -3.75,
                -3.5,
                -3.25,
                -3.0,
                -2.75,
                -2.5,
                -2.25,
                -2.0,
                -1.75,
                -1.5,
                -1.25,
                -1.0,
                -0.75,
                -0.5,
                -0.25,
                0.0
              ],
              "counts": [
                6,
                0,
                1,
                0,
                1,
                2,
                2,
                1,
                2,
                5,
                3,
                6,
                5,
                16,
                15,
                32
              ],
              "bin_centers": [
                -3.875,
                -3.625,
                -3.375,
                -3.125,
                -2.875,
                -2.625,
                -2.375,
                -2.125,
                -1.875,
                -1.625,
                -1.375,
                -1.125,
                -0.875,
                -0.625,
                -0.375,
                -0.125
              ],
              "clip_lo": -4.0,
              "clip_hi": 0.0
            }
          }
        },
        "breakdown": {
          "n": 35,
          "max_up_natr": {
            "n": 35,
            "mean": 1.335,
            "median": 0.697,
            "p25": 0.096,
            "p75": 1.699,
            "hist": {
              "bin_edges": [
                0.0,
                0.25,
                0.5,
                0.75,
                1.0,
                1.25,
                1.5,
                1.75,
                2.0,
                2.25,
                2.5,
                2.75,
                3.0,
                3.25,
                3.5,
                3.75,
                4.0
              ],
              "counts": [
                14,
                3,
                2,
                3,
                2,
                1,
                2,
                1,
                0,
                1,
                2,
                1,
                1,
                1,
                0,
                1
              ],
              "bin_centers": [
                0.125,
                0.375,
                0.625,
                0.875,
                1.125,
                1.375,
                1.625,
                1.875,
                2.125,
                2.375,
                2.625,
                2.875,
                3.125,
                3.375,
                3.625,
                3.875
              ],
              "clip_lo": 0.0,
              "clip_hi": 4.0
            }
          },
          "max_down_natr": {
            "n": 35,
            "mean": -3.93,
            "median": -2.744,
            "p25": -5.55,
            "p75": -1.85,
            "hist": {
              "bin_edges": [
                -4.0,
                -3.75,
                -3.5,
                -3.25,
                -3.0,
                -2.75,
                -2.5,
                -2.25,
                -2.0,
                -1.75,
                -1.5,
                -1.25,
                -1.0,
                -0.75,
                -0.5,
                -0.25,
                0.0
              ],
              "counts": [
                13,
                0,
                2,
                2,
                0,
                3,
                4,
                2,
                0,
                6,
                3,
                0,
                0,
                0,
                0,
                0
              ],
              "bin_centers": [
                -3.875,
                -3.625,
                -3.375,
                -3.125,
                -2.875,
                -2.625,
                -2.375,
                -2.125,
                -1.875,
                -1.625,
                -1.375,
                -1.125,
                -0.875,
                -0.625,
                -0.375,
                -0.125
              ],
              "clip_lo": -4.0,
              "clip_hi": 0.0
            }
          }
        },
        "sideways": {
          "n": 3,
          "max_up_natr": {
            "n": 3,
            "mean": 0.729,
            "median": 0.836,
            "p25": 0.666,
            "p75": 0.845
          },
          "max_down_natr": {
            "n": 3,
            "mean": -0.6,
            "median": -0.725,
            "p25": -0.885,
            "p75": -0.377
          }
        },
        "forming": {
          "n": 0,
          "max_up_natr": {
            "n": 0,
            "mean": null,
            "median": null,
            "p25": null,
            "p75": null
          },
          "max_down_natr": {
            "n": 0,
            "mean": null,
            "median": null,
            "p25": null,
            "p75": null
          }
        }
      },
      "max_up_natr_hist": {
        "bin_edges": [
          0.0,
          0.25,
          0.5,
          0.75,
          1.0,
          1.25,
          1.5,
          1.75,
          2.0,
          2.25,
          2.5,
          2.75,
          3.0,
          3.25,
          3.5,
          3.75,
          4.0
        ],
        "counts": [
          14,
          4,
          4,
          7,
          6,
          5,
          7,
          9,
          6,
          5,
          13,
          7,
          4,
          7,
          4,
          33
        ],
        "bin_centers": [
          0.125,
          0.375,
          0.625,
          0.875,
          1.125,
          1.375,
          1.625,
          1.875,
          2.125,
          2.375,
          2.625,
          2.875,
          3.125,
          3.375,
          3.625,
          3.875
        ],
        "clip_lo": 0.0,
        "clip_hi": 4.0
      },
      "max_down_natr_hist": {
        "bin_edges": [
          -4.0,
          -3.75,
          -3.5,
          -3.25,
          -3.0,
          -2.75,
          -2.5,
          -2.25,
          -2.0,
          -1.75,
          -1.5,
          -1.25,
          -1.0,
          -0.75,
          -0.5,
          -0.25,
          0.0
        ],
        "counts": [
          19,
          0,
          3,
          2,
          1,
          5,
          6,
          3,
          2,
          11,
          6,
          7,
          5,
          17,
          15,
          33
        ],
        "bin_centers": [
          -3.875,
          -3.625,
          -3.375,
          -3.125,
          -2.875,
          -2.625,
          -2.375,
          -2.125,
          -1.875,
          -1.625,
          -1.375,
          -1.125,
          -0.875,
          -0.625,
          -0.375,
          -0.125
        ],
        "clip_lo": -4.0,
        "clip_hi": 0.0
      },
      "timestamp_min": 1711696500000,
      "timestamp_max": 1785447000000,
      "timestamp_min_iso": "2024-03-29T07:15:00Z",
      "timestamp_max_iso": "2026-07-30T21:30:00Z"
    },
    {
      "pattern_type": "ascending_triangle",
      "pattern_name": "Ascending Triangle",
      "timeframe": "1h",
      "bias": "bullish",
      "n": 205,
      "n_symbols": 156,
      "breakout_success_rate": 25.85,
      "breakdown_success_rate": 72.2,
      "sideways_rate": 1.95,
      "forming_rate": 0.0,
      "both_cleared_rate": 27.8,
      "breakout_success_rate_ci95": [
        20.34,
        32.25
      ],
      "breakdown_success_rate_ci95": [
        65.7,
        77.88
      ],
      "sideways_rate_ci95": [
        0.76,
        4.91
      ],
      "forming_rate_ci95": [
        0.0,
        1.84
      ],
      "both_sides_rate": 27.8,
      "expected_hit_rate": 25.85,
      "expected_hit_rate_ci95": [
        20.34,
        32.25
      ],
      "mean_ret_10c": -1.294,
      "median_ret_10c": -1.149,
      "std_ret_10c": 5.408,
      "win_rate_ret_gt0": 38.54,
      "p25_ret_10c": -3.433,
      "p75_ret_10c": 1.161,
      "mean_mfe": 2.618,
      "mean_mae": -4.682,
      "mfe_mae_ratio": 0.559,
      "max_up_natr": {
        "n": 205,
        "mean": 1.74,
        "median": 0.886,
        "p25": 0.18,
        "p75": 2.31,
        "hist": {
          "bin_edges": [
            0.0,
            0.25,
            0.5,
            0.75,
            1.0,
            1.25,
            1.5,
            1.75,
            2.0,
            2.25,
            2.5,
            2.75,
            3.0,
            3.25,
            3.5,
            3.75,
            4.0
          ],
          "counts": [
            69,
            18,
            11,
            10,
            15,
            8,
            11,
            6,
            3,
            4,
            6,
            1,
            1,
            8,
            7,
            27
          ],
          "bin_centers": [
            0.125,
            0.375,
            0.625,
            0.875,
            1.125,
            1.375,
            1.625,
            1.875,
            2.125,
            2.375,
            2.625,
            2.875,
            3.125,
            3.375,
            3.625,
            3.875
          ],
          "clip_lo": 0.0,
          "clip_hi": 4.0
        }
      },
      "max_down_natr": {
        "n": 205,
        "mean": -2.914,
        "median": -2.354,
        "p25": -3.814,
        "p75": -1.164,
        "hist": {
          "bin_edges": [
            -4.0,
            -3.75,
            -3.5,
            -3.25,
            -3.0,
            -2.75,
            -2.5,
            -2.25,
            -2.0,
            -1.75,
            -1.5,
            -1.25,
            -1.0,
            -0.75,
            -0.5,
            -0.25,
            0.0
          ],
          "counts": [
            54,
            7,
            9,
            8,
            8,
            12,
            13,
            10,
            11,
            9,
            12,
            11,
            8,
            9,
            8,
            16
          ],
          "bin_centers": [
            -3.875,
            -3.625,
            -3.375,
            -3.125,
            -2.875,
            -2.625,
            -2.375,
            -2.125,
            -1.875,
            -1.625,
            -1.375,
            -1.125,
            -0.875,
            -0.625,
            -0.375,
            -0.125
          ],
          "clip_lo": -4.0,
          "clip_hi": 0.0
        }
      },
      "median_max_up_natr": 0.886,
      "median_max_down_natr": -2.354,
      "mean_max_up_natr": 1.74,
      "mean_max_down_natr": -2.914,
      "p25_max_up_natr": 0.18,
      "p75_max_up_natr": 2.31,
      "p25_max_down_natr": -3.814,
      "p75_max_down_natr": -1.164,
      "outcome_natr_moves": {
        "breakout": {
          "n": 53,
          "max_up_natr": {
            "n": 53,
            "mean": 4.328,
            "median": 3.62,
            "p25": 2.31,
            "p75": 4.705,
            "hist": {
              "bin_edges": [
                0.0,
                0.25,
                0.5,
                0.75,
                1.0,
                1.25,
                1.5,
                1.75,
                2.0,
                2.25,
                2.5,
                2.75,
                3.0,
                3.25,
                3.5,
                3.75,
                4.0
              ],
              "counts": [
                0,
                0,
                0,
                0,
                0,
                4,
                4,
                2,
                2,
                3,
                4,
                0,
                0,
                4,
                7,
                23
              ],
              "bin_centers": [
                0.125,
                0.375,
                0.625,
                0.875,
                1.125,
                1.375,
                1.625,
                1.875,
                2.125,
                2.375,
                2.625,
                2.875,
                3.125,
                3.375,
                3.625,
                3.875
              ],
              "clip_lo": 0.0,
              "clip_hi": 4.0
            }
          },
          "max_down_natr": {
            "n": 53,
            "mean": -1.262,
            "median": -0.612,
            "p25": -1.576,
            "p75": -0.214,
            "hist": {
              "bin_edges": [
                -4.0,
                -3.75,
                -3.5,
                -3.25,
                -3.0,
                -2.75,
                -2.5,
                -2.25,
                -2.0,
                -1.75,
                -1.5,
                -1.25,
                -1.0,
                -0.75,
                -0.5,
                -0.25,
                0.0
              ],
              "counts": [
                5,
                0,
                1,
                0,
                1,
                2,
                2,
                1,
                0,
                3,
                3,
                3,
                3,
                5,
                8,
                16
              ],
              "bin_centers": [
                -3.875,
                -3.625,
                -3.375,
                -3.125,
                -2.875,
                -2.625,
                -2.375,
                -2.125,
                -1.875,
                -1.625,
                -1.375,
                -1.125,
                -0.875,
                -0.625,
                -0.375,
                -0.125
              ],
              "clip_lo": -4.0,
              "clip_hi": 0.0
            }
          }
        },
        "breakdown": {
          "n": 148,
          "max_up_natr": {
            "n": 148,
            "mean": 0.83,
            "median": 0.281,
            "p25": 0.109,
            "p75": 1.094,
            "hist": {
              "bin_edges": [
                0.0,
                0.25,
                0.5,
                0.75,
                1.0,
                1.25,
                1.5,
                1.75,
                2.0,
                2.25,
                2.5,
                2.75,
                3.0,
                3.25,
                3.5,
                3.75,
                4.0
              ],
              "counts": [
                69,
                18,
                10,
                10,
                13,
                4,
                6,
                4,
                1,
                1,
                2,
                1,
                1,
                4,
                0,
                4
              ],
              "bin_centers": [
                0.125,
                0.375,
                0.625,
                0.875,
                1.125,
                1.375,
                1.625,
                1.875,
                2.125,
                2.375,
                2.625,
                2.875,
                3.125,
                3.375,
                3.625,
                3.875
              ],
              "clip_lo": 0.0,
              "clip_hi": 4.0
            }
          },
          "max_down_natr": {
            "n": 148,
            "mean": -3.562,
            "median": -2.897,
            "p25": -4.438,
            "p75": -1.938,
            "hist": {
              "bin_edges": [
                -4.0,
                -3.75,
                -3.5,
                -3.25,
                -3.0,
                -2.75,
                -2.5,
                -2.25,
                -2.0,
                -1.75,
                -1.5,
                -1.25,
                -1.0,
                -0.75,
                -0.5,
                -0.25,
                0.0
              ],
              "counts": [
                49,
                7,
                8,
                8,
                7,
                10,
                11,
                9,
                11,
                6,
                9,
                7,
                4,
                2,
                0,
                0
              ],
              "bin_centers": [
                -3.875,
                -3.625,
                -3.375,
                -3.125,
                -2.875,
                -2.625,
                -2.375,
                -2.125,
                -1.875,
                -1.625,
                -1.375,
                -1.125,
                -0.875,
                -0.625,
                -0.375,
                -0.125
              ],
              "clip_lo": -4.0,
              "clip_hi": 0.0
            }
          }
        },
        "sideways": {
          "n": 4,
          "max_up_natr": {
            "n": 4,
            "mean": 1.144,
            "median": 1.119,
            "p25": 0.991,
            "p75": 1.273
          },
          "max_down_natr": {
            "n": 4,
            "mean": -0.797,
            "median": -0.79,
            "p25": -0.908,
            "p75": -0.679
          }
        },
        "forming": {
          "n": 0,
          "max_up_natr": {
            "n": 0,
            "mean": null,
            "median": null,
            "p25": null,
            "p75": null
          },
          "max_down_natr": {
            "n": 0,
            "mean": null,
            "median": null,
            "p25": null,
            "p75": null
          }
        }
      },
      "max_up_natr_hist": {
        "bin_edges": [
          0.0,
          0.25,
          0.5,
          0.75,
          1.0,
          1.25,
          1.5,
          1.75,
          2.0,
          2.25,
          2.5,
          2.75,
          3.0,
          3.25,
          3.5,
          3.75,
          4.0
        ],
        "counts": [
          69,
          18,
          11,
          10,
          15,
          8,
          11,
          6,
          3,
          4,
          6,
          1,
          1,
          8,
          7,
          27
        ],
        "bin_centers": [
          0.125,
          0.375,
          0.625,
          0.875,
          1.125,
          1.375,
          1.625,
          1.875,
          2.125,
          2.375,
          2.625,
          2.875,
          3.125,
          3.375,
          3.625,
          3.875
        ],
        "clip_lo": 0.0,
        "clip_hi": 4.0
      },
      "max_down_natr_hist": {
        "bin_edges": [
          -4.0,
          -3.75,
          -3.5,
          -3.25,
          -3.0,
          -2.75,
          -2.5,
          -2.25,
          -2.0,
          -1.75,
          -1.5,
          -1.25,
          -1.0,
          -0.75,
          -0.5,
          -0.25,
          0.0
        ],
        "counts": [
          54,
          7,
          9,
          8,
          8,
          12,
          13,
          10,
          11,
          9,
          12,
          11,
          8,
          9,
          8,
          16
        ],
        "bin_centers": [
          -3.875,
          -3.625,
          -3.375,
          -3.125,
          -2.875,
          -2.625,
          -2.375,
          -2.125,
          -1.875,
          -1.625,
          -1.375,
          -1.125,
          -0.875,
          -0.625,
          -0.375,
          -0.125
        ],
        "clip_lo": -4.0,
        "clip_hi": 0.0
      },
      "timestamp_min": 1591347600000,
      "timestamp_max": 1784538000000,
      "timestamp_min_iso": "2020-06-05T09:00:00Z",
      "timestamp_max_iso": "2026-07-20T09:00:00Z"
    },
    {
      "pattern_type": "ascending_triangle",
      "pattern_name": "Ascending Triangle",
      "timeframe": "4h",
      "bias": "bullish",
      "n": 52,
      "n_symbols": 52,
      "breakout_success_rate": 21.15,
      "breakdown_success_rate": 76.92,
      "sideways_rate": 1.93,
      "forming_rate": 0.0,
      "both_cleared_rate": 34.62,
      "breakout_success_rate_ci95": [
        12.24,
        34.03
      ],
      "breakdown_success_rate_ci95": [
        63.87,
        86.28
      ],
      "sideways_rate_ci95": [
        0.34,
        10.12
      ],
      "forming_rate_ci95": [
        0.0,
        6.88
      ],
      "both_sides_rate": 34.62,
      "expected_hit_rate": 21.15,
      "expected_hit_rate_ci95": [
        12.24,
        34.03
      ],
      "mean_ret_10c": -3.933,
      "median_ret_10c": -3.78,
      "std_ret_10c": 10.691,
      "win_rate_ret_gt0": 36.54,
      "p25_ret_10c": -7.858,
      "p75_ret_10c": 3.44,
      "mean_mfe": 7.644,
      "mean_mae": -11.528,
      "mfe_mae_ratio": 0.663,
      "max_up_natr": {
        "n": 52,
        "mean": 2.946,
        "median": 0.817,
        "p25": 0.206,
        "p75": 2.541,
        "hist": {
          "bin_edges": [
            0.0,
            0.25,
            0.5,
            0.75,
            1.0,
            1.25,
            1.5,
            1.75,
            2.0,
            2.25,
            2.5,
            2.75,
            3.0,
            3.25,
            3.5,
            3.75,
            4.0
          ],
          "counts": [
            14,
            8,
            2,
            6,
            1,
            1,
            4,
            0,
            1,
            2,
            0,
            1,
            1,
            0,
            4,
            7
          ],
          "bin_centers": [
            0.125,
            0.375,
            0.625,
            0.875,
            1.125,
            1.375,
            1.625,
            1.875,
            2.125,
            2.375,
            2.625,
            2.875,
            3.125,
            3.375,
            3.625,
            3.875
          ],
          "clip_lo": 0.0,
          "clip_hi": 4.0
        }
      },
      "max_down_natr": {
        "n": 52,
        "mean": -2.944,
        "median": -2.597,
        "p25": -3.357,
        "p75": -1.858,
        "hist": {
          "bin_edges": [
            -4.0,
            -3.75,
            -3.5,
            -3.25,
            -3.0,
            -2.75,
            -2.5,
            -2.25,
            -2.0,
            -1.75,
            -1.5,
            -1.25,
            -1.0,
            -0.75,
            -0.5,
            -0.25,
            0.0
          ],
          "counts": [
            10,
            2,
            3,
            4,
            3,
            6,
            3,
            5,
            5,
            1,
            4,
            2,
            2,
            1,
            0,
            1
          ],
          "bin_centers": [
            -3.875,
            -3.625,
            -3.375,
            -3.125,
            -2.875,
            -2.625,
            -2.375,
            -2.125,
            -1.875,
            -1.625,
            -1.375,
            -1.125,
            -0.875,
            -0.625,
            -0.375,
            -0.125
          ],
          "clip_lo": -4.0,
          "clip_hi": 0.0
        }
      },
      "median_max_up_natr": 0.817,
      "median_max_down_natr": -2.597,
      "mean_max_up_natr": 2.946,
      "mean_max_down_natr": -2.944,
      "p25_max_up_natr": 0.206,
      "p75_max_up_natr": 2.541,
      "p25_max_down_natr": -3.357,
      "p75_max_down_natr": -1.858,
      "outcome_natr_moves": {
        "breakout": {
          "n": 11,
          "max_up_natr": {
            "n": 11,
            "mean": 3.192,
            "median": 3.558,
            "p25": 2.394,
            "p75": 3.953
          },
          "max_down_natr": {
            "n": 11,
            "mean": -1.857,
            "median": -2.032,
            "p25": -2.491,
            "p75": -0.825
          }
        },
        "breakdown": {
          "n": 40,
          "max_up_natr": {
            "n": 40,
            "mean": 2.908,
            "median": 0.466,
            "p25": 0.161,
            "p75": 0.98,
            "hist": {
              "bin_edges": [
                0.0,
                0.25,
                0.5,
                0.75,
                1.0,
                1.25,
                1.5,
                1.75,
                2.0,
                2.25,
                2.5,
                2.75,
                3.0,
                3.25,
                3.5,
                3.75,
                4.0
              ],
              "counts": [
                14,
                8,
                2,
                6,
                1,
                0,
                2,
                0,
                1,
                0,
                0,
                0,
                1,
                0,
                1,
                4
              ],
              "bin_centers": [
                0.125,
                0.375,
                0.625,
                0.875,
                1.125,
                1.375,
                1.625,
                1.875,
                2.125,
                2.375,
                2.625,
                2.875,
                3.125,
                3.375,
                3.625,
                3.875
              ],
              "clip_lo": 0.0,
              "clip_hi": 4.0
            }
          },
          "max_down_natr": {
            "n": 40,
            "mean": -3.29,
            "median": -2.735,
            "p25": -3.589,
            "p75": -2.105,
            "hist": {
              "bin_edges": [
                -4.0,
                -3.75,
                -3.5,
                -3.25,
                -3.0,
                -2.75,
                -2.5,
                -2.25,
                -2.0,
                -1.75,
                -1.5,
                -1.25,
                -1.0,
                -0.75,
                -0.5,
                -0.25,
                0.0
              ],
              "counts": [
                9,
                2,
                2,
                4,
                3,
                5,
                2,
                3,
                5,
                1,
                4,
                0,
                0,
                0,
                0,
                0
              ],
              "bin_centers": [
                -3.875,
                -3.625,
                -3.375,
                -3.125,
                -2.875,
                -2.625,
                -2.375,
                -2.125,
                -1.875,
                -1.625,
                -1.375,
                -1.125,
                -0.875,
                -0.625,
                -0.375,
                -0.125
              ],
              "clip_lo": -4.0,
              "clip_hi": 0.0
            }
          }
        },
        "sideways": {
          "n": 1,
          "max_up_natr": {
            "n": 1,
            "mean": 1.727,
            "median": 1.727,
            "p25": 1.727,
            "p75": 1.727
          },
          "max_down_natr": {
            "n": 1,
            "mean": -1.08,
            "median": -1.08,
            "p25": -1.08,
            "p75": -1.08
          }
        },
        "forming": {
          "n": 0,
          "max_up_natr": {
            "n": 0,
            "mean": null,
            "median": null,
            "p25": null,
            "p75": null
          },
          "max_down_natr": {
            "n": 0,
            "mean": null,
            "median": null,
            "p25": null,
            "p75": null
          }
        }
      },
      "max_up_natr_hist": {
        "bin_edges": [
          0.0,
          0.25,
          0.5,
          0.75,
          1.0,
          1.25,
          1.5,
          1.75,
          2.0,
          2.25,
          2.5,
          2.75,
          3.0,
          3.25,
          3.5,
          3.75,
          4.0
        ],
        "counts": [
          14,
          8,
          2,
          6,
          1,
          1,
          4,
          0,
          1,
          2,
          0,
          1,
          1,
          0,
          4,
          7
        ],
        "bin_centers": [
          0.125,
          0.375,
          0.625,
          0.875,
          1.125,
          1.375,
          1.625,
          1.875,
          2.125,
          2.375,
          2.625,
          2.875,
          3.125,
          3.375,
          3.625,
          3.875
        ],
        "clip_lo": 0.0,
        "clip_hi": 4.0
      },
      "max_down_natr_hist": {
        "bin_edges": [
          -4.0,
          -3.75,
          -3.5,
          -3.25,
          -3.0,
          -2.75,
          -2.5,
          -2.25,
          -2.0,
          -1.75,
          -1.5,
          -1.25,
          -1.0,
          -0.75,
          -0.5,
          -0.25,
          0.0
        ],
        "counts": [
          10,
          2,
          3,
          4,
          3,
          6,
          3,
          5,
          5,
          1,
          4,
          2,
          2,
          1,
          0,
          1
        ],
        "bin_centers": [
          -3.875,
          -3.625,
          -3.375,
          -3.125,
          -2.875,
          -2.625,
          -2.375,
          -2.125,
          -1.875,
          -1.625,
          -1.375,
          -1.125,
          -0.875,
          -0.625,
          -0.375,
          -0.125
        ],
        "clip_lo": -4.0,
        "clip_hi": 0.0
      },
      "timestamp_min": 1585195200000,
      "timestamp_max": 1784462400000,
      "timestamp_min_iso": "2020-03-26T04:00:00Z",
      "timestamp_max_iso": "2026-07-19T12:00:00Z"
    },
    {
      "pattern_type": "symmetrical_triangle",
      "pattern_name": "Symmetrical Triangle",
      "timeframe": "1h",
      "bias": "neutral",
      "n": 2469,
      "n_symbols": 559,
      "breakout_success_rate": 45.2,
      "breakdown_success_rate": 52.69,
      "sideways_rate": 2.11,
      "forming_rate": 0.0,
      "both_cleared_rate": 32.52,
      "breakout_success_rate_ci95": [
        43.25,
        47.17
      ],
      "breakdown_success_rate_ci95": [
        50.72,
        54.66
      ],
      "sideways_rate_ci95": [
        1.61,
        2.75
      ],
      "forming_rate_ci95": [
        0.0,
        0.16
      ],
      "both_sides_rate": 32.52,
      "expected_hit_rate": null,
      "expected_hit_rate_ci95": null,
      "mean_ret_10c": -0.091,
      "median_ret_10c": -0.218,
      "std_ret_10c": 5.433,
      "win_rate_ret_gt0": 46.78,
      "p25_ret_10c": -2.831,
      "p75_ret_10c": 2.177,
      "mean_mfe": 3.975,
      "mean_mae": -3.94,
      "mfe_mae_ratio": 1.009,
      "max_up_natr": {
        "n": 2469,
        "mean": 2.151,
        "median": 1.483,
        "p25": 0.52,
        "p75": 2.809,
        "hist": {
          "bin_edges": [
            0.0,
            0.25,
            0.5,
            0.75,
            1.0,
            1.25,
            1.5,
            1.75,
            2.0,
            2.25,
            2.5,
            2.75,
            3.0,
            3.25,
            3.5,
            3.75,
            4.0
          ],
          "counts": [
            395,
            208,
            167,
            172,
            149,
            158,
            151,
            115,
            113,
            103,
            95,
            88,
            62,
            60,
            43,
            390
          ],
          "bin_centers": [
            0.125,
            0.375,
            0.625,
            0.875,
            1.125,
            1.375,
            1.625,
            1.875,
            2.125,
            2.375,
            2.625,
            2.875,
            3.125,
            3.375,
            3.625,
            3.875
          ],
          "clip_lo": 0.0,
          "clip_hi": 4.0
        }
      },
      "max_down_natr": {
        "n": 2469,
        "mean": -2.209,
        "median": -1.704,
        "p25": -3.004,
        "p75": -0.768,
        "hist": {
          "bin_edges": [
            -4.0,
            -3.75,
            -3.5,
            -3.25,
            -3.0,
            -2.75,
            -2.5,
            -2.25,
            -2.0,
            -1.75,
            -1.5,
            -1.25,
            -1.0,
            -0.75,
            -0.5,
            -0.25,
            0.0
          ],
          "counts": [
            407,
            52,
            73,
            87,
            80,
            93,
            120,
            147,
            142,
            164,
            158,
            188,
            152,
            149,
            164,
            293
          ],
          "bin_centers": [
            -3.875,
            -3.625,
            -3.375,
            -3.125,
            -2.875,
            -2.625,
            -2.375,
            -2.125,
            -1.875,
            -1.625,
            -1.375,
            -1.125,
            -0.875,
            -0.625,
            -0.375,
            -0.125
          ],
          "clip_lo": -4.0,
          "clip_hi": 0.0
        }
      },
      "median_max_up_natr": 1.483,
      "median_max_down_natr": -1.704,
      "mean_max_up_natr": 2.151,
      "mean_max_down_natr": -2.209,
      "p25_max_up_natr": 0.52,
      "p75_max_up_natr": 2.809,
      "p25_max_down_natr": -3.004,
      "p75_max_down_natr": -0.768,
      "outcome_natr_moves": {
        "breakout": {
          "n": 1116,
          "max_up_natr": {
            "n": 1116,
            "mean": 3.4,
            "median": 2.566,
            "p25": 1.664,
            "p75": 4.07,
            "hist": {
              "bin_edges": [
                0.0,
                0.25,
                0.5,
                0.75,
                1.0,
                1.25,
                1.5,
                1.75,
                2.0,
                2.25,
                2.5,
                2.75,
                3.0,
                3.25,
                3.5,
                3.75,
                4.0
              ],
              "counts": [
                0,
                0,
                16,
                40,
                66,
                87,
                93,
                78,
                80,
                73,
                70,
                62,
                51,
                47,
                29,
                324
              ],
              "bin_centers": [
                0.125,
                0.375,
                0.625,
                0.875,
                1.125,
                1.375,
                1.625,
                1.875,
                2.125,
                2.375,
                2.625,
                2.875,
                3.125,
                3.375,
                3.625,
                3.875
              ],
              "clip_lo": 0.0,
              "clip_hi": 4.0
            }
          },
          "max_down_natr": {
            "n": 1116,
            "mean": -1.224,
            "median": -0.683,
            "p25": -1.56,
            "p75": -0.235,
            "hist": {
              "bin_edges": [
                -4.0,
                -3.75,
                -3.5,
                -3.25,
                -3.0,
                -2.75,
                -2.5,
                -2.25,
                -2.0,
                -1.75,
                -1.5,
                -1.25,
                -1.0,
                -0.75,
                -0.5,
                -0.25,
                0.0
              ],
              "counts": [
                74,
                11,
                19,
                17,
                16,
                14,
                25,
                29,
                42,
                46,
                65,
                79,
                97,
                132,
                159,
                291
              ],
              "bin_centers": [
                -3.875,
                -3.625,
                -3.375,
                -3.125,
                -2.875,
                -2.625,
                -2.375,
                -2.125,
                -1.875,
                -1.625,
                -1.375,
                -1.125,
                -0.875,
                -0.625,
                -0.375,
                -0.125
              ],
              "clip_lo": -4.0,
              "clip_hi": 0.0
            }
          }
        },
        "breakdown": {
          "n": 1301,
          "max_up_natr": {
            "n": 1301,
            "mean": 1.127,
            "median": 0.591,
            "p25": 0.194,
            "p75": 1.429,
            "hist": {
              "bin_edges": [
                0.0,
                0.25,
                0.5,
                0.75,
                1.0,
                1.25,
                1.5,
                1.75,
                2.0,
                2.25,
                2.5,
                2.75,
                3.0,
                3.25,
                3.5,
                3.75,
                4.0
              ],
              "counts": [
                391,
                203,
                136,
                123,
                78,
                66,
                53,
                35,
                32,
                30,
                25,
                26,
                10,
                13,
                14,
                66
              ],
              "bin_centers": [
                0.125,
                0.375,
                0.625,
                0.875,
                1.125,
                1.375,
                1.625,
                1.875,
                2.125,
                2.375,
                2.625,
                2.875,
                3.125,
                3.375,
                3.625,
                3.875
              ],
              "clip_lo": 0.0,
              "clip_hi": 4.0
            }
          },
          "max_down_natr": {
            "n": 1301,
            "mean": -3.102,
            "median": -2.488,
            "p25": -3.787,
            "p75": -1.704,
            "hist": {
              "bin_edges": [
                -4.0,
                -3.75,
                -3.5,
                -3.25,
                -3.0,
                -2.75,
                -2.5,
                -2.25,
                -2.0,
                -1.75,
                -1.5,
                -1.25,
                -1.0,
                -0.75,
                -0.5,
                -0.25,
                0.0
              ],
              "counts": [
                333,
                41,
                54,
                70,
                64,
                79,
                95,
                116,
                98,
                113,
                90,
                98,
                41,
                9,
                0,
                0
              ],
              "bin_centers": [
                -3.875,
                -3.625,
                -3.375,
                -3.125,
                -2.875,
                -2.625,
                -2.375,
                -2.125,
                -1.875,
                -1.625,
                -1.375,
                -1.125,
                -0.875,
                -0.625,
                -0.375,
                -0.125
              ],
              "clip_lo": -4.0,
              "clip_hi": 0.0
            }
          }
        },
        "sideways": {
          "n": 52,
          "max_up_natr": {
            "n": 52,
            "mean": 0.943,
            "median": 0.795,
            "p25": 0.524,
            "p75": 1.348,
            "hist": {
              "bin_edges": [
                0.0,
                0.25,
                0.5,
                0.75,
                1.0,
                1.25,
                1.5,
                1.75,
                2.0,
                2.25,
                2.5,
                2.75,
                3.0,
                3.25,
                3.5,
                3.75,
                4.0
              ],
              "counts": [
                4,
                5,
                15,
                9,
                5,
                5,
                5,
                2,
                1,
                0,
                0,
                0,
                1,
                0,
                0,
                0
              ],
              "bin_centers": [
                0.125,
                0.375,
                0.625,
                0.875,
                1.125,
                1.375,
                1.625,
                1.875,
                2.125,
                2.375,
                2.625,
                2.875,
                3.125,
                3.375,
                3.625,
                3.875
              ],
              "clip_lo": 0.0,
              "clip_hi": 4.0
            }
          },
          "max_down_natr": {
            "n": 52,
            "mean": -0.996,
            "median": -0.934,
            "p25": -1.219,
            "p75": -0.678,
            "hist": {
              "bin_edges": [
                -4.0,
                -3.75,
                -3.5,
                -3.25,
                -3.0,
                -2.75,
                -2.5,
                -2.25,
                -2.0,
                -1.75,
                -1.5,
                -1.25,
                -1.0,
                -0.75,
                -0.5,
                -0.25,
                0.0
              ],
              "counts": [
                0,
                0,
                0,
                0,
                0,
                0,
                0,
                2,
                2,
                5,
                3,
                11,
                14,
                8,
                5,
                2
              ],
              "bin_centers": [
                -3.875,
                -3.625,
                -3.375,
                -3.125,
                -2.875,
                -2.625,
                -2.375,
                -2.125,
                -1.875,
                -1.625,
                -1.375,
                -1.125,
                -0.875,
                -0.625,
                -0.375,
                -0.125
              ],
              "clip_lo": -4.0,
              "clip_hi": 0.0
            }
          }
        },
        "forming": {
          "n": 0,
          "max_up_natr": {
            "n": 0,
            "mean": null,
            "median": null,
            "p25": null,
            "p75": null
          },
          "max_down_natr": {
            "n": 0,
            "mean": null,
            "median": null,
            "p25": null,
            "p75": null
          }
        }
      },
      "max_up_natr_hist": {
        "bin_edges": [
          0.0,
          0.25,
          0.5,
          0.75,
          1.0,
          1.25,
          1.5,
          1.75,
          2.0,
          2.25,
          2.5,
          2.75,
          3.0,
          3.25,
          3.5,
          3.75,
          4.0
        ],
        "counts": [
          395,
          208,
          167,
          172,
          149,
          158,
          151,
          115,
          113,
          103,
          95,
          88,
          62,
          60,
          43,
          390
        ],
        "bin_centers": [
          0.125,
          0.375,
          0.625,
          0.875,
          1.125,
          1.375,
          1.625,
          1.875,
          2.125,
          2.375,
          2.625,
          2.875,
          3.125,
          3.375,
          3.625,
          3.875
        ],
        "clip_lo": 0.0,
        "clip_hi": 4.0
      },
      "max_down_natr_hist": {
        "bin_edges": [
          -4.0,
          -3.75,
          -3.5,
          -3.25,
          -3.0,
          -2.75,
          -2.5,
          -2.25,
          -2.0,
          -1.75,
          -1.5,
          -1.25,
          -1.0,
          -0.75,
          -0.5,
          -0.25,
          0.0
        ],
        "counts": [
          407,
          52,
          73,
          87,
          80,
          93,
          120,
          147,
          142,
          164,
          158,
          188,
          152,
          149,
          164,
          293
        ],
        "bin_centers": [
          -3.875,
          -3.625,
          -3.375,
          -3.125,
          -2.875,
          -2.625,
          -2.375,
          -2.125,
          -1.875,
          -1.625,
          -1.375,
          -1.125,
          -0.875,
          -0.625,
          -0.375,
          -0.125
        ],
        "clip_lo": -4.0,
        "clip_hi": 0.0
      },
      "timestamp_min": 1580598000000,
      "timestamp_max": 1785466800000,
      "timestamp_min_iso": "2020-02-01T23:00:00Z",
      "timestamp_max_iso": "2026-07-31T03:00:00Z"
    },
    {
      "pattern_type": "symmetrical_broadening_wedge",
      "pattern_name": "Symmetrical Broadening Wedge",
      "timeframe": "1h",
      "bias": "neutral",
      "n": 1986,
      "n_symbols": 552,
      "breakout_success_rate": 26.94,
      "breakdown_success_rate": 31.47,
      "sideways_rate": 41.59,
      "forming_rate": 0.0,
      "both_cleared_rate": 41.54,
      "breakout_success_rate_ci95": [
        25.03,
        28.93
      ],
      "breakdown_success_rate_ci95": [
        29.47,
        33.55
      ],
      "sideways_rate_ci95": [
        39.44,
        43.77
      ],
      "forming_rate_ci95": [
        0.0,
        0.19
      ],
      "both_sides_rate": 41.54,
      "expected_hit_rate": null,
      "expected_hit_rate_ci95": null,
      "mean_ret_10c": 0.124,
      "median_ret_10c": -0.198,
      "std_ret_10c": 7.687,
      "win_rate_ret_gt0": 48.39,
      "p25_ret_10c": -3.059,
      "p75_ret_10c": 2.58,
      "mean_mfe": 5.327,
      "mean_mae": -4.808,
      "mfe_mae_ratio": 1.108,
      "max_up_natr": {
        "n": 1986,
        "mean": 3.187,
        "median": 1.822,
        "p25": 0.657,
        "p75": 3.789,
        "hist": {
          "bin_edges": [
            0.0,
            0.25,
            0.5,
            0.75,
            1.0,
            1.25,
            1.5,
            1.75,
            2.0,
            2.25,
            2.5,
            2.75,
            3.0,
            3.25,
            3.5,
            3.75,
            4.0
          ],
          "counts": [
            263,
            162,
            112,
            110,
            128,
            104,
            92,
            81,
            85,
            63,
            68,
            68,
            55,
            50,
            42,
            503
          ],
          "bin_centers": [
            0.125,
            0.375,
            0.625,
            0.875,
            1.125,
            1.375,
            1.625,
            1.875,
            2.125,
            2.375,
            2.625,
            2.875,
            3.125,
            3.375,
            3.625,
            3.875
          ],
          "clip_lo": 0.0,
          "clip_hi": 4.0
        }
      },
      "max_down_natr": {
        "n": 1986,
        "mean": -3.056,
        "median": -2.133,
        "p25": -3.795,
        "p75": -0.913,
        "hist": {
          "bin_edges": [
            -4.0,
            -3.75,
            -3.5,
            -3.25,
            -3.0,
            -2.75,
            -2.5,
            -2.25,
            -2.0,
            -1.75,
            -1.5,
            -1.25,
            -1.0,
            -0.75,
            -0.5,
            -0.25,
            0.0
          ],
          "counts": [
            504,
            58,
            62,
            80,
            70,
            84,
            88,
            97,
            88,
            95,
            108,
            118,
            115,
            100,
            135,
            184
          ],
          "bin_centers": [
            -3.875,
            -3.625,
            -3.375,
            -3.125,
            -2.875,
            -2.625,
            -2.375,
            -2.125,
            -1.875,
            -1.625,
            -1.375,
            -1.125,
            -0.875,
            -0.625,
            -0.375,
            -0.125
          ],
          "clip_lo": -4.0,
          "clip_hi": 0.0
        }
      },
      "median_max_up_natr": 1.822,
      "median_max_down_natr": -2.133,
      "mean_max_up_natr": 3.187,
      "mean_max_down_natr": -3.056,
      "p25_max_up_natr": 0.657,
      "p75_max_up_natr": 3.789,
      "p25_max_down_natr": -3.795,
      "p75_max_down_natr": -0.913,
      "outcome_natr_moves": {
        "breakout": {
          "n": 535,
          "max_up_natr": {
            "n": 535,
            "mean": 7.205,
            "median": 4.763,
            "p25": 2.922,
            "p75": 7.961,
            "hist": {
              "bin_edges": [
                0.0,
                0.25,
                0.5,
                0.75,
                1.0,
                1.25,
                1.5,
                1.75,
                2.0,
                2.25,
                2.5,
                2.75,
                3.0,
                3.25,
                3.5,
                3.75,
                4.0
              ],
              "counts": [
                0,
                0,
                1,
                5,
                13,
                12,
                19,
                14,
                21,
                13,
                18,
                23,
                21,
                14,
                19,
                342
              ],
              "bin_centers": [
                0.125,
                0.375,
                0.625,
                0.875,
                1.125,
                1.375,
                1.625,
                1.875,
                2.125,
                2.375,
                2.625,
                2.875,
                3.125,
                3.375,
                3.625,
                3.875
              ],
              "clip_lo": 0.0,
              "clip_hi": 4.0
            }
          },
          "max_down_natr": {
            "n": 535,
            "mean": -1.6,
            "median": -0.867,
            "p25": -2.103,
            "p75": -0.261,
            "hist": {
              "bin_edges": [
                -4.0,
                -3.75,
                -3.5,
                -3.25,
                -3.0,
                -2.75,
                -2.5,
                -2.25,
                -2.0,
                -1.75,
                -1.5,
                -1.25,
                -1.0,
                -0.75,
                -0.5,
                -0.25,
                0.0
              ],
              "counts": [
                55,
                9,
                7,
                14,
                7,
                9,
                21,
                21,
                19,
                18,
                29,
                41,
                40,
                44,
                73,
                128
              ],
              "bin_centers": [
                -3.875,
                -3.625,
                -3.375,
                -3.125,
                -2.875,
                -2.625,
                -2.375,
                -2.125,
                -1.875,
                -1.625,
                -1.375,
                -1.125,
                -0.875,
                -0.625,
                -0.375,
                -0.125
              ],
              "clip_lo": -4.0,
              "clip_hi": 0.0
            }
          }
        },
        "breakdown": {
          "n": 625,
          "max_up_natr": {
            "n": 625,
            "mean": 1.346,
            "median": 0.691,
            "p25": 0.195,
            "p75": 1.981,
            "hist": {
              "bin_edges": [
                0.0,
                0.25,
                0.5,
                0.75,
                1.0,
                1.25,
                1.5,
                1.75,
                2.0,
                2.25,
                2.5,
                2.75,
                3.0,
                3.25,
                3.5,
                3.75,
                4.0
              ],
              "counts": [
                182,
                98,
                38,
                34,
                41,
                31,
                18,
                31,
                25,
                19,
                20,
                15,
                9,
                11,
                6,
                47
              ],
              "bin_centers": [
                0.125,
                0.375,
                0.625,
                0.875,
                1.125,
                1.375,
                1.625,
                1.875,
                2.125,
                2.375,
                2.625,
                2.875,
                3.125,
                3.375,
                3.625,
                3.875
              ],
              "clip_lo": 0.0,
              "clip_hi": 4.0
            }
          },
          "max_down_natr": {
            "n": 625,
            "mean": -5.608,
            "median": -4.001,
            "p25": -6.176,
            "p75": -2.586,
            "hist": {
              "bin_edges": [
                -4.0,
                -3.75,
                -3.5,
                -3.25,
                -3.0,
                -2.75,
                -2.5,
                -2.25,
                -2.0,
                -1.75,
                -1.5,
                -1.25,
                -1.0,
                -0.75,
                -0.5,
                -0.25,
                0.0
              ],
              "counts": [
                340,
                26,
                20,
                30,
                35,
                31,
                28,
                29,
                20,
                28,
                17,
                12,
                5,
                4,
                0,
                0
              ],
              "bin_centers": [
                -3.875,
                -3.625,
                -3.375,
                -3.125,
                -2.875,
                -2.625,
                -2.375,
                -2.125,
                -1.875,
                -1.625,
                -1.375,
                -1.125,
                -0.875,
                -0.625,
                -0.375,
                -0.125
              ],
              "clip_lo": -4.0,
              "clip_hi": 0.0
            }
          }
        },
        "sideways": {
          "n": 826,
          "max_up_natr": {
            "n": 826,
            "mean": 1.978,
            "median": 1.458,
            "p25": 0.719,
            "p75": 2.781,
            "hist": {
              "bin_edges": [
                0.0,
                0.25,
                0.5,
                0.75,
                1.0,
                1.25,
                1.5,
                1.75,
                2.0,
                2.25,
                2.5,
                2.75,
                3.0,
                3.25,
                3.5,
                3.75,
                4.0
              ],
              "counts": [
                81,
                64,
                73,
                71,
                74,
                61,
                55,
                36,
                39,
                31,
                30,
                30,
                25,
                25,
                17,
                114
              ],
              "bin_centers": [
                0.125,
                0.375,
                0.625,
                0.875,
                1.125,
                1.375,
                1.625,
                1.875,
                2.125,
                2.375,
                2.625,
                2.875,
                3.125,
                3.375,
                3.625,
                3.875
              ],
              "clip_lo": 0.0,
              "clip_hi": 4.0
            }
          },
          "max_down_natr": {
            "n": 826,
            "mean": -2.069,
            "median": -1.734,
            "p25": -2.974,
            "p75": -0.875,
            "hist": {
              "bin_edges": [
                -4.0,
                -3.75,
                -3.5,
                -3.25,
                -3.0,
                -2.75,
                -2.5,
                -2.25,
                -2.0,
                -1.75,
                -1.5,
                -1.25,
                -1.0,
                -0.75,
                -0.5,
                -0.25,
                0.0
              ],
              "counts": [
                109,
                23,
                35,
                36,
                28,
                44,
                39,
                47,
                49,
                49,
                62,
                65,
                70,
                52,
                62,
                56
              ],
              "bin_centers": [
                -3.875,
                -3.625,
                -3.375,
                -3.125,
                -2.875,
                -2.625,
                -2.375,
                -2.125,
                -1.875,
                -1.625,
                -1.375,
                -1.125,
                -0.875,
                -0.625,
                -0.375,
                -0.125
              ],
              "clip_lo": -4.0,
              "clip_hi": 0.0
            }
          }
        },
        "forming": {
          "n": 0,
          "max_up_natr": {
            "n": 0,
            "mean": null,
            "median": null,
            "p25": null,
            "p75": null
          },
          "max_down_natr": {
            "n": 0,
            "mean": null,
            "median": null,
            "p25": null,
            "p75": null
          }
        }
      },
      "max_up_natr_hist": {
        "bin_edges": [
          0.0,
          0.25,
          0.5,
          0.75,
          1.0,
          1.25,
          1.5,
          1.75,
          2.0,
          2.25,
          2.5,
          2.75,
          3.0,
          3.25,
          3.5,
          3.75,
          4.0
        ],
        "counts": [
          263,
          162,
          112,
          110,
          128,
          104,
          92,
          81,
          85,
          63,
          68,
          68,
          55,
          50,
          42,
          503
        ],
        "bin_centers": [
          0.125,
          0.375,
          0.625,
          0.875,
          1.125,
          1.375,
          1.625,
          1.875,
          2.125,
          2.375,
          2.625,
          2.875,
          3.125,
          3.375,
          3.625,
          3.875
        ],
        "clip_lo": 0.0,
        "clip_hi": 4.0
      },
      "max_down_natr_hist": {
        "bin_edges": [
          -4.0,
          -3.75,
          -3.5,
          -3.25,
          -3.0,
          -2.75,
          -2.5,
          -2.25,
          -2.0,
          -1.75,
          -1.5,
          -1.25,
          -1.0,
          -0.75,
          -0.5,
          -0.25,
          0.0
        ],
        "counts": [
          504,
          58,
          62,
          80,
          70,
          84,
          88,
          97,
          88,
          95,
          108,
          118,
          115,
          100,
          135,
          184
        ],
        "bin_centers": [
          -3.875,
          -3.625,
          -3.375,
          -3.125,
          -2.875,
          -2.625,
          -2.375,
          -2.125,
          -1.875,
          -1.625,
          -1.375,
          -1.125,
          -0.875,
          -0.625,
          -0.375,
          -0.125
        ],
        "clip_lo": -4.0,
        "clip_hi": 0.0
      },
      "timestamp_min": 1580972400000,
      "timestamp_max": 1785466800000,
      "timestamp_min_iso": "2020-02-06T07:00:00Z",
      "timestamp_max_iso": "2026-07-31T03:00:00Z"
    },
    {
      "pattern_type": "symmetrical_triangle",
      "pattern_name": "Symmetrical Triangle",
      "timeframe": "15m",
      "bias": "neutral",
      "n": 985,
      "n_symbols": 454,
      "breakout_success_rate": 45.89,
      "breakdown_success_rate": 52.28,
      "sideways_rate": 1.83,
      "forming_rate": 0.0,
      "both_cleared_rate": 34.72,
      "breakout_success_rate_ci95": [
        42.8,
        49.01
      ],
      "breakdown_success_rate_ci95": [
        49.16,
        55.39
      ],
      "sideways_rate_ci95": [
        1.16,
        2.87
      ],
      "forming_rate_ci95": [
        0.0,
        0.39
      ],
      "both_sides_rate": 34.72,
      "expected_hit_rate": null,
      "expected_hit_rate_ci95": null,
      "mean_ret_10c": 0.079,
      "median_ret_10c": -0.111,
      "std_ret_10c": 3.32,
      "win_rate_ret_gt0": 46.29,
      "p25_ret_10c": -1.09,
      "p75_ret_10c": 0.988,
      "mean_mfe": 2.162,
      "mean_mae": -1.791,
      "mfe_mae_ratio": 1.207,
      "max_up_natr": {
        "n": 985,
        "mean": 2.388,
        "median": 1.596,
        "p25": 0.624,
        "p75": 3.077,
        "hist": {
          "bin_edges": [
            0.0,
            0.25,
            0.5,
            0.75,
            1.0,
            1.25,
            1.5,
            1.75,
            2.0,
            2.25,
            2.5,
            2.75,
            3.0,
            3.25,
            3.5,
            3.75,
            4.0
          ],
          "counts": [
            141,
            71,
            61,
            64,
            64,
            71,
            54,
            62,
            36,
            44,
            33,
            30,
            28,
            18,
            29,
            179
          ],
          "bin_centers": [
            0.125,
            0.375,
            0.625,
            0.875,
            1.125,
            1.375,
            1.625,
            1.875,
            2.125,
            2.375,
            2.625,
            2.875,
            3.125,
            3.375,
            3.625,
            3.875
          ],
          "clip_lo": 0.0,
          "clip_hi": 4.0
        }
      },
      "max_down_natr": {
        "n": 985,
        "mean": -2.117,
        "median": -1.659,
        "p25": -2.871,
        "p75": -0.775,
        "hist": {
          "bin_edges": [
            -4.0,
            -3.75,
            -3.5,
            -3.25,
            -3.0,
            -2.75,
            -2.5,
            -2.25,
            -2.0,
            -1.75,
            -1.5,
            -1.25,
            -1.0,
            -0.75,
            -0.5,
            -0.25,
            0.0
          ],
          "counts": [
            154,
            20,
            32,
            25,
            36,
            47,
            38,
            52,
            65,
            72,
            65,
            65,
            75,
            51,
            85,
            103
          ],
          "bin_centers": [
            -3.875,
            -3.625,
            -3.375,
            -3.125,
            -2.875,
            -2.625,
            -2.375,
            -2.125,
            -1.875,
            -1.625,
            -1.375,
            -1.125,
            -0.875,
            -0.625,
            -0.375,
            -0.125
          ],
          "clip_lo": -4.0,
          "clip_hi": 0.0
        }
      },
      "median_max_up_natr": 1.596,
      "median_max_down_natr": -1.659,
      "mean_max_up_natr": 2.388,
      "mean_max_down_natr": -2.117,
      "p25_max_up_natr": 0.624,
      "p75_max_up_natr": 3.077,
      "p25_max_down_natr": -2.871,
      "p75_max_down_natr": -0.775,
      "outcome_natr_moves": {
        "breakout": {
          "n": 452,
          "max_up_natr": {
            "n": 452,
            "mean": 3.638,
            "median": 2.649,
            "p25": 1.722,
            "p75": 4.225,
            "hist": {
              "bin_edges": [
                0.0,
                0.25,
                0.5,
                0.75,
                1.0,
                1.25,
                1.5,
                1.75,
                2.0,
                2.25,
                2.5,
                2.75,
                3.0,
                3.25,
                3.5,
                3.75,
                4.0
              ],
              "counts": [
                0,
                0,
                2,
                17,
                31,
                31,
                37,
                35,
                26,
                31,
                29,
                23,
                19,
                12,
                21,
                138
              ],
              "bin_centers": [
                0.125,
                0.375,
                0.625,
                0.875,
                1.125,
                1.375,
                1.625,
                1.875,
                2.125,
                2.375,
                2.625,
                2.875,
                3.125,
                3.375,
                3.625,
                3.875
              ],
              "clip_lo": 0.0,
              "clip_hi": 4.0
            }
          },
          "max_down_natr": {
            "n": 452,
            "mean": -1.189,
            "median": -0.748,
            "p25": -1.573,
            "p75": -0.28,
            "hist": {
              "bin_edges": [
                -4.0,
                -3.75,
                -3.5,
                -3.25,
                -3.0,
                -2.75,
                -2.5,
                -2.25,
                -2.0,
                -1.75,
                -1.5,
                -1.25,
                -1.0,
                -0.75,
                -0.5,
                -0.25,
                0.0
              ],
              "counts": [
                25,
                6,
                6,
                7,
                12,
                9,
                9,
                8,
                17,
                23,
                26,
                29,
                49,
                42,
                83,
                101
              ],
              "bin_centers": [
                -3.875,
                -3.625,
                -3.375,
                -3.125,
                -2.875,
                -2.625,
                -2.375,
                -2.125,
                -1.875,
                -1.625,
                -1.375,
                -1.125,
                -0.875,
                -0.625,
                -0.375,
                -0.125
              ],
              "clip_lo": -4.0,
              "clip_hi": 0.0
            }
          }
        },
        "breakdown": {
          "n": 515,
          "max_up_natr": {
            "n": 515,
            "mean": 1.339,
            "median": 0.684,
            "p25": 0.226,
            "p75": 1.667,
            "hist": {
              "bin_edges": [
                0.0,
                0.25,
                0.5,
                0.75,
                1.0,
                1.25,
                1.5,
                1.75,
                2.0,
                2.25,
                2.5,
                2.75,
                3.0,
                3.25,
                3.5,
                3.75,
                4.0
              ],
              "counts": [
                141,
                68,
                56,
                42,
                32,
                37,
                15,
                26,
                10,
                13,
                4,
                7,
                9,
                6,
                8,
                41
              ],
              "bin_centers": [
                0.125,
                0.375,
                0.625,
                0.875,
                1.125,
                1.375,
                1.625,
                1.875,
                2.125,
                2.375,
                2.625,
                2.875,
                3.125,
                3.375,
                3.625,
                3.875
              ],
              "clip_lo": 0.0,
              "clip_hi": 4.0
            }
          },
          "max_down_natr": {
            "n": 515,
            "mean": -2.971,
            "median": -2.42,
            "p25": -3.731,
            "p75": -1.657,
            "hist": {
              "bin_edges": [
                -4.0,
                -3.75,
                -3.5,
                -3.25,
                -3.0,
                -2.75,
                -2.5,
                -2.25,
                -2.0,
                -1.75,
                -1.5,
                -1.25,
                -1.0,
                -0.75,
                -0.5,
                -0.25,
                0.0
              ],
              "counts": [
                129,
                14,
                26,
                18,
                24,
                38,
                29,
                43,
                47,
                48,
                37,
                33,
                22,
                7,
                0,
                0
              ],
              "bin_centers": [
                -3.875,
                -3.625,
                -3.375,
                -3.125,
                -2.875,
                -2.625,
                -2.375,
                -2.125,
                -1.875,
                -1.625,
                -1.375,
                -1.125,
                -0.875,
                -0.625,
                -0.375,
                -0.125
              ],
              "clip_lo": -4.0,
              "clip_hi": 0.0
            }
          }
        },
        "sideways": {
          "n": 18,
          "max_up_natr": {
            "n": 18,
            "mean": 1.028,
            "median": 0.983,
            "p25": 0.721,
            "p75": 1.42,
            "hist": {
              "bin_edges": [
                0.0,
                0.25,
                0.5,
                0.75,
                1.0,
                1.25,
                1.5,
                1.75,
                2.0,
                2.25,
                2.5,
                2.75,
                3.0,
                3.25,
                3.5,
                3.75,
                4.0
              ],
              "counts": [
                0,
                3,
                3,
                5,
                1,
                3,
                2,
                1,
                0,
                0,
                0,
                0,
                0,
                0,
                0,
                0
              ],
              "bin_centers": [
                0.125,
                0.375,
                0.625,
                0.875,
                1.125,
                1.375,
                1.625,
                1.875,
                2.125,
                2.375,
                2.625,
                2.875,
                3.125,
                3.375,
                3.625,
                3.875
              ],
              "clip_lo": 0.0,
              "clip_hi": 4.0
            }
          },
          "max_down_natr": {
            "n": 18,
            "mean": -0.988,
            "median": -0.965,
            "p25": -1.369,
            "p75": -0.584,
            "hist": {
              "bin_edges": [
                -4.0,
                -3.75,
                -3.5,
                -3.25,
                -3.0,
                -2.75,
                -2.5,
                -2.25,
                -2.0,
                -1.75,
                -1.5,
                -1.25,
                -1.0,
                -0.75,
                -0.5,
                -0.25,
                0.0
              ],
              "counts": [
                0,
                0,
                0,
                0,
                0,
                0,
                0,
                1,
                1,
                1,
                2,
                3,
                4,
                2,
                2,
                2
              ],
              "bin_centers": [
                -3.875,
                -3.625,
                -3.375,
                -3.125,
                -2.875,
                -2.625,
                -2.375,
                -2.125,
                -1.875,
                -1.625,
                -1.375,
                -1.125,
                -0.875,
                -0.625,
                -0.375,
                -0.125
              ],
              "clip_lo": -4.0,
              "clip_hi": 0.0
            }
          }
        },
        "forming": {
          "n": 0,
          "max_up_natr": {
            "n": 0,
            "mean": null,
            "median": null,
            "p25": null,
            "p75": null
          },
          "max_down_natr": {
            "n": 0,
            "mean": null,
            "median": null,
            "p25": null,
            "p75": null
          }
        }
      },
      "max_up_natr_hist": {
        "bin_edges": [
          0.0,
          0.25,
          0.5,
          0.75,
          1.0,
          1.25,
          1.5,
          1.75,
          2.0,
          2.25,
          2.5,
          2.75,
          3.0,
          3.25,
          3.5,
          3.75,
          4.0
        ],
        "counts": [
          141,
          71,
          61,
          64,
          64,
          71,
          54,
          62,
          36,
          44,
          33,
          30,
          28,
          18,
          29,
          179
        ],
        "bin_centers": [
          0.125,
          0.375,
          0.625,
          0.875,
          1.125,
          1.375,
          1.625,
          1.875,
          2.125,
          2.375,
          2.625,
          2.875,
          3.125,
          3.375,
          3.625,
          3.875
        ],
        "clip_lo": 0.0,
        "clip_hi": 4.0
      },
      "max_down_natr_hist": {
        "bin_edges": [
          -4.0,
          -3.75,
          -3.5,
          -3.25,
          -3.0,
          -2.75,
          -2.5,
          -2.25,
          -2.0,
          -1.75,
          -1.5,
          -1.25,
          -1.0,
          -0.75,
          -0.5,
          -0.25,
          0.0
        ],
        "counts": [
          154,
          20,
          32,
          25,
          36,
          47,
          38,
          52,
          65,
          72,
          65,
          65,
          75,
          51,
          85,
          103
        ],
        "bin_centers": [
          -3.875,
          -3.625,
          -3.375,
          -3.125,
          -2.875,
          -2.625,
          -2.375,
          -2.125,
          -1.875,
          -1.625,
          -1.375,
          -1.125,
          -0.875,
          -0.625,
          -0.375,
          -0.125
        ],
        "clip_lo": -4.0,
        "clip_hi": 0.0
      },
      "timestamp_min": 1632542400000,
      "timestamp_max": 1785521700000,
      "timestamp_min_iso": "2021-09-25T04:00:00Z",
      "timestamp_max_iso": "2026-07-31T18:15:00Z"
    },
    {
      "pattern_type": "symmetrical_triangle",
      "pattern_name": "Symmetrical Triangle",
      "timeframe": "4h",
      "bias": "neutral",
      "n": 780,
      "n_symbols": 386,
      "breakout_success_rate": 45.0,
      "breakdown_success_rate": 53.08,
      "sideways_rate": 1.92,
      "forming_rate": 0.0,
      "both_cleared_rate": 26.41,
      "breakout_success_rate_ci95": [
        41.54,
        48.51
      ],
      "breakdown_success_rate_ci95": [
        49.57,
        56.56
      ],
      "sideways_rate_ci95": [
        1.17,
        3.15
      ],
      "forming_rate_ci95": [
        0.0,
        0.49
      ],
      "both_sides_rate": 26.41,
      "expected_hit_rate": null,
      "expected_hit_rate_ci95": null,
      "mean_ret_10c": -0.651,
      "median_ret_10c": -1.325,
      "std_ret_10c": 13.809,
      "win_rate_ret_gt0": 42.05,
      "p25_ret_10c": -6.583,
      "p75_ret_10c": 4.139,
      "mean_mfe": 8.923,
      "mean_mae": -8.285,
      "mfe_mae_ratio": 1.077,
      "max_up_natr": {
        "n": 780,
        "mean": 2.287,
        "median": 1.303,
        "p25": 0.412,
        "p75": 2.87,
        "hist": {
          "bin_edges": [
            0.0,
            0.25,
            0.5,
            0.75,
            1.0,
            1.25,
            1.5,
            1.75,
            2.0,
            2.25,
            2.5,
            2.75,
            3.0,
            3.25,
            3.5,
            3.75,
            4.0
          ],
          "counts": [
            147,
            73,
            53,
            55,
            56,
            34,
            40,
            38,
            24,
            24,
            27,
            22,
            28,
            18,
            15,
            126
          ],
          "bin_centers": [
            0.125,
            0.375,
            0.625,
            0.875,
            1.125,
            1.375,
            1.625,
            1.875,
            2.125,
            2.375,
            2.625,
            2.875,
            3.125,
            3.375,
            3.625,
            3.875
          ],
          "clip_lo": 0.0,
          "clip_hi": 4.0
        }
      },
      "max_down_natr": {
        "n": 780,
        "mean": -2.175,
        "median": -1.754,
        "p25": -2.919,
        "p75": -0.658,
        "hist": {
          "bin_edges": [
            -4.0,
            -3.75,
            -3.5,
            -3.25,
            -3.0,
            -2.75,
            -2.5,
            -2.25,
            -2.0,
            -1.75,
            -1.5,
            -1.25,
            -1.0,
            -0.75,
            -0.5,
            -0.25,
            0.0
          ],
          "counts": [
            113,
            27,
            25,
            21,
            27,
            36,
            40,
            62,
            39,
            45,
            38,
            44,
            51,
            54,
            68,
            90
          ],
          "bin_centers": [
            -3.875,
            -3.625,
            -3.375,
            -3.125,
            -2.875,
            -2.625,
            -2.375,
            -2.125,
            -1.875,
            -1.625,
            -1.375,
            -1.125,
            -0.875,
            -0.625,
            -0.375,
            -0.125
          ],
          "clip_lo": -4.0,
          "clip_hi": 0.0
        }
      },
      "median_max_up_natr": 1.303,
      "median_max_down_natr": -1.754,
      "mean_max_up_natr": 2.287,
      "mean_max_down_natr": -2.175,
      "p25_max_up_natr": 0.412,
      "p75_max_up_natr": 2.87,
      "p25_max_down_natr": -2.919,
      "p75_max_down_natr": -0.658,
      "outcome_natr_moves": {
        "breakout": {
          "n": 351,
          "max_up_natr": {
            "n": 351,
            "mean": 3.941,
            "median": 2.674,
            "p25": 1.753,
            "p75": 4.333,
            "hist": {
              "bin_edges": [
                0.0,
                0.25,
                0.5,
                0.75,
                1.0,
                1.25,
                1.5,
                1.75,
                2.0,
                2.25,
                2.5,
                2.75,
                3.0,
                3.25,
                3.5,
                3.75,
                4.0
              ],
              "counts": [
                0,
                0,
                1,
                12,
                26,
                18,
                30,
                32,
                20,
                18,
                22,
                15,
                24,
                15,
                10,
                108
              ],
              "bin_centers": [
                0.125,
                0.375,
                0.625,
                0.875,
                1.125,
                1.375,
                1.625,
                1.875,
                2.125,
                2.375,
                2.625,
                2.875,
                3.125,
                3.375,
                3.625,
                3.875
              ],
              "clip_lo": 0.0,
              "clip_hi": 4.0
            }
          },
          "max_down_natr": {
            "n": 351,
            "mean": -1.06,
            "median": -0.593,
            "p25": -1.412,
            "p75": -0.245,
            "hist": {
              "bin_edges": [
                -4.0,
                -3.75,
                -3.5,
                -3.25,
                -3.0,
                -2.75,
                -2.5,
                -2.25,
                -2.0,
                -1.75,
                -1.5,
                -1.25,
                -1.0,
                -0.75,
                -0.5,
                -0.25,
                0.0
              ],
              "counts": [
                14,
                5,
                5,
                6,
                5,
                6,
                8,
                10,
                10,
                14,
                12,
                25,
                32,
                44,
                66,
                89
              ],
              "bin_centers": [
                -3.875,
                -3.625,
                -3.375,
                -3.125,
                -2.875,
                -2.625,
                -2.375,
                -2.125,
                -1.875,
                -1.625,
                -1.375,
                -1.125,
                -0.875,
                -0.625,
                -0.375,
                -0.125
              ],
              "clip_lo": -4.0,
              "clip_hi": 0.0
            }
          }
        },
        "breakdown": {
          "n": 414,
          "max_up_natr": {
            "n": 414,
            "mean": 0.933,
            "median": 0.476,
            "p25": 0.146,
            "p75": 1.075,
            "hist": {
              "bin_edges": [
                0.0,
                0.25,
                0.5,
                0.75,
                1.0,
                1.25,
                1.5,
                1.75,
                2.0,
                2.25,
                2.5,
                2.75,
                3.0,
                3.25,
                3.5,
                3.75,
                4.0
              ],
              "counts": [
                147,
                70,
                48,
                40,
                28,
                15,
                10,
                6,
                3,
                5,
                5,
                7,
                4,
                3,
                5,
                18
              ],
              "bin_centers": [
                0.125,
                0.375,
                0.625,
                0.875,
                1.125,
                1.375,
                1.625,
                1.875,
                2.125,
                2.375,
                2.625,
                2.875,
                3.125,
                3.375,
                3.625,
                3.875
              ],
              "clip_lo": 0.0,
              "clip_hi": 4.0
            }
          },
          "max_down_natr": {
            "n": 414,
            "mean": -3.178,
            "median": -2.511,
            "p25": -3.717,
            "p75": -1.869,
            "hist": {
              "bin_edges": [
                -4.0,
                -3.75,
                -3.5,
                -3.25,
                -3.0,
                -2.75,
                -2.5,
                -2.25,
                -2.0,
                -1.75,
                -1.5,
                -1.25,
                -1.0,
                -0.75,
                -0.5,
                -0.25,
                0.0
              ],
              "counts": [
                99,
                22,
                20,
                15,
                22,
                30,
                32,
                52,
                29,
                31,
                26,
                19,
                15,
                2,
                0,
                0
              ],
              "bin_centers": [
                -3.875,
                -3.625,
                -3.375,
                -3.125,
                -2.875,
                -2.625,
                -2.375,
                -2.125,
                -1.875,
                -1.625,
                -1.375,
                -1.125,
                -0.875,
                -0.625,
                -0.375,
                -0.125
              ],
              "clip_lo": -4.0,
              "clip_hi": 0.0
            }
          }
        },
        "sideways": {
          "n": 15,
          "max_up_natr": {
            "n": 15,
            "mean": 0.937,
            "median": 0.894,
            "p25": 0.556,
            "p75": 1.054,
            "hist": {
              "bin_edges": [
                0.0,
                0.25,
                0.5,
                0.75,
                1.0,
                1.25,
                1.5,
                1.75,
                2.0,
                2.25,
                2.5,
                2.75,
                3.0,
                3.25,
                3.5,
                3.75,
                4.0
              ],
              "counts": [
                0,
                3,
                4,
                3,
                2,
                1,
                0,
                0,
                1,
                1,
                0,
                0,
                0,
                0,
                0,
                0
              ],
              "bin_centers": [
                0.125,
                0.375,
                0.625,
                0.875,
                1.125,
                1.375,
                1.625,
                1.875,
                2.125,
                2.375,
                2.625,
                2.875,
                3.125,
                3.375,
                3.625,
                3.875
              ],
              "clip_lo": 0.0,
              "clip_hi": 4.0
            }
          },
          "max_down_natr": {
            "n": 15,
            "mean": -0.592,
            "median": -0.606,
            "p25": -0.72,
            "p75": -0.54,
            "hist": {
              "bin_edges": [
                -4.0,
                -3.75,
                -3.5,
                -3.25,
                -3.0,
                -2.75,
                -2.5,
                -2.25,
                -2.0,
                -1.75,
                -1.5,
                -1.25,
                -1.0,
                -0.75,
                -0.5,
                -0.25,
                0.0
              ],
              "counts": [
                0,
                0,
                0,
                0,
                0,
                0,
                0,
                0,
                0,
                0,
                0,
                0,
                4,
                8,
                2,
                1
              ],
              "bin_centers": [
                -3.875,
                -3.625,
                -3.375,
                -3.125,
                -2.875,
                -2.625,
                -2.375,
                -2.125,
                -1.875,
                -1.625,
                -1.375,
                -1.125,
                -0.875,
                -0.625,
                -0.375,
                -0.125
              ],
              "clip_lo": -4.0,
              "clip_hi": 0.0
            }
          }
        },
        "forming": {
          "n": 0,
          "max_up_natr": {
            "n": 0,
            "mean": null,
            "median": null,
            "p25": null,
            "p75": null
          },
          "max_down_natr": {
            "n": 0,
            "mean": null,
            "median": null,
            "p25": null,
            "p75": null
          }
        }
      },
      "max_up_natr_hist": {
        "bin_edges": [
          0.0,
          0.25,
          0.5,
          0.75,
          1.0,
          1.25,
          1.5,
          1.75,
          2.0,
          2.25,
          2.5,
          2.75,
          3.0,
          3.25,
          3.5,
          3.75,
          4.0
        ],
        "counts": [
          147,
          73,
          53,
          55,
          56,
          34,
          40,
          38,
          24,
          24,
          27,
          22,
          28,
          18,
          15,
          126
        ],
        "bin_centers": [
          0.125,
          0.375,
          0.625,
          0.875,
          1.125,
          1.375,
          1.625,
          1.875,
          2.125,
          2.375,
          2.625,
          2.875,
          3.125,
          3.375,
          3.625,
          3.875
        ],
        "clip_lo": 0.0,
        "clip_hi": 4.0
      },
      "max_down_natr_hist": {
        "bin_edges": [
          -4.0,
          -3.75,
          -3.5,
          -3.25,
          -3.0,
          -2.75,
          -2.5,
          -2.25,
          -2.0,
          -1.75,
          -1.5,
          -1.25,
          -1.0,
          -0.75,
          -0.5,
          -0.25,
          0.0
        ],
        "counts": [
          113,
          27,
          25,
          21,
          27,
          36,
          40,
          62,
          39,
          45,
          38,
          44,
          51,
          54,
          68,
          90
        ],
        "bin_centers": [
          -3.875,
          -3.625,
          -3.375,
          -3.125,
          -2.875,
          -2.625,
          -2.375,
          -2.125,
          -1.875,
          -1.625,
          -1.375,
          -1.125,
          -0.875,
          -0.625,
          -0.375,
          -0.125
        ],
        "clip_lo": -4.0,
        "clip_hi": 0.0
      },
      "timestamp_min": 1529611200000,
      "timestamp_max": 1785096000000,
      "timestamp_min_iso": "2018-06-21T20:00:00Z",
      "timestamp_max_iso": "2026-07-26T20:00:00Z"
    },
    {
      "pattern_type": "symmetrical_broadening_wedge",
      "pattern_name": "Symmetrical Broadening Wedge",
      "timeframe": "4h",
      "bias": "neutral",
      "n": 604,
      "n_symbols": 331,
      "breakout_success_rate": 25.5,
      "breakdown_success_rate": 37.75,
      "sideways_rate": 36.75,
      "forming_rate": 0.0,
      "both_cleared_rate": 38.74,
      "breakout_success_rate_ci95": [
        22.18,
        29.12
      ],
      "breakdown_success_rate_ci95": [
        33.97,
        41.68
      ],
      "sideways_rate_ci95": [
        33.0,
        40.67
      ],
      "forming_rate_ci95": [
        0.0,
        0.63
      ],
      "both_sides_rate": 38.74,
      "expected_hit_rate": null,
      "expected_hit_rate_ci95": null,
      "mean_ret_10c": 0.16,
      "median_ret_10c": -1.577,
      "std_ret_10c": 17.209,
      "win_rate_ret_gt0": 41.23,
      "p25_ret_10c": -6.777,
      "p75_ret_10c": 4.303,
      "mean_mfe": 12.459,
      "mean_mae": -9.955,
      "mfe_mae_ratio": 1.252,
      "max_up_natr": {
        "n": 604,
        "mean": 3.895,
        "median": 1.722,
        "p25": 0.561,
        "p75": 3.9,
        "hist": {
          "bin_edges": [
            0.0,
            0.25,
            0.5,
            0.75,
            1.0,
            1.25,
            1.5,
            1.75,
            2.0,
            2.25,
            2.5,
            2.75,
            3.0,
            3.25,
            3.5,
            3.75,
            4.0
          ],
          "counts": [
            89,
            55,
            42,
            37,
            29,
            23,
            30,
            20,
            23,
            20,
            11,
            17,
            23,
            15,
            12,
            158
          ],
          "bin_centers": [
            0.125,
            0.375,
            0.625,
            0.875,
            1.125,
            1.375,
            1.625,
            1.875,
            2.125,
            2.375,
            2.625,
            2.875,
            3.125,
            3.375,
            3.625,
            3.875
          ],
          "clip_lo": 0.0,
          "clip_hi": 4.0
        }
      },
      "max_down_natr": {
        "n": 604,
        "mean": -3.12,
        "median": -2.336,
        "p25": -4.021,
        "p75": -0.994,
        "hist": {
          "bin_edges": [
            -4.0,
            -3.75,
            -3.5,
            -3.25,
            -3.0,
            -2.75,
            -2.5,
            -2.25,
            -2.0,
            -1.75,
            -1.5,
            -1.25,
            -1.0,
            -0.75,
            -0.5,
            -0.25,
            0.0
          ],
          "counts": [
            164,
            15,
            14,
            27,
            27,
            29,
            40,
            33,
            32,
            19,
            29,
            23,
            41,
            28,
            34,
            49
          ],
          "bin_centers": [
            -3.875,
            -3.625,
            -3.375,
            -3.125,
            -2.875,
            -2.625,
            -2.375,
            -2.125,
            -1.875,
            -1.625,
            -1.375,
            -1.125,
            -0.875,
            -0.625,
            -0.375,
            -0.125
          ],
          "clip_lo": -4.0,
          "clip_hi": 0.0
        }
      },
      "median_max_up_natr": 1.722,
      "median_max_down_natr": -2.336,
      "mean_max_up_natr": 3.895,
      "mean_max_down_natr": -3.12,
      "p25_max_up_natr": 0.561,
      "p75_max_up_natr": 3.9,
      "p25_max_down_natr": -4.021,
      "p75_max_down_natr": -0.994,
      "outcome_natr_moves": {
        "breakout": {
          "n": 154,
          "max_up_natr": {
            "n": 154,
            "mean": 9.932,
            "median": 5.439,
            "p25": 3.1,
            "p75": 9.514,
            "hist": {
              "bin_edges": [
                0.0,
                0.25,
                0.5,
                0.75,
                1.0,
                1.25,
                1.5,
                1.75,
                2.0,
                2.25,
                2.5,
                2.75,
                3.0,
                3.25,
                3.5,
                3.75,
                4.0
              ],
              "counts": [
                0,
                0,
                0,
                1,
                2,
                4,
                5,
                5,
                3,
                5,
                3,
                6,
                9,
                6,
                5,
                100
              ],
              "bin_centers": [
                0.125,
                0.375,
                0.625,
                0.875,
                1.125,
                1.375,
                1.625,
                1.875,
                2.125,
                2.375,
                2.625,
                2.875,
                3.125,
                3.375,
                3.625,
                3.875
              ],
              "clip_lo": 0.0,
              "clip_hi": 4.0
            }
          },
          "max_down_natr": {
            "n": 154,
            "mean": -1.79,
            "median": -1.192,
            "p25": -2.758,
            "p75": -0.298,
            "hist": {
              "bin_edges": [
                -4.0,
                -3.75,
                -3.5,
                -3.25,
                -3.0,
                -2.75,
                -2.5,
                -2.25,
                -2.0,
                -1.75,
                -1.5,
                -1.25,
                -1.0,
                -0.75,
                -0.5,
                -0.25,
                0.0
              ],
              "counts": [
                20,
                2,
                0,
                8,
                10,
                3,
                12,
                7,
                3,
                4,
                7,
                6,
                12,
                12,
                15,
                33
              ],
              "bin_centers": [
                -3.875,
                -3.625,
                -3.375,
                -3.125,
                -2.875,
                -2.625,
                -2.375,
                -2.125,
                -1.875,
                -1.625,
                -1.375,
                -1.125,
                -0.875,
                -0.625,
                -0.375,
                -0.125
              ],
              "clip_lo": -4.0,
              "clip_hi": 0.0
            }
          }
        },
        "breakdown": {
          "n": 228,
          "max_up_natr": {
            "n": 228,
            "mean": 1.47,
            "median": 0.627,
            "p25": 0.205,
            "p75": 1.895,
            "hist": {
              "bin_edges": [
                0.0,
                0.25,
                0.5,
                0.75,
                1.0,
                1.25,
                1.5,
                1.75,
                2.0,
                2.25,
                2.5,
                2.75,
                3.0,
                3.25,
                3.5,
                3.75,
                4.0
              ],
              "counts": [
                64,
                40,
                23,
                17,
                11,
                4,
                8,
                7,
                7,
                5,
                3,
                3,
                8,
                1,
                3,
                24
              ],
              "bin_centers": [
                0.125,
                0.375,
                0.625,
                0.875,
                1.125,
                1.375,
                1.625,
                1.875,
                2.125,
                2.375,
                2.625,
                2.875,
                3.125,
                3.375,
                3.625,
                3.875
              ],
              "clip_lo": 0.0,
              "clip_hi": 4.0
            }
          },
          "max_down_natr": {
            "n": 228,
            "mean": -5.209,
            "median": -3.904,
            "p25": -5.848,
            "p75": -2.431,
            "hist": {
              "bin_edges": [
                -4.0,
                -3.75,
                -3.5,
                -3.25,
                -3.0,
                -2.75,
                -2.5,
                -2.25,
                -2.0,
                -1.75,
                -1.5,
                -1.25,
                -1.0,
                -0.75,
                -0.5,
                -0.25,
                0.0
              ],
              "counts": [
                118,
                10,
                6,
                8,
                10,
                15,
                16,
                17,
                14,
                3,
                7,
                2,
                1,
                1,
                0,
                0
              ],
              "bin_centers": [
                -3.875,
                -3.625,
                -3.375,
                -3.125,
                -2.875,
                -2.625,
                -2.375,
                -2.125,
                -1.875,
                -1.625,
                -1.375,
                -1.125,
                -0.875,
                -0.625,
                -0.375,
                -0.125
              ],
              "clip_lo": -4.0,
              "clip_hi": 0.0
            }
          }
        },
        "sideways": {
          "n": 222,
          "max_up_natr": {
            "n": 222,
            "mean": 2.197,
            "median": 1.531,
            "p25": 0.7,
            "p75": 2.898,
            "hist": {
              "bin_edges": [
                0.0,
                0.25,
                0.5,
                0.75,
                1.0,
                1.25,
                1.5,
                1.75,
                2.0,
                2.25,
                2.5,
                2.75,
                3.0,
                3.25,
                3.5,
                3.75,
                4.0
              ],
              "counts": [
                25,
                15,
                19,
                19,
                16,
                15,
                17,
                8,
                13,
                10,
                5,
                8,
                6,
                8,
                4,
                34
              ],
              "bin_centers": [
                0.125,
                0.375,
                0.625,
                0.875,
                1.125,
                1.375,
                1.625,
                1.875,
                2.125,
                2.375,
                2.625,
                2.875,
                3.125,
                3.375,
                3.625,
                3.875
              ],
              "clip_lo": 0.0,
              "clip_hi": 4.0
            }
          },
          "max_down_natr": {
            "n": 222,
            "mean": -1.896,
            "median": -1.592,
            "p25": -2.713,
            "p75": -0.807,
            "hist": {
              "bin_edges": [
                -4.0,
                -3.75,
                -3.5,
                -3.25,
                -3.0,
                -2.75,
                -2.5,
                -2.25,
                -2.0,
                -1.75,
                -1.5,
                -1.25,
                -1.0,
                -0.75,
                -0.5,
                -0.25,
                0.0
              ],
              "counts": [
                26,
                3,
                8,
                11,
                7,
                11,
                12,
                9,
                15,
                12,
                15,
                15,
                28,
                15,
                19,
                16
              ],
              "bin_centers": [
                -3.875,
                -3.625,
                -3.375,
                -3.125,
                -2.875,
                -2.625,
                -2.375,
                -2.125,
                -1.875,
                -1.625,
                -1.375,
                -1.125,
                -0.875,
                -0.625,
                -0.375,
                -0.125
              ],
              "clip_lo": -4.0,
              "clip_hi": 0.0
            }
          }
        },
        "forming": {
          "n": 0,
          "max_up_natr": {
            "n": 0,
            "mean": null,
            "median": null,
            "p25": null,
            "p75": null
          },
          "max_down_natr": {
            "n": 0,
            "mean": null,
            "median": null,
            "p25": null,
            "p75": null
          }
        }
      },
      "max_up_natr_hist": {
        "bin_edges": [
          0.0,
          0.25,
          0.5,
          0.75,
          1.0,
          1.25,
          1.5,
          1.75,
          2.0,
          2.25,
          2.5,
          2.75,
          3.0,
          3.25,
          3.5,
          3.75,
          4.0
        ],
        "counts": [
          89,
          55,
          42,
          37,
          29,
          23,
          30,
          20,
          23,
          20,
          11,
          17,
          23,
          15,
          12,
          158
        ],
        "bin_centers": [
          0.125,
          0.375,
          0.625,
          0.875,
          1.125,
          1.375,
          1.625,
          1.875,
          2.125,
          2.375,
          2.625,
          2.875,
          3.125,
          3.375,
          3.625,
          3.875
        ],
        "clip_lo": 0.0,
        "clip_hi": 4.0
      },
      "max_down_natr_hist": {
        "bin_edges": [
          -4.0,
          -3.75,
          -3.5,
          -3.25,
          -3.0,
          -2.75,
          -2.5,
          -2.25,
          -2.0,
          -1.75,
          -1.5,
          -1.25,
          -1.0,
          -0.75,
          -0.5,
          -0.25,
          0.0
        ],
        "counts": [
          164,
          15,
          14,
          27,
          27,
          29,
          40,
          33,
          32,
          19,
          29,
          23,
          41,
          28,
          34,
          49
        ],
        "bin_centers": [
          -3.875,
          -3.625,
          -3.375,
          -3.125,
          -2.875,
          -2.625,
          -2.375,
          -2.125,
          -1.875,
          -1.625,
          -1.375,
          -1.125,
          -0.875,
          -0.625,
          -0.375,
          -0.125
        ],
        "clip_lo": -4.0,
        "clip_hi": 0.0
      },
      "timestamp_min": 1533369600000,
      "timestamp_max": 1785240000000,
      "timestamp_min_iso": "2018-08-04T08:00:00Z",
      "timestamp_max_iso": "2026-07-28T12:00:00Z"
    },
    {
      "pattern_type": "symmetrical_broadening_wedge",
      "pattern_name": "Symmetrical Broadening Wedge",
      "timeframe": "15m",
      "bias": "neutral",
      "n": 387,
      "n_symbols": 261,
      "breakout_success_rate": 33.07,
      "breakdown_success_rate": 25.58,
      "sideways_rate": 41.35,
      "forming_rate": 0.0,
      "both_cleared_rate": 43.41,
      "breakout_success_rate_ci95": [
        28.57,
        37.91
      ],
      "breakdown_success_rate_ci95": [
        21.49,
        30.15
      ],
      "sideways_rate_ci95": [
        36.55,
        46.31
      ],
      "forming_rate_ci95": [
        0.0,
        0.98
      ],
      "both_sides_rate": 43.41,
      "expected_hit_rate": null,
      "expected_hit_rate_ci95": null,
      "mean_ret_10c": 0.223,
      "median_ret_10c": -0.158,
      "std_ret_10c": 5.855,
      "win_rate_ret_gt0": 45.99,
      "p25_ret_10c": -1.479,
      "p75_ret_10c": 1.447,
      "mean_mfe": 3.217,
      "mean_mae": -2.715,
      "mfe_mae_ratio": 1.185,
      "max_up_natr": {
        "n": 387,
        "mean": 3.42,
        "median": 2.006,
        "p25": 0.683,
        "p75": 4.261,
        "hist": {
          "bin_edges": [
            0.0,
            0.25,
            0.5,
            0.75,
            1.0,
            1.25,
            1.5,
            1.75,
            2.0,
            2.25,
            2.5,
            2.75,
            3.0,
            3.25,
            3.5,
            3.75,
            4.0
          ],
          "counts": [
            45,
            33,
            26,
            13,
            22,
            15,
            19,
            20,
            21,
            14,
            9,
            15,
            9,
            11,
            4,
            111
          ],
          "bin_centers": [
            0.125,
            0.375,
            0.625,
            0.875,
            1.125,
            1.375,
            1.625,
            1.875,
            2.125,
            2.375,
            2.625,
            2.875,
            3.125,
            3.375,
            3.625,
            3.875
          ],
          "clip_lo": 0.0,
          "clip_hi": 4.0
        }
      },
      "max_down_natr": {
        "n": 387,
        "mean": -2.722,
        "median": -2.05,
        "p25": -3.548,
        "p75": -0.922,
        "hist": {
          "bin_edges": [
            -4.0,
            -3.75,
            -3.5,
            -3.25,
            -3.0,
            -2.75,
            -2.5,
            -2.25,
            -2.0,
            -1.75,
            -1.5,
            -1.25,
            -1.0,
            -0.75,
            -0.5,
            -0.25,
            0.0
          ],
          "counts": [
            86,
            14,
            11,
            18,
            13,
            14,
            21,
            19,
            23,
            24,
            13,
            25,
            24,
            16,
            24,
            42
          ],
          "bin_centers": [
            -3.875,
            -3.625,
            -3.375,
            -3.125,
            -2.875,
            -2.625,
            -2.375,
            -2.125,
            -1.875,
            -1.625,
            -1.375,
            -1.125,
            -0.875,
            -0.625,
            -0.375,
            -0.125
          ],
          "clip_lo": -4.0,
          "clip_hi": 0.0
        }
      },
      "median_max_up_natr": 2.006,
      "median_max_down_natr": -2.05,
      "mean_max_up_natr": 3.42,
      "mean_max_down_natr": -2.722,
      "p25_max_up_natr": 0.683,
      "p75_max_up_natr": 4.261,
      "p25_max_down_natr": -3.548,
      "p75_max_down_natr": -0.922,
      "outcome_natr_moves": {
        "breakout": {
          "n": 128,
          "max_up_natr": {
            "n": 128,
            "mean": 6.987,
            "median": 5.133,
            "p25": 2.741,
            "p75": 8.543,
            "hist": {
              "bin_edges": [
                0.0,
                0.25,
                0.5,
                0.75,
                1.0,
                1.25,
                1.5,
                1.75,
                2.0,
                2.25,
                2.5,
                2.75,
                3.0,
                3.25,
                3.5,
                3.75,
                4.0
              ],
              "counts": [
                0,
                0,
                1,
                1,
                1,
                4,
                5,
                8,
                4,
                4,
                4,
                6,
                3,
                2,
                1,
                84
              ],
              "bin_centers": [
                0.125,
                0.375,
                0.625,
                0.875,
                1.125,
                1.375,
                1.625,
                1.875,
                2.125,
                2.375,
                2.625,
                2.875,
                3.125,
                3.375,
                3.625,
                3.875
              ],
              "clip_lo": 0.0,
              "clip_hi": 4.0
            }
          },
          "max_down_natr": {
            "n": 128,
            "mean": -1.598,
            "median": -1.103,
            "p25": -2.395,
            "p75": -0.36,
            "hist": {
              "bin_edges": [
                -4.0,
                -3.75,
                -3.5,
                -3.25,
                -3.0,
                -2.75,
                -2.5,
                -2.25,
                -2.0,
                -1.75,
                -1.5,
                -1.25,
                -1.0,
                -0.75,
                -0.5,
                -0.25,
                0.0
              ],
              "counts": [
                16,
                4,
                1,
                3,
                2,
                3,
                4,
                5,
                7,
                7,
                6,
                11,
                10,
                3,
                18,
                28
              ],
              "bin_centers": [
                -3.875,
                -3.625,
                -3.375,
                -3.125,
                -2.875,
                -2.625,
                -2.375,
                -2.125,
                -1.875,
                -1.625,
                -1.375,
                -1.125,
                -0.875,
                -0.625,
                -0.375,
                -0.125
              ],
              "clip_lo": -4.0,
              "clip_hi": 0.0
            }
          }
        },
        "breakdown": {
          "n": 99,
          "max_up_natr": {
            "n": 99,
            "mean": 1.234,
            "median": 0.631,
            "p25": 0.238,
            "p75": 1.699,
            "hist": {
              "bin_edges": [
                0.0,
                0.25,
                0.5,
                0.75,
                1.0,
                1.25,
                1.5,
                1.75,
                2.0,
                2.25,
                2.5,
                2.75,
                3.0,
                3.25,
                3.5,
                3.75,
                4.0
              ],
              "counts": [
                26,
                19,
                10,
                5,
                5,
                4,
                6,
                4,
                4,
                2,
                0,
                3,
                1,
                1,
                1,
                8
              ],
              "bin_centers": [
                0.125,
                0.375,
                0.625,
                0.875,
                1.125,
                1.375,
                1.625,
                1.875,
                2.125,
                2.375,
                2.625,
                2.875,
                3.125,
                3.375,
                3.625,
                3.875
              ],
              "clip_lo": 0.0,
              "clip_hi": 4.0
            }
          },
          "max_down_natr": {
            "n": 99,
            "mean": -4.764,
            "median": -3.645,
            "p25": -5.94,
            "p75": -2.445,
            "hist": {
              "bin_edges": [
                -4.0,
                -3.75,
                -3.5,
                -3.25,
                -3.0,
                -2.75,
                -2.5,
                -2.25,
                -2.0,
                -1.75,
                -1.5,
                -1.25,
                -1.0,
                -0.75,
                -0.5,
                -0.25,
                0.0
              ],
              "counts": [
                48,
                7,
                4,
                6,
                3,
                4,
                6,
                5,
                6,
                3,
                3,
                2,
                2,
                0,
                0,
                0
              ],
              "bin_centers": [
                -3.875,
                -3.625,
                -3.375,
                -3.125,
                -2.875,
                -2.625,
                -2.375,
                -2.125,
                -1.875,
                -1.625,
                -1.375,
                -1.125,
                -0.875,
                -0.625,
                -0.375,
                -0.125
              ],
              "clip_lo": -4.0,
              "clip_hi": 0.0
            }
          }
        },
        "sideways": {
          "n": 160,
          "max_up_natr": {
            "n": 160,
            "mean": 1.92,
            "median": 1.513,
            "p25": 0.605,
            "p75": 2.751,
            "hist": {
              "bin_edges": [
                0.0,
                0.25,
                0.5,
                0.75,
                1.0,
                1.25,
                1.5,
                1.75,
                2.0,
                2.25,
                2.5,
                2.75,
                3.0,
                3.25,
                3.5,
                3.75,
                4.0
              ],
              "counts": [
                19,
                14,
                15,
                7,
                16,
                7,
                8,
                8,
                13,
                8,
                5,
                6,
                5,
                8,
                2,
                19
              ],
              "bin_centers": [
                0.125,
                0.375,
                0.625,
                0.875,
                1.125,
                1.375,
                1.625,
                1.875,
                2.125,
                2.375,
                2.625,
                2.875,
                3.125,
                3.375,
                3.625,
                3.875
              ],
              "clip_lo": 0.0,
              "clip_hi": 4.0
            }
          },
          "max_down_natr": {
            "n": 160,
            "mean": -2.357,
            "median": -1.961,
            "p25": -2.978,
            "p75": -0.903,
            "hist": {
              "bin_edges": [
                -4.0,
                -3.75,
                -3.5,
                -3.25,
                -3.0,
                -2.75,
                -2.5,
                -2.25,
                -2.0,
                -1.75,
                -1.5,
                -1.25,
                -1.0,
                -0.75,
                -0.5,
                -0.25,
                0.0
              ],
              "counts": [
                22,
                3,
                6,
                9,
                8,
                7,
                11,
                9,
                10,
                14,
                4,
                12,
                12,
                13,
                6,
                14
              ],
              "bin_centers": [
                -3.875,
                -3.625,
                -3.375,
                -3.125,
                -2.875,
                -2.625,
                -2.375,
                -2.125,
                -1.875,
                -1.625,
                -1.375,
                -1.125,
                -0.875,
                -0.625,
                -0.375,
                -0.125
              ],
              "clip_lo": -4.0,
              "clip_hi": 0.0
            }
          }
        },
        "forming": {
          "n": 0,
          "max_up_natr": {
            "n": 0,
            "mean": null,
            "median": null,
            "p25": null,
            "p75": null
          },
          "max_down_natr": {
            "n": 0,
            "mean": null,
            "median": null,
            "p25": null,
            "p75": null
          }
        }
      },
      "max_up_natr_hist": {
        "bin_edges": [
          0.0,
          0.25,
          0.5,
          0.75,
          1.0,
          1.25,
          1.5,
          1.75,
          2.0,
          2.25,
          2.5,
          2.75,
          3.0,
          3.25,
          3.5,
          3.75,
          4.0
        ],
        "counts": [
          45,
          33,
          26,
          13,
          22,
          15,
          19,
          20,
          21,
          14,
          9,
          15,
          9,
          11,
          4,
          111
        ],
        "bin_centers": [
          0.125,
          0.375,
          0.625,
          0.875,
          1.125,
          1.375,
          1.625,
          1.875,
          2.125,
          2.375,
          2.625,
          2.875,
          3.125,
          3.375,
          3.625,
          3.875
        ],
        "clip_lo": 0.0,
        "clip_hi": 4.0
      },
      "max_down_natr_hist": {
        "bin_edges": [
          -4.0,
          -3.75,
          -3.5,
          -3.25,
          -3.0,
          -2.75,
          -2.5,
          -2.25,
          -2.0,
          -1.75,
          -1.5,
          -1.25,
          -1.0,
          -0.75,
          -0.5,
          -0.25,
          0.0
        ],
        "counts": [
          86,
          14,
          11,
          18,
          13,
          14,
          21,
          19,
          23,
          24,
          13,
          25,
          24,
          16,
          24,
          42
        ],
        "bin_centers": [
          -3.875,
          -3.625,
          -3.375,
          -3.125,
          -2.875,
          -2.625,
          -2.375,
          -2.125,
          -1.875,
          -1.625,
          -1.375,
          -1.125,
          -0.875,
          -0.625,
          -0.375,
          -0.125
        ],
        "clip_lo": -4.0,
        "clip_hi": 0.0
      },
      "timestamp_min": 1631519100000,
      "timestamp_max": 1785515400000,
      "timestamp_min_iso": "2021-09-13T07:45:00Z",
      "timestamp_max_iso": "2026-07-31T16:30:00Z"
    },
    {
      "pattern_type": "symmetrical_triangle",
      "pattern_name": "Symmetrical Triangle",
      "timeframe": "1d",
      "bias": "neutral",
      "n": 93,
      "n_symbols": 81,
      "breakout_success_rate": 45.16,
      "breakdown_success_rate": 53.76,
      "sideways_rate": 1.08,
      "forming_rate": 0.0,
      "both_cleared_rate": 35.48,
      "breakout_success_rate_ci95": [
        35.44,
        55.27
      ],
      "breakdown_success_rate_ci95": [
        43.68,
        63.55
      ],
      "sideways_rate_ci95": [
        0.19,
        5.84
      ],
      "forming_rate_ci95": [
        0.0,
        3.97
      ],
      "both_sides_rate": 35.48,
      "expected_hit_rate": null,
      "expected_hit_rate_ci95": null,
      "mean_ret_10c": 0.371,
      "median_ret_10c": -3.927,
      "std_ret_10c": 34.735,
      "win_rate_ret_gt0": 43.01,
      "p25_ret_10c": -16.917,
      "p75_ret_10c": 10.653,
      "mean_mfe": 26.497,
      "mean_mae": -21.171,
      "mfe_mae_ratio": 1.252,
      "max_up_natr": {
        "n": 93,
        "mean": 2.964,
        "median": 1.836,
        "p25": 0.356,
        "p75": 3.708,
        "hist": {
          "bin_edges": [
            0.0,
            0.25,
            0.5,
            0.75,
            1.0,
            1.25,
            1.5,
            1.75,
            2.0,
            2.25,
            2.5,
            2.75,
            3.0,
            3.25,
            3.5,
            3.75,
            4.0
          ],
          "counts": [
            21,
            5,
            3,
            4,
            3,
            5,
            5,
            3,
            3,
            4,
            5,
            3,
            3,
            2,
            2,
            22
          ],
          "bin_centers": [
            0.125,
            0.375,
            0.625,
            0.875,
            1.125,
            1.375,
            1.625,
            1.875,
            2.125,
            2.375,
            2.625,
            2.875,
            3.125,
            3.375,
            3.625,
            3.875
          ],
          "clip_lo": 0.0,
          "clip_hi": 4.0
        }
      },
      "max_down_natr": {
        "n": 93,
        "mean": -2.463,
        "median": -1.827,
        "p25": -3.038,
        "p75": -0.754,
        "hist": {
          "bin_edges": [
            -4.0,
            -3.75,
            -3.5,
            -3.25,
            -3.0,
            -2.75,
            -2.5,
            -2.25,
            -2.0,
            -1.75,
            -1.5,
            -1.25,
            -1.0,
            -0.75,
            -0.5,
            -0.25,
            0.0
          ],
          "counts": [
            15,
            4,
            3,
            2,
            6,
            5,
            2,
            6,
            4,
            3,
            9,
            6,
            5,
            7,
            7,
            9
          ],
          "bin_centers": [
            -3.875,
            -3.625,
            -3.375,
            -3.125,
            -2.875,
            -2.625,
            -2.375,
            -2.125,
            -1.875,
            -1.625,
            -1.375,
            -1.125,
            -0.875,
            -0.625,
            -0.375,
            -0.125
          ],
          "clip_lo": -4.0,
          "clip_hi": 0.0
        }
      },
      "median_max_up_natr": 1.836,
      "median_max_down_natr": -1.827,
      "mean_max_up_natr": 2.964,
      "mean_max_down_natr": -2.463,
      "p25_max_up_natr": 0.356,
      "p75_max_up_natr": 3.708,
      "p25_max_down_natr": -3.038,
      "p75_max_down_natr": -0.754,
      "outcome_natr_moves": {
        "breakout": {
          "n": 42,
          "max_up_natr": {
            "n": 42,
            "mean": 4.957,
            "median": 2.964,
            "p25": 2.259,
            "p75": 5.261,
            "hist": {
              "bin_edges": [
                0.0,
                0.25,
                0.5,
                0.75,
                1.0,
                1.25,
                1.5,
                1.75,
                2.0,
                2.25,
                2.5,
                2.75,
                3.0,
                3.25,
                3.5,
                3.75,
                4.0
              ],
              "counts": [
                0,
                0,
                0,
                0,
                2,
                3,
                3,
                2,
                1,
                4,
                5,
                1,
                2,
                0,
                1,
                18
              ],
              "bin_centers": [
                0.125,
                0.375,
                0.625,
                0.875,
                1.125,
                1.375,
                1.625,
                1.875,
                2.125,
                2.375,
                2.625,
                2.875,
                3.125,
                3.375,
                3.625,
                3.875
              ],
              "clip_lo": 0.0,
              "clip_hi": 4.0
            }
          },
          "max_down_natr": {
            "n": 42,
            "mean": -1.113,
            "median": -0.775,
            "p25": -1.494,
            "p75": -0.392,
            "hist": {
              "bin_edges": [
                -4.0,
                -3.75,
                -3.5,
                -3.25,
                -3.0,
                -2.75,
                -2.5,
                -2.25,
                -2.0,
                -1.75,
                -1.5,
                -1.25,
                -1.0,
                -0.75,
                -0.5,
                -0.25,
                0.0
              ],
              "counts": [
                0,
                2,
                0,
                1,
                1,
                2,
                0,
                3,
                0,
                2,
                6,
                2,
                2,
                5,
                7,
                9
              ],
              "bin_centers": [
                -3.875,
                -3.625,
                -3.375,
                -3.125,
                -2.875,
                -2.625,
                -2.375,
                -2.125,
                -1.875,
                -1.625,
                -1.375,
                -1.125,
                -0.875,
                -0.625,
                -0.375,
                -0.125
              ],
              "clip_lo": -4.0,
              "clip_hi": 0.0
            }
          }
        },
        "breakdown": {
          "n": 50,
          "max_up_natr": {
            "n": 50,
            "mean": 1.33,
            "median": 0.414,
            "p25": 0.112,
            "p75": 1.81,
            "hist": {
              "bin_edges": [
                0.0,
                0.25,
                0.5,
                0.75,
                1.0,
                1.25,
                1.5,
                1.75,
                2.0,
                2.25,
                2.5,
                2.75,
                3.0,
                3.25,
                3.5,
                3.75,
                4.0
              ],
              "counts": [
                21,
                5,
                3,
                3,
                1,
                2,
                2,
                1,
                2,
                0,
                0,
                2,
                1,
                2,
                1,
                4
              ],
              "bin_centers": [
                0.125,
                0.375,
                0.625,
                0.875,
                1.125,
                1.375,
                1.625,
                1.875,
                2.125,
                2.375,
                2.625,
                2.875,
                3.125,
                3.375,
                3.625,
                3.875
              ],
              "clip_lo": 0.0,
              "clip_hi": 4.0
            }
          },
          "max_down_natr": {
            "n": 50,
            "mean": -3.634,
            "median": -2.759,
            "p25": -4.084,
            "p75": -1.831,
            "hist": {
              "bin_edges": [
                -4.0,
                -3.75,
                -3.5,
                -3.25,
                -3.0,
                -2.75,
                -2.5,
                -2.25,
                -2.0,
                -1.75,
                -1.5,
                -1.25,
                -1.0,
                -0.75,
                -0.5,
                -0.25,
                0.0
              ],
              "counts": [
                15,
                2,
                3,
                1,
                5,
                3,
                2,
                3,
                4,
                1,
                3,
                4,
                3,
                1,
                0,
                0
              ],
              "bin_centers": [
                -3.875,
                -3.625,
                -3.375,
                -3.125,
                -2.875,
                -2.625,
                -2.375,
                -2.125,
                -1.875,
                -1.625,
                -1.375,
                -1.125,
                -0.875,
                -0.625,
                -0.375,
                -0.125
              ],
              "clip_lo": -4.0,
              "clip_hi": 0.0
            }
          }
        },
        "sideways": {
          "n": 1,
          "max_up_natr": {
            "n": 1,
            "mean": 0.922,
            "median": 0.922,
            "p25": 0.922,
            "p75": 0.922
          },
          "max_down_natr": {
            "n": 1,
            "mean": -0.647,
            "median": -0.647,
            "p25": -0.647,
            "p75": -0.647
          }
        },
        "forming": {
          "n": 0,
          "max_up_natr": {
            "n": 0,
            "mean": null,
            "median": null,
            "p25": null,
            "p75": null
          },
          "max_down_natr": {
            "n": 0,
            "mean": null,
            "median": null,
            "p25": null,
            "p75": null
          }
        }
      },
      "max_up_natr_hist": {
        "bin_edges": [
          0.0,
          0.25,
          0.5,
          0.75,
          1.0,
          1.25,
          1.5,
          1.75,
          2.0,
          2.25,
          2.5,
          2.75,
          3.0,
          3.25,
          3.5,
          3.75,
          4.0
        ],
        "counts": [
          21,
          5,
          3,
          4,
          3,
          5,
          5,
          3,
          3,
          4,
          5,
          3,
          3,
          2,
          2,
          22
        ],
        "bin_centers": [
          0.125,
          0.375,
          0.625,
          0.875,
          1.125,
          1.375,
          1.625,
          1.875,
          2.125,
          2.375,
          2.625,
          2.875,
          3.125,
          3.375,
          3.625,
          3.875
        ],
        "clip_lo": 0.0,
        "clip_hi": 4.0
      },
      "max_down_natr_hist": {
        "bin_edges": [
          -4.0,
          -3.75,
          -3.5,
          -3.25,
          -3.0,
          -2.75,
          -2.5,
          -2.25,
          -2.0,
          -1.75,
          -1.5,
          -1.25,
          -1.0,
          -0.75,
          -0.5,
          -0.25,
          0.0
        ],
        "counts": [
          15,
          4,
          3,
          2,
          6,
          5,
          2,
          6,
          4,
          3,
          9,
          6,
          5,
          7,
          7,
          9
        ],
        "bin_centers": [
          -3.875,
          -3.625,
          -3.375,
          -3.125,
          -2.875,
          -2.625,
          -2.375,
          -2.125,
          -1.875,
          -1.625,
          -1.375,
          -1.125,
          -0.875,
          -0.625,
          -0.375,
          -0.125
        ],
        "clip_lo": -4.0,
        "clip_hi": 0.0
      },
      "timestamp_min": 1538265600000,
      "timestamp_max": 1778803200000,
      "timestamp_min_iso": "2018-09-30T00:00:00Z",
      "timestamp_max_iso": "2026-05-15T00:00:00Z"
    },
    {
      "pattern_type": "symmetrical_broadening_wedge",
      "pattern_name": "Symmetrical Broadening Wedge",
      "timeframe": "1d",
      "bias": "neutral",
      "n": 59,
      "n_symbols": 54,
      "breakout_success_rate": 33.9,
      "breakdown_success_rate": 32.2,
      "sideways_rate": 33.9,
      "forming_rate": 0.0,
      "both_cleared_rate": 33.9,
      "breakout_success_rate_ci95": [
        23.14,
        46.63
      ],
      "breakdown_success_rate_ci95": [
        21.69,
        44.9
      ],
      "sideways_rate_ci95": [
        23.14,
        46.63
      ],
      "forming_rate_ci95": [
        0.0,
        6.11
      ],
      "both_sides_rate": 33.9,
      "expected_hit_rate": null,
      "expected_hit_rate_ci95": null,
      "mean_ret_10c": 19.618,
      "median_ret_10c": 3.243,
      "std_ret_10c": 73.982,
      "win_rate_ret_gt0": 55.93,
      "p25_ret_10c": -12.46,
      "p75_ret_10c": 24.403,
      "mean_mfe": 51.275,
      "mean_mae": -13.25,
      "mfe_mae_ratio": 3.87,
      "max_up_natr": {
        "n": 59,
        "mean": 6.382,
        "median": 2.419,
        "p25": 0.814,
        "p75": 7.019,
        "hist": {
          "bin_edges": [
            0.0,
            0.25,
            0.5,
            0.75,
            1.0,
            1.25,
            1.5,
            1.75,
            2.0,
            2.25,
            2.5,
            2.75,
            3.0,
            3.25,
            3.5,
            3.75,
            4.0
          ],
          "counts": [
            7,
            3,
            5,
            2,
            2,
            1,
            3,
            2,
            1,
            4,
            2,
            0,
            2,
            0,
            2,
            23
          ],
          "bin_centers": [
            0.125,
            0.375,
            0.625,
            0.875,
            1.125,
            1.375,
            1.625,
            1.875,
            2.125,
            2.375,
            2.625,
            2.875,
            3.125,
            3.375,
            3.625,
            3.875
          ],
          "clip_lo": 0.0,
          "clip_hi": 4.0
        }
      },
      "max_down_natr": {
        "n": 59,
        "mean": -1.486,
        "median": -1.424,
        "p25": -2.559,
        "p75": -0.502,
        "hist": {
          "bin_edges": [
            -4.0,
            -3.75,
            -3.5,
            -3.25,
            -3.0,
            -2.75,
            -2.5,
            -2.25,
            -2.0,
            -1.75,
            -1.5,
            -1.25,
            -1.0,
            -0.75,
            -0.5,
            -0.25,
            0.0
          ],
          "counts": [
            5,
            2,
            0,
            3,
            4,
            2,
            2,
            2,
            7,
            2,
            5,
            1,
            4,
            5,
            8,
            7
          ],
          "bin_centers": [
            -3.875,
            -3.625,
            -3.375,
            -3.125,
            -2.875,
            -2.625,
            -2.375,
            -2.125,
            -1.875,
            -1.625,
            -1.375,
            -1.125,
            -0.875,
            -0.625,
            -0.375,
            -0.125
          ],
          "clip_lo": -4.0,
          "clip_hi": 0.0
        }
      },
      "median_max_up_natr": 2.419,
      "median_max_down_natr": -1.424,
      "mean_max_up_natr": 6.382,
      "mean_max_down_natr": -1.486,
      "p25_max_up_natr": 0.814,
      "p75_max_up_natr": 7.019,
      "p25_max_down_natr": -2.559,
      "p75_max_down_natr": -0.502,
      "outcome_natr_moves": {
        "breakout": {
          "n": 20,
          "max_up_natr": {
            "n": 20,
            "mean": 14.866,
            "median": 9.246,
            "p25": 5.535,
            "p75": 15.599,
            "hist": {
              "bin_edges": [
                0.0,
                0.25,
                0.5,
                0.75,
                1.0,
                1.25,
                1.5,
                1.75,
                2.0,
                2.25,
                2.5,
                2.75,
                3.0,
                3.25,
                3.5,
                3.75,
                4.0
              ],
              "counts": [
                0,
                0,
                0,
                0,
                0,
                0,
                0,
                0,
                0,
                1,
                0,
                0,
                1,
                0,
                0,
                18
              ],
              "bin_centers": [
                0.125,
                0.375,
                0.625,
                0.875,
                1.125,
                1.375,
                1.625,
                1.875,
                2.125,
                2.375,
                2.625,
                2.875,
                3.125,
                3.375,
                3.625,
                3.875
              ],
              "clip_lo": 0.0,
              "clip_hi": 4.0
            }
          },
          "max_down_natr": {
            "n": 20,
            "mean": -0.322,
            "median": -0.468,
            "p25": -1.385,
            "p75": -0.191,
            "hist": {
              "bin_edges": [
                -4.0,
                -3.75,
                -3.5,
                -3.25,
                -3.0,
                -2.75,
                -2.5,
                -2.25,
                -2.0,
                -1.75,
                -1.5,
                -1.25,
                -1.0,
                -0.75,
                -0.5,
                -0.25,
                0.0
              ],
              "counts": [
                2,
                1,
                0,
                0,
                0,
                0,
                0,
                0,
                0,
                1,
                3,
                0,
                1,
                2,
                4,
                6
              ],
              "bin_centers": [
                -3.875,
                -3.625,
                -3.375,
                -3.125,
                -2.875,
                -2.625,
                -2.375,
                -2.125,
                -1.875,
                -1.625,
                -1.375,
                -1.125,
                -0.875,
                -0.625,
                -0.375,
                -0.125
              ],
              "clip_lo": -4.0,
              "clip_hi": 0.0
            }
          }
        },
        "breakdown": {
          "n": 19,
          "max_up_natr": {
            "n": 19,
            "mean": 1.362,
            "median": 0.591,
            "p25": 0.153,
            "p75": 1.251,
            "hist": {
              "bin_edges": [
                0.0,
                0.25,
                0.5,
                0.75,
                1.0,
                1.25,
                1.5,
                1.75,
                2.0,
                2.25,
                2.5,
                2.75,
                3.0,
                3.25,
                3.5,
                3.75,
                4.0
              ],
              "counts": [
                6,
                3,
                3,
                1,
                1,
                1,
                0,
                1,
                0,
                1,
                0,
                0,
                0,
                0,
                0,
                2
              ],
              "bin_centers": [
                0.125,
                0.375,
                0.625,
                0.875,
                1.125,
                1.375,
                1.625,
                1.875,
                2.125,
                2.375,
                2.625,
                2.875,
                3.125,
                3.375,
                3.625,
                3.875
              ],
              "clip_lo": 0.0,
              "clip_hi": 4.0
            }
          },
          "max_down_natr": {
            "n": 19,
            "mean": -2.899,
            "median": -2.506,
            "p25": -3.068,
            "p75": -1.959,
            "hist": {
              "bin_edges": [
                -4.0,
                -3.75,
                -3.5,
                -3.25,
                -3.0,
                -2.75,
                -2.5,
                -2.25,
                -2.0,
                -1.75,
                -1.5,
                -1.25,
                -1.0,
                -0.75,
                -0.5,
                -0.25,
                0.0
              ],
              "counts": [
                3,
                1,
                0,
                1,
                3,
                2,
                2,
                1,
                3,
                1,
                2,
                0,
                0,
                0,
                0,
                0
              ],
              "bin_centers": [
                -3.875,
                -3.625,
                -3.375,
                -3.125,
                -2.875,
                -2.625,
                -2.375,
                -2.125,
                -1.875,
                -1.625,
                -1.375,
                -1.125,
                -0.875,
                -0.625,
                -0.375,
                -0.125
              ],
              "clip_lo": -4.0,
              "clip_hi": 0.0
            }
          }
        },
        "sideways": {
          "n": 20,
          "max_up_natr": {
            "n": 20,
            "mean": 2.668,
            "median": 2.275,
            "p25": 1.475,
            "p75": 3.221,
            "hist": {
              "bin_edges": [
                0.0,
                0.25,
                0.5,
                0.75,
                1.0,
                1.25,
                1.5,
                1.75,
                2.0,
                2.25,
                2.5,
                2.75,
                3.0,
                3.25,
                3.5,
                3.75,
                4.0
              ],
              "counts": [
                1,
                0,
                2,
                1,
                1,
                0,
                3,
                1,
                1,
                2,
                2,
                0,
                1,
                0,
                2,
                3
              ],
              "bin_centers": [
                0.125,
                0.375,
                0.625,
                0.875,
                1.125,
                1.375,
                1.625,
                1.875,
                2.125,
                2.375,
                2.625,
                2.875,
                3.125,
                3.375,
                3.625,
                3.875
              ],
              "clip_lo": 0.0,
              "clip_hi": 4.0
            }
          },
          "max_down_natr": {
            "n": 20,
            "mean": -1.309,
            "median": -0.944,
            "p25": -1.868,
            "p75": -0.577,
            "hist": {
              "bin_edges": [
                -4.0,
                -3.75,
                -3.5,
                -3.25,
                -3.0,
                -2.75,
                -2.5,
                -2.25,
                -2.0,
                -1.75,
                -1.5,
                -1.25,
                -1.0,
                -0.75,
                -0.5,
                -0.25,
                0.0
              ],
              "counts": [
                0,
                0,
                0,
                2,
                1,
                0,
                0,
                1,
                4,
                0,
                0,
                1,
                3,
                3,
                4,
                1
              ],
              "bin_centers": [
                -3.875,
                -3.625,
                -3.375,
                -3.125,
                -2.875,
                -2.625,
                -2.375,
                -2.125,
                -1.875,
                -1.625,
                -1.375,
                -1.125,
                -0.875,
                -0.625,
                -0.375,
                -0.125
              ],
              "clip_lo": -4.0,
              "clip_hi": 0.0
            }
          }
        },
        "forming": {
          "n": 0,
          "max_up_natr": {
            "n": 0,
            "mean": null,
            "median": null,
            "p25": null,
            "p75": null
          },
          "max_down_natr": {
            "n": 0,
            "mean": null,
            "median": null,
            "p25": null,
            "p75": null
          }
        }
      },
      "max_up_natr_hist": {
        "bin_edges": [
          0.0,
          0.25,
          0.5,
          0.75,
          1.0,
          1.25,
          1.5,
          1.75,
          2.0,
          2.25,
          2.5,
          2.75,
          3.0,
          3.25,
          3.5,
          3.75,
          4.0
        ],
        "counts": [
          7,
          3,
          5,
          2,
          2,
          1,
          3,
          2,
          1,
          4,
          2,
          0,
          2,
          0,
          2,
          23
        ],
        "bin_centers": [
          0.125,
          0.375,
          0.625,
          0.875,
          1.125,
          1.375,
          1.625,
          1.875,
          2.125,
          2.375,
          2.625,
          2.875,
          3.125,
          3.375,
          3.625,
          3.875
        ],
        "clip_lo": 0.0,
        "clip_hi": 4.0
      },
      "max_down_natr_hist": {
        "bin_edges": [
          -4.0,
          -3.75,
          -3.5,
          -3.25,
          -3.0,
          -2.75,
          -2.5,
          -2.25,
          -2.0,
          -1.75,
          -1.5,
          -1.25,
          -1.0,
          -0.75,
          -0.5,
          -0.25,
          0.0
        ],
        "counts": [
          5,
          2,
          0,
          3,
          4,
          2,
          2,
          2,
          7,
          2,
          5,
          1,
          4,
          5,
          8,
          7
        ],
        "bin_centers": [
          -3.875,
          -3.625,
          -3.375,
          -3.125,
          -2.875,
          -2.625,
          -2.375,
          -2.125,
          -1.875,
          -1.625,
          -1.375,
          -1.125,
          -0.875,
          -0.625,
          -0.375,
          -0.125
        ],
        "clip_lo": -4.0,
        "clip_hi": 0.0
      },
      "timestamp_min": 1588550400000,
      "timestamp_max": 1783728000000,
      "timestamp_min_iso": "2020-05-04T00:00:00Z",
      "timestamp_max_iso": "2026-07-11T00:00:00Z"
    }
  ],
  "lifts": {
    "confidence_terciles": {
      "low": {
        "n": 3334,
        "breakout_success_rate": 48.41,
        "breakdown_success_rate": 46.58,
        "sideways_rate": 5.01,
        "forming_rate": 0.0,
        "both_cleared_rate": 37.88,
        "breakout_success_rate_ci95": [
          46.72,
          50.11
        ],
        "breakdown_success_rate_ci95": [
          44.89,
          48.28
        ],
        "sideways_rate_ci95": [
          4.32,
          5.8
        ],
        "forming_rate_ci95": [
          0.0,
          0.12
        ],
        "mean_ret_10c": 0.468,
        "mean_mfe": 6.321,
        "mean_mae": -5.169,
        "expected_hit_rate": 73.4,
        "max_up_natr": {
          "n": 3334,
          "mean": 2.803,
          "median": 1.881,
          "p25": 0.696,
          "p75": 3.661
        },
        "max_down_natr": {
          "n": 3334,
          "mean": -2.556,
          "median": -1.941,
          "p25": -3.509,
          "p75": -0.728
        },
        "median_max_up_natr": 1.881,
        "median_max_down_natr": -1.941,
        "mean_max_up_natr": 2.803,
        "mean_max_down_natr": -2.556,
        "p25_max_up_natr": 0.696,
        "p75_max_up_natr": 3.661,
        "p25_max_down_natr": -3.509,
        "p75_max_down_natr": -0.728,
        "outcome_natr_moves": {
          "breakout": {
            "n": 1614,
            "max_up_natr": {
              "n": 1614,
              "mean": 4.125,
              "median": 3.055,
              "p25": 1.906,
              "p75": 4.884
            },
            "max_down_natr": {
              "n": 1614,
              "mean": -1.455,
              "median": -0.783,
              "p25": -1.973,
              "p75": -0.253
            }
          },
          "breakdown": {
            "n": 1553,
            "max_up_natr": {
              "n": 1553,
              "mean": 1.586,
              "median": 0.724,
              "p25": 0.212,
              "p75": 1.958
            },
            "max_down_natr": {
              "n": 1553,
              "mean": -3.789,
              "median": -3.049,
              "p25": -4.642,
              "p75": -1.998
            }
          },
          "sideways": {
            "n": 167,
            "max_up_natr": {
              "n": 167,
              "mean": 1.358,
              "median": 0.977,
              "p25": 0.599,
              "p75": 1.834
            },
            "max_down_natr": {
              "n": 167,
              "mean": -1.728,
              "median": -1.349,
              "p25": -2.394,
              "p75": -0.709
            }
          },
          "forming": {
            "n": 0,
            "max_up_natr": {
              "n": 0,
              "mean": null,
              "median": null,
              "p25": null,
              "p75": null
            },
            "max_down_natr": {
              "n": 0,
              "mean": null,
              "median": null,
              "p25": null,
              "p75": null
            }
          }
        }
      },
      "mid": {
        "n": 3333,
        "breakout_success_rate": 51.22,
        "breakdown_success_rate": 43.74,
        "sideways_rate": 5.04,
        "forming_rate": 0.0,
        "both_cleared_rate": 37.86,
        "breakout_success_rate_ci95": [
          49.52,
          52.91
        ],
        "breakdown_success_rate_ci95": [
          42.07,
          45.43
        ],
        "sideways_rate_ci95": [
          4.35,
          5.84
        ],
        "forming_rate_ci95": [
          0.0,
          0.12
        ],
        "mean_ret_10c": 0.263,
        "mean_mfe": 5.591,
        "mean_mae": -4.568,
        "expected_hit_rate": 71.11,
        "max_up_natr": {
          "n": 3333,
          "mean": 2.791,
          "median": 1.886,
          "p25": 0.774,
          "p75": 3.582
        },
        "max_down_natr": {
          "n": 3333,
          "mean": -2.457,
          "median": -1.735,
          "p25": -3.308,
          "p75": -0.68
        },
        "median_max_up_natr": 1.886,
        "median_max_down_natr": -1.735,
        "mean_max_up_natr": 2.791,
        "mean_max_down_natr": -2.457,
        "p25_max_up_natr": 0.774,
        "p75_max_up_natr": 3.582,
        "p25_max_down_natr": -3.308,
        "p75_max_down_natr": -0.68,
        "outcome_natr_moves": {
          "breakout": {
            "n": 1707,
            "max_up_natr": {
              "n": 1707,
              "mean": 3.927,
              "median": 2.867,
              "p25": 1.755,
              "p75": 4.613
            },
            "max_down_natr": {
              "n": 1707,
              "mean": -1.517,
              "median": -0.813,
              "p25": -1.92,
              "p75": -0.307
            }
          },
          "breakdown": {
            "n": 1458,
            "max_up_natr": {
              "n": 1458,
              "mean": 1.612,
              "median": 0.83,
              "p25": 0.286,
              "p75": 2.048
            },
            "max_down_natr": {
              "n": 1458,
              "mean": -3.621,
              "median": -2.94,
              "p25": -4.47,
              "p75": -1.78
            }
          },
          "sideways": {
            "n": 168,
            "max_up_natr": {
              "n": 168,
              "mean": 1.476,
              "median": 0.873,
              "p25": 0.468,
              "p75": 1.869
            },
            "max_down_natr": {
              "n": 168,
              "mean": -1.907,
              "median": -1.601,
              "p25": -2.505,
              "p75": -0.761
            }
          },
          "forming": {
            "n": 0,
            "max_up_natr": {
              "n": 0,
              "mean": null,
              "median": null,
              "p25": null,
              "p75": null
            },
            "max_down_natr": {
              "n": 0,
              "mean": null,
              "median": null,
              "p25": null,
              "p75": null
            }
          }
        }
      },
      "high": {
        "n": 3333,
        "breakout_success_rate": 46.77,
        "breakdown_success_rate": 46.38,
        "sideways_rate": 6.85,
        "forming_rate": 0.0,
        "both_cleared_rate": 38.28,
        "breakout_success_rate_ci95": [
          45.09,
          48.47
        ],
        "breakdown_success_rate_ci95": [
          44.7,
          48.08
        ],
        "sideways_rate_ci95": [
          6.03,
          7.75
        ],
        "forming_rate_ci95": [
          0.0,
          0.12
        ],
        "mean_ret_10c": 0.008,
        "mean_mfe": 5.047,
        "mean_mae": -4.719,
        "expected_hit_rate": 73.93,
        "max_up_natr": {
          "n": 3333,
          "mean": 2.575,
          "median": 1.746,
          "p25": 0.708,
          "p75": 3.325
        },
        "max_down_natr": {
          "n": 3333,
          "mean": -2.514,
          "median": -1.813,
          "p25": -3.265,
          "p75": -0.781
        },
        "median_max_up_natr": 1.746,
        "median_max_down_natr": -1.813,
        "mean_max_up_natr": 2.575,
        "mean_max_down_natr": -2.514,
        "p25_max_up_natr": 0.708,
        "p75_max_up_natr": 3.325,
        "p25_max_down_natr": -3.265,
        "p75_max_down_natr": -0.781,
        "outcome_natr_moves": {
          "breakout": {
            "n": 1559,
            "max_up_natr": {
              "n": 1559,
              "mean": 3.811,
              "median": 2.756,
              "p25": 1.744,
              "p75": 4.468
            },
            "max_down_natr": {
              "n": 1559,
              "mean": -1.533,
              "median": -0.903,
              "p25": -2.009,
              "p75": -0.307
            }
          },
          "breakdown": {
            "n": 1546,
            "max_up_natr": {
              "n": 1546,
              "mean": 1.478,
              "median": 0.787,
              "p25": 0.286,
              "p75": 1.889
            },
            "max_down_natr": {
              "n": 1546,
              "mean": -3.6,
              "median": -2.734,
              "p25": -4.391,
              "p75": -1.768
            }
          },
          "sideways": {
            "n": 228,
            "max_up_natr": {
              "n": 228,
              "mean": 1.568,
              "median": 1.211,
              "p25": 0.657,
              "p75": 2.102
            },
            "max_down_natr": {
              "n": 228,
              "mean": -1.862,
              "median": -1.257,
              "p25": -2.568,
              "p75": -0.761
            }
          },
          "forming": {
            "n": 0,
            "max_up_natr": {
              "n": 0,
              "mean": null,
              "median": null,
              "p25": null,
              "p75": null
            },
            "max_down_natr": {
              "n": 0,
              "mean": null,
              "median": null,
              "p25": null,
              "p75": null
            }
          }
        }
      }
    },
    "rsi_buckets": {
      "oversold_lt30": {
        "n": 306,
        "breakout_success_rate": 20.92,
        "breakdown_success_rate": 75.16,
        "sideways_rate": 3.92,
        "forming_rate": 0.0,
        "both_cleared_rate": 42.16,
        "breakout_success_rate_ci95": [
          16.73,
          25.82
        ],
        "breakdown_success_rate_ci95": [
          70.03,
          79.67
        ],
        "sideways_rate_ci95": [
          2.26,
          6.73
        ],
        "forming_rate_ci95": [
          0.0,
          1.24
        ],
        "mean_ret_10c": -0.376,
        "mean_mfe": 5.521,
        "mean_mae": -7.772,
        "expected_hit_rate": 42.55,
        "max_up_natr": {
          "n": 306,
          "mean": 2.47,
          "median": 1.622,
          "p25": 0.485,
          "p75": 3.756
        },
        "max_down_natr": {
          "n": 306,
          "mean": -3.978,
          "median": -2.864,
          "p25": -5.284,
          "p75": -1.293
        },
        "median_max_up_natr": 1.622,
        "median_max_down_natr": -2.864,
        "mean_max_up_natr": 2.47,
        "mean_max_down_natr": -3.978,
        "p25_max_up_natr": 0.485,
        "p75_max_up_natr": 3.756,
        "p25_max_down_natr": -5.284,
        "p75_max_down_natr": -1.293,
        "outcome_natr_moves": {
          "breakout": {
            "n": 64,
            "max_up_natr": {
              "n": 64,
              "mean": 3.988,
              "median": 3.193,
              "p25": 2.084,
              "p75": 4.794
            },
            "max_down_natr": {
              "n": 64,
              "mean": -1.453,
              "median": -0.519,
              "p25": -1.55,
              "p75": -0.209
            }
          },
          "breakdown": {
            "n": 230,
            "max_up_natr": {
              "n": 230,
              "mean": 2.083,
              "median": 0.986,
              "p25": 0.303,
              "p75": 3.225
            },
            "max_down_natr": {
              "n": 230,
              "mean": -4.796,
              "median": -3.431,
              "p25": -6.07,
              "p75": -1.939
            }
          },
          "sideways": {
            "n": 12,
            "max_up_natr": {
              "n": 12,
              "mean": 1.773,
              "median": 1.12,
              "p25": 0.552,
              "p75": 2.256
            },
            "max_down_natr": {
              "n": 12,
              "mean": -1.778,
              "median": -1.076,
              "p25": -1.907,
              "p75": -0.603
            }
          },
          "forming": {
            "n": 0,
            "max_up_natr": {
              "n": 0,
              "mean": null,
              "median": null,
              "p25": null,
              "p75": null
            },
            "max_down_natr": {
              "n": 0,
              "mean": null,
              "median": null,
              "p25": null,
              "p75": null
            }
          }
        }
      },
      "30_50": {
        "n": 5285,
        "breakout_success_rate": 37.79,
        "breakdown_success_rate": 56.33,
        "sideways_rate": 5.88,
        "forming_rate": 0.0,
        "both_cleared_rate": 36.52,
        "breakout_success_rate_ci95": [
          36.49,
          39.1
        ],
        "breakdown_success_rate_ci95": [
          54.99,
          57.66
        ],
        "sideways_rate_ci95": [
          5.28,
          6.55
        ],
        "forming_rate_ci95": [
          0.0,
          0.07
        ],
        "mean_ret_10c": -0.186,
        "mean_mfe": 5.107,
        "mean_mae": -5.258,
        "expected_hit_rate": 74.86,
        "max_up_natr": {
          "n": 5285,
          "mean": 2.376,
          "median": 1.661,
          "p25": 0.619,
          "p75": 3.193
        },
        "max_down_natr": {
          "n": 5285,
          "mean": -2.653,
          "median": -1.917,
          "p25": -3.5,
          "p75": -0.773
        },
        "median_max_up_natr": 1.661,
        "median_max_down_natr": -1.917,
        "mean_max_up_natr": 2.376,
        "mean_max_down_natr": -2.653,
        "p25_max_up_natr": 0.619,
        "p75_max_up_natr": 3.193,
        "p25_max_down_natr": -3.5,
        "p75_max_down_natr": -0.773,
        "outcome_natr_moves": {
          "breakout": {
            "n": 1997,
            "max_up_natr": {
              "n": 1997,
              "mean": 3.708,
              "median": 2.887,
              "p25": 1.896,
              "p75": 4.43
            },
            "max_down_natr": {
              "n": 1997,
              "mean": -1.29,
              "median": -0.611,
              "p25": -1.602,
              "p75": -0.201
            }
          },
          "breakdown": {
            "n": 2977,
            "max_up_natr": {
              "n": 2977,
              "mean": 1.568,
              "median": 0.853,
              "p25": 0.284,
              "p75": 2.024
            },
            "max_down_natr": {
              "n": 2977,
              "mean": -3.658,
              "median": -2.833,
              "p25": -4.54,
              "p75": -1.78
            }
          },
          "sideways": {
            "n": 311,
            "max_up_natr": {
              "n": 311,
              "mean": 1.557,
              "median": 1.207,
              "p25": 0.589,
              "p75": 2.165
            },
            "max_down_natr": {
              "n": 311,
              "mean": -1.775,
              "median": -1.249,
              "p25": -2.491,
              "p75": -0.636
            }
          },
          "forming": {
            "n": 0,
            "max_up_natr": {
              "n": 0,
              "mean": null,
              "median": null,
              "p25": null,
              "p75": null
            },
            "max_down_natr": {
              "n": 0,
              "mean": null,
              "median": null,
              "p25": null,
              "p75": null
            }
          }
        }
      },
      "50_70": {
        "n": 4205,
        "breakout_success_rate": 63.21,
        "breakdown_success_rate": 31.34,
        "sideways_rate": 5.45,
        "forming_rate": 0.0,
        "both_cleared_rate": 39.02,
        "breakout_success_rate_ci95": [
          61.74,
          64.66
        ],
        "breakdown_success_rate_ci95": [
          29.96,
          32.76
        ],
        "sideways_rate_ci95": [
          4.8,
          6.17
        ],
        "forming_rate_ci95": [
          0.0,
          0.09
        ],
        "mean_ret_10c": 0.784,
        "mean_mfe": 6.127,
        "mean_mae": -4.033,
        "expected_hit_rate": 73.49,
        "max_up_natr": {
          "n": 4205,
          "mean": 3.053,
          "median": 2.01,
          "p25": 0.878,
          "p75": 3.854
        },
        "max_down_natr": {
          "n": 4205,
          "mean": -2.214,
          "median": -1.66,
          "p25": -3.095,
          "p75": -0.654
        },
        "median_max_up_natr": 2.01,
        "median_max_down_natr": -1.66,
        "mean_max_up_natr": 3.053,
        "mean_max_down_natr": -2.214,
        "p25_max_up_natr": 0.878,
        "p75_max_up_natr": 3.854,
        "p25_max_down_natr": -3.095,
        "p75_max_down_natr": -0.654,
        "outcome_natr_moves": {
          "breakout": {
            "n": 2658,
            "max_up_natr": {
              "n": 2658,
              "mean": 3.995,
              "median": 2.832,
              "p25": 1.689,
              "p75": 4.681
            },
            "max_down_natr": {
              "n": 2658,
              "mean": -1.603,
              "median": -0.983,
              "p25": -2.196,
              "p75": -0.37
            }
          },
          "breakdown": {
            "n": 1318,
            "max_up_natr": {
              "n": 1318,
              "mean": 1.443,
              "median": 0.621,
              "p25": 0.206,
              "p75": 1.715
            },
            "max_down_natr": {
              "n": 1318,
              "mean": -3.5,
              "median": -2.971,
              "p25": -4.316,
              "p75": -1.969
            }
          },
          "sideways": {
            "n": 229,
            "max_up_natr": {
              "n": 229,
              "mean": 1.373,
              "median": 0.878,
              "p25": 0.558,
              "p75": 1.731
            },
            "max_down_natr": {
              "n": 229,
              "mean": -1.9,
              "median": -1.564,
              "p25": -2.576,
              "p75": -0.891
            }
          },
          "forming": {
            "n": 0,
            "max_up_natr": {
              "n": 0,
              "mean": null,
              "median": null,
              "p25": null,
              "p75": null
            },
            "max_down_natr": {
              "n": 0,
              "mean": null,
              "median": null,
              "p25": null,
              "p75": null
            }
          }
        }
      },
      "overbought_gt70": {
        "n": 204,
        "breakout_success_rate": 78.92,
        "breakdown_success_rate": 15.69,
        "sideways_rate": 5.39,
        "forming_rate": 0.0,
        "both_cleared_rate": 49.51,
        "breakout_success_rate_ci95": [
          72.82,
          83.96
        ],
        "breakdown_success_rate_ci95": [
          11.34,
          21.31
        ],
        "sideways_rate_ci95": [
          3.04,
          9.4
        ],
        "forming_rate_ci95": [
          0.0,
          1.85
        ],
        "mean_ret_10c": 1.289,
        "mean_mfe": 10.231,
        "mean_mae": -5.209,
        "expected_hit_rate": 48.11,
        "max_up_natr": {
          "n": 204,
          "mean": 5.307,
          "median": 3.091,
          "p25": 1.534,
          "p75": 6.205
        },
        "max_down_natr": {
          "n": 204,
          "mean": -2.677,
          "median": -2.253,
          "p25": -3.536,
          "p75": -0.763
        },
        "median_max_up_natr": 3.091,
        "median_max_down_natr": -2.253,
        "mean_max_up_natr": 5.307,
        "mean_max_down_natr": -2.677,
        "p25_max_up_natr": 1.534,
        "p75_max_up_natr": 6.205,
        "p25_max_down_natr": -3.536,
        "p75_max_down_natr": -0.763,
        "outcome_natr_moves": {
          "breakout": {
            "n": 161,
            "max_up_natr": {
              "n": 161,
              "mean": 6.348,
              "median": 4.438,
              "p25": 2.15,
              "p75": 8.077
            },
            "max_down_natr": {
              "n": 161,
              "mean": -2.475,
              "median": -1.819,
              "p25": -3.413,
              "p75": -0.598
            }
          },
          "breakdown": {
            "n": 32,
            "max_up_natr": {
              "n": 32,
              "mean": 1.515,
              "median": 0.598,
              "p25": 0.248,
              "p75": 1.975
            },
            "max_down_natr": {
              "n": 32,
              "mean": -3.832,
              "median": -3.248,
              "p25": -4.174,
              "p75": -2.453
            }
          },
          "sideways": {
            "n": 11,
            "max_up_natr": {
              "n": 11,
              "mean": 1.1,
              "median": 0.859,
              "p25": 0.61,
              "p75": 1.494
            },
            "max_down_natr": {
              "n": 11,
              "mean": -2.285,
              "median": -1.847,
              "p25": -2.797,
              "p75": -1.328
            }
          },
          "forming": {
            "n": 0,
            "max_up_natr": {
              "n": 0,
              "mean": null,
              "median": null,
              "p25": null,
              "p75": null
            },
            "max_down_natr": {
              "n": 0,
              "mean": null,
              "median": null,
              "p25": null,
              "p75": null
            }
          }
        }
      }
    }
  },
  "lifts_multi_tf": {
    "confidence_terciles": {
      "low": {
        "n": 3334,
        "breakout_success_rate": 48.41,
        "breakdown_success_rate": 46.58,
        "sideways_rate": 5.01,
        "forming_rate": 0.0,
        "both_cleared_rate": 37.88,
        "breakout_success_rate_ci95": [
          46.72,
          50.11
        ],
        "breakdown_success_rate_ci95": [
          44.89,
          48.28
        ],
        "sideways_rate_ci95": [
          4.32,
          5.8
        ],
        "forming_rate_ci95": [
          0.0,
          0.12
        ],
        "mean_ret_10c": 0.468,
        "mean_mfe": 6.321,
        "mean_mae": -5.169,
        "expected_hit_rate": 73.4,
        "max_up_natr": {
          "n": 3334,
          "mean": 2.803,
          "median": 1.881,
          "p25": 0.696,
          "p75": 3.661
        },
        "max_down_natr": {
          "n": 3334,
          "mean": -2.556,
          "median": -1.941,
          "p25": -3.509,
          "p75": -0.728
        },
        "median_max_up_natr": 1.881,
        "median_max_down_natr": -1.941,
        "mean_max_up_natr": 2.803,
        "mean_max_down_natr": -2.556,
        "p25_max_up_natr": 0.696,
        "p75_max_up_natr": 3.661,
        "p25_max_down_natr": -3.509,
        "p75_max_down_natr": -0.728,
        "outcome_natr_moves": {
          "breakout": {
            "n": 1614,
            "max_up_natr": {
              "n": 1614,
              "mean": 4.125,
              "median": 3.055,
              "p25": 1.906,
              "p75": 4.884
            },
            "max_down_natr": {
              "n": 1614,
              "mean": -1.455,
              "median": -0.783,
              "p25": -1.973,
              "p75": -0.253
            }
          },
          "breakdown": {
            "n": 1553,
            "max_up_natr": {
              "n": 1553,
              "mean": 1.586,
              "median": 0.724,
              "p25": 0.212,
              "p75": 1.958
            },
            "max_down_natr": {
              "n": 1553,
              "mean": -3.789,
              "median": -3.049,
              "p25": -4.642,
              "p75": -1.998
            }
          },
          "sideways": {
            "n": 167,
            "max_up_natr": {
              "n": 167,
              "mean": 1.358,
              "median": 0.977,
              "p25": 0.599,
              "p75": 1.834
            },
            "max_down_natr": {
              "n": 167,
              "mean": -1.728,
              "median": -1.349,
              "p25": -2.394,
              "p75": -0.709
            }
          },
          "forming": {
            "n": 0,
            "max_up_natr": {
              "n": 0,
              "mean": null,
              "median": null,
              "p25": null,
              "p75": null
            },
            "max_down_natr": {
              "n": 0,
              "mean": null,
              "median": null,
              "p25": null,
              "p75": null
            }
          }
        }
      },
      "mid": {
        "n": 3333,
        "breakout_success_rate": 51.22,
        "breakdown_success_rate": 43.74,
        "sideways_rate": 5.04,
        "forming_rate": 0.0,
        "both_cleared_rate": 37.86,
        "breakout_success_rate_ci95": [
          49.52,
          52.91
        ],
        "breakdown_success_rate_ci95": [
          42.07,
          45.43
        ],
        "sideways_rate_ci95": [
          4.35,
          5.84
        ],
        "forming_rate_ci95": [
          0.0,
          0.12
        ],
        "mean_ret_10c": 0.263,
        "mean_mfe": 5.591,
        "mean_mae": -4.568,
        "expected_hit_rate": 71.11,
        "max_up_natr": {
          "n": 3333,
          "mean": 2.791,
          "median": 1.886,
          "p25": 0.774,
          "p75": 3.582
        },
        "max_down_natr": {
          "n": 3333,
          "mean": -2.457,
          "median": -1.735,
          "p25": -3.308,
          "p75": -0.68
        },
        "median_max_up_natr": 1.886,
        "median_max_down_natr": -1.735,
        "mean_max_up_natr": 2.791,
        "mean_max_down_natr": -2.457,
        "p25_max_up_natr": 0.774,
        "p75_max_up_natr": 3.582,
        "p25_max_down_natr": -3.308,
        "p75_max_down_natr": -0.68,
        "outcome_natr_moves": {
          "breakout": {
            "n": 1707,
            "max_up_natr": {
              "n": 1707,
              "mean": 3.927,
              "median": 2.867,
              "p25": 1.755,
              "p75": 4.613
            },
            "max_down_natr": {
              "n": 1707,
              "mean": -1.517,
              "median": -0.813,
              "p25": -1.92,
              "p75": -0.307
            }
          },
          "breakdown": {
            "n": 1458,
            "max_up_natr": {
              "n": 1458,
              "mean": 1.612,
              "median": 0.83,
              "p25": 0.286,
              "p75": 2.048
            },
            "max_down_natr": {
              "n": 1458,
              "mean": -3.621,
              "median": -2.94,
              "p25": -4.47,
              "p75": -1.78
            }
          },
          "sideways": {
            "n": 168,
            "max_up_natr": {
              "n": 168,
              "mean": 1.476,
              "median": 0.873,
              "p25": 0.468,
              "p75": 1.869
            },
            "max_down_natr": {
              "n": 168,
              "mean": -1.907,
              "median": -1.601,
              "p25": -2.505,
              "p75": -0.761
            }
          },
          "forming": {
            "n": 0,
            "max_up_natr": {
              "n": 0,
              "mean": null,
              "median": null,
              "p25": null,
              "p75": null
            },
            "max_down_natr": {
              "n": 0,
              "mean": null,
              "median": null,
              "p25": null,
              "p75": null
            }
          }
        }
      },
      "high": {
        "n": 3333,
        "breakout_success_rate": 46.77,
        "breakdown_success_rate": 46.38,
        "sideways_rate": 6.85,
        "forming_rate": 0.0,
        "both_cleared_rate": 38.28,
        "breakout_success_rate_ci95": [
          45.09,
          48.47
        ],
        "breakdown_success_rate_ci95": [
          44.7,
          48.08
        ],
        "sideways_rate_ci95": [
          6.03,
          7.75
        ],
        "forming_rate_ci95": [
          0.0,
          0.12
        ],
        "mean_ret_10c": 0.008,
        "mean_mfe": 5.047,
        "mean_mae": -4.719,
        "expected_hit_rate": 73.93,
        "max_up_natr": {
          "n": 3333,
          "mean": 2.575,
          "median": 1.746,
          "p25": 0.708,
          "p75": 3.325
        },
        "max_down_natr": {
          "n": 3333,
          "mean": -2.514,
          "median": -1.813,
          "p25": -3.265,
          "p75": -0.781
        },
        "median_max_up_natr": 1.746,
        "median_max_down_natr": -1.813,
        "mean_max_up_natr": 2.575,
        "mean_max_down_natr": -2.514,
        "p25_max_up_natr": 0.708,
        "p75_max_up_natr": 3.325,
        "p25_max_down_natr": -3.265,
        "p75_max_down_natr": -0.781,
        "outcome_natr_moves": {
          "breakout": {
            "n": 1559,
            "max_up_natr": {
              "n": 1559,
              "mean": 3.811,
              "median": 2.756,
              "p25": 1.744,
              "p75": 4.468
            },
            "max_down_natr": {
              "n": 1559,
              "mean": -1.533,
              "median": -0.903,
              "p25": -2.009,
              "p75": -0.307
            }
          },
          "breakdown": {
            "n": 1546,
            "max_up_natr": {
              "n": 1546,
              "mean": 1.478,
              "median": 0.787,
              "p25": 0.286,
              "p75": 1.889
            },
            "max_down_natr": {
              "n": 1546,
              "mean": -3.6,
              "median": -2.734,
              "p25": -4.391,
              "p75": -1.768
            }
          },
          "sideways": {
            "n": 228,
            "max_up_natr": {
              "n": 228,
              "mean": 1.568,
              "median": 1.211,
              "p25": 0.657,
              "p75": 2.102
            },
            "max_down_natr": {
              "n": 228,
              "mean": -1.862,
              "median": -1.257,
              "p25": -2.568,
              "p75": -0.761
            }
          },
          "forming": {
            "n": 0,
            "max_up_natr": {
              "n": 0,
              "mean": null,
              "median": null,
              "p25": null,
              "p75": null
            },
            "max_down_natr": {
              "n": 0,
              "mean": null,
              "median": null,
              "p25": null,
              "p75": null
            }
          }
        }
      }
    },
    "rsi_buckets": {
      "oversold_lt30": {
        "n": 306,
        "breakout_success_rate": 20.92,
        "breakdown_success_rate": 75.16,
        "sideways_rate": 3.92,
        "forming_rate": 0.0,
        "both_cleared_rate": 42.16,
        "breakout_success_rate_ci95": [
          16.73,
          25.82
        ],
        "breakdown_success_rate_ci95": [
          70.03,
          79.67
        ],
        "sideways_rate_ci95": [
          2.26,
          6.73
        ],
        "forming_rate_ci95": [
          0.0,
          1.24
        ],
        "mean_ret_10c": -0.376,
        "mean_mfe": 5.521,
        "mean_mae": -7.772,
        "expected_hit_rate": 42.55,
        "max_up_natr": {
          "n": 306,
          "mean": 2.47,
          "median": 1.622,
          "p25": 0.485,
          "p75": 3.756
        },
        "max_down_natr": {
          "n": 306,
          "mean": -3.978,
          "median": -2.864,
          "p25": -5.284,
          "p75": -1.293
        },
        "median_max_up_natr": 1.622,
        "median_max_down_natr": -2.864,
        "mean_max_up_natr": 2.47,
        "mean_max_down_natr": -3.978,
        "p25_max_up_natr": 0.485,
        "p75_max_up_natr": 3.756,
        "p25_max_down_natr": -5.284,
        "p75_max_down_natr": -1.293,
        "outcome_natr_moves": {
          "breakout": {
            "n": 64,
            "max_up_natr": {
              "n": 64,
              "mean": 3.988,
              "median": 3.193,
              "p25": 2.084,
              "p75": 4.794
            },
            "max_down_natr": {
              "n": 64,
              "mean": -1.453,
              "median": -0.519,
              "p25": -1.55,
              "p75": -0.209
            }
          },
          "breakdown": {
            "n": 230,
            "max_up_natr": {
              "n": 230,
              "mean": 2.083,
              "median": 0.986,
              "p25": 0.303,
              "p75": 3.225
            },
            "max_down_natr": {
              "n": 230,
              "mean": -4.796,
              "median": -3.431,
              "p25": -6.07,
              "p75": -1.939
            }
          },
          "sideways": {
            "n": 12,
            "max_up_natr": {
              "n": 12,
              "mean": 1.773,
              "median": 1.12,
              "p25": 0.552,
              "p75": 2.256
            },
            "max_down_natr": {
              "n": 12,
              "mean": -1.778,
              "median": -1.076,
              "p25": -1.907,
              "p75": -0.603
            }
          },
          "forming": {
            "n": 0,
            "max_up_natr": {
              "n": 0,
              "mean": null,
              "median": null,
              "p25": null,
              "p75": null
            },
            "max_down_natr": {
              "n": 0,
              "mean": null,
              "median": null,
              "p25": null,
              "p75": null
            }
          }
        }
      },
      "30_50": {
        "n": 5285,
        "breakout_success_rate": 37.79,
        "breakdown_success_rate": 56.33,
        "sideways_rate": 5.88,
        "forming_rate": 0.0,
        "both_cleared_rate": 36.52,
        "breakout_success_rate_ci95": [
          36.49,
          39.1
        ],
        "breakdown_success_rate_ci95": [
          54.99,
          57.66
        ],
        "sideways_rate_ci95": [
          5.28,
          6.55
        ],
        "forming_rate_ci95": [
          0.0,
          0.07
        ],
        "mean_ret_10c": -0.186,
        "mean_mfe": 5.107,
        "mean_mae": -5.258,
        "expected_hit_rate": 74.86,
        "max_up_natr": {
          "n": 5285,
          "mean": 2.376,
          "median": 1.661,
          "p25": 0.619,
          "p75": 3.193
        },
        "max_down_natr": {
          "n": 5285,
          "mean": -2.653,
          "median": -1.917,
          "p25": -3.5,
          "p75": -0.773
        },
        "median_max_up_natr": 1.661,
        "median_max_down_natr": -1.917,
        "mean_max_up_natr": 2.376,
        "mean_max_down_natr": -2.653,
        "p25_max_up_natr": 0.619,
        "p75_max_up_natr": 3.193,
        "p25_max_down_natr": -3.5,
        "p75_max_down_natr": -0.773,
        "outcome_natr_moves": {
          "breakout": {
            "n": 1997,
            "max_up_natr": {
              "n": 1997,
              "mean": 3.708,
              "median": 2.887,
              "p25": 1.896,
              "p75": 4.43
            },
            "max_down_natr": {
              "n": 1997,
              "mean": -1.29,
              "median": -0.611,
              "p25": -1.602,
              "p75": -0.201
            }
          },
          "breakdown": {
            "n": 2977,
            "max_up_natr": {
              "n": 2977,
              "mean": 1.568,
              "median": 0.853,
              "p25": 0.284,
              "p75": 2.024
            },
            "max_down_natr": {
              "n": 2977,
              "mean": -3.658,
              "median": -2.833,
              "p25": -4.54,
              "p75": -1.78
            }
          },
          "sideways": {
            "n": 311,
            "max_up_natr": {
              "n": 311,
              "mean": 1.557,
              "median": 1.207,
              "p25": 0.589,
              "p75": 2.165
            },
            "max_down_natr": {
              "n": 311,
              "mean": -1.775,
              "median": -1.249,
              "p25": -2.491,
              "p75": -0.636
            }
          },
          "forming": {
            "n": 0,
            "max_up_natr": {
              "n": 0,
              "mean": null,
              "median": null,
              "p25": null,
              "p75": null
            },
            "max_down_natr": {
              "n": 0,
              "mean": null,
              "median": null,
              "p25": null,
              "p75": null
            }
          }
        }
      },
      "50_70": {
        "n": 4205,
        "breakout_success_rate": 63.21,
        "breakdown_success_rate": 31.34,
        "sideways_rate": 5.45,
        "forming_rate": 0.0,
        "both_cleared_rate": 39.02,
        "breakout_success_rate_ci95": [
          61.74,
          64.66
        ],
        "breakdown_success_rate_ci95": [
          29.96,
          32.76
        ],
        "sideways_rate_ci95": [
          4.8,
          6.17
        ],
        "forming_rate_ci95": [
          0.0,
          0.09
        ],
        "mean_ret_10c": 0.784,
        "mean_mfe": 6.127,
        "mean_mae": -4.033,
        "expected_hit_rate": 73.49,
        "max_up_natr": {
          "n": 4205,
          "mean": 3.053,
          "median": 2.01,
          "p25": 0.878,
          "p75": 3.854
        },
        "max_down_natr": {
          "n": 4205,
          "mean": -2.214,
          "median": -1.66,
          "p25": -3.095,
          "p75": -0.654
        },
        "median_max_up_natr": 2.01,
        "median_max_down_natr": -1.66,
        "mean_max_up_natr": 3.053,
        "mean_max_down_natr": -2.214,
        "p25_max_up_natr": 0.878,
        "p75_max_up_natr": 3.854,
        "p25_max_down_natr": -3.095,
        "p75_max_down_natr": -0.654,
        "outcome_natr_moves": {
          "breakout": {
            "n": 2658,
            "max_up_natr": {
              "n": 2658,
              "mean": 3.995,
              "median": 2.832,
              "p25": 1.689,
              "p75": 4.681
            },
            "max_down_natr": {
              "n": 2658,
              "mean": -1.603,
              "median": -0.983,
              "p25": -2.196,
              "p75": -0.37
            }
          },
          "breakdown": {
            "n": 1318,
            "max_up_natr": {
              "n": 1318,
              "mean": 1.443,
              "median": 0.621,
              "p25": 0.206,
              "p75": 1.715
            },
            "max_down_natr": {
              "n": 1318,
              "mean": -3.5,
              "median": -2.971,
              "p25": -4.316,
              "p75": -1.969
            }
          },
          "sideways": {
            "n": 229,
            "max_up_natr": {
              "n": 229,
              "mean": 1.373,
              "median": 0.878,
              "p25": 0.558,
              "p75": 1.731
            },
            "max_down_natr": {
              "n": 229,
              "mean": -1.9,
              "median": -1.564,
              "p25": -2.576,
              "p75": -0.891
            }
          },
          "forming": {
            "n": 0,
            "max_up_natr": {
              "n": 0,
              "mean": null,
              "median": null,
              "p25": null,
              "p75": null
            },
            "max_down_natr": {
              "n": 0,
              "mean": null,
              "median": null,
              "p25": null,
              "p75": null
            }
          }
        }
      },
      "overbought_gt70": {
        "n": 204,
        "breakout_success_rate": 78.92,
        "breakdown_success_rate": 15.69,
        "sideways_rate": 5.39,
        "forming_rate": 0.0,
        "both_cleared_rate": 49.51,
        "breakout_success_rate_ci95": [
          72.82,
          83.96
        ],
        "breakdown_success_rate_ci95": [
          11.34,
          21.31
        ],
        "sideways_rate_ci95": [
          3.04,
          9.4
        ],
        "forming_rate_ci95": [
          0.0,
          1.85
        ],
        "mean_ret_10c": 1.289,
        "mean_mfe": 10.231,
        "mean_mae": -5.209,
        "expected_hit_rate": 48.11,
        "max_up_natr": {
          "n": 204,
          "mean": 5.307,
          "median": 3.091,
          "p25": 1.534,
          "p75": 6.205
        },
        "max_down_natr": {
          "n": 204,
          "mean": -2.677,
          "median": -2.253,
          "p25": -3.536,
          "p75": -0.763
        },
        "median_max_up_natr": 3.091,
        "median_max_down_natr": -2.253,
        "mean_max_up_natr": 5.307,
        "mean_max_down_natr": -2.677,
        "p25_max_up_natr": 1.534,
        "p75_max_up_natr": 6.205,
        "p25_max_down_natr": -3.536,
        "p75_max_down_natr": -0.763,
        "outcome_natr_moves": {
          "breakout": {
            "n": 161,
            "max_up_natr": {
              "n": 161,
              "mean": 6.348,
              "median": 4.438,
              "p25": 2.15,
              "p75": 8.077
            },
            "max_down_natr": {
              "n": 161,
              "mean": -2.475,
              "median": -1.819,
              "p25": -3.413,
              "p75": -0.598
            }
          },
          "breakdown": {
            "n": 32,
            "max_up_natr": {
              "n": 32,
              "mean": 1.515,
              "median": 0.598,
              "p25": 0.248,
              "p75": 1.975
            },
            "max_down_natr": {
              "n": 32,
              "mean": -3.832,
              "median": -3.248,
              "p25": -4.174,
              "p75": -2.453
            }
          },
          "sideways": {
            "n": 11,
            "max_up_natr": {
              "n": 11,
              "mean": 1.1,
              "median": 0.859,
              "p25": 0.61,
              "p75": 1.494
            },
            "max_down_natr": {
              "n": 11,
              "mean": -2.285,
              "median": -1.847,
              "p25": -2.797,
              "p75": -1.328
            }
          },
          "forming": {
            "n": 0,
            "max_up_natr": {
              "n": 0,
              "mean": null,
              "median": null,
              "p25": null,
              "p75": null
            },
            "max_down_natr": {
              "n": 0,
              "mean": null,
              "median": null,
              "p25": null,
              "p75": null
            }
          }
        }
      }
    }
  },
  "temporal_holdout": {
    "cutoff_ms": 1704067200000,
    "cutoff_iso": "2024-01-01T00:00:00Z",
    "train": {
      "n": 2775,
      "n_symbols": 292,
      "breakout_success_rate": 47.75,
      "breakdown_success_rate": 46.56,
      "sideways_rate": 5.69,
      "forming_rate": 0.0,
      "both_cleared_rate": 39.21,
      "breakout_success_rate_ci95": [
        45.89,
        49.61
      ],
      "breakdown_success_rate_ci95": [
        44.71,
        48.42
      ],
      "sideways_rate_ci95": [
        4.89,
        6.62
      ],
      "forming_rate_ci95": [
        0.0,
        0.14
      ],
      "both_sides_rate": 39.21,
      "expected_hit_rate": 73.18,
      "expected_hit_rate_ci95": [
        71.45,
        74.84
      ],
      "mean_ret_10c": 0.274,
      "median_ret_10c": 0.0,
      "std_ret_10c": 10.674,
      "win_rate_ret_gt0": 49.69,
      "p25_ret_10c": -3.783,
      "p75_ret_10c": 3.484,
      "mean_mfe": 7.057,
      "mean_mae": -6.178,
      "mfe_mae_ratio": 1.142,
      "max_up_natr": {
        "n": 2775,
        "mean": 2.769,
        "median": 1.777,
        "p25": 0.722,
        "p75": 3.588,
        "hist": {
          "bin_edges": [
            0.0,
            0.25,
            0.5,
            0.75,
            1.0,
            1.25,
            1.5,
            1.75,
            2.0,
            2.25,
            2.5,
            2.75,
            3.0,
            3.25,
            3.5,
            3.75,
            4.0
          ],
          "counts": [
            320,
            203,
            186,
            178,
            167,
            162,
            146,
            127,
            121,
            99,
            102,
            89,
            88,
            72,
            61,
            654
          ],
          "bin_centers": [
            0.125,
            0.375,
            0.625,
            0.875,
            1.125,
            1.375,
            1.625,
            1.875,
            2.125,
            2.375,
            2.625,
            2.875,
            3.125,
            3.375,
            3.625,
            3.875
          ],
          "clip_lo": 0.0,
          "clip_hi": 4.0
        }
      },
      "max_down_natr": {
        "n": 2775,
        "mean": -2.614,
        "median": -1.891,
        "p25": -3.46,
        "p75": -0.8,
        "hist": {
          "bin_edges": [
            -4.0,
            -3.75,
            -3.5,
            -3.25,
            -3.0,
            -2.75,
            -2.5,
            -2.25,
            -2.0,
            -1.75,
            -1.5,
            -1.25,
            -1.0,
            -0.75,
            -0.5,
            -0.25,
            0.0
          ],
          "counts": [
            601,
            84,
            72,
            114,
            110,
            121,
            120,
            119,
            134,
            145,
            177,
            144,
            174,
            173,
            204,
            283
          ],
          "bin_centers": [
            -3.875,
            -3.625,
            -3.375,
            -3.125,
            -2.875,
            -2.625,
            -2.375,
            -2.125,
            -1.875,
            -1.625,
            -1.375,
            -1.125,
            -0.875,
            -0.625,
            -0.375,
            -0.125
          ],
          "clip_lo": -4.0,
          "clip_hi": 0.0
        }
      },
      "median_max_up_natr": 1.777,
      "median_max_down_natr": -1.891,
      "mean_max_up_natr": 2.769,
      "mean_max_down_natr": -2.614,
      "p25_max_up_natr": 0.722,
      "p75_max_up_natr": 3.588,
      "p25_max_down_natr": -3.46,
      "p75_max_down_natr": -0.8,
      "outcome_natr_moves": {
        "breakout": {
          "n": 1325,
          "max_up_natr": {
            "n": 1325,
            "mean": 4.019,
            "median": 2.921,
            "p25": 1.751,
            "p75": 4.744,
            "hist": {
              "bin_edges": [
                0.0,
                0.25,
                0.5,
                0.75,
                1.0,
                1.25,
                1.5,
                1.75,
                2.0,
                2.25,
                2.5,
                2.75,
                3.0,
                3.25,
                3.5,
                3.75,
                4.0
              ],
              "counts": [
                9,
                12,
                16,
                50,
                71,
                95,
                78,
                79,
                76,
                64,
                68,
                62,
                63,
                48,
                48,
                486
              ],
              "bin_centers": [
                0.125,
                0.375,
                0.625,
                0.875,
                1.125,
                1.375,
                1.625,
                1.875,
                2.125,
                2.375,
                2.625,
                2.875,
                3.125,
                3.375,
                3.625,
                3.875
              ],
              "clip_lo": 0.0,
              "clip_hi": 4.0
            }
          },
          "max_down_natr": {
            "n": 1325,
            "mean": -1.667,
            "median": -0.905,
            "p25": -2.205,
            "p75": -0.34,
            "hist": {
              "bin_edges": [
                -4.0,
                -3.75,
                -3.5,
                -3.25,
                -3.0,
                -2.75,
                -2.5,
                -2.25,
                -2.0,
                -1.75,
                -1.5,
                -1.25,
                -1.0,
                -0.75,
                -0.5,
                -0.25,
                0.0
              ],
              "counts": [
                150,
                24,
                23,
                31,
                30,
                33,
                35,
                33,
                43,
                59,
                88,
                74,
                120,
                133,
                181,
                268
              ],
              "bin_centers": [
                -3.875,
                -3.625,
                -3.375,
                -3.125,
                -2.875,
                -2.625,
                -2.375,
                -2.125,
                -1.875,
                -1.625,
                -1.375,
                -1.125,
                -0.875,
                -0.625,
                -0.375,
                -0.125
              ],
              "clip_lo": -4.0,
              "clip_hi": 0.0
            }
          }
        },
        "breakdown": {
          "n": 1292,
          "max_up_natr": {
            "n": 1292,
            "mean": 1.632,
            "median": 0.816,
            "p25": 0.276,
            "p75": 2.036,
            "hist": {
              "bin_edges": [
                0.0,
                0.25,
                0.5,
                0.75,
                1.0,
                1.25,
                1.5,
                1.75,
                2.0,
                2.25,
                2.5,
                2.75,
                3.0,
                3.25,
                3.5,
                3.75,
                4.0
              ],
              "counts": [
                303,
                170,
                144,
                111,
                83,
                55,
                57,
                41,
                37,
                32,
                27,
                21,
                23,
                20,
                12,
                156
              ],
              "bin_centers": [
                0.125,
                0.375,
                0.625,
                0.875,
                1.125,
                1.375,
                1.625,
                1.875,
                2.125,
                2.375,
                2.625,
                2.875,
                3.125,
                3.375,
                3.625,
                3.875
              ],
              "clip_lo": 0.0,
              "clip_hi": 4.0
            }
          },
          "max_down_natr": {
            "n": 1292,
            "mean": -3.7,
            "median": -2.923,
            "p25": -4.588,
            "p75": -1.877,
            "hist": {
              "bin_edges": [
                -4.0,
                -3.75,
                -3.5,
                -3.25,
                -3.0,
                -2.75,
                -2.5,
                -2.25,
                -2.0,
                -1.75,
                -1.5,
                -1.25,
                -1.0,
                -0.75,
                -0.5,
                -0.25,
                0.0
              ],
              "counts": [
                437,
                58,
                48,
                77,
                74,
                78,
                79,
                85,
                80,
                76,
                80,
                54,
                35,
                15,
                8,
                8
              ],
              "bin_centers": [
                -3.875,
                -3.625,
                -3.375,
                -3.125,
                -2.875,
                -2.625,
                -2.375,
                -2.125,
                -1.875,
                -1.625,
                -1.375,
                -1.125,
                -0.875,
                -0.625,
                -0.375,
                -0.125
              ],
              "clip_lo": -4.0,
              "clip_hi": 0.0
            }
          }
        },
        "sideways": {
          "n": 158,
          "max_up_natr": {
            "n": 158,
            "mean": 1.585,
            "median": 1.092,
            "p25": 0.63,
            "p75": 2.082,
            "hist": {
              "bin_edges": [
                0.0,
                0.25,
                0.5,
                0.75,
                1.0,
                1.25,
                1.5,
                1.75,
                2.0,
                2.25,
                2.5,
                2.75,
                3.0,
                3.25,
                3.5,
                3.75,
                4.0
              ],
              "counts": [
                8,
                21,
                26,
                17,
                13,
                12,
                11,
                7,
                8,
                3,
                7,
                6,
                2,
                4,
                1,
                12
              ],
              "bin_centers": [
                0.125,
                0.375,
                0.625,
                0.875,
                1.125,
                1.375,
                1.625,
                1.875,
                2.125,
                2.375,
                2.625,
                2.875,
                3.125,
                3.375,
                3.625,
                3.875
              ],
              "clip_lo": 0.0,
              "clip_hi": 4.0
            }
          },
          "max_down_natr": {
            "n": 158,
            "mean": -1.677,
            "median": -1.165,
            "p25": -2.484,
            "p75": -0.662,
            "hist": {
              "bin_edges": [
                -4.0,
                -3.75,
                -3.5,
                -3.25,
                -3.0,
                -2.75,
                -2.5,
                -2.25,
                -2.0,
                -1.75,
                -1.5,
                -1.25,
                -1.0,
                -0.75,
                -0.5,
                -0.25,
                0.0
              ],
              "counts": [
                14,
                2,
                1,
                6,
                6,
                10,
                6,
                1,
                11,
                10,
                9,
                16,
                19,
                25,
                15,
                7
              ],
              "bin_centers": [
                -3.875,
                -3.625,
                -3.375,
                -3.125,
                -2.875,
                -2.625,
                -2.375,
                -2.125,
                -1.875,
                -1.625,
                -1.375,
                -1.125,
                -0.875,
                -0.625,
                -0.375,
                -0.125
              ],
              "clip_lo": -4.0,
              "clip_hi": 0.0
            }
          }
        },
        "forming": {
          "n": 0,
          "max_up_natr": {
            "n": 0,
            "mean": null,
            "median": null,
            "p25": null,
            "p75": null
          },
          "max_down_natr": {
            "n": 0,
            "mean": null,
            "median": null,
            "p25": null,
            "p75": null
          }
        }
      },
      "max_up_natr_hist": {
        "bin_edges": [
          0.0,
          0.25,
          0.5,
          0.75,
          1.0,
          1.25,
          1.5,
          1.75,
          2.0,
          2.25,
          2.5,
          2.75,
          3.0,
          3.25,
          3.5,
          3.75,
          4.0
        ],
        "counts": [
          320,
          203,
          186,
          178,
          167,
          162,
          146,
          127,
          121,
          99,
          102,
          89,
          88,
          72,
          61,
          654
        ],
        "bin_centers": [
          0.125,
          0.375,
          0.625,
          0.875,
          1.125,
          1.375,
          1.625,
          1.875,
          2.125,
          2.375,
          2.625,
          2.875,
          3.125,
          3.375,
          3.625,
          3.875
        ],
        "clip_lo": 0.0,
        "clip_hi": 4.0
      },
      "max_down_natr_hist": {
        "bin_edges": [
          -4.0,
          -3.75,
          -3.5,
          -3.25,
          -3.0,
          -2.75,
          -2.5,
          -2.25,
          -2.0,
          -1.75,
          -1.5,
          -1.25,
          -1.0,
          -0.75,
          -0.5,
          -0.25,
          0.0
        ],
        "counts": [
          601,
          84,
          72,
          114,
          110,
          121,
          120,
          119,
          134,
          145,
          177,
          144,
          174,
          173,
          204,
          283
        ],
        "bin_centers": [
          -3.875,
          -3.625,
          -3.375,
          -3.125,
          -2.875,
          -2.625,
          -2.375,
          -2.125,
          -1.875,
          -1.625,
          -1.375,
          -1.125,
          -0.875,
          -0.625,
          -0.375,
          -0.125
        ],
        "clip_lo": -4.0,
        "clip_hi": 0.0
      },
      "timestamp_min": 1520121600000,
      "timestamp_max": 1703973600000,
      "timestamp_min_iso": "2018-03-04T00:00:00Z",
      "timestamp_max_iso": "2023-12-30T22:00:00Z"
    },
    "holdout": {
      "n": 7221,
      "n_symbols": 643,
      "breakout_success_rate": 49.2,
      "breakdown_success_rate": 45.19,
      "sideways_rate": 5.61,
      "forming_rate": 0.0,
      "both_cleared_rate": 37.53,
      "breakout_success_rate_ci95": [
        48.05,
        50.36
      ],
      "breakdown_success_rate_ci95": [
        44.04,
        46.34
      ],
      "sideways_rate_ci95": [
        5.1,
        6.16
      ],
      "forming_rate_ci95": [
        0.0,
        0.05
      ],
      "both_sides_rate": 37.53,
      "expected_hit_rate": 72.64,
      "expected_hit_rate_ci95": [
        71.57,
        73.69
      ],
      "mean_ret_10c": 0.235,
      "median_ret_10c": -0.068,
      "std_ret_10c": 8.112,
      "win_rate_ret_gt0": 48.89,
      "p25_ret_10c": -2.447,
      "p75_ret_10c": 2.397,
      "mean_mfe": 5.114,
      "mean_mae": -4.298,
      "mfe_mae_ratio": 1.19,
      "max_up_natr": {
        "n": 7221,
        "mean": 2.706,
        "median": 1.85,
        "p25": 0.725,
        "p75": 3.479,
        "hist": {
          "bin_edges": [
            0.0,
            0.25,
            0.5,
            0.75,
            1.0,
            1.25,
            1.5,
            1.75,
            2.0,
            2.25,
            2.5,
            2.75,
            3.0,
            3.25,
            3.5,
            3.75,
            4.0
          ],
          "counts": [
            855,
            546,
            441,
            412,
            404,
            407,
            398,
            379,
            335,
            289,
            285,
            253,
            229,
            201,
            177,
            1610
          ],
          "bin_centers": [
            0.125,
            0.375,
            0.625,
            0.875,
            1.125,
            1.375,
            1.625,
            1.875,
            2.125,
            2.375,
            2.625,
            2.875,
            3.125,
            3.375,
            3.625,
            3.875
          ],
          "clip_lo": 0.0,
          "clip_hi": 4.0
        }
      },
      "max_down_natr": {
        "n": 7221,
        "mean": -2.469,
        "median": -1.791,
        "p25": -3.331,
        "p75": -0.708,
        "hist": {
          "bin_edges": [
            -4.0,
            -3.75,
            -3.5,
            -3.25,
            -3.0,
            -2.75,
            -2.5,
            -2.25,
            -2.0,
            -1.75,
            -1.5,
            -1.25,
            -1.0,
            -0.75,
            -0.5,
            -0.25,
            0.0
          ],
          "counts": [
            1462,
            190,
            232,
            223,
            244,
            281,
            324,
            333,
            389,
            396,
            405,
            423,
            439,
            451,
            559,
            870
          ],
          "bin_centers": [
            -3.875,
            -3.625,
            -3.375,
            -3.125,
            -2.875,
            -2.625,
            -2.375,
            -2.125,
            -1.875,
            -1.625,
            -1.375,
            -1.125,
            -0.875,
            -0.625,
            -0.375,
            -0.125
          ],
          "clip_lo": -4.0,
          "clip_hi": 0.0
        }
      },
      "median_max_up_natr": 1.85,
      "median_max_down_natr": -1.791,
      "mean_max_up_natr": 2.706,
      "mean_max_down_natr": -2.469,
      "p25_max_up_natr": 0.725,
      "p75_max_up_natr": 3.479,
      "p25_max_down_natr": -3.331,
      "p75_max_down_natr": -0.708,
      "outcome_natr_moves": {
        "breakout": {
          "n": 3553,
          "max_up_natr": {
            "n": 3553,
            "mean": 3.933,
            "median": 2.875,
            "p25": 1.819,
            "p75": 4.602,
            "hist": {
              "bin_edges": [
                0.0,
                0.25,
                0.5,
                0.75,
                1.0,
                1.25,
                1.5,
                1.75,
                2.0,
                2.25,
                2.5,
                2.75,
                3.0,
                3.25,
                3.5,
                3.75,
                4.0
              ],
              "counts": [
                14,
                19,
                59,
                108,
                182,
                205,
                244,
                235,
                223,
                184,
                211,
                184,
                150,
                152,
                131,
                1252
              ],
              "bin_centers": [
                0.125,
                0.375,
                0.625,
                0.875,
                1.125,
                1.375,
                1.625,
                1.875,
                2.125,
                2.375,
                2.625,
                2.875,
                3.125,
                3.375,
                3.625,
                3.875
              ],
              "clip_lo": 0.0,
              "clip_hi": 4.0
            }
          },
          "max_down_natr": {
            "n": 3553,
            "mean": -1.44,
            "median": -0.803,
            "p25": -1.92,
            "p75": -0.278,
            "hist": {
              "bin_edges": [
                -4.0,
                -3.75,
                -3.5,
                -3.25,
                -3.0,
                -2.75,
                -2.5,
                -2.25,
                -2.0,
                -1.75,
                -1.5,
                -1.25,
                -1.0,
                -0.75,
                -0.5,
                -0.25,
                0.0
              ],
              "counts": [
                301,
                35,
                62,
                64,
                73,
                95,
                106,
                104,
                139,
                168,
                184,
                217,
                285,
                373,
                515,
                832
              ],
              "bin_centers": [
                -3.875,
                -3.625,
                -3.375,
                -3.125,
                -2.875,
                -2.625,
                -2.375,
                -2.125,
                -1.875,
                -1.625,
                -1.375,
                -1.125,
                -0.875,
                -0.625,
                -0.375,
                -0.125
              ],
              "clip_lo": -4.0,
              "clip_hi": 0.0
            }
          }
        },
        "breakdown": {
          "n": 3263,
          "max_up_natr": {
            "n": 3263,
            "mean": 1.528,
            "median": 0.769,
            "p25": 0.258,
            "p75": 1.958,
            "hist": {
              "bin_edges": [
                0.0,
                0.25,
                0.5,
                0.75,
                1.0,
                1.25,
                1.5,
                1.75,
                2.0,
                2.25,
                2.5,
                2.75,
                3.0,
                3.25,
                3.5,
                3.75,
                4.0
              ],
              "counts": [
                802,
                477,
                333,
                251,
                186,
                167,
                126,
                123,
                96,
                90,
                66,
                59,
                65,
                40,
                44,
                338
              ],
              "bin_centers": [
                0.125,
                0.375,
                0.625,
                0.875,
                1.125,
                1.375,
                1.625,
                1.875,
                2.125,
                2.375,
                2.625,
                2.875,
                3.125,
                3.375,
                3.625,
                3.875
              ],
              "clip_lo": 0.0,
              "clip_hi": 4.0
            }
          },
          "max_down_natr": {
            "n": 3263,
            "mean": -3.66,
            "median": -2.9,
            "p25": -4.501,
            "p75": -1.834,
            "hist": {
              "bin_edges": [
                -4.0,
                -3.75,
                -3.5,
                -3.25,
                -3.0,
                -2.75,
                -2.5,
                -2.25,
                -2.0,
                -1.75,
                -1.5,
                -1.25,
                -1.0,
                -0.75,
                -0.5,
                -0.25,
                0.0
              ],
              "counts": [
                1117,
                142,
                159,
                149,
                159,
                171,
                198,
                208,
                222,
                202,
                192,
                171,
                104,
                40,
                11,
                18
              ],
              "bin_centers": [
                -3.875,
                -3.625,
                -3.375,
                -3.125,
                -2.875,
                -2.625,
                -2.375,
                -2.125,
                -1.875,
                -1.625,
                -1.375,
                -1.125,
                -0.875,
                -0.625,
                -0.375,
                -0.125
              ],
              "clip_lo": -4.0,
              "clip_hi": 0.0
            }
          }
        },
        "sideways": {
          "n": 405,
          "max_up_natr": {
            "n": 405,
            "mean": 1.437,
            "median": 1.075,
            "p25": 0.549,
            "p75": 1.881,
            "hist": {
              "bin_edges": [
                0.0,
                0.25,
                0.5,
                0.75,
                1.0,
                1.25,
                1.5,
                1.75,
                2.0,
                2.25,
                2.5,
                2.75,
                3.0,
                3.25,
                3.5,
                3.75,
                4.0
              ],
              "counts": [
                39,
                50,
                49,
                53,
                36,
                35,
                28,
                21,
                16,
                15,
                8,
                10,
                14,
                9,
                2,
                20
              ],
              "bin_centers": [
                0.125,
                0.375,
                0.625,
                0.875,
                1.125,
                1.375,
                1.625,
                1.875,
                2.125,
                2.375,
                2.625,
                2.875,
                3.125,
                3.375,
                3.625,
                3.875
              ],
              "clip_lo": 0.0,
              "clip_hi": 4.0
            }
          },
          "max_down_natr": {
            "n": 405,
            "mean": -1.898,
            "median": -1.493,
            "p25": -2.564,
            "p75": -0.786,
            "hist": {
              "bin_edges": [
                -4.0,
                -3.75,
                -3.5,
                -3.25,
                -3.0,
                -2.75,
                -2.5,
                -2.25,
                -2.0,
                -1.75,
                -1.5,
                -1.25,
                -1.0,
                -0.75,
                -0.5,
                -0.25,
                0.0
              ],
              "counts": [
                44,
                13,
                11,
                10,
                12,
                15,
                20,
                21,
                28,
                26,
                29,
                35,
                50,
                38,
                33,
                20
              ],
              "bin_centers": [
                -3.875,
                -3.625,
                -3.375,
                -3.125,
                -2.875,
                -2.625,
                -2.375,
                -2.125,
                -1.875,
                -1.625,
                -1.375,
                -1.125,
                -0.875,
                -0.625,
                -0.375,
                -0.125
              ],
              "clip_lo": -4.0,
              "clip_hi": 0.0
            }
          }
        },
        "forming": {
          "n": 0,
          "max_up_natr": {
            "n": 0,
            "mean": null,
            "median": null,
            "p25": null,
            "p75": null
          },
          "max_down_natr": {
            "n": 0,
            "mean": null,
            "median": null,
            "p25": null,
            "p75": null
          }
        }
      },
      "max_up_natr_hist": {
        "bin_edges": [
          0.0,
          0.25,
          0.5,
          0.75,
          1.0,
          1.25,
          1.5,
          1.75,
          2.0,
          2.25,
          2.5,
          2.75,
          3.0,
          3.25,
          3.5,
          3.75,
          4.0
        ],
        "counts": [
          855,
          546,
          441,
          412,
          404,
          407,
          398,
          379,
          335,
          289,
          285,
          253,
          229,
          201,
          177,
          1610
        ],
        "bin_centers": [
          0.125,
          0.375,
          0.625,
          0.875,
          1.125,
          1.375,
          1.625,
          1.875,
          2.125,
          2.375,
          2.625,
          2.875,
          3.125,
          3.375,
          3.625,
          3.875
        ],
        "clip_lo": 0.0,
        "clip_hi": 4.0
      },
      "max_down_natr_hist": {
        "bin_edges": [
          -4.0,
          -3.75,
          -3.5,
          -3.25,
          -3.0,
          -2.75,
          -2.5,
          -2.25,
          -2.0,
          -1.75,
          -1.5,
          -1.25,
          -1.0,
          -0.75,
          -0.5,
          -0.25,
          0.0
        ],
        "counts": [
          1462,
          190,
          232,
          223,
          244,
          281,
          324,
          333,
          389,
          396,
          405,
          423,
          439,
          451,
          559,
          870
        ],
        "bin_centers": [
          -3.875,
          -3.625,
          -3.375,
          -3.125,
          -2.875,
          -2.625,
          -2.375,
          -2.125,
          -1.875,
          -1.625,
          -1.375,
          -1.125,
          -0.875,
          -0.625,
          -0.375,
          -0.125
        ],
        "clip_lo": -4.0,
        "clip_hi": 0.0
      },
      "timestamp_min": 1704110400000,
      "timestamp_max": 1785523500000,
      "timestamp_min_iso": "2024-01-01T12:00:00Z",
      "timestamp_max_iso": "2026-07-31T18:45:00Z"
    },
    "note": "Rates on snapshots before vs on/after the cutoff timestamp. Thresholds (\u00b11\u00d7NATR, 20 candles) are fixed \u2014 not retuned on the holdout window.",
    "baseline_multiclass_brier_score": 0.550962,
    "baseline_multiclass_log_loss": 0.869907,
    "train_class_probabilities": {
      "breakout": 0.477477,
      "breakdown": 0.465586,
      "sideways": 0.056937
    },
    "method": "chronological_holdout_with_label_horizon_purge",
    "purged_overlap_rows": 4,
    "purge_horizon_candles": 20
  },
  "null_baseline": {
    "n_permutations": 200,
    "seed": 42,
    "method": "permute_exclusive_outcomes_within_timeframe",
    "expected_hit_rate_mean": 47.42,
    "expected_hit_rate_p05": 46.51,
    "expected_hit_rate_p95": 48.3,
    "note": "Null expected-direction hit rate after shuffling breakout/breakdown labels within each timeframe. Compare observed expected_hit_rate to this band."
  },
  "return_histogram": {
    "bin_edges": [
      -30.0,
      -27.5,
      -25.0,
      -22.5,
      -20.0,
      -17.5,
      -15.0,
      -12.5,
      -10.0,
      -7.5,
      -5.0,
      -2.5,
      0.0,
      2.5,
      5.0,
      7.5,
      10.0,
      12.5,
      15.0,
      17.5,
      20.0,
      22.5,
      25.0,
      27.5,
      30.0
    ],
    "counts": [
      37,
      20,
      23,
      27,
      49,
      80,
      124,
      190,
      328,
      586,
      1175,
      2411,
      2355,
      1127,
      593,
      289,
      181,
      110,
      80,
      50,
      40,
      20,
      12,
      93
    ],
    "bin_centers": [
      -28.75,
      -26.25,
      -23.75,
      -21.25,
      -18.75,
      -16.25,
      -13.75,
      -11.25,
      -8.75,
      -6.25,
      -3.75,
      -1.25,
      1.25,
      3.75,
      6.25,
      8.75,
      11.25,
      13.75,
      16.25,
      18.75,
      21.25,
      23.75,
      26.25,
      28.75
    ],
    "clip": 30.0
  },
  "correlations": {
    "breakout_success": [
      {
        "feature": "current_scale_number",
        "rho": 0.6026,
        "abs_rho": 0.6026,
        "p_value": 0.0,
        "n": 10000,
        "significant_05": true,
        "significant_01": true,
        "significant_001": true,
        "stars": "***",
        "q_value": 0.0,
        "significant_fdr_05": true
      },
      {
        "feature": "target_max_up_20c",
        "rho": 0.493,
        "abs_rho": 0.493,
        "p_value": 0.0,
        "n": 10000,
        "significant_05": true,
        "significant_01": true,
        "significant_001": true,
        "stars": "***",
        "q_value": 0.0,
        "significant_fdr_05": true
      },
      {
        "feature": "geom_resistance_slope",
        "rho": -0.4449,
        "abs_rho": 0.4449,
        "p_value": 0.0,
        "n": 9279,
        "significant_05": true,
        "significant_01": true,
        "significant_001": true,
        "stars": "***",
        "q_value": 0.0,
        "significant_fdr_05": true
      },
      {
        "feature": "target_max_down_20c",
        "rho": 0.4396,
        "abs_rho": 0.4396,
        "p_value": 0.0,
        "n": 10000,
        "significant_05": true,
        "significant_01": true,
        "significant_001": true,
        "stars": "***",
        "q_value": 0.0,
        "significant_fdr_05": true
      },
      {
        "feature": "geom_support_slope",
        "rho": -0.4131,
        "abs_rho": 0.4131,
        "p_value": 0.0,
        "n": 9279,
        "significant_05": true,
        "significant_01": true,
        "significant_001": true,
        "stars": "***",
        "q_value": 0.0,
        "significant_fdr_05": true
      },
      {
        "feature": "target_ret_20c",
        "rho": 0.3749,
        "abs_rho": 0.3749,
        "p_value": 0.0,
        "n": 10000,
        "significant_05": true,
        "significant_01": true,
        "significant_001": true,
        "stars": "***",
        "q_value": 0.0,
        "significant_fdr_05": true
      },
      {
        "feature": "rsi_14",
        "rho": 0.3223,
        "abs_rho": 0.3223,
        "p_value": 0.0,
        "n": 10000,
        "significant_05": true,
        "significant_01": true,
        "significant_001": true,
        "stars": "***",
        "q_value": 0.0,
        "significant_fdr_05": true
      },
      {
        "feature": "btc_dist14_mean",
        "rho": -0.2081,
        "abs_rho": 0.2081,
        "p_value": 0.0,
        "n": 10000,
        "significant_05": true,
        "significant_01": true,
        "significant_001": true,
        "stars": "***",
        "q_value": 0.0,
        "significant_fdr_05": true
      },
      {
        "feature": "rsi_div_rsi_delta",
        "rho": 0.1217,
        "abs_rho": 0.1217,
        "p_value": 0.005555,
        "n": 518,
        "significant_05": true,
        "significant_01": true,
        "significant_001": false,
        "stars": "**",
        "q_value": 0.009648,
        "significant_fdr_05": true
      },
      {
        "feature": "geom_height",
        "rho": 0.0732,
        "abs_rho": 0.0732,
        "p_value": 0.0,
        "n": 9292,
        "significant_05": true,
        "significant_01": true,
        "significant_001": true,
        "stars": "***",
        "q_value": 0.0,
        "significant_fdr_05": true
      },
      {
        "feature": "rsi_div_price_delta_pct",
        "rho": -0.0703,
        "abs_rho": 0.0703,
        "p_value": 0.110013,
        "n": 518,
        "significant_05": false,
        "significant_01": false,
        "significant_001": false,
        "stars": "",
        "q_value": 0.151268,
        "significant_fdr_05": false
      },
      {
        "feature": "rsi_div_price_divergence",
        "rho": 0.0652,
        "abs_rho": 0.0652,
        "p_value": 0.138333,
        "n": 518,
        "significant_05": false,
        "significant_01": false,
        "significant_001": false,
        "stars": "",
        "q_value": 0.1826,
        "significant_fdr_05": false
      },
      {
        "feature": "geom_breakout_potential",
        "rho": -0.0463,
        "abs_rho": 0.0463,
        "p_value": 6e-06,
        "n": 9482,
        "significant_05": true,
        "significant_01": true,
        "significant_001": true,
        "stars": "",
        "q_value": 2e-05,
        "significant_fdr_05": false
      },
      {
        "feature": "geom_hs_completion_score",
        "rho": 0.0455,
        "abs_rho": 0.0455,
        "p_value": 0.045711,
        "n": 1933,
        "significant_05": true,
        "significant_01": false,
        "significant_001": false,
        "stars": "",
        "q_value": 0.071832,
        "significant_fdr_05": false
      },
      {
        "feature": "rsi_div_span",
        "rho": -0.0374,
        "abs_rho": 0.0374,
        "p_value": 0.396254,
        "n": 518,
        "significant_05": false,
        "significant_01": false,
        "significant_001": false,
        "stars": "",
        "q_value": 0.435879,
        "significant_fdr_05": false
      },
      {
        "feature": "natr_pattern_avg",
        "rho": 0.0337,
        "abs_rho": 0.0337,
        "p_value": 0.000751,
        "n": 10000,
        "significant_05": true,
        "significant_01": true,
        "significant_001": true,
        "stars": "",
        "q_value": 0.002253,
        "significant_fdr_05": false
      },
      {
        "feature": "is_extended_snapshot",
        "rho": 0.0317,
        "abs_rho": 0.0317,
        "p_value": 0.001516,
        "n": 10000,
        "significant_05": true,
        "significant_01": true,
        "significant_001": false,
        "stars": "",
        "q_value": 0.004169,
        "significant_fdr_05": false
      },
      {
        "feature": "bd_level_1x",
        "rho": -0.0286,
        "abs_rho": 0.0286,
        "p_value": 0.0043,
        "n": 10000,
        "significant_05": true,
        "significant_01": true,
        "significant_001": false,
        "stars": "",
        "q_value": 0.009284,
        "significant_fdr_05": false
      },
      {
        "feature": "bd_level_2x",
        "rho": -0.0286,
        "abs_rho": 0.0286,
        "p_value": 0.004209,
        "n": 10000,
        "significant_05": true,
        "significant_01": true,
        "significant_001": false,
        "stars": "",
        "q_value": 0.009284,
        "significant_fdr_05": false
      },
      {
        "feature": "bd_level_3x",
        "rho": -0.0286,
        "abs_rho": 0.0286,
        "p_value": 0.004184,
        "n": 10000,
        "significant_05": true,
        "significant_01": true,
        "significant_001": false,
        "stars": "",
        "q_value": 0.009284,
        "significant_fdr_05": false
      },
      {
        "feature": "bo_level_1x",
        "rho": -0.0283,
        "abs_rho": 0.0283,
        "p_value": 0.004614,
        "n": 10000,
        "significant_05": true,
        "significant_01": true,
        "significant_001": false,
        "stars": "",
        "q_value": 0.009284,
        "significant_fdr_05": false
      },
      {
        "feature": "bo_level_2x",
        "rho": -0.0282,
        "abs_rho": 0.0282,
        "p_value": 0.004848,
        "n": 10000,
        "significant_05": true,
        "significant_01": true,
        "significant_001": false,
        "stars": "",
        "q_value": 0.009284,
        "significant_fdr_05": false
      },
      {
        "feature": "bo_level_3x",
        "rho": -0.028,
        "abs_rho": 0.028,
        "p_value": 0.005064,
        "n": 10000,
        "significant_05": true,
        "significant_01": true,
        "significant_001": false,
        "stars": "",
        "q_value": 0.009284,
        "significant_fdr_05": false
      },
      {
        "feature": "geom_width",
        "rho": 0.0259,
        "abs_rho": 0.0259,
        "p_value": 0.02101,
        "n": 7954,
        "significant_05": true,
        "significant_01": false,
        "significant_001": false,
        "stars": "",
        "q_value": 0.034667,
        "significant_fdr_05": false
      },
      {
        "feature": "rsi_div_rsi_divergence",
        "rho": -0.0215,
        "abs_rho": 0.0215,
        "p_value": 0.625648,
        "n": 518,
        "significant_05": false,
        "significant_01": false,
        "significant_001": false,
        "stars": "",
        "q_value": 0.645199,
        "significant_fdr_05": false
      },
      {
        "feature": "geom_hs_symmetry_score",
        "rho": -0.0186,
        "abs_rho": 0.0186,
        "p_value": 0.413259,
        "n": 1933,
        "significant_05": false,
        "significant_01": false,
        "significant_001": false,
        "stars": "",
        "q_value": 0.439921,
        "significant_fdr_05": false
      },
      {
        "feature": "extension_progress",
        "rho": -0.0173,
        "abs_rho": 0.0173,
        "p_value": 0.082962,
        "n": 10000,
        "significant_05": false,
        "significant_01": false,
        "significant_001": false,
        "stars": "",
        "q_value": 0.119826,
        "significant_fdr_05": false
      },
      {
        "feature": "momentum_score",
        "rho": -0.0173,
        "abs_rho": 0.0173,
        "p_value": 0.083515,
        "n": 10000,
        "significant_05": false,
        "significant_01": false,
        "significant_001": false,
        "stars": "",
        "q_value": 0.119826,
        "significant_fdr_05": false
      },
      {
        "feature": "volume_score",
        "rho": 0.013,
        "abs_rho": 0.013,
        "p_value": 0.195057,
        "n": 10000,
        "significant_05": false,
        "significant_01": false,
        "significant_001": false,
        "stars": "",
        "q_value": 0.247572,
        "significant_fdr_05": false
      },
      {
        "feature": "geom_overlap_ratio",
        "rho": -0.0119,
        "abs_rho": 0.0119,
        "p_value": 0.35828,
        "n": 5986,
        "significant_05": false,
        "significant_01": false,
        "significant_001": false,
        "stars": "",
        "q_value": 0.407698,
        "significant_fdr_05": false
      },
      {
        "feature": "geom_confidence",
        "rho": -0.0104,
        "abs_rho": 0.0104,
        "p_value": 0.311341,
        "n": 9482,
        "significant_05": false,
        "significant_01": false,
        "significant_001": false,
        "stars": "",
        "q_value": 0.380528,
        "significant_fdr_05": false
      },
      {
        "feature": "confidence",
        "rho": -0.0096,
        "abs_rho": 0.0096,
        "p_value": 0.335908,
        "n": 10000,
        "significant_05": false,
        "significant_01": false,
        "significant_001": false,
        "stars": "",
        "q_value": 0.395892,
        "significant_fdr_05": false
      },
      {
        "feature": "extension_candle_offset",
        "rho": -0.004,
        "abs_rho": 0.004,
        "p_value": 0.69201,
        "n": 10000,
        "significant_05": false,
        "significant_01": false,
        "significant_001": false,
        "stars": "",
        "q_value": 0.69201,
        "significant_fdr_05": false
      }
    ],
    "breakdown_success": [
      {
        "feature": "current_scale_number",
        "rho": -0.6101,
        "abs_rho": 0.6101,
        "p_value": 0.0,
        "n": 10000,
        "significant_05": true,
        "significant_01": true,
        "significant_001": true,
        "stars": "***",
        "q_value": 0.0,
        "significant_fdr_05": true
      },
      {
        "feature": "target_max_up_20c",
        "rho": -0.4688,
        "abs_rho": 0.4688,
        "p_value": 0.0,
        "n": 10000,
        "significant_05": true,
        "significant_01": true,
        "significant_001": true,
        "stars": "***",
        "q_value": 0.0,
        "significant_fdr_05": true
      },
      {
        "feature": "geom_support_slope",
        "rho": 0.4641,
        "abs_rho": 0.4641,
        "p_value": 0.0,
        "n": 9279,
        "significant_05": true,
        "significant_01": true,
        "significant_001": true,
        "stars": "***",
        "q_value": 0.0,
        "significant_fdr_05": true
      },
      {
        "feature": "target_max_down_20c",
        "rho": -0.4434,
        "abs_rho": 0.4434,
        "p_value": 0.0,
        "n": 10000,
        "significant_05": true,
        "significant_01": true,
        "significant_001": true,
        "stars": "***",
        "q_value": 0.0,
        "significant_fdr_05": true
      },
      {
        "feature": "geom_resistance_slope",
        "rho": 0.4356,
        "abs_rho": 0.4356,
        "p_value": 0.0,
        "n": 9279,
        "significant_05": true,
        "significant_01": true,
        "significant_001": true,
        "stars": "***",
        "q_value": 0.0,
        "significant_fdr_05": true
      },
      {
        "feature": "target_ret_20c",
        "rho": -0.3626,
        "abs_rho": 0.3626,
        "p_value": 0.0,
        "n": 10000,
        "significant_05": true,
        "significant_01": true,
        "significant_001": true,
        "stars": "***",
        "q_value": 0.0,
        "significant_fdr_05": true
      },
      {
        "feature": "rsi_14",
        "rho": -0.3184,
        "abs_rho": 0.3184,
        "p_value": 0.0,
        "n": 10000,
        "significant_05": true,
        "significant_01": true,
        "significant_001": true,
        "stars": "***",
        "q_value": 0.0,
        "significant_fdr_05": true
      },
      {
        "feature": "btc_dist14_mean",
        "rho": 0.2181,
        "abs_rho": 0.2181,
        "p_value": 0.0,
        "n": 10000,
        "significant_05": true,
        "significant_01": true,
        "significant_001": true,
        "stars": "***",
        "q_value": 0.0,
        "significant_fdr_05": true
      },
      {
        "feature": "rsi_div_rsi_delta",
        "rho": -0.1216,
        "abs_rho": 0.1216,
        "p_value": 0.005605,
        "n": 518,
        "significant_05": true,
        "significant_01": true,
        "significant_001": false,
        "stars": "**",
        "q_value": 0.009248,
        "significant_fdr_05": true
      },
      {
        "feature": "extension_candle_offset",
        "rho": -0.1054,
        "abs_rho": 0.1054,
        "p_value": 0.0,
        "n": 10000,
        "significant_05": true,
        "significant_01": true,
        "significant_001": true,
        "stars": "***",
        "q_value": 0.0,
        "significant_fdr_05": true
      },
      {
        "feature": "geom_breakout_potential",
        "rho": 0.0999,
        "abs_rho": 0.0999,
        "p_value": 0.0,
        "n": 9482,
        "significant_05": true,
        "significant_01": true,
        "significant_001": true,
        "stars": "***",
        "q_value": 0.0,
        "significant_fdr_05": true
      },
      {
        "feature": "geom_width",
        "rho": -0.0925,
        "abs_rho": 0.0925,
        "p_value": 0.0,
        "n": 7954,
        "significant_05": true,
        "significant_01": true,
        "significant_001": true,
        "stars": "***",
        "q_value": 0.0,
        "significant_fdr_05": true
      },
      {
        "feature": "extension_progress",
        "rho": -0.0918,
        "abs_rho": 0.0918,
        "p_value": 0.0,
        "n": 10000,
        "significant_05": true,
        "significant_01": true,
        "significant_001": true,
        "stars": "***",
        "q_value": 0.0,
        "significant_fdr_05": true
      },
      {
        "feature": "is_extended_snapshot",
        "rho": -0.0885,
        "abs_rho": 0.0885,
        "p_value": 0.0,
        "n": 10000,
        "significant_05": true,
        "significant_01": true,
        "significant_001": true,
        "stars": "***",
        "q_value": 0.0,
        "significant_fdr_05": true
      },
      {
        "feature": "geom_height",
        "rho": -0.0884,
        "abs_rho": 0.0884,
        "p_value": 0.0,
        "n": 9292,
        "significant_05": true,
        "significant_01": true,
        "significant_001": true,
        "stars": "***",
        "q_value": 0.0,
        "significant_fdr_05": true
      },
      {
        "feature": "rsi_div_price_divergence",
        "rho": -0.0639,
        "abs_rho": 0.0639,
        "p_value": 0.146519,
        "n": 518,
        "significant_05": false,
        "significant_01": false,
        "significant_001": false,
        "stars": "",
        "q_value": 0.185966,
        "significant_fdr_05": false
      },
      {
        "feature": "rsi_div_price_delta_pct",
        "rho": 0.0613,
        "abs_rho": 0.0613,
        "p_value": 0.163419,
        "n": 518,
        "significant_05": false,
        "significant_01": false,
        "significant_001": false,
        "stars": "",
        "q_value": 0.192601,
        "significant_fdr_05": false
      },
      {
        "feature": "natr_pattern_avg",
        "rho": -0.0558,
        "abs_rho": 0.0558,
        "p_value": 0.0,
        "n": 10000,
        "significant_05": true,
        "significant_01": true,
        "significant_001": true,
        "stars": "***",
        "q_value": 0.0,
        "significant_fdr_05": true
      },
      {
        "feature": "geom_hs_completion_score",
        "rho": -0.0491,
        "abs_rho": 0.0491,
        "p_value": 0.031,
        "n": 1933,
        "significant_05": true,
        "significant_01": false,
        "significant_001": false,
        "stars": "",
        "q_value": 0.042625,
        "significant_fdr_05": false
      },
      {
        "feature": "momentum_score",
        "rho": 0.0333,
        "abs_rho": 0.0333,
        "p_value": 0.000859,
        "n": 10000,
        "significant_05": true,
        "significant_01": true,
        "significant_001": true,
        "stars": "",
        "q_value": 0.001772,
        "significant_fdr_05": false
      },
      {
        "feature": "bd_level_3x",
        "rho": 0.0324,
        "abs_rho": 0.0324,
        "p_value": 0.00118,
        "n": 10000,
        "significant_05": true,
        "significant_01": true,
        "significant_001": false,
        "stars": "",
        "q_value": 0.002288,
        "significant_fdr_05": false
      },
      {
        "feature": "bd_level_2x",
        "rho": 0.0323,
        "abs_rho": 0.0323,
        "p_value": 0.001248,
        "n": 10000,
        "significant_05": true,
        "significant_01": true,
        "significant_001": false,
        "stars": "",
        "q_value": 0.002288,
        "significant_fdr_05": false
      },
      {
        "feature": "bd_level_1x",
        "rho": 0.0321,
        "abs_rho": 0.0321,
        "p_value": 0.001319,
        "n": 10000,
        "significant_05": true,
        "significant_01": true,
        "significant_001": false,
        "stars": "",
        "q_value": 0.002291,
        "significant_fdr_05": false
      },
      {
        "feature": "rsi_div_span",
        "rho": 0.0321,
        "abs_rho": 0.0321,
        "p_value": 0.46565,
        "n": 518,
        "significant_05": false,
        "significant_01": false,
        "significant_001": false,
        "stars": "",
        "q_value": 0.480202,
        "significant_fdr_05": false
      },
      {
        "feature": "geom_overlap_ratio",
        "rho": 0.0262,
        "abs_rho": 0.0262,
        "p_value": 0.042305,
        "n": 5986,
        "significant_05": true,
        "significant_01": false,
        "significant_001": false,
        "stars": "",
        "q_value": 0.055843,
        "significant_fdr_05": false
      },
      {
        "feature": "bo_level_1x",
        "rho": 0.025,
        "abs_rho": 0.025,
        "p_value": 0.012283,
        "n": 10000,
        "significant_05": true,
        "significant_01": false,
        "significant_001": false,
        "stars": "",
        "q_value": 0.019302,
        "significant_fdr_05": false
      },
      {
        "feature": "bo_level_2x",
        "rho": 0.0248,
        "abs_rho": 0.0248,
        "p_value": 0.013192,
        "n": 10000,
        "significant_05": true,
        "significant_01": false,
        "significant_001": false,
        "stars": "",
        "q_value": 0.019788,
        "significant_fdr_05": false
      },
      {
        "feature": "bo_level_3x",
        "rho": 0.0246,
        "abs_rho": 0.0246,
        "p_value": 0.014074,
        "n": 10000,
        "significant_05": true,
        "significant_01": false,
        "significant_001": false,
        "stars": "",
        "q_value": 0.020193,
        "significant_fdr_05": false
      },
      {
        "feature": "geom_hs_symmetry_score",
        "rho": 0.0202,
        "abs_rho": 0.0202,
        "p_value": 0.375014,
        "n": 1933,
        "significant_05": false,
        "significant_01": false,
        "significant_001": false,
        "stars": "",
        "q_value": 0.412515,
        "significant_fdr_05": false
      },
      {
        "feature": "rsi_div_rsi_divergence",
        "rho": 0.0153,
        "abs_rho": 0.0153,
        "p_value": 0.728475,
        "n": 518,
        "significant_05": false,
        "significant_01": false,
        "significant_001": false,
        "stars": "",
        "q_value": 0.728475,
        "significant_fdr_05": false
      },
      {
        "feature": "volume_score",
        "rho": 0.0141,
        "abs_rho": 0.0141,
        "p_value": 0.157594,
        "n": 10000,
        "significant_05": false,
        "significant_01": false,
        "significant_001": false,
        "stars": "",
        "q_value": 0.192601,
        "significant_fdr_05": false
      },
      {
        "feature": "confidence",
        "rho": -0.0092,
        "abs_rho": 0.0092,
        "p_value": 0.355437,
        "n": 10000,
        "significant_05": false,
        "significant_01": false,
        "significant_001": false,
        "stars": "",
        "q_value": 0.404463,
        "significant_fdr_05": false
      },
      {
        "feature": "geom_confidence",
        "rho": -0.0083,
        "abs_rho": 0.0083,
        "p_value": 0.420644,
        "n": 9482,
        "significant_05": false,
        "significant_01": false,
        "significant_001": false,
        "stars": "",
        "q_value": 0.447782,
        "significant_fdr_05": false
      }
    ],
    "target_ret_10c": [
      {
        "feature": "target_ret_20c",
        "rho": 1.0,
        "abs_rho": 1.0,
        "p_value": 0.0,
        "n": 10000,
        "significant_05": true,
        "significant_01": true,
        "significant_001": true,
        "stars": "***",
        "q_value": 0.0,
        "significant_fdr_05": true
      },
      {
        "feature": "target_max_down_20c",
        "rho": 0.6676,
        "abs_rho": 0.6676,
        "p_value": 0.0,
        "n": 10000,
        "significant_05": true,
        "significant_01": true,
        "significant_001": true,
        "stars": "***",
        "q_value": 0.0,
        "significant_fdr_05": true
      },
      {
        "feature": "target_max_up_20c",
        "rho": 0.6405,
        "abs_rho": 0.6405,
        "p_value": 0.0,
        "n": 10000,
        "significant_05": true,
        "significant_01": true,
        "significant_001": true,
        "stars": "***",
        "q_value": 0.0,
        "significant_fdr_05": true
      },
      {
        "feature": "rsi_div_price_delta_pct",
        "rho": -0.1474,
        "abs_rho": 0.1474,
        "p_value": 0.000768,
        "n": 518,
        "significant_05": true,
        "significant_01": true,
        "significant_001": true,
        "stars": "**",
        "q_value": 0.002611,
        "significant_fdr_05": true
      },
      {
        "feature": "geom_resistance_slope",
        "rho": -0.1416,
        "abs_rho": 0.1416,
        "p_value": 0.0,
        "n": 9279,
        "significant_05": true,
        "significant_01": true,
        "significant_001": true,
        "stars": "***",
        "q_value": 0.0,
        "significant_fdr_05": true
      },
      {
        "feature": "geom_support_slope",
        "rho": -0.141,
        "abs_rho": 0.141,
        "p_value": 0.0,
        "n": 9279,
        "significant_05": true,
        "significant_01": true,
        "significant_001": true,
        "stars": "***",
        "q_value": 0.0,
        "significant_fdr_05": true
      },
      {
        "feature": "current_scale_number",
        "rho": 0.1255,
        "abs_rho": 0.1255,
        "p_value": 0.0,
        "n": 10000,
        "significant_05": true,
        "significant_01": true,
        "significant_001": true,
        "stars": "***",
        "q_value": 0.0,
        "significant_fdr_05": true
      },
      {
        "feature": "rsi_div_rsi_delta",
        "rho": 0.0836,
        "abs_rho": 0.0836,
        "p_value": 0.057252,
        "n": 518,
        "significant_05": false,
        "significant_01": false,
        "significant_001": false,
        "stars": "",
        "q_value": 0.127859,
        "significant_fdr_05": false
      },
      {
        "feature": "rsi_14",
        "rho": 0.0501,
        "abs_rho": 0.0501,
        "p_value": 1e-06,
        "n": 10000,
        "significant_05": true,
        "significant_01": true,
        "significant_001": true,
        "stars": "***",
        "q_value": 5e-06,
        "significant_fdr_05": true
      },
      {
        "feature": "rsi_div_price_divergence",
        "rho": 0.0468,
        "abs_rho": 0.0468,
        "p_value": 0.287609,
        "n": 518,
        "significant_05": false,
        "significant_01": false,
        "significant_001": false,
        "stars": "",
        "q_value": 0.397234,
        "significant_fdr_05": false
      },
      {
        "feature": "rsi_div_rsi_divergence",
        "rho": -0.0414,
        "abs_rho": 0.0414,
        "p_value": 0.34723,
        "n": 518,
        "significant_05": false,
        "significant_01": false,
        "significant_001": false,
        "stars": "",
        "q_value": 0.437253,
        "significant_fdr_05": false
      },
      {
        "feature": "btc_dist14_mean",
        "rho": -0.0374,
        "abs_rho": 0.0374,
        "p_value": 0.000186,
        "n": 10000,
        "significant_05": true,
        "significant_01": true,
        "significant_001": true,
        "stars": "",
        "q_value": 0.00079,
        "significant_fdr_05": false
      },
      {
        "feature": "geom_breakout_potential",
        "rho": -0.0365,
        "abs_rho": 0.0365,
        "p_value": 0.000382,
        "n": 9482,
        "significant_05": true,
        "significant_01": true,
        "significant_001": true,
        "stars": "",
        "q_value": 0.001443,
        "significant_fdr_05": false
      },
      {
        "feature": "geom_width",
        "rho": 0.0261,
        "abs_rho": 0.0261,
        "p_value": 0.020016,
        "n": 7954,
        "significant_05": true,
        "significant_01": false,
        "significant_001": false,
        "stars": "",
        "q_value": 0.05235,
        "significant_fdr_05": false
      },
      {
        "feature": "geom_height",
        "rho": 0.0243,
        "abs_rho": 0.0243,
        "p_value": 0.019378,
        "n": 9292,
        "significant_05": true,
        "significant_01": false,
        "significant_001": false,
        "stars": "",
        "q_value": 0.05235,
        "significant_fdr_05": false
      },
      {
        "feature": "rsi_div_span",
        "rho": 0.0237,
        "abs_rho": 0.0237,
        "p_value": 0.589869,
        "n": 518,
        "significant_05": false,
        "significant_01": false,
        "significant_001": false,
        "stars": "",
        "q_value": 0.685709,
        "significant_fdr_05": false
      },
      {
        "feature": "is_extended_snapshot",
        "rho": 0.0234,
        "abs_rho": 0.0234,
        "p_value": 0.019413,
        "n": 10000,
        "significant_05": true,
        "significant_01": false,
        "significant_001": false,
        "stars": "",
        "q_value": 0.05235,
        "significant_fdr_05": false
      },
      {
        "feature": "natr_14",
        "rho": -0.0212,
        "abs_rho": 0.0212,
        "p_value": 0.033888,
        "n": 10000,
        "significant_05": true,
        "significant_01": false,
        "significant_001": false,
        "stars": "",
        "q_value": 0.082299,
        "significant_fdr_05": false
      },
      {
        "feature": "bo_level_3x",
        "rho": -0.0185,
        "abs_rho": 0.0185,
        "p_value": 0.063842,
        "n": 10000,
        "significant_05": false,
        "significant_01": false,
        "significant_001": false,
        "stars": "",
        "q_value": 0.127859,
        "significant_fdr_05": false
      },
      {
        "feature": "bo_level_2x",
        "rho": -0.0184,
        "abs_rho": 0.0184,
        "p_value": 0.065655,
        "n": 10000,
        "significant_05": false,
        "significant_01": false,
        "significant_001": false,
        "stars": "",
        "q_value": 0.127859,
        "significant_fdr_05": false
      },
      {
        "feature": "bo_level_1x",
        "rho": -0.0183,
        "abs_rho": 0.0183,
        "p_value": 0.06769,
        "n": 10000,
        "significant_05": false,
        "significant_01": false,
        "significant_001": false,
        "stars": "",
        "q_value": 0.127859,
        "significant_fdr_05": false
      },
      {
        "feature": "bd_level_1x",
        "rho": -0.0177,
        "abs_rho": 0.0177,
        "p_value": 0.076494,
        "n": 10000,
        "significant_05": false,
        "significant_01": false,
        "significant_001": false,
        "stars": "",
        "q_value": 0.136884,
        "significant_fdr_05": false
      },
      {
        "feature": "bd_level_2x",
        "rho": -0.0174,
        "abs_rho": 0.0174,
        "p_value": 0.081665,
        "n": 10000,
        "significant_05": false,
        "significant_01": false,
        "significant_001": false,
        "stars": "",
        "q_value": 0.138831,
        "significant_fdr_05": false
      },
      {
        "feature": "bd_level_3x",
        "rho": -0.017,
        "abs_rho": 0.017,
        "p_value": 0.089328,
        "n": 10000,
        "significant_05": false,
        "significant_01": false,
        "significant_001": false,
        "stars": "",
        "q_value": 0.141956,
        "significant_fdr_05": false
      },
      {
        "feature": "natr_pattern_avg",
        "rho": -0.0169,
        "abs_rho": 0.0169,
        "p_value": 0.091854,
        "n": 10000,
        "significant_05": false,
        "significant_01": false,
        "significant_001": false,
        "stars": "",
        "q_value": 0.141956,
        "significant_fdr_05": false
      },
      {
        "feature": "extension_candle_offset",
        "rho": 0.0144,
        "abs_rho": 0.0144,
        "p_value": 0.150705,
        "n": 10000,
        "significant_05": false,
        "significant_01": false,
        "significant_001": false,
        "stars": "",
        "q_value": 0.222781,
        "significant_fdr_05": false
      },
      {
        "feature": "volume_score",
        "rho": 0.0105,
        "abs_rho": 0.0105,
        "p_value": 0.292084,
        "n": 10000,
        "significant_05": false,
        "significant_01": false,
        "significant_001": false,
        "stars": "",
        "q_value": 0.397234,
        "significant_fdr_05": false
      },
      {
        "feature": "extension_progress",
        "rho": 0.0098,
        "abs_rho": 0.0098,
        "p_value": 0.329437,
        "n": 10000,
        "significant_05": false,
        "significant_01": false,
        "significant_001": false,
        "stars": "",
        "q_value": 0.430802,
        "significant_fdr_05": false
      },
      {
        "feature": "geom_hs_completion_score",
        "rho": -0.0087,
        "abs_rho": 0.0087,
        "p_value": 0.703837,
        "n": 1933,
        "significant_05": false,
        "significant_01": false,
        "significant_001": false,
        "stars": "",
        "q_value": 0.77195,
        "significant_fdr_05": false
      },
      {
        "feature": "geom_hs_symmetry_score",
        "rho": -0.0073,
        "abs_rho": 0.0073,
        "p_value": 0.747278,
        "n": 1933,
        "significant_05": false,
        "significant_01": false,
        "significant_001": false,
        "stars": "",
        "q_value": 0.793983,
        "significant_fdr_05": false
      },
      {
        "feature": "geom_overlap_ratio",
        "rho": 0.0067,
        "abs_rho": 0.0067,
        "p_value": 0.605037,
        "n": 5986,
        "significant_05": false,
        "significant_01": false,
        "significant_001": false,
        "stars": "",
        "q_value": 0.685709,
        "significant_fdr_05": false
      },
      {
        "feature": "momentum_score",
        "rho": -0.0063,
        "abs_rho": 0.0063,
        "p_value": 0.530017,
        "n": 10000,
        "significant_05": false,
        "significant_01": false,
        "significant_001": false,
        "stars": "",
        "q_value": 0.643592,
        "significant_fdr_05": false
      },
      {
        "feature": "geom_confidence",
        "rho": -0.0013,
        "abs_rho": 0.0013,
        "p_value": 0.896877,
        "n": 9482,
        "significant_05": false,
        "significant_01": false,
        "significant_001": false,
        "stars": "",
        "q_value": 0.910902,
        "significant_fdr_05": false
      },
      {
        "feature": "confidence",
        "rho": -0.0011,
        "abs_rho": 0.0011,
        "p_value": 0.910902,
        "n": 10000,
        "significant_05": false,
        "significant_01": false,
        "significant_001": false,
        "stars": "",
        "q_value": 0.910902,
        "significant_fdr_05": false
      }
    ]
  },
  "correlations_multi_tf": {
    "breakout_success": [
      {
        "feature": "current_scale_number",
        "rho": 0.6026,
        "abs_rho": 0.6026,
        "p_value": 0.0,
        "n": 10000,
        "significant_05": true,
        "significant_01": true,
        "significant_001": true,
        "stars": "***",
        "q_value": 0.0,
        "significant_fdr_05": true
      },
      {
        "feature": "target_max_up_20c",
        "rho": 0.493,
        "abs_rho": 0.493,
        "p_value": 0.0,
        "n": 10000,
        "significant_05": true,
        "significant_01": true,
        "significant_001": true,
        "stars": "***",
        "q_value": 0.0,
        "significant_fdr_05": true
      },
      {
        "feature": "geom_resistance_slope",
        "rho": -0.4449,
        "abs_rho": 0.4449,
        "p_value": 0.0,
        "n": 9279,
        "significant_05": true,
        "significant_01": true,
        "significant_001": true,
        "stars": "***",
        "q_value": 0.0,
        "significant_fdr_05": true
      },
      {
        "feature": "target_max_down_20c",
        "rho": 0.4396,
        "abs_rho": 0.4396,
        "p_value": 0.0,
        "n": 10000,
        "significant_05": true,
        "significant_01": true,
        "significant_001": true,
        "stars": "***",
        "q_value": 0.0,
        "significant_fdr_05": true
      },
      {
        "feature": "geom_support_slope",
        "rho": -0.4131,
        "abs_rho": 0.4131,
        "p_value": 0.0,
        "n": 9279,
        "significant_05": true,
        "significant_01": true,
        "significant_001": true,
        "stars": "***",
        "q_value": 0.0,
        "significant_fdr_05": true
      },
      {
        "feature": "target_ret_20c",
        "rho": 0.3749,
        "abs_rho": 0.3749,
        "p_value": 0.0,
        "n": 10000,
        "significant_05": true,
        "significant_01": true,
        "significant_001": true,
        "stars": "***",
        "q_value": 0.0,
        "significant_fdr_05": true
      },
      {
        "feature": "rsi_14",
        "rho": 0.3223,
        "abs_rho": 0.3223,
        "p_value": 0.0,
        "n": 10000,
        "significant_05": true,
        "significant_01": true,
        "significant_001": true,
        "stars": "***",
        "q_value": 0.0,
        "significant_fdr_05": true
      },
      {
        "feature": "btc_dist14_mean",
        "rho": -0.2081,
        "abs_rho": 0.2081,
        "p_value": 0.0,
        "n": 10000,
        "significant_05": true,
        "significant_01": true,
        "significant_001": true,
        "stars": "***",
        "q_value": 0.0,
        "significant_fdr_05": true
      },
      {
        "feature": "rsi_div_rsi_delta",
        "rho": 0.1217,
        "abs_rho": 0.1217,
        "p_value": 0.005555,
        "n": 518,
        "significant_05": true,
        "significant_01": true,
        "significant_001": false,
        "stars": "**",
        "q_value": 0.009648,
        "significant_fdr_05": true
      },
      {
        "feature": "geom_height",
        "rho": 0.0732,
        "abs_rho": 0.0732,
        "p_value": 0.0,
        "n": 9292,
        "significant_05": true,
        "significant_01": true,
        "significant_001": true,
        "stars": "***",
        "q_value": 0.0,
        "significant_fdr_05": true
      },
      {
        "feature": "rsi_div_price_delta_pct",
        "rho": -0.0703,
        "abs_rho": 0.0703,
        "p_value": 0.110013,
        "n": 518,
        "significant_05": false,
        "significant_01": false,
        "significant_001": false,
        "stars": "",
        "q_value": 0.151268,
        "significant_fdr_05": false
      },
      {
        "feature": "rsi_div_price_divergence",
        "rho": 0.0652,
        "abs_rho": 0.0652,
        "p_value": 0.138333,
        "n": 518,
        "significant_05": false,
        "significant_01": false,
        "significant_001": false,
        "stars": "",
        "q_value": 0.1826,
        "significant_fdr_05": false
      },
      {
        "feature": "geom_breakout_potential",
        "rho": -0.0463,
        "abs_rho": 0.0463,
        "p_value": 6e-06,
        "n": 9482,
        "significant_05": true,
        "significant_01": true,
        "significant_001": true,
        "stars": "",
        "q_value": 2e-05,
        "significant_fdr_05": false
      },
      {
        "feature": "geom_hs_completion_score",
        "rho": 0.0455,
        "abs_rho": 0.0455,
        "p_value": 0.045711,
        "n": 1933,
        "significant_05": true,
        "significant_01": false,
        "significant_001": false,
        "stars": "",
        "q_value": 0.071832,
        "significant_fdr_05": false
      },
      {
        "feature": "rsi_div_span",
        "rho": -0.0374,
        "abs_rho": 0.0374,
        "p_value": 0.396254,
        "n": 518,
        "significant_05": false,
        "significant_01": false,
        "significant_001": false,
        "stars": "",
        "q_value": 0.435879,
        "significant_fdr_05": false
      },
      {
        "feature": "natr_pattern_avg",
        "rho": 0.0337,
        "abs_rho": 0.0337,
        "p_value": 0.000751,
        "n": 10000,
        "significant_05": true,
        "significant_01": true,
        "significant_001": true,
        "stars": "",
        "q_value": 0.002253,
        "significant_fdr_05": false
      },
      {
        "feature": "is_extended_snapshot",
        "rho": 0.0317,
        "abs_rho": 0.0317,
        "p_value": 0.001516,
        "n": 10000,
        "significant_05": true,
        "significant_01": true,
        "significant_001": false,
        "stars": "",
        "q_value": 0.004169,
        "significant_fdr_05": false
      },
      {
        "feature": "bd_level_1x",
        "rho": -0.0286,
        "abs_rho": 0.0286,
        "p_value": 0.0043,
        "n": 10000,
        "significant_05": true,
        "significant_01": true,
        "significant_001": false,
        "stars": "",
        "q_value": 0.009284,
        "significant_fdr_05": false
      },
      {
        "feature": "bd_level_2x",
        "rho": -0.0286,
        "abs_rho": 0.0286,
        "p_value": 0.004209,
        "n": 10000,
        "significant_05": true,
        "significant_01": true,
        "significant_001": false,
        "stars": "",
        "q_value": 0.009284,
        "significant_fdr_05": false
      },
      {
        "feature": "bd_level_3x",
        "rho": -0.0286,
        "abs_rho": 0.0286,
        "p_value": 0.004184,
        "n": 10000,
        "significant_05": true,
        "significant_01": true,
        "significant_001": false,
        "stars": "",
        "q_value": 0.009284,
        "significant_fdr_05": false
      },
      {
        "feature": "bo_level_1x",
        "rho": -0.0283,
        "abs_rho": 0.0283,
        "p_value": 0.004614,
        "n": 10000,
        "significant_05": true,
        "significant_01": true,
        "significant_001": false,
        "stars": "",
        "q_value": 0.009284,
        "significant_fdr_05": false
      },
      {
        "feature": "bo_level_2x",
        "rho": -0.0282,
        "abs_rho": 0.0282,
        "p_value": 0.004848,
        "n": 10000,
        "significant_05": true,
        "significant_01": true,
        "significant_001": false,
        "stars": "",
        "q_value": 0.009284,
        "significant_fdr_05": false
      },
      {
        "feature": "bo_level_3x",
        "rho": -0.028,
        "abs_rho": 0.028,
        "p_value": 0.005064,
        "n": 10000,
        "significant_05": true,
        "significant_01": true,
        "significant_001": false,
        "stars": "",
        "q_value": 0.009284,
        "significant_fdr_05": false
      },
      {
        "feature": "geom_width",
        "rho": 0.0259,
        "abs_rho": 0.0259,
        "p_value": 0.02101,
        "n": 7954,
        "significant_05": true,
        "significant_01": false,
        "significant_001": false,
        "stars": "",
        "q_value": 0.034667,
        "significant_fdr_05": false
      },
      {
        "feature": "rsi_div_rsi_divergence",
        "rho": -0.0215,
        "abs_rho": 0.0215,
        "p_value": 0.625648,
        "n": 518,
        "significant_05": false,
        "significant_01": false,
        "significant_001": false,
        "stars": "",
        "q_value": 0.645199,
        "significant_fdr_05": false
      },
      {
        "feature": "geom_hs_symmetry_score",
        "rho": -0.0186,
        "abs_rho": 0.0186,
        "p_value": 0.413259,
        "n": 1933,
        "significant_05": false,
        "significant_01": false,
        "significant_001": false,
        "stars": "",
        "q_value": 0.439921,
        "significant_fdr_05": false
      },
      {
        "feature": "extension_progress",
        "rho": -0.0173,
        "abs_rho": 0.0173,
        "p_value": 0.082962,
        "n": 10000,
        "significant_05": false,
        "significant_01": false,
        "significant_001": false,
        "stars": "",
        "q_value": 0.119826,
        "significant_fdr_05": false
      },
      {
        "feature": "momentum_score",
        "rho": -0.0173,
        "abs_rho": 0.0173,
        "p_value": 0.083515,
        "n": 10000,
        "significant_05": false,
        "significant_01": false,
        "significant_001": false,
        "stars": "",
        "q_value": 0.119826,
        "significant_fdr_05": false
      },
      {
        "feature": "volume_score",
        "rho": 0.013,
        "abs_rho": 0.013,
        "p_value": 0.195057,
        "n": 10000,
        "significant_05": false,
        "significant_01": false,
        "significant_001": false,
        "stars": "",
        "q_value": 0.247572,
        "significant_fdr_05": false
      },
      {
        "feature": "geom_overlap_ratio",
        "rho": -0.0119,
        "abs_rho": 0.0119,
        "p_value": 0.35828,
        "n": 5986,
        "significant_05": false,
        "significant_01": false,
        "significant_001": false,
        "stars": "",
        "q_value": 0.407698,
        "significant_fdr_05": false
      },
      {
        "feature": "geom_confidence",
        "rho": -0.0104,
        "abs_rho": 0.0104,
        "p_value": 0.311341,
        "n": 9482,
        "significant_05": false,
        "significant_01": false,
        "significant_001": false,
        "stars": "",
        "q_value": 0.380528,
        "significant_fdr_05": false
      },
      {
        "feature": "confidence",
        "rho": -0.0096,
        "abs_rho": 0.0096,
        "p_value": 0.335908,
        "n": 10000,
        "significant_05": false,
        "significant_01": false,
        "significant_001": false,
        "stars": "",
        "q_value": 0.395892,
        "significant_fdr_05": false
      },
      {
        "feature": "extension_candle_offset",
        "rho": -0.004,
        "abs_rho": 0.004,
        "p_value": 0.69201,
        "n": 10000,
        "significant_05": false,
        "significant_01": false,
        "significant_001": false,
        "stars": "",
        "q_value": 0.69201,
        "significant_fdr_05": false
      }
    ],
    "breakdown_success": [
      {
        "feature": "current_scale_number",
        "rho": -0.6101,
        "abs_rho": 0.6101,
        "p_value": 0.0,
        "n": 10000,
        "significant_05": true,
        "significant_01": true,
        "significant_001": true,
        "stars": "***",
        "q_value": 0.0,
        "significant_fdr_05": true
      },
      {
        "feature": "target_max_up_20c",
        "rho": -0.4688,
        "abs_rho": 0.4688,
        "p_value": 0.0,
        "n": 10000,
        "significant_05": true,
        "significant_01": true,
        "significant_001": true,
        "stars": "***",
        "q_value": 0.0,
        "significant_fdr_05": true
      },
      {
        "feature": "geom_support_slope",
        "rho": 0.4641,
        "abs_rho": 0.4641,
        "p_value": 0.0,
        "n": 9279,
        "significant_05": true,
        "significant_01": true,
        "significant_001": true,
        "stars": "***",
        "q_value": 0.0,
        "significant_fdr_05": true
      },
      {
        "feature": "target_max_down_20c",
        "rho": -0.4434,
        "abs_rho": 0.4434,
        "p_value": 0.0,
        "n": 10000,
        "significant_05": true,
        "significant_01": true,
        "significant_001": true,
        "stars": "***",
        "q_value": 0.0,
        "significant_fdr_05": true
      },
      {
        "feature": "geom_resistance_slope",
        "rho": 0.4356,
        "abs_rho": 0.4356,
        "p_value": 0.0,
        "n": 9279,
        "significant_05": true,
        "significant_01": true,
        "significant_001": true,
        "stars": "***",
        "q_value": 0.0,
        "significant_fdr_05": true
      },
      {
        "feature": "target_ret_20c",
        "rho": -0.3626,
        "abs_rho": 0.3626,
        "p_value": 0.0,
        "n": 10000,
        "significant_05": true,
        "significant_01": true,
        "significant_001": true,
        "stars": "***",
        "q_value": 0.0,
        "significant_fdr_05": true
      },
      {
        "feature": "rsi_14",
        "rho": -0.3184,
        "abs_rho": 0.3184,
        "p_value": 0.0,
        "n": 10000,
        "significant_05": true,
        "significant_01": true,
        "significant_001": true,
        "stars": "***",
        "q_value": 0.0,
        "significant_fdr_05": true
      },
      {
        "feature": "btc_dist14_mean",
        "rho": 0.2181,
        "abs_rho": 0.2181,
        "p_value": 0.0,
        "n": 10000,
        "significant_05": true,
        "significant_01": true,
        "significant_001": true,
        "stars": "***",
        "q_value": 0.0,
        "significant_fdr_05": true
      },
      {
        "feature": "rsi_div_rsi_delta",
        "rho": -0.1216,
        "abs_rho": 0.1216,
        "p_value": 0.005605,
        "n": 518,
        "significant_05": true,
        "significant_01": true,
        "significant_001": false,
        "stars": "**",
        "q_value": 0.009248,
        "significant_fdr_05": true
      },
      {
        "feature": "extension_candle_offset",
        "rho": -0.1054,
        "abs_rho": 0.1054,
        "p_value": 0.0,
        "n": 10000,
        "significant_05": true,
        "significant_01": true,
        "significant_001": true,
        "stars": "***",
        "q_value": 0.0,
        "significant_fdr_05": true
      },
      {
        "feature": "geom_breakout_potential",
        "rho": 0.0999,
        "abs_rho": 0.0999,
        "p_value": 0.0,
        "n": 9482,
        "significant_05": true,
        "significant_01": true,
        "significant_001": true,
        "stars": "***",
        "q_value": 0.0,
        "significant_fdr_05": true
      },
      {
        "feature": "geom_width",
        "rho": -0.0925,
        "abs_rho": 0.0925,
        "p_value": 0.0,
        "n": 7954,
        "significant_05": true,
        "significant_01": true,
        "significant_001": true,
        "stars": "***",
        "q_value": 0.0,
        "significant_fdr_05": true
      },
      {
        "feature": "extension_progress",
        "rho": -0.0918,
        "abs_rho": 0.0918,
        "p_value": 0.0,
        "n": 10000,
        "significant_05": true,
        "significant_01": true,
        "significant_001": true,
        "stars": "***",
        "q_value": 0.0,
        "significant_fdr_05": true
      },
      {
        "feature": "is_extended_snapshot",
        "rho": -0.0885,
        "abs_rho": 0.0885,
        "p_value": 0.0,
        "n": 10000,
        "significant_05": true,
        "significant_01": true,
        "significant_001": true,
        "stars": "***",
        "q_value": 0.0,
        "significant_fdr_05": true
      },
      {
        "feature": "geom_height",
        "rho": -0.0884,
        "abs_rho": 0.0884,
        "p_value": 0.0,
        "n": 9292,
        "significant_05": true,
        "significant_01": true,
        "significant_001": true,
        "stars": "***",
        "q_value": 0.0,
        "significant_fdr_05": true
      },
      {
        "feature": "rsi_div_price_divergence",
        "rho": -0.0639,
        "abs_rho": 0.0639,
        "p_value": 0.146519,
        "n": 518,
        "significant_05": false,
        "significant_01": false,
        "significant_001": false,
        "stars": "",
        "q_value": 0.185966,
        "significant_fdr_05": false
      },
      {
        "feature": "rsi_div_price_delta_pct",
        "rho": 0.0613,
        "abs_rho": 0.0613,
        "p_value": 0.163419,
        "n": 518,
        "significant_05": false,
        "significant_01": false,
        "significant_001": false,
        "stars": "",
        "q_value": 0.192601,
        "significant_fdr_05": false
      },
      {
        "feature": "natr_pattern_avg",
        "rho": -0.0558,
        "abs_rho": 0.0558,
        "p_value": 0.0,
        "n": 10000,
        "significant_05": true,
        "significant_01": true,
        "significant_001": true,
        "stars": "***",
        "q_value": 0.0,
        "significant_fdr_05": true
      },
      {
        "feature": "geom_hs_completion_score",
        "rho": -0.0491,
        "abs_rho": 0.0491,
        "p_value": 0.031,
        "n": 1933,
        "significant_05": true,
        "significant_01": false,
        "significant_001": false,
        "stars": "",
        "q_value": 0.042625,
        "significant_fdr_05": false
      },
      {
        "feature": "momentum_score",
        "rho": 0.0333,
        "abs_rho": 0.0333,
        "p_value": 0.000859,
        "n": 10000,
        "significant_05": true,
        "significant_01": true,
        "significant_001": true,
        "stars": "",
        "q_value": 0.001772,
        "significant_fdr_05": false
      },
      {
        "feature": "bd_level_3x",
        "rho": 0.0324,
        "abs_rho": 0.0324,
        "p_value": 0.00118,
        "n": 10000,
        "significant_05": true,
        "significant_01": true,
        "significant_001": false,
        "stars": "",
        "q_value": 0.002288,
        "significant_fdr_05": false
      },
      {
        "feature": "bd_level_2x",
        "rho": 0.0323,
        "abs_rho": 0.0323,
        "p_value": 0.001248,
        "n": 10000,
        "significant_05": true,
        "significant_01": true,
        "significant_001": false,
        "stars": "",
        "q_value": 0.002288,
        "significant_fdr_05": false
      },
      {
        "feature": "bd_level_1x",
        "rho": 0.0321,
        "abs_rho": 0.0321,
        "p_value": 0.001319,
        "n": 10000,
        "significant_05": true,
        "significant_01": true,
        "significant_001": false,
        "stars": "",
        "q_value": 0.002291,
        "significant_fdr_05": false
      },
      {
        "feature": "rsi_div_span",
        "rho": 0.0321,
        "abs_rho": 0.0321,
        "p_value": 0.46565,
        "n": 518,
        "significant_05": false,
        "significant_01": false,
        "significant_001": false,
        "stars": "",
        "q_value": 0.480202,
        "significant_fdr_05": false
      },
      {
        "feature": "geom_overlap_ratio",
        "rho": 0.0262,
        "abs_rho": 0.0262,
        "p_value": 0.042305,
        "n": 5986,
        "significant_05": true,
        "significant_01": false,
        "significant_001": false,
        "stars": "",
        "q_value": 0.055843,
        "significant_fdr_05": false
      },
      {
        "feature": "bo_level_1x",
        "rho": 0.025,
        "abs_rho": 0.025,
        "p_value": 0.012283,
        "n": 10000,
        "significant_05": true,
        "significant_01": false,
        "significant_001": false,
        "stars": "",
        "q_value": 0.019302,
        "significant_fdr_05": false
      },
      {
        "feature": "bo_level_2x",
        "rho": 0.0248,
        "abs_rho": 0.0248,
        "p_value": 0.013192,
        "n": 10000,
        "significant_05": true,
        "significant_01": false,
        "significant_001": false,
        "stars": "",
        "q_value": 0.019788,
        "significant_fdr_05": false
      },
      {
        "feature": "bo_level_3x",
        "rho": 0.0246,
        "abs_rho": 0.0246,
        "p_value": 0.014074,
        "n": 10000,
        "significant_05": true,
        "significant_01": false,
        "significant_001": false,
        "stars": "",
        "q_value": 0.020193,
        "significant_fdr_05": false
      },
      {
        "feature": "geom_hs_symmetry_score",
        "rho": 0.0202,
        "abs_rho": 0.0202,
        "p_value": 0.375014,
        "n": 1933,
        "significant_05": false,
        "significant_01": false,
        "significant_001": false,
        "stars": "",
        "q_value": 0.412515,
        "significant_fdr_05": false
      },
      {
        "feature": "rsi_div_rsi_divergence",
        "rho": 0.0153,
        "abs_rho": 0.0153,
        "p_value": 0.728475,
        "n": 518,
        "significant_05": false,
        "significant_01": false,
        "significant_001": false,
        "stars": "",
        "q_value": 0.728475,
        "significant_fdr_05": false
      },
      {
        "feature": "volume_score",
        "rho": 0.0141,
        "abs_rho": 0.0141,
        "p_value": 0.157594,
        "n": 10000,
        "significant_05": false,
        "significant_01": false,
        "significant_001": false,
        "stars": "",
        "q_value": 0.192601,
        "significant_fdr_05": false
      },
      {
        "feature": "confidence",
        "rho": -0.0092,
        "abs_rho": 0.0092,
        "p_value": 0.355437,
        "n": 10000,
        "significant_05": false,
        "significant_01": false,
        "significant_001": false,
        "stars": "",
        "q_value": 0.404463,
        "significant_fdr_05": false
      },
      {
        "feature": "geom_confidence",
        "rho": -0.0083,
        "abs_rho": 0.0083,
        "p_value": 0.420644,
        "n": 9482,
        "significant_05": false,
        "significant_01": false,
        "significant_001": false,
        "stars": "",
        "q_value": 0.447782,
        "significant_fdr_05": false
      }
    ],
    "target_ret_10c": [
      {
        "feature": "target_ret_20c",
        "rho": 1.0,
        "abs_rho": 1.0,
        "p_value": 0.0,
        "n": 10000,
        "significant_05": true,
        "significant_01": true,
        "significant_001": true,
        "stars": "***",
        "q_value": 0.0,
        "significant_fdr_05": true
      },
      {
        "feature": "target_max_down_20c",
        "rho": 0.6676,
        "abs_rho": 0.6676,
        "p_value": 0.0,
        "n": 10000,
        "significant_05": true,
        "significant_01": true,
        "significant_001": true,
        "stars": "***",
        "q_value": 0.0,
        "significant_fdr_05": true
      },
      {
        "feature": "target_max_up_20c",
        "rho": 0.6405,
        "abs_rho": 0.6405,
        "p_value": 0.0,
        "n": 10000,
        "significant_05": true,
        "significant_01": true,
        "significant_001": true,
        "stars": "***",
        "q_value": 0.0,
        "significant_fdr_05": true
      },
      {
        "feature": "rsi_div_price_delta_pct",
        "rho": -0.1474,
        "abs_rho": 0.1474,
        "p_value": 0.000768,
        "n": 518,
        "significant_05": true,
        "significant_01": true,
        "significant_001": true,
        "stars": "**",
        "q_value": 0.002611,
        "significant_fdr_05": true
      },
      {
        "feature": "geom_resistance_slope",
        "rho": -0.1416,
        "abs_rho": 0.1416,
        "p_value": 0.0,
        "n": 9279,
        "significant_05": true,
        "significant_01": true,
        "significant_001": true,
        "stars": "***",
        "q_value": 0.0,
        "significant_fdr_05": true
      },
      {
        "feature": "geom_support_slope",
        "rho": -0.141,
        "abs_rho": 0.141,
        "p_value": 0.0,
        "n": 9279,
        "significant_05": true,
        "significant_01": true,
        "significant_001": true,
        "stars": "***",
        "q_value": 0.0,
        "significant_fdr_05": true
      },
      {
        "feature": "current_scale_number",
        "rho": 0.1255,
        "abs_rho": 0.1255,
        "p_value": 0.0,
        "n": 10000,
        "significant_05": true,
        "significant_01": true,
        "significant_001": true,
        "stars": "***",
        "q_value": 0.0,
        "significant_fdr_05": true
      },
      {
        "feature": "rsi_div_rsi_delta",
        "rho": 0.0836,
        "abs_rho": 0.0836,
        "p_value": 0.057252,
        "n": 518,
        "significant_05": false,
        "significant_01": false,
        "significant_001": false,
        "stars": "",
        "q_value": 0.127859,
        "significant_fdr_05": false
      },
      {
        "feature": "rsi_14",
        "rho": 0.0501,
        "abs_rho": 0.0501,
        "p_value": 1e-06,
        "n": 10000,
        "significant_05": true,
        "significant_01": true,
        "significant_001": true,
        "stars": "***",
        "q_value": 5e-06,
        "significant_fdr_05": true
      },
      {
        "feature": "rsi_div_price_divergence",
        "rho": 0.0468,
        "abs_rho": 0.0468,
        "p_value": 0.287609,
        "n": 518,
        "significant_05": false,
        "significant_01": false,
        "significant_001": false,
        "stars": "",
        "q_value": 0.397234,
        "significant_fdr_05": false
      },
      {
        "feature": "rsi_div_rsi_divergence",
        "rho": -0.0414,
        "abs_rho": 0.0414,
        "p_value": 0.34723,
        "n": 518,
        "significant_05": false,
        "significant_01": false,
        "significant_001": false,
        "stars": "",
        "q_value": 0.437253,
        "significant_fdr_05": false
      },
      {
        "feature": "btc_dist14_mean",
        "rho": -0.0374,
        "abs_rho": 0.0374,
        "p_value": 0.000186,
        "n": 10000,
        "significant_05": true,
        "significant_01": true,
        "significant_001": true,
        "stars": "",
        "q_value": 0.00079,
        "significant_fdr_05": false
      },
      {
        "feature": "geom_breakout_potential",
        "rho": -0.0365,
        "abs_rho": 0.0365,
        "p_value": 0.000382,
        "n": 9482,
        "significant_05": true,
        "significant_01": true,
        "significant_001": true,
        "stars": "",
        "q_value": 0.001443,
        "significant_fdr_05": false
      },
      {
        "feature": "geom_width",
        "rho": 0.0261,
        "abs_rho": 0.0261,
        "p_value": 0.020016,
        "n": 7954,
        "significant_05": true,
        "significant_01": false,
        "significant_001": false,
        "stars": "",
        "q_value": 0.05235,
        "significant_fdr_05": false
      },
      {
        "feature": "geom_height",
        "rho": 0.0243,
        "abs_rho": 0.0243,
        "p_value": 0.019378,
        "n": 9292,
        "significant_05": true,
        "significant_01": false,
        "significant_001": false,
        "stars": "",
        "q_value": 0.05235,
        "significant_fdr_05": false
      },
      {
        "feature": "rsi_div_span",
        "rho": 0.0237,
        "abs_rho": 0.0237,
        "p_value": 0.589869,
        "n": 518,
        "significant_05": false,
        "significant_01": false,
        "significant_001": false,
        "stars": "",
        "q_value": 0.685709,
        "significant_fdr_05": false
      },
      {
        "feature": "is_extended_snapshot",
        "rho": 0.0234,
        "abs_rho": 0.0234,
        "p_value": 0.019413,
        "n": 10000,
        "significant_05": true,
        "significant_01": false,
        "significant_001": false,
        "stars": "",
        "q_value": 0.05235,
        "significant_fdr_05": false
      },
      {
        "feature": "natr_14",
        "rho": -0.0212,
        "abs_rho": 0.0212,
        "p_value": 0.033888,
        "n": 10000,
        "significant_05": true,
        "significant_01": false,
        "significant_001": false,
        "stars": "",
        "q_value": 0.082299,
        "significant_fdr_05": false
      },
      {
        "feature": "bo_level_3x",
        "rho": -0.0185,
        "abs_rho": 0.0185,
        "p_value": 0.063842,
        "n": 10000,
        "significant_05": false,
        "significant_01": false,
        "significant_001": false,
        "stars": "",
        "q_value": 0.127859,
        "significant_fdr_05": false
      },
      {
        "feature": "bo_level_2x",
        "rho": -0.0184,
        "abs_rho": 0.0184,
        "p_value": 0.065655,
        "n": 10000,
        "significant_05": false,
        "significant_01": false,
        "significant_001": false,
        "stars": "",
        "q_value": 0.127859,
        "significant_fdr_05": false
      },
      {
        "feature": "bo_level_1x",
        "rho": -0.0183,
        "abs_rho": 0.0183,
        "p_value": 0.06769,
        "n": 10000,
        "significant_05": false,
        "significant_01": false,
        "significant_001": false,
        "stars": "",
        "q_value": 0.127859,
        "significant_fdr_05": false
      },
      {
        "feature": "bd_level_1x",
        "rho": -0.0177,
        "abs_rho": 0.0177,
        "p_value": 0.076494,
        "n": 10000,
        "significant_05": false,
        "significant_01": false,
        "significant_001": false,
        "stars": "",
        "q_value": 0.136884,
        "significant_fdr_05": false
      },
      {
        "feature": "bd_level_2x",
        "rho": -0.0174,
        "abs_rho": 0.0174,
        "p_value": 0.081665,
        "n": 10000,
        "significant_05": false,
        "significant_01": false,
        "significant_001": false,
        "stars": "",
        "q_value": 0.138831,
        "significant_fdr_05": false
      },
      {
        "feature": "bd_level_3x",
        "rho": -0.017,
        "abs_rho": 0.017,
        "p_value": 0.089328,
        "n": 10000,
        "significant_05": false,
        "significant_01": false,
        "significant_001": false,
        "stars": "",
        "q_value": 0.141956,
        "significant_fdr_05": false
      },
      {
        "feature": "natr_pattern_avg",
        "rho": -0.0169,
        "abs_rho": 0.0169,
        "p_value": 0.091854,
        "n": 10000,
        "significant_05": false,
        "significant_01": false,
        "significant_001": false,
        "stars": "",
        "q_value": 0.141956,
        "significant_fdr_05": false
      },
      {
        "feature": "extension_candle_offset",
        "rho": 0.0144,
        "abs_rho": 0.0144,
        "p_value": 0.150705,
        "n": 10000,
        "significant_05": false,
        "significant_01": false,
        "significant_001": false,
        "stars": "",
        "q_value": 0.222781,
        "significant_fdr_05": false
      },
      {
        "feature": "volume_score",
        "rho": 0.0105,
        "abs_rho": 0.0105,
        "p_value": 0.292084,
        "n": 10000,
        "significant_05": false,
        "significant_01": false,
        "significant_001": false,
        "stars": "",
        "q_value": 0.397234,
        "significant_fdr_05": false
      },
      {
        "feature": "extension_progress",
        "rho": 0.0098,
        "abs_rho": 0.0098,
        "p_value": 0.329437,
        "n": 10000,
        "significant_05": false,
        "significant_01": false,
        "significant_001": false,
        "stars": "",
        "q_value": 0.430802,
        "significant_fdr_05": false
      },
      {
        "feature": "geom_hs_completion_score",
        "rho": -0.0087,
        "abs_rho": 0.0087,
        "p_value": 0.703837,
        "n": 1933,
        "significant_05": false,
        "significant_01": false,
        "significant_001": false,
        "stars": "",
        "q_value": 0.77195,
        "significant_fdr_05": false
      },
      {
        "feature": "geom_hs_symmetry_score",
        "rho": -0.0073,
        "abs_rho": 0.0073,
        "p_value": 0.747278,
        "n": 1933,
        "significant_05": false,
        "significant_01": false,
        "significant_001": false,
        "stars": "",
        "q_value": 0.793983,
        "significant_fdr_05": false
      },
      {
        "feature": "geom_overlap_ratio",
        "rho": 0.0067,
        "abs_rho": 0.0067,
        "p_value": 0.605037,
        "n": 5986,
        "significant_05": false,
        "significant_01": false,
        "significant_001": false,
        "stars": "",
        "q_value": 0.685709,
        "significant_fdr_05": false
      },
      {
        "feature": "momentum_score",
        "rho": -0.0063,
        "abs_rho": 0.0063,
        "p_value": 0.530017,
        "n": 10000,
        "significant_05": false,
        "significant_01": false,
        "significant_001": false,
        "stars": "",
        "q_value": 0.643592,
        "significant_fdr_05": false
      },
      {
        "feature": "geom_confidence",
        "rho": -0.0013,
        "abs_rho": 0.0013,
        "p_value": 0.896877,
        "n": 9482,
        "significant_05": false,
        "significant_01": false,
        "significant_001": false,
        "stars": "",
        "q_value": 0.910902,
        "significant_fdr_05": false
      },
      {
        "feature": "confidence",
        "rho": -0.0011,
        "abs_rho": 0.0011,
        "p_value": 0.910902,
        "n": 10000,
        "significant_05": false,
        "significant_01": false,
        "significant_001": false,
        "stars": "",
        "q_value": 0.910902,
        "significant_fdr_05": false
      }
    ]
  },
  "feature_distributions": [
    {
      "feature": "volume_score",
      "display_name": "volume score",
      "n": 10000,
      "binning": "fuel_zone",
      "bins": [
        {
          "bin_index": 0,
          "label": "Dead Water",
          "range_label": "0.00\u20130.33",
          "min": 0.0,
          "max": 0.34,
          "median_feature": 0.1762,
          "n": 5239,
          "breakout_success_rate": 48.2,
          "breakdown_success_rate": 45.31,
          "sideways_rate": 6.49,
          "forming_rate": 0.0,
          "both_cleared_rate": 35.9,
          "breakout_success_rate_ci95": [
            46.84,
            49.55
          ],
          "breakdown_success_rate_ci95": [
            43.97,
            46.66
          ],
          "sideways_rate_ci95": [
            5.85,
            7.19
          ],
          "forming_rate_ci95": [
            0.0,
            0.07
          ],
          "mean_ret_10c": 0.196,
          "mean_mfe": 5.411,
          "mean_mae": -4.602,
          "expected_hit_rate": 75.74,
          "max_up_natr": {
            "n": 5239,
            "mean": 2.526,
            "median": 1.747,
            "p25": 0.68,
            "p75": 3.262
          },
          "max_down_natr": {
            "n": 5239,
            "mean": -2.357,
            "median": -1.743,
            "p25": -3.155,
            "p75": -0.676
          },
          "median_max_up_natr": 1.747,
          "median_max_down_natr": -1.743,
          "mean_max_up_natr": 2.526,
          "mean_max_down_natr": -2.357,
          "p25_max_up_natr": 0.68,
          "p75_max_up_natr": 3.262,
          "p25_max_down_natr": -3.155,
          "p75_max_down_natr": -0.676,
          "outcome_natr_moves": {
            "breakout": {
              "n": 2525,
              "max_up_natr": {
                "n": 2525,
                "mean": 3.71,
                "median": 2.783,
                "p25": 1.774,
                "p75": 4.357
              },
              "max_down_natr": {
                "n": 2525,
                "mean": -1.363,
                "median": -0.745,
                "p25": -1.756,
                "p75": -0.238
              }
            },
            "breakdown": {
              "n": 2374,
              "max_up_natr": {
                "n": 2374,
                "mean": 1.414,
                "median": 0.703,
                "p25": 0.235,
                "p75": 1.768
              },
              "max_down_natr": {
                "n": 2374,
                "mean": -3.507,
                "median": -2.794,
                "p25": -4.341,
                "p75": -1.83
              }
            },
            "sideways": {
              "n": 340,
              "max_up_natr": {
                "n": 340,
                "mean": 1.488,
                "median": 1.126,
                "p25": 0.566,
                "p75": 1.914
              },
              "max_down_natr": {
                "n": 340,
                "mean": -1.711,
                "median": -1.253,
                "p25": -2.349,
                "p75": -0.679
              }
            },
            "forming": {
              "n": 0,
              "max_up_natr": {
                "n": 0,
                "mean": null,
                "median": null,
                "p25": null,
                "p75": null
              },
              "max_down_natr": {
                "n": 0,
                "mean": null,
                "median": null,
                "p25": null,
                "p75": null
              }
            }
          }
        },
        {
          "bin_index": 1,
          "label": "Organic Flow",
          "range_label": "0.34\u20130.66",
          "min": 0.34,
          "max": 0.67,
          "median_feature": 0.4664,
          "n": 3212,
          "breakout_success_rate": 49.07,
          "breakdown_success_rate": 45.52,
          "sideways_rate": 5.41,
          "forming_rate": 0.0,
          "both_cleared_rate": 38.01,
          "breakout_success_rate_ci95": [
            47.34,
            50.79
          ],
          "breakdown_success_rate_ci95": [
            43.8,
            47.24
          ],
          "sideways_rate_ci95": [
            4.69,
            6.25
          ],
          "forming_rate_ci95": [
            0.0,
            0.12
          ],
          "mean_ret_10c": 0.34,
          "mean_mfe": 5.826,
          "mean_mae": -4.872,
          "expected_hit_rate": 69.69,
          "max_up_natr": {
            "n": 3212,
            "mean": 2.82,
            "median": 1.898,
            "p25": 0.781,
            "p75": 3.582
          },
          "max_down_natr": {
            "n": 3212,
            "mean": -2.521,
            "median": -1.833,
            "p25": -3.425,
            "p75": -0.731
          },
          "median_max_up_natr": 1.898,
          "median_max_down_natr": -1.833,
          "mean_max_up_natr": 2.82,
          "mean_max_down_natr": -2.521,
          "p25_max_up_natr": 0.781,
          "p75_max_up_natr": 3.582,
          "p25_max_down_natr": -3.425,
          "p75_max_down_natr": -0.731,
          "outcome_natr_moves": {
            "breakout": {
              "n": 1576,
              "max_up_natr": {
                "n": 1576,
                "mean": 4.106,
                "median": 2.967,
                "p25": 1.833,
                "p75": 4.627
              },
              "max_down_natr": {
                "n": 1576,
                "mean": -1.467,
                "median": -0.82,
                "p25": -1.982,
                "p75": -0.301
              }
            },
            "breakdown": {
              "n": 1462,
              "max_up_natr": {
                "n": 1462,
                "mean": 1.594,
                "median": 0.841,
                "p25": 0.273,
                "p75": 2.115
              },
              "max_down_natr": {
                "n": 1462,
                "mean": -3.723,
                "median": -2.947,
                "p25": -4.618,
                "p75": -1.847
              }
            },
            "sideways": {
              "n": 174,
              "max_up_natr": {
                "n": 174,
                "mean": 1.469,
                "median": 0.999,
                "p25": 0.578,
                "p75": 2.063
              },
              "max_down_natr": {
                "n": 174,
                "mean": -1.96,
                "median": -1.568,
                "p25": -2.821,
                "p75": -0.87
              }
            },
            "forming": {
              "n": 0,
              "max_up_natr": {
                "n": 0,
                "mean": null,
                "median": null,
                "p25": null,
                "p75": null
              },
              "max_down_natr": {
                "n": 0,
                "mean": null,
                "median": null,
                "p25": null,
                "p75": null
              }
            }
          }
        },
        {
          "bin_index": 2,
          "label": "The Powder Keg",
          "range_label": "0.67\u20131.00",
          "min": 0.67,
          "max": 1.0,
          "median_feature": 0.8392,
          "n": 1549,
          "breakout_success_rate": 50.29,
          "breakdown_success_rate": 46.55,
          "sideways_rate": 3.16,
          "forming_rate": 0.0,
          "both_cleared_rate": 45.13,
          "breakout_success_rate_ci95": [
            47.8,
            52.78
          ],
          "breakdown_success_rate_ci95": [
            44.07,
            49.04
          ],
          "sideways_rate_ci95": [
            2.4,
            4.16
          ],
          "forming_rate_ci95": [
            0.0,
            0.25
          ],
          "mean_ret_10c": 0.222,
          "mean_mfe": 6.113,
          "mean_mae": -5.443,
          "expected_hit_rate": 69.3,
          "max_up_natr": {
            "n": 1549,
            "mean": 3.192,
            "median": 2.076,
            "p25": 0.854,
            "p75": 4.369
          },
          "max_down_natr": {
            "n": 1549,
            "mean": -2.998,
            "median": -2.191,
            "p25": -3.816,
            "p75": -0.892
          },
          "median_max_up_natr": 2.076,
          "median_max_down_natr": -2.191,
          "mean_max_up_natr": 3.192,
          "mean_max_down_natr": -2.998,
          "p25_max_up_natr": 0.854,
          "p75_max_up_natr": 4.369,
          "p25_max_down_natr": -3.816,
          "p75_max_down_natr": -0.892,
          "outcome_natr_moves": {
            "breakout": {
              "n": 779,
              "max_up_natr": {
                "n": 779,
                "mean": 4.446,
                "median": 3.259,
                "p25": 1.802,
                "p75": 5.542
              },
              "max_down_natr": {
                "n": 779,
                "mean": -2.021,
                "median": -1.137,
                "p25": -2.638,
                "p75": -0.474
              }
            },
            "breakdown": {
              "n": 721,
              "max_up_natr": {
                "n": 721,
                "mean": 1.956,
                "median": 1.03,
                "p25": 0.349,
                "p75": 2.559
              },
              "max_down_natr": {
                "n": 721,
                "mean": -4.105,
                "median": -3.23,
                "p25": -4.879,
                "p75": -1.916
              }
            },
            "sideways": {
              "n": 49,
              "max_up_natr": {
                "n": 49,
                "mean": 1.442,
                "median": 1.075,
                "p25": 0.749,
                "p75": 1.861
              },
              "max_down_natr": {
                "n": 49,
                "mean": -2.26,
                "median": -1.711,
                "p25": -3.166,
                "p75": -0.93
              }
            },
            "forming": {
              "n": 0,
              "max_up_natr": {
                "n": 0,
                "mean": null,
                "median": null,
                "p25": null,
                "p75": null
              },
              "max_down_natr": {
                "n": 0,
                "mean": null,
                "median": null,
                "p25": null,
                "p75": null
              }
            }
          }
        }
      ],
      "histogram": {
        "bin_edges": [
          0.0359,
          0.0962,
          0.1564,
          0.2167,
          0.2769,
          0.3372,
          0.3974,
          0.4577,
          0.518,
          0.5782,
          0.6385,
          0.6987,
          0.759,
          0.8192,
          0.8795,
          0.9397,
          1.0
        ],
        "counts": [
          714,
          1379,
          1602,
          836,
          656,
          880,
          686,
          541,
          458,
          439,
          437,
          305,
          232,
          158,
          128,
          549
        ],
        "bin_centers": [
          0.066,
          0.1263,
          0.1866,
          0.2468,
          0.3071,
          0.3673,
          0.4276,
          0.4878,
          0.5481,
          0.6083,
          0.6686,
          0.7289,
          0.7891,
          0.8494,
          0.9096,
          0.9699
        ]
      },
      "sample_scope": "all_snapshots"
    },
    {
      "feature": "momentum_score",
      "display_name": "momentum score",
      "n": 10000,
      "binning": "fuel_zone",
      "bins": [
        {
          "bin_index": 0,
          "label": "Organic Flow",
          "range_label": "0.34\u20130.66",
          "min": 0.34,
          "max": 0.67,
          "median_feature": 0.4513,
          "n": 7466,
          "breakout_success_rate": 49.41,
          "breakdown_success_rate": 44.47,
          "sideways_rate": 6.12,
          "forming_rate": 0.0,
          "both_cleared_rate": 36.51,
          "breakout_success_rate_ci95": [
            48.28,
            50.54
          ],
          "breakdown_success_rate_ci95": [
            43.34,
            45.6
          ],
          "sideways_rate_ci95": [
            5.6,
            6.69
          ],
          "forming_rate_ci95": [
            0.0,
            0.05
          ],
          "mean_ret_10c": 0.164,
          "mean_mfe": 4.753,
          "mean_mae": -4.092,
          "expected_hit_rate": 77.4,
          "max_up_natr": {
            "n": 7466,
            "mean": 2.574,
            "median": 1.793,
            "p25": 0.722,
            "p75": 3.349
          },
          "max_down_natr": {
            "n": 7466,
            "mean": -2.378,
            "median": -1.751,
            "p25": -3.232,
            "p75": -0.677
          },
          "median_max_up_natr": 1.793,
          "median_max_down_natr": -1.751,
          "mean_max_up_natr": 2.574,
          "mean_max_down_natr": -2.378,
          "p25_max_up_natr": 0.722,
          "p75_max_up_natr": 3.349,
          "p25_max_down_natr": -3.232,
          "p75_max_down_natr": -0.677,
          "outcome_natr_moves": {
            "breakout": {
              "n": 3689,
              "max_up_natr": {
                "n": 3689,
                "mean": 3.702,
                "median": 2.795,
                "p25": 1.768,
                "p75": 4.431
              },
              "max_down_natr": {
                "n": 3689,
                "mean": -1.406,
                "median": -0.77,
                "p25": -1.832,
                "p75": -0.263
              }
            },
            "breakdown": {
              "n": 3320,
              "max_up_natr": {
                "n": 3320,
                "mean": 1.476,
                "median": 0.744,
                "p25": 0.247,
                "p75": 1.872
              },
              "max_down_natr": {
                "n": 3320,
                "mean": -3.543,
                "median": -2.861,
                "p25": -4.392,
                "p75": -1.852
              }
            },
            "sideways": {
              "n": 457,
              "max_up_natr": {
                "n": 457,
                "mean": 1.442,
                "median": 1.068,
                "p25": 0.579,
                "p75": 1.897
              },
              "max_down_natr": {
                "n": 457,
                "mean": -1.762,
                "median": -1.368,
                "p25": -2.512,
                "p75": -0.725
              }
            },
            "forming": {
              "n": 0,
              "max_up_natr": {
                "n": 0,
                "mean": null,
                "median": null,
                "p25": null,
                "p75": null
              },
              "max_down_natr": {
                "n": 0,
                "mean": null,
                "median": null,
                "p25": null,
                "p75": null
              }
            }
          }
        },
        {
          "bin_index": 1,
          "label": "The Powder Keg",
          "range_label": "0.67\u20131.00",
          "min": 0.67,
          "max": 1.0,
          "median_feature": 0.816,
          "n": 2534,
          "breakout_success_rate": 47.0,
          "breakdown_success_rate": 48.82,
          "sideways_rate": 4.18,
          "forming_rate": 0.0,
          "both_cleared_rate": 42.42,
          "breakout_success_rate_ci95": [
            45.06,
            48.95
          ],
          "breakdown_success_rate_ci95": [
            46.87,
            50.76
          ],
          "sideways_rate_ci95": [
            3.47,
            5.03
          ],
          "forming_rate_ci95": [
            0.0,
            0.15
          ],
          "mean_ret_10c": 0.489,
          "mean_mfe": 8.306,
          "mean_mae": -6.96,
          "expected_hit_rate": 59.28,
          "max_up_natr": {
            "n": 2534,
            "mean": 3.164,
            "median": 1.957,
            "p25": 0.727,
            "p75": 4.015
          },
          "max_down_natr": {
            "n": 2534,
            "mean": -2.894,
            "median": -2.082,
            "p25": -3.751,
            "p75": -0.892
          },
          "median_max_up_natr": 1.957,
          "median_max_down_natr": -2.082,
          "mean_max_up_natr": 3.164,
          "mean_max_down_natr": -2.894,
          "p25_max_up_natr": 0.727,
          "p75_max_up_natr": 4.015,
          "p25_max_down_natr": -3.751,
          "p75_max_down_natr": -0.892,
          "outcome_natr_moves": {
            "breakout": {
              "n": 1191,
              "max_up_natr": {
                "n": 1191,
                "mean": 4.741,
                "median": 3.282,
                "p25": 1.887,
                "p75": 5.582
              },
              "max_down_natr": {
                "n": 1191,
                "mean": -1.797,
                "median": -1.046,
                "p25": -2.51,
                "p75": -0.393
              }
            },
            "breakdown": {
              "n": 1237,
              "max_up_natr": {
                "n": 1237,
                "mean": 1.777,
                "median": 0.906,
                "p25": 0.3,
                "p75": 2.362
              },
              "max_down_natr": {
                "n": 1237,
                "mean": -4.014,
                "median": -3.031,
                "p25": -4.82,
                "p75": -1.847
              }
            },
            "sideways": {
              "n": 106,
              "max_up_natr": {
                "n": 106,
                "mean": 1.636,
                "median": 1.16,
                "p25": 0.539,
                "p75": 2.072
              },
              "max_down_natr": {
                "n": 106,
                "mean": -2.154,
                "median": -1.626,
                "p25": -2.94,
                "p75": -0.863
              }
            },
            "forming": {
              "n": 0,
              "max_up_natr": {
                "n": 0,
                "mean": null,
                "median": null,
                "p25": null,
                "p75": null
              },
              "max_down_natr": {
                "n": 0,
                "mean": null,
                "median": null,
                "p25": null,
                "p75": null
              }
            }
          }
        }
      ],
      "histogram": {
        "bin_edges": [
          0.3571,
          0.3973,
          0.4375,
          0.4776,
          0.5178,
          0.558,
          0.5982,
          0.6384,
          0.6786,
          0.7187,
          0.7589,
          0.7991,
          0.8393,
          0.8795,
          0.9196,
          0.9598,
          1.0
        ],
        "counts": [
          614,
          2984,
          561,
          2008,
          745,
          326,
          149,
          107,
          231,
          261,
          554,
          410,
          279,
          201,
          123,
          447
        ],
        "bin_centers": [
          0.3772,
          0.4174,
          0.4576,
          0.4977,
          0.5379,
          0.5781,
          0.6183,
          0.6585,
          0.6986,
          0.7388,
          0.779,
          0.8192,
          0.8594,
          0.8995,
          0.9397,
          0.9799
        ]
      },
      "sample_scope": "all_snapshots"
    },
    {
      "feature": "rsi_14",
      "display_name": "rsi 14",
      "n": 10000,
      "binning": "fixed_rsi",
      "bins": [
        {
          "bin_index": 0,
          "label": "10\u201330",
          "range_label": "10\u201330",
          "median_feature": 27.2017,
          "n": 306,
          "breakout_success_rate": 20.92,
          "breakdown_success_rate": 75.16,
          "sideways_rate": 3.92,
          "forming_rate": 0.0,
          "both_cleared_rate": 42.16,
          "breakout_success_rate_ci95": [
            16.73,
            25.82
          ],
          "breakdown_success_rate_ci95": [
            70.03,
            79.67
          ],
          "sideways_rate_ci95": [
            2.26,
            6.73
          ],
          "forming_rate_ci95": [
            0.0,
            1.24
          ],
          "mean_ret_10c": -0.376,
          "mean_mfe": 5.521,
          "mean_mae": -7.772,
          "expected_hit_rate": 42.55,
          "max_up_natr": {
            "n": 306,
            "mean": 2.47,
            "median": 1.622,
            "p25": 0.485,
            "p75": 3.756
          },
          "max_down_natr": {
            "n": 306,
            "mean": -3.978,
            "median": -2.864,
            "p25": -5.284,
            "p75": -1.293
          },
          "median_max_up_natr": 1.622,
          "median_max_down_natr": -2.864,
          "mean_max_up_natr": 2.47,
          "mean_max_down_natr": -3.978,
          "p25_max_up_natr": 0.485,
          "p75_max_up_natr": 3.756,
          "p25_max_down_natr": -5.284,
          "p75_max_down_natr": -1.293,
          "outcome_natr_moves": {
            "breakout": {
              "n": 64,
              "max_up_natr": {
                "n": 64,
                "mean": 3.988,
                "median": 3.193,
                "p25": 2.084,
                "p75": 4.794
              },
              "max_down_natr": {
                "n": 64,
                "mean": -1.453,
                "median": -0.519,
                "p25": -1.55,
                "p75": -0.209
              }
            },
            "breakdown": {
              "n": 230,
              "max_up_natr": {
                "n": 230,
                "mean": 2.083,
                "median": 0.986,
                "p25": 0.303,
                "p75": 3.225
              },
              "max_down_natr": {
                "n": 230,
                "mean": -4.796,
                "median": -3.431,
                "p25": -6.07,
                "p75": -1.939
              }
            },
            "sideways": {
              "n": 12,
              "max_up_natr": {
                "n": 12,
                "mean": 1.773,
                "median": 1.12,
                "p25": 0.552,
                "p75": 2.256
              },
              "max_down_natr": {
                "n": 12,
                "mean": -1.778,
                "median": -1.076,
                "p25": -1.907,
                "p75": -0.603
              }
            },
            "forming": {
              "n": 0,
              "max_up_natr": {
                "n": 0,
                "mean": null,
                "median": null,
                "p25": null,
                "p75": null
              },
              "max_down_natr": {
                "n": 0,
                "mean": null,
                "median": null,
                "p25": null,
                "p75": null
              }
            }
          }
        },
        {
          "bin_index": 1,
          "label": "30\u201350",
          "range_label": "30\u201350",
          "median_feature": 43.0471,
          "n": 5285,
          "breakout_success_rate": 37.79,
          "breakdown_success_rate": 56.33,
          "sideways_rate": 5.88,
          "forming_rate": 0.0,
          "both_cleared_rate": 36.52,
          "breakout_success_rate_ci95": [
            36.49,
            39.1
          ],
          "breakdown_success_rate_ci95": [
            54.99,
            57.66
          ],
          "sideways_rate_ci95": [
            5.28,
            6.55
          ],
          "forming_rate_ci95": [
            0.0,
            0.07
          ],
          "mean_ret_10c": -0.186,
          "mean_mfe": 5.107,
          "mean_mae": -5.258,
          "expected_hit_rate": 74.86,
          "max_up_natr": {
            "n": 5285,
            "mean": 2.376,
            "median": 1.661,
            "p25": 0.619,
            "p75": 3.193
          },
          "max_down_natr": {
            "n": 5285,
            "mean": -2.653,
            "median": -1.917,
            "p25": -3.5,
            "p75": -0.773
          },
          "median_max_up_natr": 1.661,
          "median_max_down_natr": -1.917,
          "mean_max_up_natr": 2.376,
          "mean_max_down_natr": -2.653,
          "p25_max_up_natr": 0.619,
          "p75_max_up_natr": 3.193,
          "p25_max_down_natr": -3.5,
          "p75_max_down_natr": -0.773,
          "outcome_natr_moves": {
            "breakout": {
              "n": 1997,
              "max_up_natr": {
                "n": 1997,
                "mean": 3.708,
                "median": 2.887,
                "p25": 1.896,
                "p75": 4.43
              },
              "max_down_natr": {
                "n": 1997,
                "mean": -1.29,
                "median": -0.611,
                "p25": -1.602,
                "p75": -0.201
              }
            },
            "breakdown": {
              "n": 2977,
              "max_up_natr": {
                "n": 2977,
                "mean": 1.568,
                "median": 0.853,
                "p25": 0.284,
                "p75": 2.024
              },
              "max_down_natr": {
                "n": 2977,
                "mean": -3.658,
                "median": -2.833,
                "p25": -4.54,
                "p75": -1.78
              }
            },
            "sideways": {
              "n": 311,
              "max_up_natr": {
                "n": 311,
                "mean": 1.557,
                "median": 1.207,
                "p25": 0.589,
                "p75": 2.165
              },
              "max_down_natr": {
                "n": 311,
                "mean": -1.775,
                "median": -1.249,
                "p25": -2.491,
                "p75": -0.636
              }
            },
            "forming": {
              "n": 0,
              "max_up_natr": {
                "n": 0,
                "mean": null,
                "median": null,
                "p25": null,
                "p75": null
              },
              "max_down_natr": {
                "n": 0,
                "mean": null,
                "median": null,
                "p25": null,
                "p75": null
              }
            }
          }
        },
        {
          "bin_index": 2,
          "label": "50\u201370",
          "range_label": "50\u201370",
          "median_feature": 56.4103,
          "n": 4205,
          "breakout_success_rate": 63.21,
          "breakdown_success_rate": 31.34,
          "sideways_rate": 5.45,
          "forming_rate": 0.0,
          "both_cleared_rate": 39.02,
          "breakout_success_rate_ci95": [
            61.74,
            64.66
          ],
          "breakdown_success_rate_ci95": [
            29.96,
            32.76
          ],
          "sideways_rate_ci95": [
            4.8,
            6.17
          ],
          "forming_rate_ci95": [
            0.0,
            0.09
          ],
          "mean_ret_10c": 0.784,
          "mean_mfe": 6.127,
          "mean_mae": -4.033,
          "expected_hit_rate": 73.49,
          "max_up_natr": {
            "n": 4205,
            "mean": 3.053,
            "median": 2.01,
            "p25": 0.878,
            "p75": 3.854
          },
          "max_down_natr": {
            "n": 4205,
            "mean": -2.214,
            "median": -1.66,
            "p25": -3.095,
            "p75": -0.654
          },
          "median_max_up_natr": 2.01,
          "median_max_down_natr": -1.66,
          "mean_max_up_natr": 3.053,
          "mean_max_down_natr": -2.214,
          "p25_max_up_natr": 0.878,
          "p75_max_up_natr": 3.854,
          "p25_max_down_natr": -3.095,
          "p75_max_down_natr": -0.654,
          "outcome_natr_moves": {
            "breakout": {
              "n": 2658,
              "max_up_natr": {
                "n": 2658,
                "mean": 3.995,
                "median": 2.832,
                "p25": 1.689,
                "p75": 4.681
              },
              "max_down_natr": {
                "n": 2658,
                "mean": -1.603,
                "median": -0.983,
                "p25": -2.196,
                "p75": -0.37
              }
            },
            "breakdown": {
              "n": 1318,
              "max_up_natr": {
                "n": 1318,
                "mean": 1.443,
                "median": 0.621,
                "p25": 0.206,
                "p75": 1.715
              },
              "max_down_natr": {
                "n": 1318,
                "mean": -3.5,
                "median": -2.971,
                "p25": -4.316,
                "p75": -1.969
              }
            },
            "sideways": {
              "n": 229,
              "max_up_natr": {
                "n": 229,
                "mean": 1.373,
                "median": 0.878,
                "p25": 0.558,
                "p75": 1.731
              },
              "max_down_natr": {
                "n": 229,
                "mean": -1.9,
                "median": -1.564,
                "p25": -2.576,
                "p75": -0.891
              }
            },
            "forming": {
              "n": 0,
              "max_up_natr": {
                "n": 0,
                "mean": null,
                "median": null,
                "p25": null,
                "p75": null
              },
              "max_down_natr": {
                "n": 0,
                "mean": null,
                "median": null,
                "p25": null,
                "p75": null
              }
            }
          }
        },
        {
          "bin_index": 3,
          "label": "70\u201390",
          "range_label": "70\u201390",
          "median_feature": 72.5004,
          "n": 203,
          "breakout_success_rate": 78.82,
          "breakdown_success_rate": 15.76,
          "sideways_rate": 5.42,
          "forming_rate": 0.0,
          "both_cleared_rate": 49.75,
          "breakout_success_rate_ci95": [
            72.69,
            83.88
          ],
          "breakdown_success_rate_ci95": [
            11.39,
            21.41
          ],
          "sideways_rate_ci95": [
            3.05,
            9.44
          ],
          "forming_rate_ci95": [
            0.0,
            1.86
          ],
          "mean_ret_10c": 0.987,
          "mean_mfe": 9.728,
          "mean_mae": -5.227,
          "expected_hit_rate": 47.83,
          "max_up_natr": {
            "n": 203,
            "mean": 5.045,
            "median": 3.09,
            "p25": 1.525,
            "p75": 6.074
          },
          "max_down_natr": {
            "n": 203,
            "mean": -2.686,
            "median": -2.269,
            "p25": -3.569,
            "p75": -0.762
          },
          "median_max_up_natr": 3.09,
          "median_max_down_natr": -2.269,
          "mean_max_up_natr": 5.045,
          "mean_max_down_natr": -2.686,
          "p25_max_up_natr": 1.525,
          "p75_max_up_natr": 6.074,
          "p25_max_down_natr": -3.569,
          "p75_max_down_natr": -0.762,
          "outcome_natr_moves": {
            "breakout": {
              "n": 160,
              "max_up_natr": {
                "n": 160,
                "mean": 6.023,
                "median": 4.253,
                "p25": 2.145,
                "p75": 8.003
              },
              "max_down_natr": {
                "n": 160,
                "mean": -2.485,
                "median": -1.821,
                "p25": -3.417,
                "p75": -0.591
              }
            },
            "breakdown": {
              "n": 32,
              "max_up_natr": {
                "n": 32,
                "mean": 1.515,
                "median": 0.598,
                "p25": 0.248,
                "p75": 1.975
              },
              "max_down_natr": {
                "n": 32,
                "mean": -3.832,
                "median": -3.248,
                "p25": -4.174,
                "p75": -2.453
              }
            },
            "sideways": {
              "n": 11,
              "max_up_natr": {
                "n": 11,
                "mean": 1.1,
                "median": 0.859,
                "p25": 0.61,
                "p75": 1.494
              },
              "max_down_natr": {
                "n": 11,
                "mean": -2.285,
                "median": -1.847,
                "p25": -2.797,
                "p75": -1.328
              }
            },
            "forming": {
              "n": 0,
              "max_up_natr": {
                "n": 0,
                "mean": null,
                "median": null,
                "p25": null,
                "p75": null
              },
              "max_down_natr": {
                "n": 0,
                "mean": null,
                "median": null,
                "p25": null,
                "p75": null
              }
            }
          }
        }
      ],
      "histogram": {
        "bin_edges": [
          25.7662,
          28.693,
          31.6197,
          34.5465,
          37.4732,
          40.4,
          43.3267,
          46.2535,
          49.1802,
          52.107,
          55.0337,
          57.9605,
          60.8872,
          63.814,
          66.7407,
          69.6675,
          72.5942
        ],
        "counts": [
          229,
          213,
          404,
          580,
          723,
          884,
          1112,
          1147,
          1022,
          983,
          782,
          630,
          521,
          320,
          231,
          219
        ],
        "bin_centers": [
          27.2296,
          30.1564,
          33.0831,
          36.0099,
          38.9366,
          41.8634,
          44.7901,
          47.7169,
          50.6436,
          53.5704,
          56.4971,
          59.4239,
          62.3506,
          65.2774,
          68.2041,
          71.1309
        ]
      },
      "sample_scope": "all_snapshots"
    },
    {
      "feature": "geom_height",
      "display_name": "height",
      "n": 9292,
      "binning": "log_z",
      "bins": [
        {
          "bin_index": 0,
          "band": "below_typical",
          "label": "Below typical",
          "range_label": "1.97e-07 \u2013 0.207",
          "min": 0.0,
          "max": 0.207307,
          "median_feature": 0.0052,
          "n": 2725,
          "breakout_success_rate": 44.51,
          "breakdown_success_rate": 53.25,
          "sideways_rate": 2.24,
          "forming_rate": 0.0,
          "both_cleared_rate": 39.93,
          "breakout_success_rate_ci95": [
            42.66,
            46.39
          ],
          "breakdown_success_rate_ci95": [
            51.37,
            55.12
          ],
          "sideways_rate_ci95": [
            1.75,
            2.86
          ],
          "forming_rate_ci95": [
            0.0,
            0.14
          ],
          "mean_ret_10c": -0.047,
          "mean_mfe": 5.254,
          "mean_mae": -4.84,
          "expected_hit_rate": 73.39,
          "max_up_natr": {
            "n": 2725,
            "mean": 2.502,
            "median": 1.63,
            "p25": 0.708,
            "p75": 3.143
          },
          "max_down_natr": {
            "n": 2725,
            "mean": -2.496,
            "median": -1.824,
            "p25": -3.207,
            "p75": -0.889
          },
          "median_max_up_natr": 1.63,
          "median_max_down_natr": -1.824,
          "mean_max_up_natr": 2.502,
          "mean_max_down_natr": -2.496,
          "p25_max_up_natr": 0.708,
          "p75_max_up_natr": 3.143,
          "p25_max_down_natr": -3.207,
          "p75_max_down_natr": -0.889,
          "outcome_natr_moves": {
            "breakout": {
              "n": 1213,
              "max_up_natr": {
                "n": 1213,
                "mean": 3.563,
                "median": 2.509,
                "p25": 1.559,
                "p75": 4.101
              },
              "max_down_natr": {
                "n": 1213,
                "mean": -1.668,
                "median": -1.061,
                "p25": -2.258,
                "p75": -0.456
              }
            },
            "breakdown": {
              "n": 1451,
              "max_up_natr": {
                "n": 1451,
                "mean": 1.675,
                "median": 0.896,
                "p25": 0.369,
                "p75": 2.196
              },
              "max_down_natr": {
                "n": 1451,
                "mean": -3.26,
                "median": -2.431,
                "p25": -3.937,
                "p75": -1.568
              }
            },
            "sideways": {
              "n": 61,
              "max_up_natr": {
                "n": 61,
                "mean": 1.061,
                "median": 1.006,
                "p25": 0.669,
                "p75": 1.375
              },
              "max_down_natr": {
                "n": 61,
                "mean": -0.776,
                "median": -0.761,
                "p25": -0.94,
                "p75": -0.582
              }
            },
            "forming": {
              "n": 0,
              "max_up_natr": {
                "n": 0,
                "mean": null,
                "median": null,
                "p25": null,
                "p75": null
              },
              "max_down_natr": {
                "n": 0,
                "mean": null,
                "median": null,
                "p25": null,
                "p75": null
              }
            }
          }
        },
        {
          "bin_index": 1,
          "band": "typical",
          "label": "Typical",
          "range_label": "0.207 \u2013 11.3",
          "min": 0.207307,
          "max": 11.266811,
          "median_feature": 3.6341,
          "n": 5108,
          "breakout_success_rate": 49.84,
          "breakdown_success_rate": 41.97,
          "sideways_rate": 8.19,
          "forming_rate": 0.0,
          "both_cleared_rate": 37.35,
          "breakout_success_rate_ci95": [
            48.47,
            51.21
          ],
          "breakdown_success_rate_ci95": [
            40.63,
            43.33
          ],
          "sideways_rate_ci95": [
            7.46,
            8.97
          ],
          "forming_rate_ci95": [
            0.0,
            0.08
          ],
          "mean_ret_10c": 0.309,
          "mean_mfe": 4.868,
          "mean_mae": -4.101,
          "expected_hit_rate": 74.34,
          "max_up_natr": {
            "n": 5108,
            "mean": 2.892,
            "median": 1.966,
            "p25": 0.723,
            "p75": 3.753
          },
          "max_down_natr": {
            "n": 5108,
            "mean": -2.573,
            "median": -1.859,
            "p25": -3.506,
            "p75": -0.631
          },
          "median_max_up_natr": 1.966,
          "median_max_down_natr": -1.859,
          "mean_max_up_natr": 2.892,
          "mean_max_down_natr": -2.573,
          "p25_max_up_natr": 0.723,
          "p75_max_up_natr": 3.753,
          "p25_max_down_natr": -3.506,
          "p75_max_down_natr": -0.631,
          "outcome_natr_moves": {
            "breakout": {
              "n": 2546,
              "max_up_natr": {
                "n": 2546,
                "mean": 4.287,
                "median": 3.155,
                "p25": 1.953,
                "p75": 5.0
              },
              "max_down_natr": {
                "n": 2546,
                "mean": -1.426,
                "median": -0.722,
                "p25": -1.9,
                "p75": -0.229
              }
            },
            "breakdown": {
              "n": 2144,
              "max_up_natr": {
                "n": 2144,
                "mean": 1.485,
                "median": 0.707,
                "p25": 0.204,
                "p75": 1.948
              },
              "max_down_natr": {
                "n": 2144,
                "mean": -4.031,
                "median": -3.201,
                "p25": -4.905,
                "p75": -2.058
              }
            },
            "sideways": {
              "n": 418,
              "max_up_natr": {
                "n": 418,
                "mean": 1.616,
                "median": 1.177,
                "p25": 0.568,
                "p75": 2.241
              },
              "max_down_natr": {
                "n": 418,
                "mean": -2.09,
                "median": -1.722,
                "p25": -2.928,
                "p75": -0.891
              }
            },
            "forming": {
              "n": 0,
              "max_up_natr": {
                "n": 0,
                "mean": null,
                "median": null,
                "p25": null,
                "p75": null
              },
              "max_down_natr": {
                "n": 0,
                "mean": null,
                "median": null,
                "p25": null,
                "p75": null
              }
            }
          }
        },
        {
          "bin_index": 2,
          "band": "elevated",
          "label": "Elevated",
          "range_label": "11.3 \u2013 38.1",
          "min": 11.266811,
          "max": 38.101075,
          "median_feature": 17.0778,
          "n": 1199,
          "breakout_success_rate": 53.71,
          "breakdown_success_rate": 41.95,
          "sideways_rate": 4.34,
          "forming_rate": 0.0,
          "both_cleared_rate": 36.11,
          "breakout_success_rate_ci95": [
            50.88,
            56.52
          ],
          "breakdown_success_rate_ci95": [
            39.19,
            44.77
          ],
          "sideways_rate_ci95": [
            3.32,
            5.64
          ],
          "forming_rate_ci95": [
            0.0,
            0.32
          ],
          "mean_ret_10c": 0.241,
          "mean_mfe": 7.875,
          "mean_mae": -6.626,
          "expected_hit_rate": 72.37,
          "max_up_natr": {
            "n": 1199,
            "mean": 2.599,
            "median": 1.821,
            "p25": 0.714,
            "p75": 3.371
          },
          "max_down_natr": {
            "n": 1199,
            "mean": -2.44,
            "median": -1.752,
            "p25": -3.399,
            "p75": -0.611
          },
          "median_max_up_natr": 1.821,
          "median_max_down_natr": -1.752,
          "mean_max_up_natr": 2.599,
          "mean_max_down_natr": -2.44,
          "p25_max_up_natr": 0.714,
          "p75_max_up_natr": 3.371,
          "p25_max_down_natr": -3.399,
          "p75_max_down_natr": -0.611,
          "outcome_natr_moves": {
            "breakout": {
              "n": 644,
              "max_up_natr": {
                "n": 644,
                "mean": 3.614,
                "median": 2.746,
                "p25": 1.769,
                "p75": 4.305
              },
              "max_down_natr": {
                "n": 644,
                "mean": -1.454,
                "median": -0.732,
                "p25": -1.817,
                "p75": -0.245
              }
            },
            "breakdown": {
              "n": 503,
              "max_up_natr": {
                "n": 503,
                "mean": 1.442,
                "median": 0.554,
                "p25": 0.191,
                "p75": 1.732
              },
              "max_down_natr": {
                "n": 503,
                "mean": -3.809,
                "median": -3.153,
                "p25": -4.69,
                "p75": -2.017
              }
            },
            "sideways": {
              "n": 52,
              "max_up_natr": {
                "n": 52,
                "mean": 1.227,
                "median": 1.022,
                "p25": 0.581,
                "p75": 1.724
              },
              "max_down_natr": {
                "n": 52,
                "mean": -1.409,
                "median": -1.356,
                "p25": -1.943,
                "p75": -0.682
              }
            },
            "forming": {
              "n": 0,
              "max_up_natr": {
                "n": 0,
                "mean": null,
                "median": null,
                "p25": null,
                "p75": null
              },
              "max_down_natr": {
                "n": 0,
                "mean": null,
                "median": null,
                "p25": null,
                "p75": null
              }
            }
          }
        },
        {
          "bin_index": 3,
          "band": "extreme",
          "label": "Extreme",
          "range_label": "38.1 \u2013 1.69e+04",
          "min": 38.101075,
          "max": 16860.0,
          "median_feature": 58.6538,
          "n": 260,
          "breakout_success_rate": 53.85,
          "breakdown_success_rate": 43.46,
          "sideways_rate": 2.69,
          "forming_rate": 0.0,
          "both_cleared_rate": 29.62,
          "breakout_success_rate_ci95": [
            47.77,
            59.81
          ],
          "breakdown_success_rate_ci95": [
            37.57,
            49.54
          ],
          "sideways_rate_ci95": [
            1.31,
            5.45
          ],
          "forming_rate_ci95": [
            0.0,
            1.46
          ],
          "mean_ret_10c": 1.167,
          "mean_mfe": 13.515,
          "mean_mae": -9.4,
          "expected_hit_rate": 78.14,
          "max_up_natr": {
            "n": 260,
            "mean": 2.348,
            "median": 1.651,
            "p25": 0.621,
            "p75": 3.016
          },
          "max_down_natr": {
            "n": 260,
            "mean": -1.882,
            "median": -1.372,
            "p25": -2.625,
            "p75": -0.49
          },
          "median_max_up_natr": 1.651,
          "median_max_down_natr": -1.372,
          "mean_max_up_natr": 2.348,
          "mean_max_down_natr": -1.882,
          "p25_max_up_natr": 0.621,
          "p75_max_up_natr": 3.016,
          "p25_max_down_natr": -2.625,
          "p75_max_down_natr": -0.49,
          "outcome_natr_moves": {
            "breakout": {
              "n": 140,
              "max_up_natr": {
                "n": 140,
                "mean": 3.199,
                "median": 2.417,
                "p25": 1.5,
                "p75": 3.979
              },
              "max_down_natr": {
                "n": 140,
                "mean": -1.181,
                "median": -0.725,
                "p25": -1.365,
                "p75": -0.193
              }
            },
            "breakdown": {
              "n": 113,
              "max_up_natr": {
                "n": 113,
                "mean": 1.374,
                "median": 0.618,
                "p25": 0.194,
                "p75": 1.531
              },
              "max_down_natr": {
                "n": 113,
                "mean": -2.82,
                "median": -2.483,
                "p25": -3.55,
                "p75": -1.608
              }
            },
            "sideways": {
              "n": 7,
              "max_up_natr": {
                "n": 7,
                "mean": 1.056,
                "median": 0.544,
                "p25": 0.254,
                "p75": 1.738
              },
              "max_down_natr": {
                "n": 7,
                "mean": -0.743,
                "median": -0.624,
                "p25": -0.859,
                "p75": -0.385
              }
            },
            "forming": {
              "n": 0,
              "max_up_natr": {
                "n": 0,
                "mean": null,
                "median": null,
                "p25": null,
                "p75": null
              },
              "max_down_natr": {
                "n": 0,
                "mean": null,
                "median": null,
                "p25": null,
                "p75": null
              }
            }
          }
        }
      ],
      "histogram": {
        "bin_edges": [
          0.0,
          5.2346,
          10.4691,
          15.7036,
          20.9381,
          26.1727,
          31.4072,
          36.6417,
          41.8762,
          47.1107,
          52.3453,
          57.5798,
          62.8143,
          68.0488,
          73.2834,
          78.5179,
          83.7524
        ],
        "counts": [
          6134,
          1561,
          648,
          295,
          190,
          124,
          67,
          47,
          37,
          25,
          31,
          19,
          6,
          6,
          5,
          97
        ],
        "bin_centers": [
          2.6173,
          7.8518,
          13.0863,
          18.3209,
          23.5554,
          28.7899,
          34.0244,
          39.259,
          44.4935,
          49.728,
          54.9625,
          60.1971,
          65.4316,
          70.6661,
          75.9006,
          81.1351
        ]
      },
      "center": 1.347645,
      "scale": 1.159253,
      "transform": "log1p",
      "sample_scope": "last_snapshot"
    },
    {
      "feature": "geom_width",
      "display_name": "width",
      "n": 7954,
      "binning": "zscore",
      "bins": [
        {
          "bin_index": 0,
          "band": "below_typical",
          "label": "Below typical",
          "range_label": "16 \u2013 39.5",
          "min": 16.0,
          "max": 39.470138,
          "median_feature": 31.0,
          "n": 1654,
          "breakout_success_rate": 46.43,
          "breakdown_success_rate": 51.63,
          "sideways_rate": 1.94,
          "forming_rate": 0.0,
          "both_cleared_rate": 37.73,
          "breakout_success_rate_ci95": [
            44.04,
            48.84
          ],
          "breakdown_success_rate_ci95": [
            49.22,
            54.03
          ],
          "sideways_rate_ci95": [
            1.37,
            2.72
          ],
          "forming_rate_ci95": [
            0.0,
            0.23
          ],
          "mean_ret_10c": -0.029,
          "mean_mfe": 5.255,
          "mean_mae": -5.124,
          "expected_hit_rate": 70.19,
          "max_up_natr": {
            "n": 1654,
            "mean": 2.496,
            "median": 1.645,
            "p25": 0.663,
            "p75": 3.153
          },
          "max_down_natr": {
            "n": 1654,
            "mean": -2.565,
            "median": -1.848,
            "p25": -3.294,
            "p75": -0.859
          },
          "median_max_up_natr": 1.645,
          "median_max_down_natr": -1.848,
          "mean_max_up_natr": 2.496,
          "mean_max_down_natr": -2.565,
          "p25_max_up_natr": 0.663,
          "p75_max_up_natr": 3.153,
          "p25_max_down_natr": -3.294,
          "p75_max_down_natr": -0.859,
          "outcome_natr_moves": {
            "breakout": {
              "n": 768,
              "max_up_natr": {
                "n": 768,
                "mean": 3.439,
                "median": 2.522,
                "p25": 1.584,
                "p75": 4.07
              },
              "max_down_natr": {
                "n": 768,
                "mean": -1.658,
                "median": -0.971,
                "p25": -2.212,
                "p75": -0.442
              }
            },
            "breakdown": {
              "n": 854,
              "max_up_natr": {
                "n": 854,
                "mean": 1.715,
                "median": 0.887,
                "p25": 0.343,
                "p75": 2.047
              },
              "max_down_natr": {
                "n": 854,
                "mean": -3.436,
                "median": -2.582,
                "p25": -4.036,
                "p75": -1.607
              }
            },
            "sideways": {
              "n": 32,
              "max_up_natr": {
                "n": 32,
                "mean": 0.674,
                "median": 0.656,
                "p25": 0.448,
                "p75": 0.794
              },
              "max_down_natr": {
                "n": 32,
                "mean": -1.057,
                "median": -0.877,
                "p25": -1.198,
                "p75": -0.65
              }
            },
            "forming": {
              "n": 0,
              "max_up_natr": {
                "n": 0,
                "mean": null,
                "median": null,
                "p25": null,
                "p75": null
              },
              "max_down_natr": {
                "n": 0,
                "mean": null,
                "median": null,
                "p25": null,
                "p75": null
              }
            }
          }
        },
        {
          "bin_index": 1,
          "band": "typical",
          "label": "Typical",
          "range_label": "39.5 \u2013 122",
          "min": 39.470138,
          "max": 122.223601,
          "median_feature": 78.0,
          "n": 4846,
          "breakout_success_rate": 51.53,
          "breakdown_success_rate": 42.45,
          "sideways_rate": 6.02,
          "forming_rate": 0.0,
          "both_cleared_rate": 37.12,
          "breakout_success_rate_ci95": [
            50.12,
            52.93
          ],
          "breakdown_success_rate_ci95": [
            41.06,
            43.84
          ],
          "sideways_rate_ci95": [
            5.39,
            6.73
          ],
          "forming_rate_ci95": [
            0.0,
            0.08
          ],
          "mean_ret_10c": 0.317,
          "mean_mfe": 5.732,
          "mean_mae": -4.644,
          "expected_hit_rate": 74.59,
          "max_up_natr": {
            "n": 4846,
            "mean": 2.828,
            "median": 1.961,
            "p25": 0.749,
            "p75": 3.718
          },
          "max_down_natr": {
            "n": 4846,
            "mean": -2.503,
            "median": -1.81,
            "p25": -3.434,
            "p75": -0.616
          },
          "median_max_up_natr": 1.961,
          "median_max_down_natr": -1.81,
          "mean_max_up_natr": 2.828,
          "mean_max_down_natr": -2.503,
          "p25_max_up_natr": 0.749,
          "p75_max_up_natr": 3.718,
          "p25_max_down_natr": -3.434,
          "p75_max_down_natr": -0.616,
          "outcome_natr_moves": {
            "breakout": {
              "n": 2497,
              "max_up_natr": {
                "n": 2497,
                "mean": 4.06,
                "median": 3.016,
                "p25": 1.903,
                "p75": 4.785
              },
              "max_down_natr": {
                "n": 2497,
                "mean": -1.404,
                "median": -0.724,
                "p25": -1.827,
                "p75": -0.235
              }
            },
            "breakdown": {
              "n": 2057,
              "max_up_natr": {
                "n": 2057,
                "mean": 1.511,
                "median": 0.692,
                "p25": 0.211,
                "p75": 1.953
              },
              "max_down_natr": {
                "n": 2057,
                "mean": -3.911,
                "median": -3.155,
                "p25": -4.852,
                "p75": -2.023
              }
            },
            "sideways": {
              "n": 292,
              "max_up_natr": {
                "n": 292,
                "mean": 1.569,
                "median": 1.094,
                "p25": 0.564,
                "p75": 2.187
              },
              "max_down_natr": {
                "n": 292,
                "mean": -1.988,
                "median": -1.694,
                "p25": -2.735,
                "p75": -0.799
              }
            },
            "forming": {
              "n": 0,
              "max_up_natr": {
                "n": 0,
                "mean": null,
                "median": null,
                "p25": null,
                "p75": null
              },
              "max_down_natr": {
                "n": 0,
                "mean": null,
                "median": null,
                "p25": null,
                "p75": null
              }
            }
          }
        },
        {
          "bin_index": 2,
          "band": "elevated",
          "label": "Elevated",
          "range_label": "122 \u2013 164",
          "min": 122.223601,
          "max": 163.600332,
          "median_feature": 139.0,
          "n": 1196,
          "breakout_success_rate": 49.5,
          "breakdown_success_rate": 38.71,
          "sideways_rate": 11.79,
          "forming_rate": 0.0,
          "both_cleared_rate": 35.62,
          "breakout_success_rate_ci95": [
            46.67,
            52.33
          ],
          "breakdown_success_rate_ci95": [
            35.99,
            41.5
          ],
          "sideways_rate_ci95": [
            10.08,
            13.74
          ],
          "forming_rate_ci95": [
            0.0,
            0.32
          ],
          "mean_ret_10c": 0.362,
          "mean_mfe": 5.449,
          "mean_mae": -4.601,
          "expected_hit_rate": 71.85,
          "max_up_natr": {
            "n": 1196,
            "mean": 2.778,
            "median": 1.847,
            "p25": 0.706,
            "p75": 3.57
          },
          "max_down_natr": {
            "n": 1196,
            "mean": -2.575,
            "median": -1.843,
            "p25": -3.508,
            "p75": -0.592
          },
          "median_max_up_natr": 1.847,
          "median_max_down_natr": -1.843,
          "mean_max_up_natr": 2.778,
          "mean_max_down_natr": -2.575,
          "p25_max_up_natr": 0.706,
          "p75_max_up_natr": 3.57,
          "p25_max_down_natr": -3.508,
          "p75_max_down_natr": -0.592,
          "outcome_natr_moves": {
            "breakout": {
              "n": 592,
              "max_up_natr": {
                "n": 592,
                "mean": 4.244,
                "median": 3.118,
                "p25": 1.954,
                "p75": 5.178
              },
              "max_down_natr": {
                "n": 592,
                "mean": -1.382,
                "median": -0.678,
                "p25": -1.853,
                "p75": -0.188
              }
            },
            "breakdown": {
              "n": 463,
              "max_up_natr": {
                "n": 463,
                "mean": 1.261,
                "median": 0.604,
                "p25": 0.175,
                "p75": 1.471
              },
              "max_down_natr": {
                "n": 463,
                "mean": -4.259,
                "median": -3.366,
                "p25": -4.9,
                "p75": -2.188
              }
            },
            "sideways": {
              "n": 141,
              "max_up_natr": {
                "n": 141,
                "mean": 1.606,
                "median": 1.329,
                "p25": 0.596,
                "p75": 2.041
              },
              "max_down_natr": {
                "n": 141,
                "mean": -2.053,
                "median": -1.709,
                "p25": -2.781,
                "p75": -0.93
              }
            },
            "forming": {
              "n": 0,
              "max_up_natr": {
                "n": 0,
                "mean": null,
                "median": null,
                "p25": null,
                "p75": null
              },
              "max_down_natr": {
                "n": 0,
                "mean": null,
                "median": null,
                "p25": null,
                "p75": null
              }
            }
          }
        },
        {
          "bin_index": 3,
          "band": "extreme",
          "label": "Extreme",
          "range_label": "164 \u2013 187",
          "min": 163.600332,
          "max": 187.0,
          "median_feature": 173.0,
          "n": 258,
          "breakout_success_rate": 49.61,
          "breakdown_success_rate": 37.98,
          "sideways_rate": 12.41,
          "forming_rate": 0.0,
          "both_cleared_rate": 38.37,
          "breakout_success_rate_ci95": [
            43.56,
            55.67
          ],
          "breakdown_success_rate_ci95": [
            32.28,
            44.04
          ],
          "sideways_rate_ci95": [
            8.92,
            16.99
          ],
          "forming_rate_ci95": [
            0.0,
            1.47
          ],
          "mean_ret_10c": 0.737,
          "mean_mfe": 5.772,
          "mean_mae": -4.345,
          "expected_hit_rate": 69.39,
          "max_up_natr": {
            "n": 258,
            "mean": 3.255,
            "median": 2.003,
            "p25": 0.692,
            "p75": 3.611
          },
          "max_down_natr": {
            "n": 258,
            "mean": -2.508,
            "median": -1.94,
            "p25": -3.583,
            "p75": -0.602
          },
          "median_max_up_natr": 2.003,
          "median_max_down_natr": -1.94,
          "mean_max_up_natr": 3.255,
          "mean_max_down_natr": -2.508,
          "p25_max_up_natr": 0.692,
          "p75_max_up_natr": 3.611,
          "p25_max_down_natr": -3.583,
          "p75_max_down_natr": -0.602,
          "outcome_natr_moves": {
            "breakout": {
              "n": 128,
              "max_up_natr": {
                "n": 128,
                "mean": 5.071,
                "median": 3.336,
                "p25": 1.968,
                "p75": 5.371
              },
              "max_down_natr": {
                "n": 128,
                "mean": -1.529,
                "median": -0.748,
                "p25": -2.083,
                "p75": -0.173
              }
            },
            "breakdown": {
              "n": 98,
              "max_up_natr": {
                "n": 98,
                "mean": 1.39,
                "median": 0.612,
                "p25": 0.158,
                "p75": 1.947
              },
              "max_down_natr": {
                "n": 98,
                "mean": -3.957,
                "median": -3.238,
                "p25": -5.093,
                "p75": -2.157
              }
            },
            "sideways": {
              "n": 32,
              "max_up_natr": {
                "n": 32,
                "mean": 1.705,
                "median": 1.484,
                "p25": 0.598,
                "p75": 2.409
              },
              "max_down_natr": {
                "n": 32,
                "mean": -1.985,
                "median": -1.62,
                "p25": -2.648,
                "p75": -0.805
              }
            },
            "forming": {
              "n": 0,
              "max_up_natr": {
                "n": 0,
                "mean": null,
                "median": null,
                "p25": null,
                "p75": null
              },
              "max_down_natr": {
                "n": 0,
                "mean": null,
                "median": null,
                "p25": null,
                "p75": null
              }
            }
          }
        }
      ],
      "histogram": {
        "bin_edges": [
          21.0,
          30.75,
          40.5,
          50.25,
          60.0,
          69.75,
          79.5,
          89.25,
          99.0,
          108.75,
          118.5,
          128.25,
          138.0,
          147.75,
          157.5,
          167.25,
          177.0
        ],
        "counts": [
          809,
          938,
          653,
          565,
          610,
          603,
          600,
          562,
          509,
          471,
          422,
          312,
          277,
          228,
          188,
          207
        ],
        "bin_centers": [
          25.875,
          35.625,
          45.375,
          55.125,
          64.875,
          74.625,
          84.375,
          94.125,
          103.875,
          113.625,
          123.375,
          133.125,
          142.875,
          152.625,
          162.375,
          172.125
        ]
      },
      "center": 80.846869,
      "scale": 41.376731,
      "transform": null,
      "sample_scope": "last_snapshot"
    },
    {
      "feature": "geom_breakout_potential",
      "display_name": "breakout potential",
      "n": 9482,
      "binning": "quantile",
      "bins": [
        {
          "bin_index": 0,
          "label": "Q1",
          "range_label": "-0.001 \u2013 0.6",
          "min": -0.001,
          "max": 0.6,
          "median_feature": 0.0,
          "n": 7589,
          "breakout_success_rate": 49.53,
          "breakdown_success_rate": 43.64,
          "sideways_rate": 6.83,
          "forming_rate": 0.0,
          "both_cleared_rate": 37.59,
          "breakout_success_rate_ci95": [
            48.41,
            50.66
          ],
          "breakdown_success_rate_ci95": [
            42.53,
            44.76
          ],
          "sideways_rate_ci95": [
            6.28,
            7.42
          ],
          "forming_rate_ci95": [
            0.0,
            0.05
          ],
          "mean_ret_10c": 0.348,
          "mean_mfe": 5.456,
          "mean_mae": -4.517,
          "expected_hit_rate": 73.69,
          "max_up_natr": {
            "n": 7589,
            "mean": 2.782,
            "median": 1.901,
            "p25": 0.723,
            "p75": 3.631
          },
          "max_down_natr": {
            "n": 7589,
            "mean": -2.519,
            "median": -1.822,
            "p25": -3.416,
            "p75": -0.679
          },
          "median_max_up_natr": 1.901,
          "median_max_down_natr": -1.822,
          "mean_max_up_natr": 2.782,
          "mean_max_down_natr": -2.519,
          "p25_max_up_natr": 0.723,
          "p75_max_up_natr": 3.631,
          "p25_max_down_natr": -3.416,
          "p75_max_down_natr": -0.679,
          "outcome_natr_moves": {
            "breakout": {
              "n": 3759,
              "max_up_natr": {
                "n": 3759,
                "mean": 4.06,
                "median": 2.992,
                "p25": 1.864,
                "p75": 4.78
              },
              "max_down_natr": {
                "n": 3759,
                "mean": -1.448,
                "median": -0.778,
                "p25": -1.883,
                "p75": -0.253
              }
            },
            "breakdown": {
              "n": 3312,
              "max_up_natr": {
                "n": 3312,
                "mean": 1.528,
                "median": 0.723,
                "p25": 0.226,
                "p75": 1.951
              },
              "max_down_natr": {
                "n": 3312,
                "mean": -3.826,
                "median": -3.058,
                "p25": -4.68,
                "p75": -1.967
              }
            },
            "sideways": {
              "n": 518,
              "max_up_natr": {
                "n": 518,
                "mean": 1.527,
                "median": 1.141,
                "p25": 0.566,
                "p75": 2.082
              },
              "max_down_natr": {
                "n": 518,
                "mean": -1.932,
                "median": -1.565,
                "p25": -2.638,
                "p75": -0.804
              }
            },
            "forming": {
              "n": 0,
              "max_up_natr": {
                "n": 0,
                "mean": null,
                "median": null,
                "p25": null,
                "p75": null
              },
              "max_down_natr": {
                "n": 0,
                "mean": null,
                "median": null,
                "p25": null,
                "p75": null
              }
            }
          }
        },
        {
          "bin_index": 1,
          "label": "Q2",
          "range_label": "0.6 \u2013 1",
          "min": 0.6,
          "max": 1.0,
          "median_feature": 0.8,
          "n": 1893,
          "breakout_success_rate": 46.38,
          "breakdown_success_rate": 51.45,
          "sideways_rate": 2.17,
          "forming_rate": 0.0,
          "both_cleared_rate": 37.67,
          "breakout_success_rate_ci95": [
            44.14,
            48.63
          ],
          "breakdown_success_rate_ci95": [
            49.2,
            53.7
          ],
          "sideways_rate_ci95": [
            1.6,
            2.92
          ],
          "forming_rate_ci95": [
            0.0,
            0.2
          ],
          "mean_ret_10c": -0.212,
          "mean_mfe": 6.3,
          "mean_mae": -5.846,
          "expected_hit_rate": 74.59,
          "max_up_natr": {
            "n": 1893,
            "mean": 2.469,
            "median": 1.641,
            "p25": 0.693,
            "p75": 3.07
          },
          "max_down_natr": {
            "n": 1893,
            "mean": -2.438,
            "median": -1.771,
            "p25": -3.098,
            "p75": -0.834
          },
          "median_max_up_natr": 1.641,
          "median_max_down_natr": -1.771,
          "mean_max_up_natr": 2.469,
          "mean_max_down_natr": -2.438,
          "p25_max_up_natr": 0.693,
          "p75_max_up_natr": 3.07,
          "p25_max_down_natr": -3.098,
          "p75_max_down_natr": -0.834,
          "outcome_natr_moves": {
            "breakout": {
              "n": 878,
              "max_up_natr": {
                "n": 878,
                "mean": 3.538,
                "median": 2.426,
                "p25": 1.564,
                "p75": 3.957
              },
              "max_down_natr": {
                "n": 878,
                "mean": -1.602,
                "median": -0.978,
                "p25": -2.208,
                "p75": -0.429
              }
            },
            "breakdown": {
              "n": 974,
              "max_up_natr": {
                "n": 974,
                "mean": 1.57,
                "median": 0.843,
                "p25": 0.35,
                "p75": 2.047
              },
              "max_down_natr": {
                "n": 974,
                "mean": -3.264,
                "median": -2.41,
                "p25": -3.899,
                "p75": -1.547
              }
            },
            "sideways": {
              "n": 41,
              "max_up_natr": {
                "n": 41,
                "mean": 0.929,
                "median": 0.962,
                "p25": 0.667,
                "p75": 1.12
              },
              "max_down_natr": {
                "n": 41,
                "mean": -0.73,
                "median": -0.709,
                "p25": -0.891,
                "p75": -0.455
              }
            },
            "forming": {
              "n": 0,
              "max_up_natr": {
                "n": 0,
                "mean": null,
                "median": null,
                "p25": null,
                "p75": null
              },
              "max_down_natr": {
                "n": 0,
                "mean": null,
                "median": null,
                "p25": null,
                "p75": null
              }
            }
          }
        }
      ],
      "histogram": {
        "bin_edges": [
          0.0,
          0.0562,
          0.1125,
          0.1687,
          0.225,
          0.2812,
          0.3375,
          0.3937,
          0.45,
          0.5062,
          0.5625,
          0.6187,
          0.675,
          0.7312,
          0.7875,
          0.8438,
          0.9
        ],
        "counts": [
          6205,
          6,
          0,
          0,
          0,
          69,
          0,
          166,
          224,
          0,
          919,
          0,
          480,
          0,
          1101,
          312
        ],
        "bin_centers": [
          0.0281,
          0.0844,
          0.1406,
          0.1969,
          0.2531,
          0.3094,
          0.3656,
          0.4219,
          0.4781,
          0.5344,
          0.5906,
          0.6469,
          0.7031,
          0.7594,
          0.8156,
          0.8719
        ]
      },
      "sample_scope": "last_snapshot"
    },
    {
      "feature": "geom_resistance_slope",
      "display_name": "resistance slope",
      "n": 9279,
      "binning": "quantile",
      "bins": [
        {
          "bin_index": 0,
          "label": "Q1",
          "range_label": "-1.17e+03 \u2013 -0.0843",
          "min": -1170.518,
          "max": -0.0843,
          "median_feature": -0.1675,
          "n": 2320,
          "breakout_success_rate": 74.91,
          "breakdown_success_rate": 19.27,
          "sideways_rate": 5.82,
          "forming_rate": 0.0,
          "both_cleared_rate": 34.61,
          "breakout_success_rate_ci95": [
            73.11,
            76.64
          ],
          "breakdown_success_rate_ci95": [
            17.71,
            20.92
          ],
          "sideways_rate_ci95": [
            4.94,
            6.85
          ],
          "forming_rate_ci95": [
            0.0,
            0.17
          ],
          "mean_ret_10c": 1.199,
          "mean_mfe": 7.82,
          "mean_mae": -5.093,
          "expected_hit_rate": 76.79,
          "max_up_natr": {
            "n": 2320,
            "mean": 2.907,
            "median": 2.278,
            "p25": 1.232,
            "p75": 3.75
          },
          "max_down_natr": {
            "n": 2320,
            "mean": -2.045,
            "median": -1.148,
            "p25": -2.64,
            "p75": -0.336
          },
          "median_max_up_natr": 2.278,
          "median_max_down_natr": -1.148,
          "mean_max_up_natr": 2.907,
          "mean_max_down_natr": -2.045,
          "p25_max_up_natr": 1.232,
          "p75_max_up_natr": 3.75,
          "p25_max_down_natr": -2.64,
          "p75_max_down_natr": -0.336,
          "outcome_natr_moves": {
            "breakout": {
              "n": 1738,
              "max_up_natr": {
                "n": 1738,
                "mean": 3.471,
                "median": 2.766,
                "p25": 1.755,
                "p75": 4.185
              },
              "max_down_natr": {
                "n": 1738,
                "mean": -1.345,
                "median": -0.686,
                "p25": -1.694,
                "p75": -0.202
              }
            },
            "breakdown": {
              "n": 447,
              "max_up_natr": {
                "n": 447,
                "mean": 1.315,
                "median": 0.65,
                "p25": 0.215,
                "p75": 1.736
              },
              "max_down_natr": {
                "n": 447,
                "mean": -4.758,
                "median": -3.828,
                "p25": -5.828,
                "p75": -2.253
              }
            },
            "sideways": {
              "n": 135,
              "max_up_natr": {
                "n": 135,
                "mean": 0.907,
                "median": 0.7,
                "p25": 0.456,
                "p75": 1.179
              },
              "max_down_natr": {
                "n": 135,
                "mean": -2.082,
                "median": -1.806,
                "p25": -2.591,
                "p75": -1.164
              }
            },
            "forming": {
              "n": 0,
              "max_up_natr": {
                "n": 0,
                "mean": null,
                "median": null,
                "p25": null,
                "p75": null
              },
              "max_down_natr": {
                "n": 0,
                "mean": null,
                "median": null,
                "p25": null,
                "p75": null
              }
            }
          }
        },
        {
          "bin_index": 1,
          "label": "Q2",
          "range_label": "-0.0843 \u2013 -1.58e-05",
          "min": -0.0843,
          "max": -0.0,
          "median_feature": -0.0285,
          "n": 2320,
          "breakout_success_rate": 67.84,
          "breakdown_success_rate": 26.16,
          "sideways_rate": 6.0,
          "forming_rate": 0.0,
          "both_cleared_rate": 37.33,
          "breakout_success_rate_ci95": [
            65.92,
            69.71
          ],
          "breakdown_success_rate_ci95": [
            24.42,
            27.99
          ],
          "sideways_rate_ci95": [
            5.1,
            7.03
          ],
          "forming_rate_ci95": [
            0.0,
            0.17
          ],
          "mean_ret_10c": 0.28,
          "mean_mfe": 4.592,
          "mean_mae": -3.654,
          "expected_hit_rate": 70.02,
          "max_up_natr": {
            "n": 2320,
            "mean": 2.956,
            "median": 2.096,
            "p25": 0.99,
            "p75": 3.783
          },
          "max_down_natr": {
            "n": 2320,
            "mean": -2.316,
            "median": -1.524,
            "p25": -3.052,
            "p75": -0.513
          },
          "median_max_up_natr": 2.096,
          "median_max_down_natr": -1.524,
          "mean_max_up_natr": 2.956,
          "mean_max_down_natr": -2.316,
          "p25_max_up_natr": 0.99,
          "p75_max_up_natr": 3.783,
          "p25_max_down_natr": -3.052,
          "p75_max_down_natr": -0.513,
          "outcome_natr_moves": {
            "breakout": {
              "n": 1574,
              "max_up_natr": {
                "n": 1574,
                "mean": 3.742,
                "median": 2.745,
                "p25": 1.66,
                "p75": 4.46
              },
              "max_down_natr": {
                "n": 1574,
                "mean": -1.514,
                "median": -0.89,
                "p25": -2.116,
                "p75": -0.288
              }
            },
            "breakdown": {
              "n": 607,
              "max_up_natr": {
                "n": 607,
                "mean": 1.301,
                "median": 0.594,
                "p25": 0.227,
                "p75": 1.681
              },
              "max_down_natr": {
                "n": 607,
                "mean": -4.388,
                "median": -3.208,
                "p25": -5.364,
                "p75": -2.026
              }
            },
            "sideways": {
              "n": 139,
              "max_up_natr": {
                "n": 139,
                "mean": 1.284,
                "median": 0.929,
                "p25": 0.461,
                "p75": 1.745
              },
              "max_down_natr": {
                "n": 139,
                "mean": -2.355,
                "median": -2.0,
                "p25": -3.244,
                "p75": -1.02
              }
            },
            "forming": {
              "n": 0,
              "max_up_natr": {
                "n": 0,
                "mean": null,
                "median": null,
                "p25": null,
                "p75": null
              },
              "max_down_natr": {
                "n": 0,
                "mean": null,
                "median": null,
                "p25": null,
                "p75": null
              }
            }
          }
        },
        {
          "bin_index": 2,
          "label": "Q3",
          "range_label": "-1.58e-05 \u2013 0.0242",
          "min": -0.0,
          "max": 0.0242,
          "median_feature": 0.0,
          "n": 2319,
          "breakout_success_rate": 33.12,
          "breakdown_success_rate": 64.25,
          "sideways_rate": 2.63,
          "forming_rate": 0.0,
          "both_cleared_rate": 38.72,
          "breakout_success_rate_ci95": [
            31.23,
            35.06
          ],
          "breakdown_success_rate_ci95": [
            62.28,
            66.18
          ],
          "sideways_rate_ci95": [
            2.05,
            3.36
          ],
          "forming_rate_ci95": [
            0.0,
            0.17
          ],
          "mean_ret_10c": -0.159,
          "mean_mfe": 4.786,
          "mean_mae": -4.813,
          "expected_hit_rate": 73.34,
          "max_up_natr": {
            "n": 2319,
            "mean": 2.371,
            "median": 1.551,
            "p25": 0.587,
            "p75": 3.083
          },
          "max_down_natr": {
            "n": 2319,
            "mean": -2.626,
            "median": -1.947,
            "p25": -3.372,
            "p75": -0.975
          },
          "median_max_up_natr": 1.551,
          "median_max_down_natr": -1.947,
          "mean_max_up_natr": 2.371,
          "mean_max_down_natr": -2.626,
          "p25_max_up_natr": 0.587,
          "p75_max_up_natr": 3.083,
          "p25_max_down_natr": -3.372,
          "p75_max_down_natr": -0.975,
          "outcome_natr_moves": {
            "breakout": {
              "n": 768,
              "max_up_natr": {
                "n": 768,
                "mean": 3.811,
                "median": 2.692,
                "p25": 1.716,
                "p75": 4.319
              },
              "max_down_natr": {
                "n": 768,
                "mean": -1.563,
                "median": -0.908,
                "p25": -2.116,
                "p75": -0.401
              }
            },
            "breakdown": {
              "n": 1490,
              "max_up_natr": {
                "n": 1490,
                "mean": 1.673,
                "median": 0.919,
                "p25": 0.357,
                "p75": 2.231
              },
              "max_down_natr": {
                "n": 1490,
                "mean": -3.241,
                "median": -2.465,
                "p25": -3.91,
                "p75": -1.55
              }
            },
            "sideways": {
              "n": 61,
              "max_up_natr": {
                "n": 61,
                "mean": 1.267,
                "median": 1.084,
                "p25": 0.677,
                "p75": 1.515
              },
              "max_down_natr": {
                "n": 61,
                "mean": -0.993,
                "median": -0.761,
                "p25": -1.069,
                "p75": -0.557
              }
            },
            "forming": {
              "n": 0,
              "max_up_natr": {
                "n": 0,
                "mean": null,
                "median": null,
                "p25": null,
                "p75": null
              },
              "max_down_natr": {
                "n": 0,
                "mean": null,
                "median": null,
                "p25": null,
                "p75": null
              }
            }
          }
        },
        {
          "bin_index": 3,
          "label": "Q4",
          "range_label": "0.0242 \u2013 329",
          "min": 0.0242,
          "max": 329.485,
          "median_feature": 0.1154,
          "n": 2320,
          "breakout_success_rate": 19.7,
          "breakdown_success_rate": 71.55,
          "sideways_rate": 8.75,
          "forming_rate": 0.0,
          "both_cleared_rate": 40.39,
          "breakout_success_rate_ci95": [
            18.13,
            21.37
          ],
          "breakdown_success_rate_ci95": [
            69.68,
            73.35
          ],
          "sideways_rate_ci95": [
            7.67,
            9.97
          ],
          "forming_rate_ci95": [
            0.0,
            0.17
          ],
          "mean_ret_10c": -0.447,
          "mean_mfe": 5.245,
          "mean_mae": -5.61,
          "expected_hit_rate": 75.47,
          "max_up_natr": {
            "n": 2320,
            "mean": 2.665,
            "median": 1.33,
            "p25": 0.318,
            "p75": 3.249
          },
          "max_down_natr": {
            "n": 2320,
            "mean": -3.07,
            "median": -2.61,
            "p25": -4.057,
            "p75": -1.41
          },
          "median_max_up_natr": 1.33,
          "median_max_down_natr": -2.61,
          "mean_max_up_natr": 2.665,
          "mean_max_down_natr": -3.07,
          "p25_max_up_natr": 0.318,
          "p75_max_up_natr": 3.249,
          "p25_max_down_natr": -4.057,
          "p75_max_down_natr": -1.41,
          "outcome_natr_moves": {
            "breakout": {
              "n": 457,
              "max_up_natr": {
                "n": 457,
                "mean": 6.848,
                "median": 5.066,
                "p25": 2.987,
                "p75": 8.739
              },
              "max_down_natr": {
                "n": 457,
                "mean": -1.813,
                "median": -0.965,
                "p25": -2.729,
                "p75": -0.297
              }
            },
            "breakdown": {
              "n": 1660,
              "max_up_natr": {
                "n": 1660,
                "mean": 1.579,
                "median": 0.712,
                "p25": 0.198,
                "p75": 1.954
              },
              "max_down_natr": {
                "n": 1660,
                "mean": -3.593,
                "median": -3.041,
                "p25": -4.511,
                "p75": -2.026
              }
            },
            "sideways": {
              "n": 203,
              "max_up_natr": {
                "n": 203,
                "mean": 2.134,
                "median": 1.78,
                "p25": 1.05,
                "p75": 2.796
              },
              "max_down_natr": {
                "n": 203,
                "mean": -1.628,
                "median": -1.054,
                "p25": -2.235,
                "p75": -0.584
              }
            },
            "forming": {
              "n": 0,
              "max_up_natr": {
                "n": 0,
                "mean": null,
                "median": null,
                "p25": null,
                "p75": null
              },
              "max_down_natr": {
                "n": 0,
                "mean": null,
                "median": null,
                "p25": null,
                "p75": null
              }
            }
          }
        }
      ],
      "histogram": {
        "bin_edges": [
          -0.5965,
          -0.5216,
          -0.4468,
          -0.3719,
          -0.2971,
          -0.2222,
          -0.1474,
          -0.0725,
          0.0023,
          0.0772,
          0.152,
          0.2269,
          0.3017,
          0.3766,
          0.4514,
          0.5263,
          0.6011
        ],
        "counts": [
          130,
          54,
          104,
          146,
          318,
          642,
          1151,
          4045,
          1134,
          677,
          363,
          164,
          114,
          73,
          47,
          117
        ],
        "bin_centers": [
          -0.559,
          -0.4842,
          -0.4093,
          -0.3345,
          -0.2596,
          -0.1848,
          -0.1099,
          -0.0351,
          0.0397,
          0.1146,
          0.1894,
          0.2643,
          0.3391,
          0.414,
          0.4888,
          0.5637
        ]
      },
      "sample_scope": "last_snapshot"
    },
    {
      "feature": "geom_support_slope",
      "display_name": "support slope",
      "n": 9279,
      "binning": "quantile",
      "bins": [
        {
          "bin_index": 0,
          "label": "Q1",
          "range_label": "-701 \u2013 -0.0754",
          "min": -701.101,
          "max": -0.0754,
          "median_feature": -0.1658,
          "n": 2320,
          "breakout_success_rate": 73.62,
          "breakdown_success_rate": 15.22,
          "sideways_rate": 11.16,
          "forming_rate": 0.0,
          "both_cleared_rate": 35.69,
          "breakout_success_rate_ci95": [
            71.79,
            75.37
          ],
          "breakdown_success_rate_ci95": [
            13.81,
            16.73
          ],
          "sideways_rate_ci95": [
            9.95,
            12.51
          ],
          "forming_rate_ci95": [
            0.0,
            0.17
          ],
          "mean_ret_10c": 1.225,
          "mean_mfe": 7.764,
          "mean_mae": -4.936,
          "expected_hit_rate": 76.24,
          "max_up_natr": {
            "n": 2320,
            "mean": 3.101,
            "median": 2.378,
            "p25": 1.271,
            "p75": 3.911
          },
          "max_down_natr": {
            "n": 2320,
            "mean": -2.102,
            "median": -1.179,
            "p25": -2.756,
            "p75": -0.345
          },
          "median_max_up_natr": 2.378,
          "median_max_down_natr": -1.179,
          "mean_max_up_natr": 3.101,
          "mean_max_down_natr": -2.102,
          "p25_max_up_natr": 1.271,
          "p75_max_up_natr": 3.911,
          "p25_max_down_natr": -2.756,
          "p75_max_down_natr": -0.345,
          "outcome_natr_moves": {
            "breakout": {
              "n": 1708,
              "max_up_natr": {
                "n": 1708,
                "mean": 3.712,
                "median": 2.842,
                "p25": 1.801,
                "p75": 4.316
              },
              "max_down_natr": {
                "n": 1708,
                "mean": -1.329,
                "median": -0.705,
                "p25": -1.748,
                "p75": -0.215
              }
            },
            "breakdown": {
              "n": 353,
              "max_up_natr": {
                "n": 353,
                "mean": 1.546,
                "median": 0.658,
                "p25": 0.253,
                "p75": 2.366
              },
              "max_down_natr": {
                "n": 353,
                "mean": -5.619,
                "median": -4.488,
                "p25": -7.12,
                "p75": -2.74
              }
            },
            "sideways": {
              "n": 259,
              "max_up_natr": {
                "n": 259,
                "mean": 1.19,
                "median": 0.832,
                "p25": 0.453,
                "p75": 1.63
              },
              "max_down_natr": {
                "n": 259,
                "mean": -2.4,
                "median": -2.017,
                "p25": -3.179,
                "p75": -1.22
              }
            },
            "forming": {
              "n": 0,
              "max_up_natr": {
                "n": 0,
                "mean": null,
                "median": null,
                "p25": null,
                "p75": null
              },
              "max_down_natr": {
                "n": 0,
                "mean": null,
                "median": null,
                "p25": null,
                "p75": null
              }
            }
          }
        },
        {
          "bin_index": 1,
          "label": "Q2",
          "range_label": "-0.0754 \u2013 0",
          "min": -0.0754,
          "max": 0.0,
          "median_feature": -0.0004,
          "n": 3015,
          "breakout_success_rate": 62.92,
          "breakdown_success_rate": 33.33,
          "sideways_rate": 3.75,
          "forming_rate": 0.0,
          "both_cleared_rate": 37.91,
          "breakout_success_rate_ci95": [
            61.18,
            64.63
          ],
          "breakdown_success_rate_ci95": [
            31.67,
            35.04
          ],
          "sideways_rate_ci95": [
            3.13,
            4.49
          ],
          "forming_rate_ci95": [
            0.0,
            0.13
          ],
          "mean_ret_10c": 0.414,
          "mean_mfe": 5.037,
          "mean_mae": -4.019,
          "expected_hit_rate": 71.25,
          "max_up_natr": {
            "n": 3015,
            "mean": 2.875,
            "median": 1.981,
            "p25": 0.912,
            "p75": 3.758
          },
          "max_down_natr": {
            "n": 3015,
            "mean": -2.454,
            "median": -1.625,
            "p25": -3.196,
            "p75": -0.607
          },
          "median_max_up_natr": 1.981,
          "median_max_down_natr": -1.625,
          "mean_max_up_natr": 2.875,
          "mean_max_down_natr": -2.454,
          "p25_max_up_natr": 0.912,
          "p75_max_up_natr": 3.758,
          "p25_max_down_natr": -3.196,
          "p75_max_down_natr": -0.607,
          "outcome_natr_moves": {
            "breakout": {
              "n": 1897,
              "max_up_natr": {
                "n": 1897,
                "mean": 3.685,
                "median": 2.679,
                "p25": 1.647,
                "p75": 4.409
              },
              "max_down_natr": {
                "n": 1897,
                "mean": -1.596,
                "median": -0.927,
                "p25": -2.184,
                "p75": -0.342
              }
            },
            "breakdown": {
              "n": 1005,
              "max_up_natr": {
                "n": 1005,
                "mean": 1.508,
                "median": 0.714,
                "p25": 0.236,
                "p75": 1.886
              },
              "max_down_natr": {
                "n": 1005,
                "mean": -4.147,
                "median": -3.041,
                "p25": -4.926,
                "p75": -1.899
              }
            },
            "sideways": {
              "n": 113,
              "max_up_natr": {
                "n": 113,
                "mean": 1.427,
                "median": 0.995,
                "p25": 0.483,
                "p75": 1.971
              },
              "max_down_natr": {
                "n": 113,
                "mean": -1.801,
                "median": -1.27,
                "p25": -2.528,
                "p75": -0.864
              }
            },
            "forming": {
              "n": 0,
              "max_up_natr": {
                "n": 0,
                "mean": null,
                "median": null,
                "p25": null,
                "p75": null
              },
              "max_down_natr": {
                "n": 0,
                "mean": null,
                "median": null,
                "p25": null,
                "p75": null
              }
            }
          }
        },
        {
          "bin_index": 2,
          "label": "Q3",
          "range_label": "0 \u2013 0.0369",
          "min": 0.0,
          "max": 0.0369,
          "median_feature": 0.0006,
          "n": 1624,
          "breakout_success_rate": 25.68,
          "breakdown_success_rate": 70.26,
          "sideways_rate": 4.06,
          "forming_rate": 0.0,
          "both_cleared_rate": 39.1,
          "breakout_success_rate_ci95": [
            23.61,
            27.86
          ],
          "breakdown_success_rate_ci95": [
            67.99,
            72.43
          ],
          "sideways_rate_ci95": [
            3.21,
            5.14
          ],
          "forming_rate_ci95": [
            0.0,
            0.24
          ],
          "mean_ret_10c": -0.561,
          "mean_mfe": 4.183,
          "mean_mae": -4.805,
          "expected_hit_rate": 73.78,
          "max_up_natr": {
            "n": 1624,
            "mean": 2.204,
            "median": 1.426,
            "p25": 0.547,
            "p75": 2.849
          },
          "max_down_natr": {
            "n": 1624,
            "mean": -2.57,
            "median": -1.958,
            "p25": -3.265,
            "p75": -1.024
          },
          "median_max_up_natr": 1.426,
          "median_max_down_natr": -1.958,
          "mean_max_up_natr": 2.204,
          "mean_max_down_natr": -2.57,
          "p25_max_up_natr": 0.547,
          "p75_max_up_natr": 2.849,
          "p25_max_down_natr": -3.265,
          "p75_max_down_natr": -1.024,
          "outcome_natr_moves": {
            "breakout": {
              "n": 417,
              "max_up_natr": {
                "n": 417,
                "mean": 3.931,
                "median": 2.727,
                "p25": 1.797,
                "p75": 4.46
              },
              "max_down_natr": {
                "n": 417,
                "mean": -1.337,
                "median": -0.802,
                "p25": -1.742,
                "p75": -0.352
              }
            },
            "breakdown": {
              "n": 1141,
              "max_up_natr": {
                "n": 1141,
                "mean": 1.62,
                "median": 0.944,
                "p25": 0.361,
                "p75": 2.198
              },
              "max_down_natr": {
                "n": 1141,
                "mean": -3.115,
                "median": -2.373,
                "p25": -3.743,
                "p75": -1.529
              }
            },
            "sideways": {
              "n": 66,
              "max_up_natr": {
                "n": 66,
                "mean": 1.393,
                "median": 1.268,
                "p25": 0.859,
                "p75": 1.643
              },
              "max_down_natr": {
                "n": 66,
                "mean": -0.931,
                "median": -0.742,
                "p25": -0.954,
                "p75": -0.551
              }
            },
            "forming": {
              "n": 0,
              "max_up_natr": {
                "n": 0,
                "mean": null,
                "median": null,
                "p25": null,
                "p75": null
              },
              "max_down_natr": {
                "n": 0,
                "mean": null,
                "median": null,
                "p25": null,
                "p75": null
              }
            }
          }
        },
        {
          "bin_index": 3,
          "label": "Q4",
          "range_label": "0.0369 \u2013 390",
          "min": 0.0369,
          "max": 390.43,
          "median_feature": 0.1179,
          "n": 2320,
          "breakout_success_rate": 22.2,
          "breakdown_success_rate": 73.49,
          "sideways_rate": 4.31,
          "forming_rate": 0.0,
          "both_cleared_rate": 38.71,
          "breakout_success_rate_ci95": [
            20.55,
            23.93
          ],
          "breakdown_success_rate_ci95": [
            71.66,
            75.25
          ],
          "sideways_rate_ci95": [
            3.56,
            5.22
          ],
          "forming_rate_ci95": [
            0.0,
            0.17
          ],
          "mean_ret_10c": -0.498,
          "mean_mfe": 5.202,
          "mean_mae": -5.644,
          "expected_hit_rate": 75.19,
          "max_up_natr": {
            "n": 2320,
            "mean": 2.518,
            "median": 1.259,
            "p25": 0.322,
            "p75": 3.156
          },
          "max_down_natr": {
            "n": 2320,
            "mean": -2.967,
            "median": -2.566,
            "p25": -3.989,
            "p75": -1.376
          },
          "median_max_up_natr": 1.259,
          "median_max_down_natr": -2.566,
          "mean_max_up_natr": 2.518,
          "mean_max_down_natr": -2.967,
          "p25_max_up_natr": 0.322,
          "p75_max_up_natr": 3.156,
          "p25_max_down_natr": -3.989,
          "p75_max_down_natr": -1.376,
          "outcome_natr_moves": {
            "breakout": {
              "n": 515,
              "max_up_natr": {
                "n": 515,
                "mean": 5.844,
                "median": 4.438,
                "p25": 2.529,
                "p75": 7.53
              },
              "max_down_natr": {
                "n": 515,
                "mean": -1.735,
                "median": -0.833,
                "p25": -2.494,
                "p75": -0.255
              }
            },
            "breakdown": {
              "n": 1705,
              "max_up_natr": {
                "n": 1705,
                "mean": 1.514,
                "median": 0.693,
                "p25": 0.202,
                "p75": 1.887
              },
              "max_down_natr": {
                "n": 1705,
                "mean": -3.448,
                "median": -2.986,
                "p25": -4.364,
                "p75": -1.962
              }
            },
            "sideways": {
              "n": 100,
              "max_up_natr": {
                "n": 100,
                "mean": 2.499,
                "median": 2.12,
                "p25": 1.439,
                "p75": 3.092
              },
              "max_down_natr": {
                "n": 100,
                "mean": -1.128,
                "median": -0.789,
                "p25": -1.512,
                "p75": -0.537
              }
            },
            "forming": {
              "n": 0,
              "max_up_natr": {
                "n": 0,
                "mean": null,
                "median": null,
                "p25": null,
                "p75": null
              },
              "max_down_natr": {
                "n": 0,
                "mean": null,
                "median": null,
                "p25": null,
                "p75": null
              }
            }
          }
        }
      ],
      "histogram": {
        "bin_edges": [
          -0.5567,
          -0.4829,
          -0.4092,
          -0.3354,
          -0.2616,
          -0.1879,
          -0.1141,
          -0.0403,
          0.0334,
          0.1072,
          0.181,
          0.2547,
          0.3285,
          0.4022,
          0.476,
          0.5498,
          0.6235
        ],
        "counts": [
          139,
          73,
          114,
          234,
          422,
          734,
          1258,
          3926,
          1088,
          594,
          245,
          170,
          81,
          57,
          33,
          111
        ],
        "bin_centers": [
          -0.5198,
          -0.446,
          -0.3723,
          -0.2985,
          -0.2247,
          -0.151,
          -0.0772,
          -0.0035,
          0.0703,
          0.1441,
          0.2178,
          0.2916,
          0.3654,
          0.4391,
          0.5129,
          0.5866
        ]
      },
      "sample_scope": "last_snapshot"
    },
    {
      "feature": "geom_hs_symmetry_score",
      "display_name": "hs symmetry score",
      "n": 1933,
      "binning": "zscore",
      "bins": [
        {
          "bin_index": 0,
          "band": "below_typical",
          "label": "Below typical",
          "range_label": "0 \u2013 0.319",
          "min": 0.0,
          "max": 0.318785,
          "median_feature": 0.2,
          "n": 440,
          "breakout_success_rate": 48.86,
          "breakdown_success_rate": 50.0,
          "sideways_rate": 1.14,
          "forming_rate": 0.0,
          "both_cleared_rate": 33.64,
          "breakout_success_rate_ci95": [
            44.22,
            53.52
          ],
          "breakdown_success_rate_ci95": [
            45.35,
            54.65
          ],
          "sideways_rate_ci95": [
            0.49,
            2.63
          ],
          "forming_rate_ci95": [
            0.0,
            0.87
          ],
          "mean_ret_10c": -0.373,
          "mean_mfe": 5.232,
          "mean_mae": -5.002,
          "expected_hit_rate": 69.77,
          "max_up_natr": {
            "n": 440,
            "mean": 2.466,
            "median": 1.563,
            "p25": 0.681,
            "p75": 2.833
          },
          "max_down_natr": {
            "n": 440,
            "mean": -2.459,
            "median": -1.809,
            "p25": -3.203,
            "p75": -0.838
          },
          "median_max_up_natr": 1.563,
          "median_max_down_natr": -1.809,
          "mean_max_up_natr": 2.466,
          "mean_max_down_natr": -2.459,
          "p25_max_up_natr": 0.681,
          "p75_max_up_natr": 2.833,
          "p25_max_down_natr": -3.203,
          "p75_max_down_natr": -0.838,
          "outcome_natr_moves": {
            "breakout": {
              "n": 215,
              "max_up_natr": {
                "n": 215,
                "mean": 3.451,
                "median": 2.203,
                "p25": 1.501,
                "p75": 3.606
              },
              "max_down_natr": {
                "n": 215,
                "mean": -1.618,
                "median": -0.936,
                "p25": -2.257,
                "p75": -0.462
              }
            },
            "breakdown": {
              "n": 220,
              "max_up_natr": {
                "n": 220,
                "mean": 1.542,
                "median": 0.73,
                "p25": 0.359,
                "p75": 1.929
              },
              "max_down_natr": {
                "n": 220,
                "mean": -3.32,
                "median": -2.419,
                "p25": -3.762,
                "p75": -1.572
              }
            },
            "sideways": {
              "n": 5,
              "max_up_natr": {
                "n": 5,
                "mean": 0.73,
                "median": 0.669,
                "p25": 0.567,
                "p75": 0.977
              },
              "max_down_natr": {
                "n": 5,
                "mean": -0.698,
                "median": -0.86,
                "p25": -0.877,
                "p75": -0.455
              }
            },
            "forming": {
              "n": 0,
              "max_up_natr": {
                "n": 0,
                "mean": null,
                "median": null,
                "p25": null,
                "p75": null
              },
              "max_down_natr": {
                "n": 0,
                "mean": null,
                "median": null,
                "p25": null,
                "p75": null
              }
            }
          }
        },
        {
          "bin_index": 1,
          "band": "typical",
          "label": "Typical",
          "range_label": "0.319 \u2013 0.749",
          "min": 0.318785,
          "max": 0.748882,
          "median_feature": 0.5,
          "n": 1153,
          "breakout_success_rate": 47.53,
          "breakdown_success_rate": 50.74,
          "sideways_rate": 1.73,
          "forming_rate": 0.0,
          "both_cleared_rate": 39.29,
          "breakout_success_rate_ci95": [
            44.66,
            50.41
          ],
          "breakdown_success_rate_ci95": [
            47.85,
            53.62
          ],
          "sideways_rate_ci95": [
            1.13,
            2.66
          ],
          "forming_rate_ci95": [
            0.0,
            0.33
          ],
          "mean_ret_10c": -0.001,
          "mean_mfe": 5.525,
          "mean_mae": -5.116,
          "expected_hit_rate": 72.59,
          "max_up_natr": {
            "n": 1153,
            "mean": 2.545,
            "median": 1.727,
            "p25": 0.695,
            "p75": 3.32
          },
          "max_down_natr": {
            "n": 1153,
            "mean": -2.496,
            "median": -1.78,
            "p25": -3.256,
            "p75": -0.826
          },
          "median_max_up_natr": 1.727,
          "median_max_down_natr": -1.78,
          "mean_max_up_natr": 2.545,
          "mean_max_down_natr": -2.496,
          "p25_max_up_natr": 0.695,
          "p75_max_up_natr": 3.32,
          "p25_max_down_natr": -3.256,
          "p75_max_down_natr": -0.826,
          "outcome_natr_moves": {
            "breakout": {
              "n": 548,
              "max_up_natr": {
                "n": 548,
                "mean": 3.393,
                "median": 2.578,
                "p25": 1.559,
                "p75": 4.081
              },
              "max_down_natr": {
                "n": 548,
                "mean": -1.683,
                "median": -0.987,
                "p25": -2.191,
                "p75": -0.473
              }
            },
            "breakdown": {
              "n": 585,
              "max_up_natr": {
                "n": 585,
                "mean": 1.817,
                "median": 0.975,
                "p25": 0.384,
                "p75": 2.331
              },
              "max_down_natr": {
                "n": 585,
                "mean": -3.318,
                "median": -2.531,
                "p25": -4.055,
                "p75": -1.54
              }
            },
            "sideways": {
              "n": 20,
              "max_up_natr": {
                "n": 20,
                "mean": 0.608,
                "median": 0.656,
                "p25": 0.326,
                "p75": 0.687
              },
              "max_down_natr": {
                "n": 20,
                "mean": -0.727,
                "median": -0.765,
                "p25": -0.891,
                "p75": -0.621
              }
            },
            "forming": {
              "n": 0,
              "max_up_natr": {
                "n": 0,
                "mean": null,
                "median": null,
                "p25": null,
                "p75": null
              },
              "max_down_natr": {
                "n": 0,
                "mean": null,
                "median": null,
                "p25": null,
                "p75": null
              }
            }
          }
        },
        {
          "bin_index": 2,
          "band": "elevated",
          "label": "Elevated",
          "range_label": "0.749 \u2013 0.964",
          "min": 0.748882,
          "max": 0.963931,
          "median_feature": 0.8,
          "n": 279,
          "breakout_success_rate": 49.46,
          "breakdown_success_rate": 49.82,
          "sideways_rate": 0.72,
          "forming_rate": 0.0,
          "both_cleared_rate": 36.56,
          "breakout_success_rate_ci95": [
            43.64,
            55.3
          ],
          "breakdown_success_rate_ci95": [
            44.0,
            55.65
          ],
          "sideways_rate_ci95": [
            0.2,
            2.58
          ],
          "forming_rate_ci95": [
            0.0,
            1.36
          ],
          "mean_ret_10c": 0.065,
          "mean_mfe": 5.096,
          "mean_mae": -5.137,
          "expected_hit_rate": 67.74,
          "max_up_natr": {
            "n": 279,
            "mean": 2.372,
            "median": 1.574,
            "p25": 0.641,
            "p75": 2.944
          },
          "max_down_natr": {
            "n": 279,
            "mean": -2.648,
            "median": -1.853,
            "p25": -3.425,
            "p75": -0.853
          },
          "median_max_up_natr": 1.574,
          "median_max_down_natr": -1.853,
          "mean_max_up_natr": 2.372,
          "mean_max_down_natr": -2.648,
          "p25_max_up_natr": 0.641,
          "p75_max_up_natr": 2.944,
          "p25_max_down_natr": -3.425,
          "p75_max_down_natr": -0.853,
          "outcome_natr_moves": {
            "breakout": {
              "n": 138,
              "max_up_natr": {
                "n": 138,
                "mean": 3.418,
                "median": 2.553,
                "p25": 1.592,
                "p75": 4.328
              },
              "max_down_natr": {
                "n": 138,
                "mean": -1.665,
                "median": -1.005,
                "p25": -2.235,
                "p75": -0.429
              }
            },
            "breakdown": {
              "n": 139,
              "max_up_natr": {
                "n": 139,
                "mean": 1.355,
                "median": 0.756,
                "p25": 0.309,
                "p75": 1.608
              },
              "max_down_natr": {
                "n": 139,
                "mean": -3.65,
                "median": -2.684,
                "p25": -4.15,
                "p75": -1.744
              }
            },
            "sideways": {
              "n": 2,
              "max_up_natr": {
                "n": 2,
                "mean": 0.889,
                "median": 0.889,
                "p25": 0.836,
                "p75": 0.942
              },
              "max_down_natr": {
                "n": 2,
                "mean": -0.846,
                "median": -0.846,
                "p25": -0.914,
                "p75": -0.777
              }
            },
            "forming": {
              "n": 0,
              "max_up_natr": {
                "n": 0,
                "mean": null,
                "median": null,
                "p25": null,
                "p75": null
              },
              "max_down_natr": {
                "n": 0,
                "mean": null,
                "median": null,
                "p25": null,
                "p75": null
              }
            }
          }
        },
        {
          "bin_index": 3,
          "band": "extreme",
          "label": "Extreme",
          "range_label": "0.964 \u2013 1",
          "min": 0.963931,
          "max": 1.0,
          "median_feature": 1.0,
          "n": 61,
          "breakout_success_rate": 42.62,
          "breakdown_success_rate": 55.74,
          "sideways_rate": 1.64,
          "forming_rate": 0.0,
          "both_cleared_rate": 40.98,
          "breakout_success_rate_ci95": [
            31.02,
            55.1
          ],
          "breakdown_success_rate_ci95": [
            43.3,
            67.49
          ],
          "sideways_rate_ci95": [
            0.29,
            8.72
          ],
          "forming_rate_ci95": [
            0.0,
            5.92
          ],
          "mean_ret_10c": -0.6,
          "mean_mfe": 3.942,
          "mean_mae": -4.57,
          "expected_hit_rate": 73.77,
          "max_up_natr": {
            "n": 61,
            "mean": 1.838,
            "median": 1.222,
            "p25": 0.899,
            "p75": 2.518
          },
          "max_down_natr": {
            "n": 61,
            "mean": -2.365,
            "median": -2.021,
            "p25": -2.859,
            "p75": -1.121
          },
          "median_max_up_natr": 1.222,
          "median_max_down_natr": -2.021,
          "mean_max_up_natr": 1.838,
          "mean_max_down_natr": -2.365,
          "p25_max_up_natr": 0.899,
          "p75_max_up_natr": 2.518,
          "p25_max_down_natr": -2.859,
          "p75_max_down_natr": -1.121,
          "outcome_natr_moves": {
            "breakout": {
              "n": 26,
              "max_up_natr": {
                "n": 26,
                "mean": 2.268,
                "median": 1.751,
                "p25": 1.14,
                "p75": 3.21
              },
              "max_down_natr": {
                "n": 26,
                "mean": -1.729,
                "median": -1.654,
                "p25": -2.599,
                "p75": -0.645
              }
            },
            "breakdown": {
              "n": 34,
              "max_up_natr": {
                "n": 34,
                "mean": 1.533,
                "median": 1.017,
                "p25": 0.514,
                "p75": 1.609
              },
              "max_down_natr": {
                "n": 34,
                "mean": -2.903,
                "median": -2.368,
                "p25": -3.702,
                "p75": -1.497
              }
            },
            "sideways": {
              "n": 1,
              "max_up_natr": {
                "n": 1,
                "mean": 1.037,
                "median": 1.037,
                "p25": 1.037,
                "p75": 1.037
              },
              "max_down_natr": {
                "n": 1,
                "mean": -0.617,
                "median": -0.617,
                "p25": -0.617,
                "p75": -0.617
              }
            },
            "forming": {
              "n": 0,
              "max_up_natr": {
                "n": 0,
                "mean": null,
                "median": null,
                "p25": null,
                "p75": null
              },
              "max_down_natr": {
                "n": 0,
                "mean": null,
                "median": null,
                "p25": null,
                "p75": null
              }
            }
          }
        }
      ],
      "histogram": {
        "bin_edges": [
          0.2,
          0.25,
          0.3,
          0.35,
          0.4,
          0.45,
          0.5,
          0.55,
          0.6,
          0.65,
          0.7,
          0.75,
          0.8,
          0.85,
          0.9,
          0.95,
          1.0
        ],
        "counts": [
          241,
          0,
          199,
          0,
          246,
          0,
          334,
          0,
          364,
          0,
          209,
          0,
          180,
          0,
          99,
          61
        ],
        "bin_centers": [
          0.225,
          0.275,
          0.325,
          0.375,
          0.425,
          0.475,
          0.525,
          0.575,
          0.625,
          0.675,
          0.725,
          0.775,
          0.825,
          0.875,
          0.925,
          0.975
        ]
      },
      "center": 0.533833,
      "scale": 0.215049,
      "transform": null,
      "sample_scope": "last_snapshot"
    },
    {
      "feature": "geom_hs_completion_score",
      "display_name": "hs completion score",
      "n": 1933,
      "binning": "quantile",
      "bins": [
        {
          "bin_index": 0,
          "label": "Q1",
          "range_label": "0.449 \u2013 0.8",
          "min": 0.449,
          "max": 0.8,
          "median_feature": 0.8,
          "n": 521,
          "breakout_success_rate": 45.11,
          "breakdown_success_rate": 53.74,
          "sideways_rate": 1.15,
          "forming_rate": 0.0,
          "both_cleared_rate": 41.84,
          "breakout_success_rate_ci95": [
            40.88,
            49.4
          ],
          "breakdown_success_rate_ci95": [
            49.45,
            57.98
          ],
          "sideways_rate_ci95": [
            0.53,
            2.49
          ],
          "forming_rate_ci95": [
            0.0,
            0.73
          ],
          "mean_ret_10c": -0.142,
          "mean_mfe": 2.563,
          "mean_mae": -2.75,
          "expected_hit_rate": 69.29,
          "max_up_natr": {
            "n": 521,
            "mean": 2.594,
            "median": 1.823,
            "p25": 0.801,
            "p75": 3.308
          },
          "max_down_natr": {
            "n": 521,
            "mean": -2.638,
            "median": -1.867,
            "p25": -3.354,
            "p75": -0.867
          },
          "median_max_up_natr": 1.823,
          "median_max_down_natr": -1.867,
          "mean_max_up_natr": 2.594,
          "mean_max_down_natr": -2.638,
          "p25_max_up_natr": 0.801,
          "p75_max_up_natr": 3.308,
          "p25_max_down_natr": -3.354,
          "p75_max_down_natr": -0.867,
          "outcome_natr_moves": {
            "breakout": {
              "n": 235,
              "max_up_natr": {
                "n": 235,
                "mean": 3.558,
                "median": 2.614,
                "p25": 1.586,
                "p75": 4.275
              },
              "max_down_natr": {
                "n": 235,
                "mean": -1.734,
                "median": -1.043,
                "p25": -2.289,
                "p75": -0.473
              }
            },
            "breakdown": {
              "n": 280,
              "max_up_natr": {
                "n": 280,
                "mean": 1.826,
                "median": 1.063,
                "p25": 0.484,
                "p75": 2.46
              },
              "max_down_natr": {
                "n": 280,
                "mean": -3.439,
                "median": -2.544,
                "p25": -4.205,
                "p75": -1.529
              }
            },
            "sideways": {
              "n": 6,
              "max_up_natr": {
                "n": 6,
                "mean": 0.689,
                "median": 0.709,
                "p25": 0.358,
                "p75": 0.973
              },
              "max_down_natr": {
                "n": 6,
                "mean": -0.705,
                "median": -0.765,
                "p25": -0.839,
                "p75": -0.667
              }
            },
            "forming": {
              "n": 0,
              "max_up_natr": {
                "n": 0,
                "mean": null,
                "median": null,
                "p25": null,
                "p75": null
              },
              "max_down_natr": {
                "n": 0,
                "mean": null,
                "median": null,
                "p25": null,
                "p75": null
              }
            }
          }
        },
        {
          "bin_index": 1,
          "label": "Q2",
          "range_label": "0.8 \u2013 0.9",
          "min": 0.8,
          "max": 0.9,
          "median_feature": 0.9,
          "n": 587,
          "breakout_success_rate": 47.02,
          "breakdown_success_rate": 51.45,
          "sideways_rate": 1.53,
          "forming_rate": 0.0,
          "both_cleared_rate": 36.46,
          "breakout_success_rate_ci95": [
            43.01,
            51.06
          ],
          "breakdown_success_rate_ci95": [
            47.41,
            55.47
          ],
          "sideways_rate_ci95": [
            0.81,
            2.89
          ],
          "forming_rate_ci95": [
            0.0,
            0.65
          ],
          "mean_ret_10c": -0.491,
          "mean_mfe": 4.757,
          "mean_mae": -5.382,
          "expected_hit_rate": 70.7,
          "max_up_natr": {
            "n": 587,
            "mean": 2.351,
            "median": 1.543,
            "p25": 0.609,
            "p75": 3.011
          },
          "max_down_natr": {
            "n": 587,
            "mean": -2.659,
            "median": -1.87,
            "p25": -3.344,
            "p75": -0.899
          },
          "median_max_up_natr": 1.543,
          "median_max_down_natr": -1.87,
          "mean_max_up_natr": 2.351,
          "mean_max_down_natr": -2.659,
          "p25_max_up_natr": 0.609,
          "p75_max_up_natr": 3.011,
          "p25_max_down_natr": -3.344,
          "p75_max_down_natr": -0.899,
          "outcome_natr_moves": {
            "breakout": {
              "n": 276,
              "max_up_natr": {
                "n": 276,
                "mean": 3.312,
                "median": 2.41,
                "p25": 1.444,
                "p75": 3.844
              },
              "max_down_natr": {
                "n": 276,
                "mean": -1.72,
                "median": -1.026,
                "p25": -2.142,
                "p75": -0.493
              }
            },
            "breakdown": {
              "n": 302,
              "max_up_natr": {
                "n": 302,
                "mean": 1.524,
                "median": 0.707,
                "p25": 0.298,
                "p75": 1.773
              },
              "max_down_natr": {
                "n": 302,
                "mean": -3.572,
                "median": -2.733,
                "p25": -3.99,
                "p75": -1.702
              }
            },
            "sideways": {
              "n": 9,
              "max_up_natr": {
                "n": 9,
                "mean": 0.637,
                "median": 0.667,
                "p25": 0.604,
                "p75": 0.715
              },
              "max_down_natr": {
                "n": 9,
                "mean": -0.79,
                "median": -0.877,
                "p25": -0.94,
                "p75": -0.617
              }
            },
            "forming": {
              "n": 0,
              "max_up_natr": {
                "n": 0,
                "mean": null,
                "median": null,
                "p25": null,
                "p75": null
              },
              "max_down_natr": {
                "n": 0,
                "mean": null,
                "median": null,
                "p25": null,
                "p75": null
              }
            }
          }
        },
        {
          "bin_index": 2,
          "label": "Q3",
          "range_label": "0.9 \u2013 1",
          "min": 0.9,
          "max": 1.0,
          "median_feature": 1.0,
          "n": 825,
          "breakout_success_rate": 50.42,
          "breakdown_success_rate": 48.0,
          "sideways_rate": 1.58,
          "forming_rate": 0.0,
          "both_cleared_rate": 35.88,
          "breakout_success_rate_ci95": [
            47.02,
            53.83
          ],
          "breakdown_success_rate_ci95": [
            44.61,
            51.41
          ],
          "sideways_rate_ci95": [
            0.92,
            2.68
          ],
          "forming_rate_ci95": [
            0.0,
            0.46
          ],
          "mean_ret_10c": 0.215,
          "mean_mfe": 7.524,
          "mean_mae": -6.326,
          "expected_hit_rate": 72.97,
          "max_up_natr": {
            "n": 825,
            "mean": 2.499,
            "median": 1.635,
            "p25": 0.708,
            "p75": 3.113
          },
          "max_down_natr": {
            "n": 825,
            "mean": -2.312,
            "median": -1.718,
            "p25": -3.056,
            "p75": -0.768
          },
          "median_max_up_natr": 1.635,
          "median_max_down_natr": -1.718,
          "mean_max_up_natr": 2.499,
          "mean_max_down_natr": -2.312,
          "p25_max_up_natr": 0.708,
          "p75_max_up_natr": 3.113,
          "p25_max_down_natr": -3.056,
          "p75_max_down_natr": -0.768,
          "outcome_natr_moves": {
            "breakout": {
              "n": 416,
              "max_up_natr": {
                "n": 416,
                "mean": 3.321,
                "median": 2.36,
                "p25": 1.557,
                "p75": 3.7
              },
              "max_down_natr": {
                "n": 416,
                "mean": -1.593,
                "median": -0.915,
                "p25": -2.214,
                "p75": -0.436
              }
            },
            "breakdown": {
              "n": 396,
              "max_up_natr": {
                "n": 396,
                "mean": 1.696,
                "median": 0.815,
                "p25": 0.344,
                "p75": 2.013
              },
              "max_down_natr": {
                "n": 396,
                "mean": -3.121,
                "median": -2.374,
                "p25": -3.844,
                "p75": -1.514
              }
            },
            "sideways": {
              "n": 13,
              "max_up_natr": {
                "n": 13,
                "mean": 0.673,
                "median": 0.669,
                "p25": 0.464,
                "p75": 0.84
              },
              "max_down_natr": {
                "n": 13,
                "mean": -0.691,
                "median": -0.709,
                "p25": -0.877,
                "p75": -0.614
              }
            },
            "forming": {
              "n": 0,
              "max_up_natr": {
                "n": 0,
                "mean": null,
                "median": null,
                "p25": null,
                "p75": null
              },
              "max_down_natr": {
                "n": 0,
                "mean": null,
                "median": null,
                "p25": null,
                "p75": null
              }
            }
          }
        }
      ],
      "histogram": {
        "bin_edges": [
          0.6,
          0.625,
          0.65,
          0.675,
          0.7,
          0.725,
          0.75,
          0.775,
          0.8,
          0.825,
          0.85,
          0.875,
          0.9,
          0.925,
          0.95,
          0.975,
          1.0
        ],
        "counts": [
          25,
          9,
          0,
          146,
          0,
          0,
          14,
          0,
          327,
          0,
          22,
          0,
          565,
          0,
          0,
          825
        ],
        "bin_centers": [
          0.6125,
          0.6375,
          0.6625,
          0.6875,
          0.7125,
          0.7375,
          0.7625,
          0.7875,
          0.8125,
          0.8375,
          0.8625,
          0.8875,
          0.9125,
          0.9375,
          0.9625,
          0.9875
        ]
      },
      "sample_scope": "last_snapshot"
    },
    {
      "feature": "current_scale_number",
      "display_name": "Pattern scale",
      "n": 10000,
      "binning": "quantile",
      "bins": [
        {
          "bin_index": 0,
          "label": "Q1",
          "range_label": "-318 \u2013 -0.034",
          "min": -317.668,
          "max": -0.034,
          "median_feature": -0.2037,
          "n": 2500,
          "breakout_success_rate": 12.04,
          "breakdown_success_rate": 85.32,
          "sideways_rate": 2.64,
          "forming_rate": 0.0,
          "both_cleared_rate": 39.44,
          "breakout_success_rate_ci95": [
            10.82,
            13.37
          ],
          "breakdown_success_rate_ci95": [
            83.88,
            86.65
          ],
          "sideways_rate_ci95": [
            2.08,
            3.34
          ],
          "forming_rate_ci95": [
            0.0,
            0.15
          ],
          "mean_ret_10c": -0.734,
          "mean_mfe": 4.296,
          "mean_mae": -5.53,
          "expected_hit_rate": 77.5,
          "max_up_natr": {
            "n": 2500,
            "mean": 2.012,
            "median": 1.323,
            "p25": 0.463,
            "p75": 2.648
          },
          "max_down_natr": {
            "n": 2500,
            "mean": -2.821,
            "median": -2.198,
            "p25": -3.589,
            "p75": -1.214
          },
          "median_max_up_natr": 1.323,
          "median_max_down_natr": -2.198,
          "mean_max_up_natr": 2.012,
          "mean_max_down_natr": -2.821,
          "p25_max_up_natr": 0.463,
          "p75_max_up_natr": 2.648,
          "p25_max_down_natr": -3.589,
          "p75_max_down_natr": -1.214,
          "outcome_natr_moves": {
            "breakout": {
              "n": 301,
              "max_up_natr": {
                "n": 301,
                "mean": 4.001,
                "median": 2.946,
                "p25": 1.998,
                "p75": 4.82
              },
              "max_down_natr": {
                "n": 301,
                "mean": -1.159,
                "median": -0.6,
                "p25": -1.363,
                "p75": -0.301
              }
            },
            "breakdown": {
              "n": 2133,
              "max_up_natr": {
                "n": 2133,
                "mean": 1.739,
                "median": 1.044,
                "p25": 0.367,
                "p75": 2.309
              },
              "max_down_natr": {
                "n": 2133,
                "mean": -3.124,
                "median": -2.453,
                "p25": -3.826,
                "p75": -1.521
              }
            },
            "sideways": {
              "n": 66,
              "max_up_natr": {
                "n": 66,
                "mean": 1.774,
                "median": 1.468,
                "p25": 1.002,
                "p75": 2.128
              },
              "max_down_natr": {
                "n": 66,
                "mean": -0.612,
                "median": -0.567,
                "p25": -0.707,
                "p75": -0.451
              }
            },
            "forming": {
              "n": 0,
              "max_up_natr": {
                "n": 0,
                "mean": null,
                "median": null,
                "p25": null,
                "p75": null
              },
              "max_down_natr": {
                "n": 0,
                "mean": null,
                "median": null,
                "p25": null,
                "p75": null
              }
            }
          }
        },
        {
          "bin_index": 1,
          "label": "Q2",
          "range_label": "-0.034 \u2013 0.511",
          "min": -0.034,
          "max": 0.511,
          "median_feature": 0.0166,
          "n": 2500,
          "breakout_success_rate": 20.16,
          "breakdown_success_rate": 72.28,
          "sideways_rate": 7.56,
          "forming_rate": 0.0,
          "both_cleared_rate": 38.32,
          "breakout_success_rate_ci95": [
            18.63,
            21.78
          ],
          "breakdown_success_rate_ci95": [
            70.49,
            74.0
          ],
          "sideways_rate_ci95": [
            6.59,
            8.66
          ],
          "forming_rate_ci95": [
            0.0,
            0.15
          ],
          "mean_ret_10c": -0.981,
          "mean_mfe": 4.312,
          "mean_mae": -6.222,
          "expected_hit_rate": 63.72,
          "max_up_natr": {
            "n": 2500,
            "mean": 2.224,
            "median": 1.184,
            "p25": 0.301,
            "p75": 2.933
          },
          "max_down_natr": {
            "n": 2500,
            "mean": -3.383,
            "median": -2.722,
            "p25": -4.411,
            "p75": -1.438
          },
          "median_max_up_natr": 1.184,
          "median_max_down_natr": -2.722,
          "mean_max_up_natr": 2.224,
          "mean_max_down_natr": -3.383,
          "p25_max_up_natr": 0.301,
          "p75_max_up_natr": 2.933,
          "p25_max_down_natr": -4.411,
          "p75_max_down_natr": -1.438,
          "outcome_natr_moves": {
            "breakout": {
              "n": 504,
              "max_up_natr": {
                "n": 504,
                "mean": 4.792,
                "median": 3.584,
                "p25": 2.138,
                "p75": 5.708
              },
              "max_down_natr": {
                "n": 504,
                "mean": -1.51,
                "median": -0.74,
                "p25": -1.783,
                "p75": -0.249
              }
            },
            "breakdown": {
              "n": 1807,
              "max_up_natr": {
                "n": 1807,
                "mean": 1.514,
                "median": 0.662,
                "p25": 0.194,
                "p75": 1.85
              },
              "max_down_natr": {
                "n": 1807,
                "mean": -4.094,
                "median": -3.309,
                "p25": -5.013,
                "p75": -2.201
              }
            },
            "sideways": {
              "n": 189,
              "max_up_natr": {
                "n": 189,
                "mean": 2.152,
                "median": 1.78,
                "p25": 0.966,
                "p75": 2.972
              },
              "max_down_natr": {
                "n": 189,
                "mean": -1.587,
                "median": -1.047,
                "p25": -2.084,
                "p75": -0.665
              }
            },
            "forming": {
              "n": 0,
              "max_up_natr": {
                "n": 0,
                "mean": null,
                "median": null,
                "p25": null,
                "p75": null
              },
              "max_down_natr": {
                "n": 0,
                "mean": null,
                "median": null,
                "p25": null,
                "p75": null
              }
            }
          }
        },
        {
          "bin_index": 2,
          "label": "Q3",
          "range_label": "0.511 \u2013 1.05",
          "min": 0.511,
          "max": 1.051,
          "median_feature": 0.967,
          "n": 2500,
          "breakout_success_rate": 78.56,
          "breakdown_success_rate": 11.76,
          "sideways_rate": 9.68,
          "forming_rate": 0.0,
          "both_cleared_rate": 35.12,
          "breakout_success_rate_ci95": [
            76.91,
            80.12
          ],
          "breakdown_success_rate_ci95": [
            10.56,
            13.08
          ],
          "sideways_rate_ci95": [
            8.58,
            10.9
          ],
          "forming_rate_ci95": [
            0.0,
            0.15
          ],
          "mean_ret_10c": 1.883,
          "mean_mfe": 7.571,
          "mean_mae": -3.367,
          "expected_hit_rate": 70.03,
          "max_up_natr": {
            "n": 2500,
            "mean": 3.775,
            "median": 2.751,
            "p25": 1.497,
            "p75": 4.573
          },
          "max_down_natr": {
            "n": 2500,
            "mean": -1.796,
            "median": -0.991,
            "p25": -2.448,
            "p75": -0.275
          },
          "median_max_up_natr": 2.751,
          "median_max_down_natr": -0.991,
          "mean_max_up_natr": 3.775,
          "mean_max_down_natr": -1.796,
          "p25_max_up_natr": 1.497,
          "p75_max_up_natr": 4.573,
          "p25_max_down_natr": -2.448,
          "p75_max_down_natr": -0.275,
          "outcome_natr_moves": {
            "breakout": {
              "n": 1964,
              "max_up_natr": {
                "n": 1964,
                "mean": 4.485,
                "median": 3.317,
                "p25": 2.127,
                "p75": 5.186
              },
              "max_down_natr": {
                "n": 1964,
                "mean": -1.284,
                "median": -0.625,
                "p25": -1.651,
                "p75": -0.185
              }
            },
            "breakdown": {
              "n": 294,
              "max_up_natr": {
                "n": 294,
                "mean": 1.205,
                "median": 0.596,
                "p25": 0.174,
                "p75": 1.206
              },
              "max_down_natr": {
                "n": 294,
                "mean": -4.683,
                "median": -3.65,
                "p25": -5.453,
                "p75": -2.237
              }
            },
            "sideways": {
              "n": 242,
              "max_up_natr": {
                "n": 242,
                "mean": 1.131,
                "median": 0.873,
                "p25": 0.575,
                "p75": 1.481
              },
              "max_down_natr": {
                "n": 242,
                "mean": -2.437,
                "median": -2.041,
                "p25": -3.26,
                "p75": -1.264
              }
            },
            "forming": {
              "n": 0,
              "max_up_natr": {
                "n": 0,
                "mean": null,
                "median": null,
                "p25": null,
                "p75": null
              },
              "max_down_natr": {
                "n": 0,
                "mean": null,
                "median": null,
                "p25": null,
                "p75": null
              }
            }
          }
        },
        {
          "bin_index": 3,
          "label": "Q4",
          "range_label": "1.05 \u2013 1.13e+13",
          "min": 1.051,
          "max": 11258998816768.0,
          "median_feature": 1.2033,
          "n": 2500,
          "breakout_success_rate": 84.44,
          "breakdown_success_rate": 12.92,
          "sideways_rate": 2.64,
          "forming_rate": 0.0,
          "both_cleared_rate": 39.16,
          "breakout_success_rate_ci95": [
            82.97,
            85.81
          ],
          "breakdown_success_rate_ci95": [
            11.66,
            14.29
          ],
          "sideways_rate_ci95": [
            2.08,
            3.34
          ],
          "forming_rate_ci95": [
            0.0,
            0.15
          ],
          "mean_ret_10c": 0.817,
          "mean_mfe": 6.434,
          "mean_mae": -4.156,
          "expected_hit_rate": 79.57,
          "max_up_natr": {
            "n": 2500,
            "mean": 2.883,
            "median": 2.066,
            "p25": 1.112,
            "p75": 3.562
          },
          "max_down_natr": {
            "n": 2500,
            "mean": -2.036,
            "median": -1.387,
            "p25": -2.669,
            "p75": -0.54
          },
          "median_max_up_natr": 2.066,
          "median_max_down_natr": -1.387,
          "mean_max_up_natr": 2.883,
          "mean_max_down_natr": -2.036,
          "p25_max_up_natr": 1.112,
          "p75_max_up_natr": 3.562,
          "p25_max_down_natr": -2.669,
          "p75_max_down_natr": -0.54,
          "outcome_natr_moves": {
            "breakout": {
              "n": 2111,
              "max_up_natr": {
                "n": 2111,
                "mean": 3.256,
                "median": 2.376,
                "p25": 1.441,
                "p75": 3.852
              },
              "max_down_natr": {
                "n": 2111,
                "mean": -1.751,
                "median": -1.109,
                "p25": -2.325,
                "p75": -0.435
              }
            },
            "breakdown": {
              "n": 323,
              "max_up_natr": {
                "n": 323,
                "mean": 0.923,
                "median": 0.495,
                "p25": 0.246,
                "p75": 0.851
              },
              "max_down_natr": {
                "n": 323,
                "mean": -3.998,
                "median": -3.126,
                "p25": -4.634,
                "p75": -2.072
              }
            },
            "sideways": {
              "n": 66,
              "max_up_natr": {
                "n": 66,
                "mean": 0.525,
                "median": 0.486,
                "p25": 0.335,
                "p75": 0.666
              },
              "max_down_natr": {
                "n": 66,
                "mean": -1.567,
                "median": -1.371,
                "p25": -1.993,
                "p75": -0.946
              }
            },
            "forming": {
              "n": 0,
              "max_up_natr": {
                "n": 0,
                "mean": null,
                "median": null,
                "p25": null,
                "p75": null
              },
              "max_down_natr": {
                "n": 0,
                "mean": null,
                "median": null,
                "p25": null,
                "p75": null
              }
            }
          }
        }
      ],
      "histogram": {
        "bin_edges": [
          -3.0904,
          -2.6447,
          -2.1991,
          -1.7534,
          -1.3078,
          -0.8621,
          -0.4164,
          0.0292,
          0.4749,
          0.9206,
          1.3662,
          1.8119,
          2.2575,
          2.7032,
          3.1489,
          3.5945,
          4.0402
        ],
        "counts": [
          119,
          31,
          36,
          53,
          133,
          366,
          3110,
          1103,
          983,
          3282,
          427,
          121,
          65,
          38,
          18,
          115
        ],
        "bin_centers": [
          -2.8676,
          -2.4219,
          -1.9762,
          -1.5306,
          -1.0849,
          -0.6393,
          -0.1936,
          0.2521,
          0.6977,
          1.1434,
          1.589,
          2.0347,
          2.4804,
          2.926,
          3.3717,
          3.8173
        ]
      },
      "sample_scope": "all_snapshots"
    },
    {
      "feature": "extension_candle_offset",
      "display_name": "Extension candles",
      "n": 10000,
      "binning": "log_z",
      "bins": [
        {
          "bin_index": 0,
          "band": "below_typical",
          "label": "Below typical",
          "range_label": "0 \u2013 0.177",
          "min": 0.0,
          "max": 0.177462,
          "median_feature": 0.0,
          "n": 3553,
          "breakout_success_rate": 46.66,
          "breakdown_success_rate": 51.51,
          "sideways_rate": 1.83,
          "forming_rate": 0.0,
          "both_cleared_rate": 39.52,
          "breakout_success_rate_ci95": [
            45.03,
            48.31
          ],
          "breakdown_success_rate_ci95": [
            49.86,
            53.15
          ],
          "sideways_rate_ci95": [
            1.44,
            2.32
          ],
          "forming_rate_ci95": [
            0.0,
            0.11
          ],
          "mean_ret_10c": 0.121,
          "mean_mfe": 5.799,
          "mean_mae": -5.159,
          "expected_hit_rate": 72.55,
          "max_up_natr": {
            "n": 3553,
            "mean": 2.585,
            "median": 1.715,
            "p25": 0.726,
            "p75": 3.282
          },
          "max_down_natr": {
            "n": 3553,
            "mean": -2.504,
            "median": -1.796,
            "p25": -3.217,
            "p75": -0.851
          },
          "median_max_up_natr": 1.715,
          "median_max_down_natr": -1.796,
          "mean_max_up_natr": 2.585,
          "mean_max_down_natr": -2.504,
          "p25_max_up_natr": 0.726,
          "p75_max_up_natr": 3.282,
          "p25_max_down_natr": -3.217,
          "p75_max_down_natr": -0.851,
          "outcome_natr_moves": {
            "breakout": {
              "n": 1658,
              "max_up_natr": {
                "n": 1658,
                "mean": 3.618,
                "median": 2.587,
                "p25": 1.608,
                "p75": 4.179
              },
              "max_down_natr": {
                "n": 1658,
                "mean": -1.7,
                "median": -0.979,
                "p25": -2.211,
                "p75": -0.438
              }
            },
            "breakdown": {
              "n": 1830,
              "max_up_natr": {
                "n": 1830,
                "mean": 1.71,
                "median": 0.916,
                "p25": 0.378,
                "p75": 2.149
              },
              "max_down_natr": {
                "n": 1830,
                "mean": -3.287,
                "median": -2.524,
                "p25": -3.951,
                "p75": -1.572
              }
            },
            "sideways": {
              "n": 65,
              "max_up_natr": {
                "n": 65,
                "mean": 0.856,
                "median": 0.749,
                "p25": 0.493,
                "p75": 1.037
              },
              "max_down_natr": {
                "n": 65,
                "mean": -0.945,
                "median": -0.777,
                "p25": -1.069,
                "p75": -0.575
              }
            },
            "forming": {
              "n": 0,
              "max_up_natr": {
                "n": 0,
                "mean": null,
                "median": null,
                "p25": null,
                "p75": null
              },
              "max_down_natr": {
                "n": 0,
                "mean": null,
                "median": null,
                "p25": null,
                "p75": null
              }
            }
          }
        },
        {
          "bin_index": 1,
          "band": "typical",
          "label": "Typical",
          "range_label": "0.177 \u2013 16.3",
          "min": 0.177462,
          "max": 16.299684,
          "median_feature": 6.0,
          "n": 4839,
          "breakout_success_rate": 52.3,
          "breakdown_success_rate": 44.37,
          "sideways_rate": 3.33,
          "forming_rate": 0.0,
          "both_cleared_rate": 37.03,
          "breakout_success_rate_ci95": [
            50.9,
            53.71
          ],
          "breakdown_success_rate_ci95": [
            42.97,
            45.77
          ],
          "sideways_rate_ci95": [
            2.86,
            3.87
          ],
          "forming_rate_ci95": [
            0.0,
            0.08
          ],
          "mean_ret_10c": 0.386,
          "mean_mfe": 5.441,
          "mean_mae": -4.542,
          "expected_hit_rate": 75.14,
          "max_up_natr": {
            "n": 4839,
            "mean": 2.738,
            "median": 1.927,
            "p25": 0.74,
            "p75": 3.644
          },
          "max_down_natr": {
            "n": 4839,
            "mean": -2.487,
            "median": -1.808,
            "p25": -3.423,
            "p75": -0.604
          },
          "median_max_up_natr": 1.927,
          "median_max_down_natr": -1.808,
          "mean_max_up_natr": 2.738,
          "mean_max_down_natr": -2.487,
          "p25_max_up_natr": 0.74,
          "p75_max_up_natr": 3.644,
          "p25_max_down_natr": -3.423,
          "p75_max_down_natr": -0.604,
          "outcome_natr_moves": {
            "breakout": {
              "n": 2531,
              "max_up_natr": {
                "n": 2531,
                "mean": 3.927,
                "median": 2.998,
                "p25": 1.903,
                "p75": 4.739
              },
              "max_down_natr": {
                "n": 2531,
                "mean": -1.381,
                "median": -0.703,
                "p25": -1.818,
                "p75": -0.219
              }
            },
            "breakdown": {
              "n": 2147,
              "max_up_natr": {
                "n": 2147,
                "mean": 1.455,
                "median": 0.691,
                "p25": 0.207,
                "p75": 1.888
              },
              "max_down_natr": {
                "n": 2147,
                "mean": -3.857,
                "median": -3.123,
                "p25": -4.732,
                "p75": -2.028
              }
            },
            "sideways": {
              "n": 161,
              "max_up_natr": {
                "n": 161,
                "mean": 1.159,
                "median": 0.873,
                "p25": 0.565,
                "p75": 1.494
              },
              "max_down_natr": {
                "n": 161,
                "mean": -1.611,
                "median": -1.231,
                "p25": -2.04,
                "p75": -0.766
              }
            },
            "forming": {
              "n": 0,
              "max_up_natr": {
                "n": 0,
                "mean": null,
                "median": null,
                "p25": null,
                "p75": null
              },
              "max_down_natr": {
                "n": 0,
                "mean": null,
                "median": null,
                "p25": null,
                "p75": null
              }
            }
          }
        },
        {
          "bin_index": 2,
          "band": "elevated",
          "label": "Elevated",
          "range_label": "16.3 \u2013 65.3",
          "min": 16.299684,
          "max": 65.310737,
          "median_feature": 27.0,
          "n": 1242,
          "breakout_success_rate": 50.56,
          "breakdown_success_rate": 41.55,
          "sideways_rate": 7.89,
          "forming_rate": 0.0,
          "both_cleared_rate": 36.8,
          "breakout_success_rate_ci95": [
            47.79,
            53.34
          ],
          "breakdown_success_rate_ci95": [
            38.84,
            44.31
          ],
          "sideways_rate_ci95": [
            6.52,
            9.52
          ],
          "forming_rate_ci95": [
            0.0,
            0.31
          ],
          "mean_ret_10c": 0.275,
          "mean_mfe": 6.282,
          "mean_mae": -4.817,
          "expected_hit_rate": 73.53,
          "max_up_natr": {
            "n": 1242,
            "mean": 3.156,
            "median": 2.009,
            "p25": 0.721,
            "p75": 3.888
          },
          "max_down_natr": {
            "n": 1242,
            "mean": -2.613,
            "median": -1.873,
            "p25": -3.584,
            "p75": -0.678
          },
          "median_max_up_natr": 2.009,
          "median_max_down_natr": -1.873,
          "mean_max_up_natr": 3.156,
          "mean_max_down_natr": -2.613,
          "p25_max_up_natr": 0.721,
          "p75_max_up_natr": 3.888,
          "p25_max_down_natr": -3.584,
          "p75_max_down_natr": -0.678,
          "outcome_natr_moves": {
            "breakout": {
              "n": 628,
              "max_up_natr": {
                "n": 628,
                "mean": 4.731,
                "median": 3.228,
                "p25": 1.986,
                "p75": 5.192
              },
              "max_down_natr": {
                "n": 628,
                "mean": -1.487,
                "median": -0.808,
                "p25": -1.976,
                "p75": -0.238
              }
            },
            "breakdown": {
              "n": 516,
              "max_up_natr": {
                "n": 516,
                "mean": 1.48,
                "median": 0.622,
                "p25": 0.178,
                "p75": 1.843
              },
              "max_down_natr": {
                "n": 516,
                "mean": -4.168,
                "median": -3.297,
                "p25": -5.129,
                "p75": -2.13
              }
            },
            "sideways": {
              "n": 98,
              "max_up_natr": {
                "n": 98,
                "mean": 1.886,
                "median": 1.363,
                "p25": 0.649,
                "p75": 2.772
              },
              "max_down_natr": {
                "n": 98,
                "mean": -1.637,
                "median": -1.441,
                "p25": -2.439,
                "p75": -0.587
              }
            },
            "forming": {
              "n": 0,
              "max_up_natr": {
                "n": 0,
                "mean": null,
                "median": null,
                "p25": null,
                "p75": null
              },
              "max_down_natr": {
                "n": 0,
                "mean": null,
                "median": null,
                "p25": null,
                "p75": null
              }
            }
          }
        },
        {
          "bin_index": 3,
          "band": "extreme",
          "label": "Extreme",
          "range_label": "65.3 \u2013 111",
          "min": 65.310737,
          "max": 111.0,
          "median_feature": 80.0,
          "n": 366,
          "breakout_success_rate": 17.21,
          "breakdown_success_rate": 17.49,
          "sideways_rate": 65.3,
          "forming_rate": 0.0,
          "both_cleared_rate": 40.44,
          "breakout_success_rate_ci95": [
            13.69,
            21.42
          ],
          "breakdown_success_rate_ci95": [
            13.94,
            21.71
          ],
          "sideways_rate_ci95": [
            60.29,
            70.0
          ],
          "forming_rate_ci95": [
            0.0,
            1.04
          ],
          "mean_ret_10c": -0.483,
          "mean_mfe": 4.905,
          "mean_mae": -5.176,
          "expected_hit_rate": 32.83,
          "max_up_natr": {
            "n": 366,
            "mean": 2.405,
            "median": 1.507,
            "p25": 0.614,
            "p75": 2.865
          },
          "max_down_natr": {
            "n": 366,
            "mean": -2.493,
            "median": -1.932,
            "p25": -3.299,
            "p75": -0.952
          },
          "median_max_up_natr": 1.507,
          "median_max_down_natr": -1.932,
          "mean_max_up_natr": 2.405,
          "mean_max_down_natr": -2.493,
          "p25_max_up_natr": 0.614,
          "p75_max_up_natr": 2.865,
          "p25_max_down_natr": -3.299,
          "p75_max_down_natr": -0.952,
          "outcome_natr_moves": {
            "breakout": {
              "n": 63,
              "max_up_natr": {
                "n": 63,
                "mean": 6.246,
                "median": 4.514,
                "p25": 2.652,
                "p75": 6.76
              },
              "max_down_natr": {
                "n": 63,
                "mean": -1.275,
                "median": -0.905,
                "p25": -1.843,
                "p75": -0.388
              }
            },
            "breakdown": {
              "n": 64,
              "max_up_natr": {
                "n": 64,
                "mean": 1.274,
                "median": 0.625,
                "p25": 0.207,
                "p75": 1.531
              },
              "max_down_natr": {
                "n": 64,
                "mean": -4.373,
                "median": -3.248,
                "p25": -4.734,
                "p75": -2.098
              }
            },
            "sideways": {
              "n": 239,
              "max_up_natr": {
                "n": 239,
                "mean": 1.696,
                "median": 1.436,
                "p25": 0.61,
                "p75": 2.275
              },
              "max_down_natr": {
                "n": 239,
                "mean": -2.311,
                "median": -1.889,
                "p25": -3.179,
                "p75": -0.967
              }
            },
            "forming": {
              "n": 0,
              "max_up_natr": {
                "n": 0,
                "mean": null,
                "median": null,
                "p25": null,
                "p75": null
              },
              "max_down_natr": {
                "n": 0,
                "mean": null,
                "median": null,
                "p25": null,
                "p75": null
              }
            }
          }
        }
      ],
      "histogram": {
        "bin_edges": [
          0.0,
          5.0,
          10.0,
          15.0,
          20.0,
          25.0,
          30.0,
          35.0,
          40.0,
          45.0,
          50.0,
          55.0,
          60.0,
          65.0,
          70.0,
          75.0,
          80.0
        ],
        "counts": [
          4993,
          2194,
          987,
          454,
          293,
          192,
          118,
          97,
          90,
          60,
          53,
          56,
          42,
          50,
          38,
          283
        ],
        "bin_centers": [
          2.5,
          7.5,
          12.5,
          17.5,
          22.5,
          27.5,
          32.5,
          37.5,
          42.5,
          47.5,
          52.5,
          57.5,
          62.5,
          67.5,
          72.5,
          77.5
        ]
      },
      "center": 1.507025,
      "scale": 1.343664,
      "transform": "log1p",
      "sample_scope": "all_snapshots"
    },
    {
      "feature": "extension_progress",
      "display_name": "Formation age",
      "n": 7954,
      "binning": "log_z",
      "bins": [
        {
          "bin_index": 0,
          "band": "typical",
          "label": "Typical",
          "range_label": "-0.0297 \u2013 0.292",
          "min": -0.029739,
          "max": 0.292375,
          "median_feature": 0.0588,
          "n": 6967,
          "breakout_success_rate": 52.06,
          "breakdown_success_rate": 45.21,
          "sideways_rate": 2.73,
          "forming_rate": 0.0,
          "both_cleared_rate": 36.76,
          "breakout_success_rate_ci95": [
            50.89,
            53.23
          ],
          "breakdown_success_rate_ci95": [
            44.05,
            46.38
          ],
          "sideways_rate_ci95": [
            2.37,
            3.14
          ],
          "forming_rate_ci95": [
            0.0,
            0.06
          ],
          "mean_ret_10c": 0.273,
          "mean_mfe": 5.489,
          "mean_mae": -4.668,
          "expected_hit_rate": 74.7,
          "max_up_natr": {
            "n": 6967,
            "mean": 2.741,
            "median": 1.895,
            "p25": 0.715,
            "p75": 3.619
          },
          "max_down_natr": {
            "n": 6967,
            "mean": -2.526,
            "median": -1.813,
            "p25": -3.418,
            "p75": -0.656
          },
          "median_max_up_natr": 1.895,
          "median_max_down_natr": -1.813,
          "mean_max_up_natr": 2.741,
          "mean_max_down_natr": -2.526,
          "p25_max_up_natr": 0.715,
          "p75_max_up_natr": 3.619,
          "p25_max_down_natr": -3.418,
          "p75_max_down_natr": -0.656,
          "outcome_natr_moves": {
            "breakout": {
              "n": 3627,
              "max_up_natr": {
                "n": 3627,
                "mean": 3.899,
                "median": 2.897,
                "p25": 1.812,
                "p75": 4.66
              },
              "max_down_natr": {
                "n": 3627,
                "mean": -1.462,
                "median": -0.773,
                "p25": -1.929,
                "p75": -0.272
              }
            },
            "breakdown": {
              "n": 3150,
              "max_up_natr": {
                "n": 3150,
                "mean": 1.502,
                "median": 0.714,
                "p25": 0.235,
                "p75": 1.92
              },
              "max_down_natr": {
                "n": 3150,
                "mean": -3.805,
                "median": -3.022,
                "p25": -4.684,
                "p75": -1.924
              }
            },
            "sideways": {
              "n": 190,
              "max_up_natr": {
                "n": 190,
                "mean": 1.16,
                "median": 0.776,
                "p25": 0.537,
                "p75": 1.35
              },
              "max_down_natr": {
                "n": 190,
                "mean": -1.62,
                "median": -1.229,
                "p25": -2.114,
                "p75": -0.72
              }
            },
            "forming": {
              "n": 0,
              "max_up_natr": {
                "n": 0,
                "mean": null,
                "median": null,
                "p25": null,
                "p75": null
              },
              "max_down_natr": {
                "n": 0,
                "mean": null,
                "median": null,
                "p25": null,
                "p75": null
              }
            }
          }
        },
        {
          "bin_index": 1,
          "band": "elevated",
          "label": "Elevated",
          "range_label": "0.292 \u2013 0.492",
          "min": 0.292375,
          "max": 0.491552,
          "median_feature": 0.3718,
          "n": 462,
          "breakout_success_rate": 46.75,
          "breakdown_success_rate": 42.42,
          "sideways_rate": 10.83,
          "forming_rate": 0.0,
          "both_cleared_rate": 35.28,
          "breakout_success_rate_ci95": [
            42.25,
            51.31
          ],
          "breakdown_success_rate_ci95": [
            38.0,
            46.98
          ],
          "sideways_rate_ci95": [
            8.31,
            13.99
          ],
          "forming_rate_ci95": [
            0.0,
            0.82
          ],
          "mean_ret_10c": 0.511,
          "mean_mfe": 6.628,
          "mean_mae": -5.036,
          "expected_hit_rate": 72.21,
          "max_up_natr": {
            "n": 462,
            "mean": 3.113,
            "median": 1.924,
            "p25": 0.71,
            "p75": 3.741
          },
          "max_down_natr": {
            "n": 462,
            "mean": -2.553,
            "median": -1.876,
            "p25": -3.573,
            "p75": -0.651
          },
          "median_max_up_natr": 1.924,
          "median_max_down_natr": -1.876,
          "mean_max_up_natr": 3.113,
          "mean_max_down_natr": -2.553,
          "p25_max_up_natr": 0.71,
          "p75_max_up_natr": 3.741,
          "p25_max_down_natr": -3.573,
          "p75_max_down_natr": -0.651,
          "outcome_natr_moves": {
            "breakout": {
              "n": 216,
              "max_up_natr": {
                "n": 216,
                "mean": 4.623,
                "median": 3.141,
                "p25": 1.909,
                "p75": 5.197
              },
              "max_down_natr": {
                "n": 216,
                "mean": -1.39,
                "median": -0.749,
                "p25": -1.83,
                "p75": -0.166
              }
            },
            "breakdown": {
              "n": 196,
              "max_up_natr": {
                "n": 196,
                "mean": 1.761,
                "median": 0.684,
                "p25": 0.209,
                "p75": 2.038
              },
              "max_down_natr": {
                "n": 196,
                "mean": -4.017,
                "median": -3.321,
                "p25": -5.283,
                "p75": -2.108
              }
            },
            "sideways": {
              "n": 50,
              "max_up_natr": {
                "n": 50,
                "mean": 1.891,
                "median": 1.395,
                "p25": 0.623,
                "p75": 2.595
              },
              "max_down_natr": {
                "n": 50,
                "mean": -1.841,
                "median": -1.641,
                "p25": -2.654,
                "p75": -0.683
              }
            },
            "forming": {
              "n": 0,
              "max_up_natr": {
                "n": 0,
                "mean": null,
                "median": null,
                "p25": null,
                "p75": null
              },
              "max_down_natr": {
                "n": 0,
                "mean": null,
                "median": null,
                "p25": null,
                "p75": null
              }
            }
          }
        },
        {
          "bin_index": 2,
          "band": "extreme",
          "label": "Extreme",
          "range_label": "0.492 \u2013 1.1",
          "min": 0.491552,
          "max": 1.09901,
          "median_feature": 0.68,
          "n": 525,
          "breakout_success_rate": 27.05,
          "breakdown_success_rate": 24.0,
          "sideways_rate": 48.95,
          "forming_rate": 0.0,
          "both_cleared_rate": 42.67,
          "breakout_success_rate_ci95": [
            23.42,
            31.0
          ],
          "breakdown_success_rate_ci95": [
            20.54,
            27.83
          ],
          "sideways_rate_ci95": [
            44.7,
            53.22
          ],
          "forming_rate_ci95": [
            0.0,
            0.73
          ],
          "mean_ret_10c": -0.045,
          "mean_mfe": 6.04,
          "mean_mae": -5.252,
          "expected_hit_rate": 46.52,
          "max_up_natr": {
            "n": 525,
            "mean": 2.784,
            "median": 1.683,
            "p25": 0.722,
            "p75": 3.154
          },
          "max_down_natr": {
            "n": 525,
            "mean": -2.519,
            "median": -1.888,
            "p25": -3.345,
            "p75": -0.903
          },
          "median_max_up_natr": 1.683,
          "median_max_down_natr": -1.888,
          "mean_max_up_natr": 2.784,
          "mean_max_down_natr": -2.519,
          "p25_max_up_natr": 0.722,
          "p75_max_up_natr": 3.154,
          "p25_max_down_natr": -3.345,
          "p75_max_down_natr": -0.903,
          "outcome_natr_moves": {
            "breakout": {
              "n": 142,
              "max_up_natr": {
                "n": 142,
                "mean": 5.629,
                "median": 3.455,
                "p25": 2.137,
                "p75": 6.411
              },
              "max_down_natr": {
                "n": 142,
                "mean": -1.335,
                "median": -0.938,
                "p25": -1.898,
                "p75": -0.271
              }
            },
            "breakdown": {
              "n": 126,
              "max_up_natr": {
                "n": 126,
                "mean": 1.718,
                "median": 0.949,
                "p25": 0.285,
                "p75": 1.953
              },
              "max_down_natr": {
                "n": 126,
                "mean": -4.489,
                "median": -3.39,
                "p25": -5.056,
                "p75": -2.134
              }
            },
            "sideways": {
              "n": 257,
              "max_up_natr": {
                "n": 257,
                "mean": 1.735,
                "median": 1.471,
                "p25": 0.667,
                "p75": 2.344
              },
              "max_down_natr": {
                "n": 257,
                "mean": -2.208,
                "median": -1.836,
                "p25": -3.072,
                "p75": -0.93
              }
            },
            "forming": {
              "n": 0,
              "max_up_natr": {
                "n": 0,
                "mean": null,
                "median": null,
                "p25": null,
                "p75": null
              },
              "max_down_natr": {
                "n": 0,
                "mean": null,
                "median": null,
                "p25": null,
                "p75": null
              }
            }
          }
        }
      ],
      "histogram": {
        "bin_edges": [
          0.0,
          0.0602,
          0.1205,
          0.1807,
          0.241,
          0.3012,
          0.3614,
          0.4217,
          0.4819,
          0.5422,
          0.6024,
          0.6627,
          0.7229,
          0.7831,
          0.8434,
          0.9036,
          0.9639
        ],
        "counts": [
          3544,
          1861,
          869,
          452,
          272,
          182,
          110,
          113,
          117,
          89,
          66,
          61,
          43,
          46,
          22,
          107
        ],
        "bin_centers": [
          0.0301,
          0.0904,
          0.1506,
          0.2108,
          0.2711,
          0.3313,
          0.3916,
          0.4518,
          0.512,
          0.5723,
          0.6325,
          0.6928,
          0.753,
          0.8133,
          0.8735,
          0.9337
        ]
      },
      "center": 0.113145,
      "scale": 0.143336,
      "transform": "log1p",
      "sample_scope": "all_snapshots"
    },
    {
      "feature": "rsi_div_span",
      "display_name": "rsi div span",
      "n": 518,
      "binning": "quantile",
      "bins": [
        {
          "bin_index": 0,
          "label": "Q1",
          "range_label": "6 \u2013 8",
          "min": 5.999,
          "max": 8.0,
          "median_feature": 7.0,
          "n": 145,
          "breakout_success_rate": 52.41,
          "breakdown_success_rate": 47.59,
          "sideways_rate": 0.0,
          "forming_rate": 0.0,
          "both_cleared_rate": 48.97,
          "breakout_success_rate_ci95": [
            44.33,
            60.38
          ],
          "breakdown_success_rate_ci95": [
            39.62,
            55.67
          ],
          "sideways_rate_ci95": [
            0.0,
            2.58
          ],
          "forming_rate_ci95": [
            0.0,
            2.58
          ],
          "mean_ret_10c": 0.663,
          "mean_mfe": 6.25,
          "mean_mae": -5.283,
          "expected_hit_rate": 49.66,
          "max_up_natr": {
            "n": 145,
            "mean": 2.806,
            "median": 1.843,
            "p25": 0.925,
            "p75": 3.755
          },
          "max_down_natr": {
            "n": 145,
            "mean": -2.685,
            "median": -2.049,
            "p25": -3.625,
            "p75": -0.953
          },
          "median_max_up_natr": 1.843,
          "median_max_down_natr": -2.049,
          "mean_max_up_natr": 2.806,
          "mean_max_down_natr": -2.685,
          "p25_max_up_natr": 0.925,
          "p75_max_up_natr": 3.755,
          "p25_max_down_natr": -3.625,
          "p75_max_down_natr": -0.953,
          "outcome_natr_moves": {
            "breakout": {
              "n": 76,
              "max_up_natr": {
                "n": 76,
                "mean": 3.805,
                "median": 3.137,
                "p25": 1.842,
                "p75": 4.941
              },
              "max_down_natr": {
                "n": 76,
                "mean": -1.827,
                "median": -1.084,
                "p25": -2.254,
                "p75": -0.436
              }
            },
            "breakdown": {
              "n": 69,
              "max_up_natr": {
                "n": 69,
                "mean": 1.705,
                "median": 0.9,
                "p25": 0.348,
                "p75": 1.768
              },
              "max_down_natr": {
                "n": 69,
                "mean": -3.629,
                "median": -3.073,
                "p25": -4.408,
                "p75": -2.049
              }
            },
            "sideways": {
              "n": 0,
              "max_up_natr": {
                "n": 0,
                "mean": null,
                "median": null,
                "p25": null,
                "p75": null
              },
              "max_down_natr": {
                "n": 0,
                "mean": null,
                "median": null,
                "p25": null,
                "p75": null
              }
            },
            "forming": {
              "n": 0,
              "max_up_natr": {
                "n": 0,
                "mean": null,
                "median": null,
                "p25": null,
                "p75": null
              },
              "max_down_natr": {
                "n": 0,
                "mean": null,
                "median": null,
                "p25": null,
                "p75": null
              }
            }
          }
        },
        {
          "bin_index": 1,
          "label": "Q2",
          "range_label": "8 \u2013 12",
          "min": 8.0,
          "max": 12.0,
          "median_feature": 10.0,
          "n": 148,
          "breakout_success_rate": 46.62,
          "breakdown_success_rate": 51.35,
          "sideways_rate": 2.03,
          "forming_rate": 0.0,
          "both_cleared_rate": 42.57,
          "breakout_success_rate_ci95": [
            38.77,
            54.64
          ],
          "breakdown_success_rate_ci95": [
            43.37,
            59.27
          ],
          "sideways_rate_ci95": [
            0.69,
            5.79
          ],
          "forming_rate_ci95": [
            0.0,
            2.53
          ],
          "mean_ret_10c": 0.089,
          "mean_mfe": 5.703,
          "mean_mae": -4.944,
          "expected_hit_rate": 60.81,
          "max_up_natr": {
            "n": 148,
            "mean": 2.821,
            "median": 1.876,
            "p25": 0.92,
            "p75": 3.637
          },
          "max_down_natr": {
            "n": 148,
            "mean": -2.336,
            "median": -1.635,
            "p25": -3.053,
            "p75": -0.896
          },
          "median_max_up_natr": 1.876,
          "median_max_down_natr": -1.635,
          "mean_max_up_natr": 2.821,
          "mean_max_down_natr": -2.336,
          "p25_max_up_natr": 0.92,
          "p75_max_up_natr": 3.637,
          "p25_max_down_natr": -3.053,
          "p75_max_down_natr": -0.896,
          "outcome_natr_moves": {
            "breakout": {
              "n": 69,
              "max_up_natr": {
                "n": 69,
                "mean": 3.428,
                "median": 2.793,
                "p25": 1.778,
                "p75": 4.378
              },
              "max_down_natr": {
                "n": 69,
                "mean": -1.909,
                "median": -0.89,
                "p25": -2.238,
                "p75": -0.388
              }
            },
            "breakdown": {
              "n": 76,
              "max_up_natr": {
                "n": 76,
                "mean": 2.347,
                "median": 0.953,
                "p25": 0.397,
                "p75": 2.096
              },
              "max_down_natr": {
                "n": 76,
                "mean": -2.791,
                "median": -2.349,
                "p25": -3.413,
                "p75": -1.458
              }
            },
            "sideways": {
              "n": 3,
              "max_up_natr": {
                "n": 3,
                "mean": 0.854,
                "median": 0.859,
                "p25": 0.814,
                "p75": 0.896
              },
              "max_down_natr": {
                "n": 3,
                "mean": -0.639,
                "median": -0.54,
                "p25": -0.75,
                "p75": -0.479
              }
            },
            "forming": {
              "n": 0,
              "max_up_natr": {
                "n": 0,
                "mean": null,
                "median": null,
                "p25": null,
                "p75": null
              },
              "max_down_natr": {
                "n": 0,
                "mean": null,
                "median": null,
                "p25": null,
                "p75": null
              }
            }
          }
        },
        {
          "bin_index": 2,
          "label": "Q3",
          "range_label": "12 \u2013 16.8",
          "min": 12.0,
          "max": 16.75,
          "median_feature": 14.0,
          "n": 95,
          "breakout_success_rate": 38.95,
          "breakdown_success_rate": 61.05,
          "sideways_rate": 0.0,
          "forming_rate": 0.0,
          "both_cleared_rate": 43.16,
          "breakout_success_rate_ci95": [
            29.75,
            49.0
          ],
          "breakdown_success_rate_ci95": [
            51.0,
            70.25
          ],
          "sideways_rate_ci95": [
            0.0,
            3.89
          ],
          "forming_rate_ci95": [
            0.0,
            3.89
          ],
          "mean_ret_10c": 0.097,
          "mean_mfe": 4.783,
          "mean_mae": -5.008,
          "expected_hit_rate": 50.53,
          "max_up_natr": {
            "n": 95,
            "mean": 2.506,
            "median": 1.751,
            "p25": 0.822,
            "p75": 3.346
          },
          "max_down_natr": {
            "n": 95,
            "mean": -2.345,
            "median": -2.21,
            "p25": -3.232,
            "p75": -1.156
          },
          "median_max_up_natr": 1.751,
          "median_max_down_natr": -2.21,
          "mean_max_up_natr": 2.506,
          "mean_max_down_natr": -2.345,
          "p25_max_up_natr": 0.822,
          "p75_max_up_natr": 3.346,
          "p25_max_down_natr": -3.232,
          "p75_max_down_natr": -1.156,
          "outcome_natr_moves": {
            "breakout": {
              "n": 37,
              "max_up_natr": {
                "n": 37,
                "mean": 3.75,
                "median": 3.128,
                "p25": 2.054,
                "p75": 4.323
              },
              "max_down_natr": {
                "n": 37,
                "mean": -1.557,
                "median": -0.921,
                "p25": -2.655,
                "p75": -0.413
              }
            },
            "breakdown": {
              "n": 58,
              "max_up_natr": {
                "n": 58,
                "mean": 1.713,
                "median": 0.933,
                "p25": 0.673,
                "p75": 1.923
              },
              "max_down_natr": {
                "n": 58,
                "mean": -2.848,
                "median": -2.497,
                "p25": -3.441,
                "p75": -1.9
              }
            },
            "sideways": {
              "n": 0,
              "max_up_natr": {
                "n": 0,
                "mean": null,
                "median": null,
                "p25": null,
                "p75": null
              },
              "max_down_natr": {
                "n": 0,
                "mean": null,
                "median": null,
                "p25": null,
                "p75": null
              }
            },
            "forming": {
              "n": 0,
              "max_up_natr": {
                "n": 0,
                "mean": null,
                "median": null,
                "p25": null,
                "p75": null
              },
              "max_down_natr": {
                "n": 0,
                "mean": null,
                "median": null,
                "p25": null,
                "p75": null
              }
            }
          }
        },
        {
          "bin_index": 3,
          "label": "Q4",
          "range_label": "16.8 \u2013 43",
          "min": 16.75,
          "max": 43.0,
          "median_feature": 22.0,
          "n": 130,
          "breakout_success_rate": 46.92,
          "breakdown_success_rate": 52.31,
          "sideways_rate": 0.77,
          "forming_rate": 0.0,
          "both_cleared_rate": 46.15,
          "breakout_success_rate_ci95": [
            38.56,
            55.47
          ],
          "breakdown_success_rate_ci95": [
            43.78,
            60.7
          ],
          "sideways_rate_ci95": [
            0.14,
            4.23
          ],
          "forming_rate_ci95": [
            0.0,
            2.87
          ],
          "mean_ret_10c": 0.784,
          "mean_mfe": 7.621,
          "mean_mae": -6.712,
          "expected_hit_rate": 53.85,
          "max_up_natr": {
            "n": 130,
            "mean": 2.946,
            "median": 1.862,
            "p25": 0.921,
            "p75": 3.383
          },
          "max_down_natr": {
            "n": 130,
            "mean": -3.105,
            "median": -2.204,
            "p25": -3.739,
            "p75": -0.975
          },
          "median_max_up_natr": 1.862,
          "median_max_down_natr": -2.204,
          "mean_max_up_natr": 2.946,
          "mean_max_down_natr": -3.105,
          "p25_max_up_natr": 0.921,
          "p75_max_up_natr": 3.383,
          "p25_max_down_natr": -3.739,
          "p75_max_down_natr": -0.975,
          "outcome_natr_moves": {
            "breakout": {
              "n": 61,
              "max_up_natr": {
                "n": 61,
                "mean": 4.393,
                "median": 2.965,
                "p25": 1.763,
                "p75": 5.36
              },
              "max_down_natr": {
                "n": 61,
                "mean": -2.49,
                "median": -0.92,
                "p25": -2.746,
                "p75": -0.355
              }
            },
            "breakdown": {
              "n": 68,
              "max_up_natr": {
                "n": 68,
                "mean": 1.681,
                "median": 0.951,
                "p25": 0.579,
                "p75": 2.28
              },
              "max_down_natr": {
                "n": 68,
                "mean": -3.691,
                "median": -3.044,
                "p25": -4.617,
                "p75": -1.759
              }
            },
            "sideways": {
              "n": 1,
              "max_up_natr": {
                "n": 1,
                "mean": 0.722,
                "median": 0.722,
                "p25": 0.722,
                "p75": 0.722
              },
              "max_down_natr": {
                "n": 1,
                "mean": -0.799,
                "median": -0.799,
                "p25": -0.799,
                "p75": -0.799
              }
            },
            "forming": {
              "n": 0,
              "max_up_natr": {
                "n": 0,
                "mean": null,
                "median": null,
                "p25": null,
                "p75": null
              },
              "max_down_natr": {
                "n": 0,
                "mean": null,
                "median": null,
                "p25": null,
                "p75": null
              }
            }
          }
        }
      ],
      "histogram": {
        "bin_edges": [
          6.0,
          8.0,
          10.0,
          12.0,
          14.0,
          16.0,
          18.0,
          20.0,
          22.0,
          24.0,
          26.0,
          28.0,
          30.0,
          32.0,
          34.0,
          36.0,
          38.0
        ],
        "counts": [
          106,
          81,
          71,
          59,
          47,
          37,
          24,
          21,
          18,
          12,
          7,
          12,
          4,
          3,
          5,
          11
        ],
        "bin_centers": [
          7.0,
          9.0,
          11.0,
          13.0,
          15.0,
          17.0,
          19.0,
          21.0,
          23.0,
          25.0,
          27.0,
          29.0,
          31.0,
          33.0,
          35.0,
          37.0
        ]
      },
      "sample_scope": "last_snapshot"
    },
    {
      "feature": "rsi_div_price_delta_pct",
      "display_name": "rsi div price delta pct",
      "n": 518,
      "binning": "quantile",
      "bins": [
        {
          "bin_index": 0,
          "label": "Q1",
          "range_label": "-26.7 \u2013 -0.701",
          "min": -26.657,
          "max": -0.701,
          "median_feature": -1.6391,
          "n": 130,
          "breakout_success_rate": 53.08,
          "breakdown_success_rate": 46.92,
          "sideways_rate": 0.0,
          "forming_rate": 0.0,
          "both_cleared_rate": 44.62,
          "breakout_success_rate_ci95": [
            44.53,
            61.44
          ],
          "breakdown_success_rate_ci95": [
            38.56,
            55.47
          ],
          "sideways_rate_ci95": [
            0.0,
            2.87
          ],
          "forming_rate_ci95": [
            0.0,
            2.87
          ],
          "mean_ret_10c": 1.883,
          "mean_mfe": 10.795,
          "mean_mae": -8.741,
          "expected_hit_rate": 53.08,
          "max_up_natr": {
            "n": 130,
            "mean": 3.263,
            "median": 2.095,
            "p25": 1.031,
            "p75": 3.545
          },
          "max_down_natr": {
            "n": 130,
            "mean": -2.729,
            "median": -1.687,
            "p25": -2.975,
            "p75": -0.62
          },
          "median_max_up_natr": 2.095,
          "median_max_down_natr": -1.687,
          "mean_max_up_natr": 3.263,
          "mean_max_down_natr": -2.729,
          "p25_max_up_natr": 1.031,
          "p75_max_up_natr": 3.545,
          "p25_max_down_natr": -2.975,
          "p75_max_down_natr": -0.62,
          "outcome_natr_moves": {
            "breakout": {
              "n": 69,
              "max_up_natr": {
                "n": 69,
                "mean": 3.753,
                "median": 2.607,
                "p25": 1.746,
                "p75": 4.396
              },
              "max_down_natr": {
                "n": 69,
                "mean": -2.445,
                "median": -0.63,
                "p25": -2.726,
                "p75": -0.249
              }
            },
            "breakdown": {
              "n": 61,
              "max_up_natr": {
                "n": 61,
                "mean": 2.708,
                "median": 1.034,
                "p25": 0.61,
                "p75": 2.878
              },
              "max_down_natr": {
                "n": 61,
                "mean": -3.051,
                "median": -2.169,
                "p25": -3.256,
                "p75": -1.596
              }
            },
            "sideways": {
              "n": 0,
              "max_up_natr": {
                "n": 0,
                "mean": null,
                "median": null,
                "p25": null,
                "p75": null
              },
              "max_down_natr": {
                "n": 0,
                "mean": null,
                "median": null,
                "p25": null,
                "p75": null
              }
            },
            "forming": {
              "n": 0,
              "max_up_natr": {
                "n": 0,
                "mean": null,
                "median": null,
                "p25": null,
                "p75": null
              },
              "max_down_natr": {
                "n": 0,
                "mean": null,
                "median": null,
                "p25": null,
                "p75": null
              }
            }
          }
        },
        {
          "bin_index": 1,
          "label": "Q2",
          "range_label": "-0.701 \u2013 -0.048",
          "min": -0.701,
          "max": -0.048,
          "median_feature": -0.2875,
          "n": 129,
          "breakout_success_rate": 50.39,
          "breakdown_success_rate": 48.06,
          "sideways_rate": 1.55,
          "forming_rate": 0.0,
          "both_cleared_rate": 42.64,
          "breakout_success_rate_ci95": [
            41.87,
            58.88
          ],
          "breakdown_success_rate_ci95": [
            39.62,
            56.61
          ],
          "sideways_rate_ci95": [
            0.43,
            5.48
          ],
          "forming_rate_ci95": [
            0.0,
            2.89
          ],
          "mean_ret_10c": 0.053,
          "mean_mfe": 4.357,
          "mean_mae": -4.076,
          "expected_hit_rate": 50.39,
          "max_up_natr": {
            "n": 129,
            "mean": 2.518,
            "median": 1.842,
            "p25": 0.958,
            "p75": 3.393
          },
          "max_down_natr": {
            "n": 129,
            "mean": -2.529,
            "median": -1.668,
            "p25": -3.484,
            "p75": -0.821
          },
          "median_max_up_natr": 1.842,
          "median_max_down_natr": -1.668,
          "mean_max_up_natr": 2.518,
          "mean_max_down_natr": -2.529,
          "p25_max_up_natr": 0.958,
          "p75_max_up_natr": 3.393,
          "p25_max_down_natr": -3.484,
          "p75_max_down_natr": -0.821,
          "outcome_natr_moves": {
            "breakout": {
              "n": 65,
              "max_up_natr": {
                "n": 65,
                "mean": 3.491,
                "median": 3.151,
                "p25": 1.823,
                "p75": 4.334
              },
              "max_down_natr": {
                "n": 65,
                "mean": -1.59,
                "median": -0.89,
                "p25": -2.13,
                "p75": -0.332
              }
            },
            "breakdown": {
              "n": 62,
              "max_up_natr": {
                "n": 62,
                "mean": 1.551,
                "median": 0.959,
                "p25": 0.526,
                "p75": 1.965
              },
              "max_down_natr": {
                "n": 62,
                "mean": -3.58,
                "median": -2.916,
                "p25": -4.522,
                "p75": -1.655
              }
            },
            "sideways": {
              "n": 2,
              "max_up_natr": {
                "n": 2,
                "mean": 0.851,
                "median": 0.851,
                "p25": 0.81,
                "p75": 0.892
              },
              "max_down_natr": {
                "n": 2,
                "mean": -0.479,
                "median": -0.479,
                "p25": -0.51,
                "p75": -0.449
              }
            },
            "forming": {
              "n": 0,
              "max_up_natr": {
                "n": 0,
                "mean": null,
                "median": null,
                "p25": null,
                "p75": null
              },
              "max_down_natr": {
                "n": 0,
                "mean": null,
                "median": null,
                "p25": null,
                "p75": null
              }
            }
          }
        },
        {
          "bin_index": 2,
          "label": "Q3",
          "range_label": "-0.048 \u2013 0.432",
          "min": -0.048,
          "max": 0.432,
          "median_feature": 0.1684,
          "n": 129,
          "breakout_success_rate": 40.31,
          "breakdown_success_rate": 59.69,
          "sideways_rate": 0.0,
          "forming_rate": 0.0,
          "both_cleared_rate": 44.19,
          "breakout_success_rate_ci95": [
            32.24,
            48.94
          ],
          "breakdown_success_rate_ci95": [
            51.06,
            67.76
          ],
          "sideways_rate_ci95": [
            0.0,
            2.89
          ],
          "forming_rate_ci95": [
            0.0,
            2.89
          ],
          "mean_ret_10c": -0.357,
          "mean_mfe": 3.405,
          "mean_mae": -3.644,
          "expected_hit_rate": 58.14,
          "max_up_natr": {
            "n": 129,
            "mean": 2.694,
            "median": 1.733,
            "p25": 0.708,
            "p75": 3.445
          },
          "max_down_natr": {
            "n": 129,
            "mean": -2.813,
            "median": -2.368,
            "p25": -3.668,
            "p75": -1.219
          },
          "median_max_up_natr": 1.733,
          "median_max_down_natr": -2.368,
          "mean_max_up_natr": 2.694,
          "mean_max_down_natr": -2.813,
          "p25_max_up_natr": 0.708,
          "p75_max_up_natr": 3.445,
          "p25_max_down_natr": -3.668,
          "p75_max_down_natr": -1.219,
          "outcome_natr_moves": {
            "breakout": {
              "n": 52,
              "max_up_natr": {
                "n": 52,
                "mean": 4.208,
                "median": 3.428,
                "p25": 1.863,
                "p75": 5.321
              },
              "max_down_natr": {
                "n": 52,
                "mean": -1.975,
                "median": -0.959,
                "p25": -2.279,
                "p75": -0.567
              }
            },
            "breakdown": {
              "n": 77,
              "max_up_natr": {
                "n": 77,
                "mean": 1.671,
                "median": 0.88,
                "p25": 0.398,
                "p75": 1.874
              },
              "max_down_natr": {
                "n": 77,
                "mean": -3.38,
                "median": -2.88,
                "p25": -4.015,
                "p75": -2.077
              }
            },
            "sideways": {
              "n": 0,
              "max_up_natr": {
                "n": 0,
                "mean": null,
                "median": null,
                "p25": null,
                "p75": null
              },
              "max_down_natr": {
                "n": 0,
                "mean": null,
                "median": null,
                "p25": null,
                "p75": null
              }
            },
            "forming": {
              "n": 0,
              "max_up_natr": {
                "n": 0,
                "mean": null,
                "median": null,
                "p25": null,
                "p75": null
              },
              "max_down_natr": {
                "n": 0,
                "mean": null,
                "median": null,
                "p25": null,
                "p75": null
              }
            }
          }
        },
        {
          "bin_index": 3,
          "label": "Q4",
          "range_label": "0.432 \u2013 49.6",
          "min": 0.432,
          "max": 49.57,
          "median_feature": 1.2709,
          "n": 130,
          "breakout_success_rate": 43.85,
          "breakdown_success_rate": 54.62,
          "sideways_rate": 1.53,
          "forming_rate": 0.0,
          "both_cleared_rate": 50.0,
          "breakout_success_rate_ci95": [
            35.61,
            52.43
          ],
          "breakdown_success_rate_ci95": [
            46.05,
            62.92
          ],
          "sideways_rate_ci95": [
            0.42,
            5.44
          ],
          "forming_rate_ci95": [
            0.0,
            2.87
          ],
          "mean_ret_10c": 0.113,
          "mean_mfe": 6.083,
          "mean_mae": -5.491,
          "expected_hit_rate": 54.62,
          "max_up_natr": {
            "n": 130,
            "mean": 2.684,
            "median": 1.818,
            "p25": 0.771,
            "p75": 3.414
          },
          "max_down_natr": {
            "n": 130,
            "mean": -2.442,
            "median": -2.265,
            "p25": -3.264,
            "p75": -1.187
          },
          "median_max_up_natr": 1.818,
          "median_max_down_natr": -2.265,
          "mean_max_up_natr": 2.684,
          "mean_max_down_natr": -2.442,
          "p25_max_up_natr": 0.771,
          "p75_max_up_natr": 3.414,
          "p25_max_down_natr": -3.264,
          "p75_max_down_natr": -1.187,
          "outcome_natr_moves": {
            "breakout": {
              "n": 57,
              "max_up_natr": {
                "n": 57,
                "mean": 3.995,
                "median": 3.073,
                "p25": 1.876,
                "p75": 4.323
              },
              "max_down_natr": {
                "n": 57,
                "mean": -1.849,
                "median": -1.503,
                "p25": -2.725,
                "p75": -0.715
              }
            },
            "breakdown": {
              "n": 71,
              "max_up_natr": {
                "n": 71,
                "mean": 1.685,
                "median": 0.857,
                "p25": 0.467,
                "p75": 1.943
              },
              "max_down_natr": {
                "n": 71,
                "mean": -2.963,
                "median": -3.01,
                "p25": -3.634,
                "p75": -1.756
              }
            },
            "sideways": {
              "n": 2,
              "max_up_natr": {
                "n": 2,
                "mean": 0.791,
                "median": 0.791,
                "p25": 0.756,
                "p75": 0.825
              },
              "max_down_natr": {
                "n": 2,
                "mean": -0.879,
                "median": -0.879,
                "p25": -0.919,
                "p75": -0.839
              }
            },
            "forming": {
              "n": 0,
              "max_up_natr": {
                "n": 0,
                "mean": null,
                "median": null,
                "p25": null,
                "p75": null
              },
              "max_down_natr": {
                "n": 0,
                "mean": null,
                "median": null,
                "p25": null,
                "p75": null
              }
            }
          }
        }
      ],
      "histogram": {
        "bin_edges": [
          -9.6291,
          -8.5165,
          -7.4038,
          -6.2911,
          -5.1784,
          -4.0657,
          -2.9531,
          -1.8404,
          -0.7277,
          0.385,
          1.4977,
          2.6103,
          3.723,
          4.8357,
          5.9484,
          7.0611,
          8.1738
        ],
        "counts": [
          8,
          1,
          0,
          8,
          5,
          10,
          26,
          69,
          253,
          85,
          25,
          11,
          6,
          2,
          2,
          7
        ],
        "bin_centers": [
          -9.0728,
          -7.9601,
          -6.8474,
          -5.7348,
          -4.6221,
          -3.5094,
          -2.3967,
          -1.284,
          -0.1714,
          0.9413,
          2.054,
          3.1667,
          4.2794,
          5.392,
          6.5047,
          7.6174
        ]
      },
      "sample_scope": "last_snapshot"
    },
    {
      "feature": "rsi_div_rsi_delta",
      "display_name": "rsi div rsi delta",
      "n": 518,
      "binning": "quantile",
      "bins": [
        {
          "bin_index": 0,
          "label": "Q1",
          "range_label": "-21 \u2013 -2.91",
          "min": -20.972,
          "max": -2.908,
          "median_feature": -6.0184,
          "n": 130,
          "breakout_success_rate": 39.23,
          "breakdown_success_rate": 60.0,
          "sideways_rate": 0.77,
          "forming_rate": 0.0,
          "both_cleared_rate": 43.08,
          "breakout_success_rate_ci95": [
            31.26,
            47.82
          ],
          "breakdown_success_rate_ci95": [
            51.41,
            68.02
          ],
          "sideways_rate_ci95": [
            0.14,
            4.23
          ],
          "forming_rate_ci95": [
            0.0,
            2.87
          ],
          "mean_ret_10c": 0.199,
          "mean_mfe": 5.236,
          "mean_mae": -4.513,
          "expected_hit_rate": 60.0,
          "max_up_natr": {
            "n": 130,
            "mean": 2.952,
            "median": 1.812,
            "p25": 0.725,
            "p75": 3.972
          },
          "max_down_natr": {
            "n": 130,
            "mean": -2.505,
            "median": -2.141,
            "p25": -3.31,
            "p75": -1.159
          },
          "median_max_up_natr": 1.812,
          "median_max_down_natr": -2.141,
          "mean_max_up_natr": 2.952,
          "mean_max_down_natr": -2.505,
          "p25_max_up_natr": 0.725,
          "p75_max_up_natr": 3.972,
          "p25_max_down_natr": -3.31,
          "p75_max_down_natr": -1.159,
          "outcome_natr_moves": {
            "breakout": {
              "n": 51,
              "max_up_natr": {
                "n": 51,
                "mean": 4.816,
                "median": 3.406,
                "p25": 2.111,
                "p75": 5.865
              },
              "max_down_natr": {
                "n": 51,
                "mean": -1.561,
                "median": -0.921,
                "p25": -1.863,
                "p75": -0.646
              }
            },
            "breakdown": {
              "n": 78,
              "max_up_natr": {
                "n": 78,
                "mean": 1.761,
                "median": 0.918,
                "p25": 0.359,
                "p75": 2.112
              },
              "max_down_natr": {
                "n": 78,
                "mean": -3.142,
                "median": -2.848,
                "p25": -3.851,
                "p75": -1.833
              }
            },
            "sideways": {
              "n": 1,
              "max_up_natr": {
                "n": 1,
                "mean": 0.859,
                "median": 0.859,
                "p25": 0.859,
                "p75": 0.859
              },
              "max_down_natr": {
                "n": 1,
                "mean": -0.959,
                "median": -0.959,
                "p25": -0.959,
                "p75": -0.959
              }
            },
            "forming": {
              "n": 0,
              "max_up_natr": {
                "n": 0,
                "mean": null,
                "median": null,
                "p25": null,
                "p75": null
              },
              "max_down_natr": {
                "n": 0,
                "mean": null,
                "median": null,
                "p25": null,
                "p75": null
              }
            }
          }
        },
        {
          "bin_index": 1,
          "label": "Q2",
          "range_label": "-2.91 \u2013 0.229",
          "min": -2.908,
          "max": 0.229,
          "median_feature": -1.23,
          "n": 129,
          "breakout_success_rate": 44.96,
          "breakdown_success_rate": 54.26,
          "sideways_rate": 0.78,
          "forming_rate": 0.0,
          "both_cleared_rate": 51.94,
          "breakout_success_rate_ci95": [
            36.65,
            53.57
          ],
          "breakdown_success_rate_ci95": [
            45.67,
            62.61
          ],
          "sideways_rate_ci95": [
            0.14,
            4.26
          ],
          "forming_rate_ci95": [
            0.0,
            2.89
          ],
          "mean_ret_10c": -0.233,
          "mean_mfe": 4.298,
          "mean_mae": -4.319,
          "expected_hit_rate": 52.71,
          "max_up_natr": {
            "n": 129,
            "mean": 2.263,
            "median": 1.737,
            "p25": 0.758,
            "p75": 3.282
          },
          "max_down_natr": {
            "n": 129,
            "mean": -2.545,
            "median": -2.418,
            "p25": -3.403,
            "p75": -1.221
          },
          "median_max_up_natr": 1.737,
          "median_max_down_natr": -2.418,
          "mean_max_up_natr": 2.263,
          "mean_max_down_natr": -2.545,
          "p25_max_up_natr": 0.758,
          "p75_max_up_natr": 3.282,
          "p25_max_down_natr": -3.403,
          "p75_max_down_natr": -1.221,
          "outcome_natr_moves": {
            "breakout": {
              "n": 58,
              "max_up_natr": {
                "n": 58,
                "mean": 3.368,
                "median": 3.139,
                "p25": 1.844,
                "p75": 4.289
              },
              "max_down_natr": {
                "n": 58,
                "mean": -2.052,
                "median": -1.629,
                "p25": -2.907,
                "p75": -0.698
              }
            },
            "breakdown": {
              "n": 70,
              "max_up_natr": {
                "n": 70,
                "mean": 1.369,
                "median": 0.825,
                "p25": 0.463,
                "p75": 1.773
              },
              "max_down_natr": {
                "n": 70,
                "mean": -2.978,
                "median": -2.792,
                "p25": -3.651,
                "p75": -1.797
              }
            },
            "sideways": {
              "n": 1,
              "max_up_natr": {
                "n": 1,
                "mean": 0.722,
                "median": 0.722,
                "p25": 0.722,
                "p75": 0.722
              },
              "max_down_natr": {
                "n": 1,
                "mean": -0.799,
                "median": -0.799,
                "p25": -0.799,
                "p75": -0.799
              }
            },
            "forming": {
              "n": 0,
              "max_up_natr": {
                "n": 0,
                "mean": null,
                "median": null,
                "p25": null,
                "p75": null
              },
              "max_down_natr": {
                "n": 0,
                "mean": null,
                "median": null,
                "p25": null,
                "p75": null
              }
            }
          }
        },
        {
          "bin_index": 2,
          "label": "Q3",
          "range_label": "0.229 \u2013 3.11",
          "min": 0.229,
          "max": 3.112,
          "median_feature": 1.2734,
          "n": 129,
          "breakout_success_rate": 48.06,
          "breakdown_success_rate": 51.16,
          "sideways_rate": 0.78,
          "forming_rate": 0.0,
          "both_cleared_rate": 46.51,
          "breakout_success_rate_ci95": [
            39.62,
            56.61
          ],
          "breakdown_success_rate_ci95": [
            42.63,
            59.63
          ],
          "sideways_rate_ci95": [
            0.14,
            4.26
          ],
          "forming_rate_ci95": [
            0.0,
            2.89
          ],
          "mean_ret_10c": 1.52,
          "mean_mfe": 7.923,
          "mean_mae": -6.57,
          "expected_hit_rate": 48.06,
          "max_up_natr": {
            "n": 129,
            "mean": 3.138,
            "median": 2.106,
            "p25": 1.046,
            "p75": 3.832
          },
          "max_down_natr": {
            "n": 129,
            "mean": -2.885,
            "median": -1.835,
            "p25": -3.484,
            "p75": -0.815
          },
          "median_max_up_natr": 2.106,
          "median_max_down_natr": -1.835,
          "mean_max_up_natr": 3.138,
          "mean_max_down_natr": -2.885,
          "p25_max_up_natr": 1.046,
          "p75_max_up_natr": 3.832,
          "p25_max_down_natr": -3.484,
          "p75_max_down_natr": -0.815,
          "outcome_natr_moves": {
            "breakout": {
              "n": 62,
              "max_up_natr": {
                "n": 62,
                "mean": 4.058,
                "median": 3.074,
                "p25": 2.068,
                "p75": 4.761
              },
              "max_down_natr": {
                "n": 62,
                "mean": -2.292,
                "median": -0.781,
                "p25": -2.253,
                "p75": -0.32
              }
            },
            "breakdown": {
              "n": 66,
              "max_up_natr": {
                "n": 66,
                "mean": 2.307,
                "median": 1.165,
                "p25": 0.605,
                "p75": 3.209
              },
              "max_down_natr": {
                "n": 66,
                "mean": -3.478,
                "median": -2.607,
                "p25": -4.142,
                "p75": -1.777
              }
            },
            "sideways": {
              "n": 1,
              "max_up_natr": {
                "n": 1,
                "mean": 0.933,
                "median": 0.933,
                "p25": 0.933,
                "p75": 0.933
              },
              "max_down_natr": {
                "n": 1,
                "mean": -0.54,
                "median": -0.54,
                "p25": -0.54,
                "p75": -0.54
              }
            },
            "forming": {
              "n": 0,
              "max_up_natr": {
                "n": 0,
                "mean": null,
                "median": null,
                "p25": null,
                "p75": null
              },
              "max_down_natr": {
                "n": 0,
                "mean": null,
                "median": null,
                "p25": null,
                "p75": null
              }
            }
          }
        },
        {
          "bin_index": 3,
          "label": "Q4",
          "range_label": "3.11 \u2013 17.2",
          "min": 3.112,
          "max": 17.221,
          "median_feature": 5.9305,
          "n": 130,
          "breakout_success_rate": 55.38,
          "breakdown_success_rate": 43.85,
          "sideways_rate": 0.77,
          "forming_rate": 0.0,
          "both_cleared_rate": 40.0,
          "breakout_success_rate_ci95": [
            46.81,
            63.65
          ],
          "breakdown_success_rate_ci95": [
            35.61,
            52.43
          ],
          "sideways_rate_ci95": [
            0.14,
            4.23
          ],
          "forming_rate_ci95": [
            0.0,
            2.87
          ],
          "mean_ret_10c": 0.219,
          "mean_mfe": 7.218,
          "mean_mae": -6.574,
          "expected_hit_rate": 55.38,
          "max_up_natr": {
            "n": 130,
            "mean": 2.807,
            "median": 1.783,
            "p25": 0.958,
            "p75": 3.188
          },
          "max_down_natr": {
            "n": 130,
            "mean": -2.58,
            "median": -1.655,
            "p25": -3.365,
            "p75": -0.627
          },
          "median_max_up_natr": 1.783,
          "median_max_down_natr": -1.655,
          "mean_max_up_natr": 2.807,
          "mean_max_down_natr": -2.58,
          "p25_max_up_natr": 0.958,
          "p75_max_up_natr": 3.188,
          "p25_max_down_natr": -3.365,
          "p75_max_down_natr": -0.627,
          "outcome_natr_moves": {
            "breakout": {
              "n": 72,
              "max_up_natr": {
                "n": 72,
                "mean": 3.331,
                "median": 2.733,
                "p25": 1.594,
                "p75": 4.006
              },
              "max_down_natr": {
                "n": 72,
                "mean": -1.936,
                "median": -0.784,
                "p25": -2.368,
                "p75": -0.247
              }
            },
            "breakdown": {
              "n": 57,
              "max_up_natr": {
                "n": 57,
                "mean": 2.18,
                "median": 0.925,
                "p25": 0.579,
                "p75": 2.004
              },
              "max_down_natr": {
                "n": 57,
                "mean": -3.431,
                "median": -2.603,
                "p25": -4.835,
                "p75": -1.56
              }
            },
            "sideways": {
              "n": 1,
              "max_up_natr": {
                "n": 1,
                "mean": 0.769,
                "median": 0.769,
                "p25": 0.769,
                "p75": 0.769
              },
              "max_down_natr": {
                "n": 1,
                "mean": -0.418,
                "median": -0.418,
                "p25": -0.418,
                "p75": -0.418
              }
            },
            "forming": {
              "n": 0,
              "max_up_natr": {
                "n": 0,
                "mean": null,
                "median": null,
                "p25": null,
                "p75": null
              },
              "max_down_natr": {
                "n": 0,
                "mean": null,
                "median": null,
                "p25": null,
                "p75": null
              }
            }
          }
        }
      ],
      "histogram": {
        "bin_edges": [
          -13.7694,
          -12.0659,
          -10.3624,
          -8.6589,
          -6.9554,
          -5.2519,
          -3.5484,
          -1.8449,
          -0.1414,
          1.5621,
          3.2656,
          4.9691,
          6.6726,
          8.3761,
          10.0796,
          11.7831,
          13.4866
        ],
        "counts": [
          13,
          8,
          10,
          21,
          27,
          34,
          51,
          77,
          94,
          55,
          40,
          36,
          18,
          11,
          7,
          16
        ],
        "bin_centers": [
          -12.9177,
          -11.2142,
          -9.5107,
          -7.8072,
          -6.1037,
          -4.4002,
          -2.6967,
          -0.9932,
          0.7103,
          2.4138,
          4.1173,
          5.8208,
          7.5243,
          9.2279,
          10.9314,
          12.6349
        ]
      },
      "sample_scope": "last_snapshot"
    },
    {
      "feature": "rsi_div_price_divergence",
      "display_name": "rsi div price divergence",
      "n": 518,
      "binning": "quantile",
      "bins": [
        {
          "bin_index": 0,
          "label": "Q1",
          "range_label": "-0.000923 \u2013 0.00236",
          "min": -0.0009,
          "max": 0.0024,
          "median_feature": 0.0012,
          "n": 130,
          "breakout_success_rate": 42.31,
          "breakdown_success_rate": 56.15,
          "sideways_rate": 1.54,
          "forming_rate": 0.0,
          "both_cleared_rate": 46.92,
          "breakout_success_rate_ci95": [
            34.16,
            50.9
          ],
          "breakdown_success_rate_ci95": [
            47.57,
            64.39
          ],
          "sideways_rate_ci95": [
            0.42,
            5.44
          ],
          "forming_rate_ci95": [
            0.0,
            2.87
          ],
          "mean_ret_10c": -0.098,
          "mean_mfe": 3.482,
          "mean_mae": -3.582,
          "expected_hit_rate": 58.46,
          "max_up_natr": {
            "n": 130,
            "mean": 2.495,
            "median": 1.788,
            "p25": 0.816,
            "p75": 3.324
          },
          "max_down_natr": {
            "n": 130,
            "mean": -2.743,
            "median": -2.239,
            "p25": -3.665,
            "p75": -1.113
          },
          "median_max_up_natr": 1.788,
          "median_max_down_natr": -2.239,
          "mean_max_up_natr": 2.495,
          "mean_max_down_natr": -2.743,
          "p25_max_up_natr": 0.816,
          "p75_max_up_natr": 3.324,
          "p25_max_down_natr": -3.665,
          "p75_max_down_natr": -1.113,
          "outcome_natr_moves": {
            "breakout": {
              "n": 55,
              "max_up_natr": {
                "n": 55,
                "mean": 3.736,
                "median": 3.193,
                "p25": 1.854,
                "p75": 4.869
              },
              "max_down_natr": {
                "n": 55,
                "mean": -2.023,
                "median": -1.16,
                "p25": -2.462,
                "p75": -0.42
              }
            },
            "breakdown": {
              "n": 73,
              "max_up_natr": {
                "n": 73,
                "mean": 1.606,
                "median": 0.92,
                "p25": 0.329,
                "p75": 1.913
              },
              "max_down_natr": {
                "n": 73,
                "mean": -3.347,
                "median": -2.85,
                "p25": -4.015,
                "p75": -1.658
              }
            },
            "sideways": {
              "n": 2,
              "max_up_natr": {
                "n": 2,
                "mean": 0.851,
                "median": 0.851,
                "p25": 0.81,
                "p75": 0.892
              },
              "max_down_natr": {
                "n": 2,
                "mean": -0.479,
                "median": -0.479,
                "p25": -0.51,
                "p75": -0.449
              }
            },
            "forming": {
              "n": 0,
              "max_up_natr": {
                "n": 0,
                "mean": null,
                "median": null,
                "p25": null,
                "p75": null
              },
              "max_down_natr": {
                "n": 0,
                "mean": null,
                "median": null,
                "p25": null,
                "p75": null
              }
            }
          }
        },
        {
          "bin_index": 1,
          "label": "Q2",
          "range_label": "0.00236 \u2013 0.00565",
          "min": 0.0024,
          "max": 0.0056,
          "median_feature": 0.0035,
          "n": 129,
          "breakout_success_rate": 46.51,
          "breakdown_success_rate": 53.49,
          "sideways_rate": 0.0,
          "forming_rate": 0.0,
          "both_cleared_rate": 39.53,
          "breakout_success_rate_ci95": [
            38.13,
            55.1
          ],
          "breakdown_success_rate_ci95": [
            44.9,
            61.87
          ],
          "sideways_rate_ci95": [
            0.0,
            2.89
          ],
          "forming_rate_ci95": [
            0.0,
            2.89
          ],
          "mean_ret_10c": -0.083,
          "mean_mfe": 4.286,
          "mean_mae": -4.038,
          "expected_hit_rate": 51.16,
          "max_up_natr": {
            "n": 129,
            "mean": 2.821,
            "median": 1.843,
            "p25": 0.9,
            "p75": 3.896
          },
          "max_down_natr": {
            "n": 129,
            "mean": -2.625,
            "median": -2.077,
            "p25": -3.625,
            "p75": -0.881
          },
          "median_max_up_natr": 1.843,
          "median_max_down_natr": -2.077,
          "mean_max_up_natr": 2.821,
          "mean_max_down_natr": -2.625,
          "p25_max_up_natr": 0.9,
          "p75_max_up_natr": 3.896,
          "p25_max_down_natr": -3.625,
          "p75_max_down_natr": -0.881,
          "outcome_natr_moves": {
            "breakout": {
              "n": 60,
              "max_up_natr": {
                "n": 60,
                "mean": 4.049,
                "median": 3.519,
                "p25": 2.039,
                "p75": 5.231
              },
              "max_down_natr": {
                "n": 60,
                "mean": -1.559,
                "median": -0.821,
                "p25": -1.369,
                "p75": -0.436
              }
            },
            "breakdown": {
              "n": 69,
              "max_up_natr": {
                "n": 69,
                "mean": 1.753,
                "median": 0.92,
                "p25": 0.456,
                "p75": 2.075
              },
              "max_down_natr": {
                "n": 69,
                "mean": -3.551,
                "median": -3.049,
                "p25": -4.435,
                "p75": -1.996
              }
            },
            "sideways": {
              "n": 0,
              "max_up_natr": {
                "n": 0,
                "mean": null,
                "median": null,
                "p25": null,
                "p75": null
              },
              "max_down_natr": {
                "n": 0,
                "mean": null,
                "median": null,
                "p25": null,
                "p75": null
              }
            },
            "forming": {
              "n": 0,
              "max_up_natr": {
                "n": 0,
                "mean": null,
                "median": null,
                "p25": null,
                "p75": null
              },
              "max_down_natr": {
                "n": 0,
                "mean": null,
                "median": null,
                "p25": null,
                "p75": null
              }
            }
          }
        },
        {
          "bin_index": 2,
          "label": "Q3",
          "range_label": "0.00565 \u2013 0.0144",
          "min": 0.0056,
          "max": 0.0144,
          "median_feature": 0.009,
          "n": 129,
          "breakout_success_rate": 48.84,
          "breakdown_success_rate": 51.16,
          "sideways_rate": 0.0,
          "forming_rate": 0.0,
          "both_cleared_rate": 50.39,
          "breakout_success_rate_ci95": [
            40.37,
            57.37
          ],
          "breakdown_success_rate_ci95": [
            42.63,
            59.63
          ],
          "sideways_rate_ci95": [
            0.0,
            2.89
          ],
          "forming_rate_ci95": [
            0.0,
            2.89
          ],
          "mean_ret_10c": 0.172,
          "mean_mfe": 6.276,
          "mean_mae": -6.654,
          "expected_hit_rate": 55.81,
          "max_up_natr": {
            "n": 129,
            "mean": 3.047,
            "median": 1.787,
            "p25": 0.99,
            "p75": 3.205
          },
          "max_down_natr": {
            "n": 129,
            "mean": -3.008,
            "median": -2.261,
            "p25": -3.315,
            "p75": -1.058
          },
          "median_max_up_natr": 1.787,
          "median_max_down_natr": -2.261,
          "mean_max_up_natr": 3.047,
          "mean_max_down_natr": -3.008,
          "p25_max_up_natr": 0.99,
          "p75_max_up_natr": 3.205,
          "p25_max_down_natr": -3.315,
          "p75_max_down_natr": -1.058,
          "outcome_natr_moves": {
            "breakout": {
              "n": 63,
              "max_up_natr": {
                "n": 63,
                "mean": 3.681,
                "median": 2.69,
                "p25": 1.752,
                "p75": 4.427
              },
              "max_down_natr": {
                "n": 63,
                "mean": -2.744,
                "median": -1.349,
                "p25": -2.818,
                "p75": -0.348
              }
            },
            "breakdown": {
              "n": 66,
              "max_up_natr": {
                "n": 66,
                "mean": 2.443,
                "median": 0.998,
                "p25": 0.519,
                "p75": 2.085
              },
              "max_down_natr": {
                "n": 66,
                "mean": -3.26,
                "median": -2.773,
                "p25": -3.798,
                "p75": -1.778
              }
            },
            "sideways": {
              "n": 0,
              "max_up_natr": {
                "n": 0,
                "mean": null,
                "median": null,
                "p25": null,
                "p75": null
              },
              "max_down_natr": {
                "n": 0,
                "mean": null,
                "median": null,
                "p25": null,
                "p75": null
              }
            },
            "forming": {
              "n": 0,
              "max_up_natr": {
                "n": 0,
                "mean": null,
                "median": null,
                "p25": null,
                "p75": null
              },
              "max_down_natr": {
                "n": 0,
                "mean": null,
                "median": null,
                "p25": null,
                "p75": null
              }
            }
          }
        },
        {
          "bin_index": 3,
          "label": "Q4",
          "range_label": "0.0144 \u2013 0.496",
          "min": 0.0144,
          "max": 0.496,
          "median_feature": 0.0263,
          "n": 130,
          "breakout_success_rate": 50.0,
          "breakdown_success_rate": 48.46,
          "sideways_rate": 1.54,
          "forming_rate": 0.0,
          "both_cleared_rate": 44.62,
          "breakout_success_rate_ci95": [
            41.53,
            58.47
          ],
          "breakdown_success_rate_ci95": [
            40.04,
            56.97
          ],
          "sideways_rate_ci95": [
            0.42,
            5.44
          ],
          "forming_rate_ci95": [
            0.0,
            2.87
          ],
          "mean_ret_10c": 1.705,
          "mean_mfe": 10.618,
          "mean_mae": -7.699,
          "expected_hit_rate": 50.77,
          "max_up_natr": {
            "n": 130,
            "mean": 2.8,
            "median": 1.939,
            "p25": 0.948,
            "p75": 3.429
          },
          "max_down_natr": {
            "n": 130,
            "mean": -2.141,
            "median": -1.748,
            "p25": -3.082,
            "p75": -0.897
          },
          "median_max_up_natr": 1.939,
          "median_max_down_natr": -1.748,
          "mean_max_up_natr": 2.8,
          "mean_max_down_natr": -2.141,
          "p25_max_up_natr": 0.948,
          "p75_max_up_natr": 3.429,
          "p25_max_down_natr": -3.082,
          "p75_max_down_natr": -0.897,
          "outcome_natr_moves": {
            "breakout": {
              "n": 65,
              "max_up_natr": {
                "n": 65,
                "mean": 3.879,
                "median": 3.02,
                "p25": 1.934,
                "p75": 4.305
              },
              "max_down_natr": {
                "n": 65,
                "mean": -1.575,
                "median": -0.912,
                "p25": -2.238,
                "p75": -0.48
              }
            },
            "breakdown": {
              "n": 63,
              "max_up_natr": {
                "n": 63,
                "mean": 1.751,
                "median": 0.955,
                "p25": 0.564,
                "p75": 2.164
              },
              "max_down_natr": {
                "n": 63,
                "mean": -2.765,
                "median": -2.378,
                "p25": -3.254,
                "p75": -1.681
              }
            },
            "sideways": {
              "n": 2,
              "max_up_natr": {
                "n": 2,
                "mean": 0.791,
                "median": 0.791,
                "p25": 0.756,
                "p75": 0.825
              },
              "max_down_natr": {
                "n": 2,
                "mean": -0.879,
                "median": -0.879,
                "p25": -0.919,
                "p75": -0.839
              }
            },
            "forming": {
              "n": 0,
              "max_up_natr": {
                "n": 0,
                "mean": null,
                "median": null,
                "p25": null,
                "p75": null
              },
              "max_down_natr": {
                "n": 0,
                "mean": null,
                "median": null,
                "p25": null,
                "p75": null
              }
            }
          }
        }
      ],
      "histogram": {
        "bin_edges": [
          0.0002,
          0.0072,
          0.0142,
          0.0211,
          0.0281,
          0.0351,
          0.0421,
          0.0491,
          0.0561,
          0.0631,
          0.07,
          0.077,
          0.084,
          0.091,
          0.098,
          0.105,
          0.1119
        ],
        "counts": [
          296,
          87,
          39,
          36,
          14,
          10,
          7,
          5,
          7,
          1,
          0,
          3,
          3,
          0,
          3,
          7
        ],
        "bin_centers": [
          0.0037,
          0.0107,
          0.0177,
          0.0246,
          0.0316,
          0.0386,
          0.0456,
          0.0526,
          0.0596,
          0.0665,
          0.0735,
          0.0805,
          0.0875,
          0.0945,
          0.1015,
          0.1085
        ]
      },
      "sample_scope": "last_snapshot"
    },
    {
      "feature": "rsi_div_rsi_divergence",
      "display_name": "rsi div rsi divergence",
      "n": 518,
      "binning": "quantile",
      "bins": [
        {
          "bin_index": 0,
          "label": "Q1",
          "range_label": "-0.000995 \u2013 0.0126",
          "min": -0.001,
          "max": 0.0126,
          "median_feature": 0.0063,
          "n": 130,
          "breakout_success_rate": 48.46,
          "breakdown_success_rate": 51.54,
          "sideways_rate": 0.0,
          "forming_rate": 0.0,
          "both_cleared_rate": 52.31,
          "breakout_success_rate_ci95": [
            40.04,
            56.97
          ],
          "breakdown_success_rate_ci95": [
            43.03,
            59.96
          ],
          "sideways_rate_ci95": [
            0.0,
            2.87
          ],
          "forming_rate_ci95": [
            0.0,
            2.87
          ],
          "mean_ret_10c": 2.251,
          "mean_mfe": 7.069,
          "mean_mae": -5.188,
          "expected_hit_rate": 46.15,
          "max_up_natr": {
            "n": 130,
            "mean": 2.862,
            "median": 1.955,
            "p25": 1.037,
            "p75": 3.898
          },
          "max_down_natr": {
            "n": 130,
            "mean": -2.274,
            "median": -2.054,
            "p25": -2.944,
            "p75": -1.049
          },
          "median_max_up_natr": 1.955,
          "median_max_down_natr": -2.054,
          "mean_max_up_natr": 2.862,
          "mean_max_down_natr": -2.274,
          "p25_max_up_natr": 1.037,
          "p75_max_up_natr": 3.898,
          "p25_max_down_natr": -2.944,
          "p75_max_down_natr": -1.049,
          "outcome_natr_moves": {
            "breakout": {
              "n": 63,
              "max_up_natr": {
                "n": 63,
                "mean": 4.104,
                "median": 3.445,
                "p25": 2.079,
                "p75": 4.432
              },
              "max_down_natr": {
                "n": 63,
                "mean": -1.751,
                "median": -0.979,
                "p25": -2.474,
                "p75": -0.342
              }
            },
            "breakdown": {
              "n": 67,
              "max_up_natr": {
                "n": 67,
                "mean": 1.693,
                "median": 1.078,
                "p25": 0.45,
                "p75": 1.926
              },
              "max_down_natr": {
                "n": 67,
                "mean": -2.766,
                "median": -2.409,
                "p25": -3.114,
                "p75": -1.686
              }
            },
            "sideways": {
              "n": 0,
              "max_up_natr": {
                "n": 0,
                "mean": null,
                "median": null,
                "p25": null,
                "p75": null
              },
              "max_down_natr": {
                "n": 0,
                "mean": null,
                "median": null,
                "p25": null,
                "p75": null
              }
            },
            "forming": {
              "n": 0,
              "max_up_natr": {
                "n": 0,
                "mean": null,
                "median": null,
                "p25": null,
                "p75": null
              },
              "max_down_natr": {
                "n": 0,
                "mean": null,
                "median": null,
                "p25": null,
                "p75": null
              }
            }
          }
        },
        {
          "bin_index": 1,
          "label": "Q2",
          "range_label": "0.0126 \u2013 0.0301",
          "min": 0.0126,
          "max": 0.0301,
          "median_feature": 0.02,
          "n": 129,
          "breakout_success_rate": 44.19,
          "breakdown_success_rate": 54.26,
          "sideways_rate": 1.55,
          "forming_rate": 0.0,
          "both_cleared_rate": 45.74,
          "breakout_success_rate_ci95": [
            35.91,
            52.8
          ],
          "breakdown_success_rate_ci95": [
            45.67,
            62.61
          ],
          "sideways_rate_ci95": [
            0.43,
            5.48
          ],
          "forming_rate_ci95": [
            0.0,
            2.89
          ],
          "mean_ret_10c": -1.174,
          "mean_mfe": 5.015,
          "mean_mae": -5.795,
          "expected_hit_rate": 55.81,
          "max_up_natr": {
            "n": 129,
            "mean": 2.487,
            "median": 1.801,
            "p25": 0.823,
            "p75": 3.205
          },
          "max_down_natr": {
            "n": 129,
            "mean": -3.311,
            "median": -2.726,
            "p25": -3.834,
            "p75": -1.085
          },
          "median_max_up_natr": 1.801,
          "median_max_down_natr": -2.726,
          "mean_max_up_natr": 2.487,
          "mean_max_down_natr": -3.311,
          "p25_max_up_natr": 0.823,
          "p75_max_up_natr": 3.205,
          "p25_max_down_natr": -3.834,
          "p75_max_down_natr": -1.085,
          "outcome_natr_moves": {
            "breakout": {
              "n": 57,
              "max_up_natr": {
                "n": 57,
                "mean": 3.297,
                "median": 2.578,
                "p25": 1.801,
                "p75": 3.871
              },
              "max_down_natr": {
                "n": 57,
                "mean": -2.908,
                "median": -1.008,
                "p25": -3.149,
                "p75": -0.415
              }
            },
            "breakdown": {
              "n": 70,
              "max_up_natr": {
                "n": 70,
                "mean": 1.874,
                "median": 0.91,
                "p25": 0.53,
                "p75": 1.976
              },
              "max_down_natr": {
                "n": 70,
                "mean": -3.715,
                "median": -3.329,
                "p25": -4.353,
                "p75": -2.062
              }
            },
            "sideways": {
              "n": 2,
              "max_up_natr": {
                "n": 2,
                "mean": 0.828,
                "median": 0.828,
                "p25": 0.775,
                "p75": 0.881
              },
              "max_down_natr": {
                "n": 2,
                "mean": -0.67,
                "median": -0.67,
                "p25": -0.734,
                "p75": -0.605
              }
            },
            "forming": {
              "n": 0,
              "max_up_natr": {
                "n": 0,
                "mean": null,
                "median": null,
                "p25": null,
                "p75": null
              },
              "max_down_natr": {
                "n": 0,
                "mean": null,
                "median": null,
                "p25": null,
                "p75": null
              }
            }
          }
        },
        {
          "bin_index": 2,
          "label": "Q3",
          "range_label": "0.0301 \u2013 0.0596",
          "min": 0.0301,
          "max": 0.0596,
          "median_feature": 0.0457,
          "n": 129,
          "breakout_success_rate": 51.16,
          "breakdown_success_rate": 48.84,
          "sideways_rate": 0.0,
          "forming_rate": 0.0,
          "both_cleared_rate": 39.53,
          "breakout_success_rate_ci95": [
            42.63,
            59.63
          ],
          "breakdown_success_rate_ci95": [
            40.37,
            57.37
          ],
          "sideways_rate_ci95": [
            0.0,
            2.89
          ],
          "forming_rate_ci95": [
            0.0,
            2.89
          ],
          "mean_ret_10c": 0.628,
          "mean_mfe": 6.711,
          "mean_mae": -5.01,
          "expected_hit_rate": 54.26,
          "max_up_natr": {
            "n": 129,
            "mean": 2.941,
            "median": 1.874,
            "p25": 0.925,
            "p75": 3.393
          },
          "max_down_natr": {
            "n": 129,
            "mean": -2.383,
            "median": -1.628,
            "p25": -3.079,
            "p75": -0.815
          },
          "median_max_up_natr": 1.874,
          "median_max_down_natr": -1.628,
          "mean_max_up_natr": 2.941,
          "mean_max_down_natr": -2.383,
          "p25_max_up_natr": 0.925,
          "p75_max_up_natr": 3.393,
          "p25_max_down_natr": -3.079,
          "p75_max_down_natr": -0.815,
          "outcome_natr_moves": {
            "breakout": {
              "n": 66,
              "max_up_natr": {
                "n": 66,
                "mean": 3.845,
                "median": 3.031,
                "p25": 1.862,
                "p75": 5.199
              },
              "max_down_natr": {
                "n": 66,
                "mean": -1.733,
                "median": -0.832,
                "p25": -1.675,
                "p75": -0.355
              }
            },
            "breakdown": {
              "n": 63,
              "max_up_natr": {
                "n": 63,
                "mean": 1.994,
                "median": 0.92,
                "p25": 0.445,
                "p75": 1.869
              },
              "max_down_natr": {
                "n": 63,
                "mean": -3.064,
                "median": -2.559,
                "p25": -3.663,
                "p75": -1.615
              }
            },
            "sideways": {
              "n": 0,
              "max_up_natr": {
                "n": 0,
                "mean": null,
                "median": null,
                "p25": null,
                "p75": null
              },
              "max_down_natr": {
                "n": 0,
                "mean": null,
                "median": null,
                "p25": null,
                "p75": null
              }
            },
            "forming": {
              "n": 0,
              "max_up_natr": {
                "n": 0,
                "mean": null,
                "median": null,
                "p25": null,
                "p75": null
              },
              "max_down_natr": {
                "n": 0,
                "mean": null,
                "median": null,
                "p25": null,
                "p75": null
              }
            }
          }
        },
        {
          "bin_index": 3,
          "label": "Q4",
          "range_label": "0.0596 \u2013 0.21",
          "min": 0.0596,
          "max": 0.21,
          "median_feature": 0.0856,
          "n": 130,
          "breakout_success_rate": 43.85,
          "breakdown_success_rate": 54.62,
          "sideways_rate": 1.53,
          "forming_rate": 0.0,
          "both_cleared_rate": 43.85,
          "breakout_success_rate_ci95": [
            35.61,
            52.43
          ],
          "breakdown_success_rate_ci95": [
            46.05,
            62.92
          ],
          "sideways_rate_ci95": [
            0.42,
            5.44
          ],
          "forming_rate_ci95": [
            0.0,
            2.87
          ],
          "mean_ret_10c": -0.014,
          "mean_mfe": 5.876,
          "mean_mae": -5.982,
          "expected_hit_rate": 60.0,
          "max_up_natr": {
            "n": 130,
            "mean": 2.871,
            "median": 1.666,
            "p25": 0.805,
            "p75": 3.353
          },
          "max_down_natr": {
            "n": 130,
            "mean": -2.548,
            "median": -2.041,
            "p25": -3.375,
            "p75": -0.984
          },
          "median_max_up_natr": 1.666,
          "median_max_down_natr": -2.041,
          "mean_max_up_natr": 2.871,
          "mean_max_down_natr": -2.548,
          "p25_max_up_natr": 0.805,
          "p75_max_up_natr": 3.353,
          "p25_max_down_natr": -3.375,
          "p75_max_down_natr": -0.984,
          "outcome_natr_moves": {
            "breakout": {
              "n": 57,
              "max_up_natr": {
                "n": 57,
                "mean": 4.073,
                "median": 2.936,
                "p25": 1.58,
                "p75": 4.628
              },
              "max_down_natr": {
                "n": 57,
                "mean": -1.573,
                "median": -0.92,
                "p25": -2.21,
                "p75": -0.493
              }
            },
            "breakdown": {
              "n": 71,
              "max_up_natr": {
                "n": 71,
                "mean": 1.964,
                "median": 0.939,
                "p25": 0.533,
                "p75": 2.447
              },
              "max_down_natr": {
                "n": 71,
                "mean": -3.384,
                "median": -2.816,
                "p25": -4.177,
                "p75": -1.755
              }
            },
            "sideways": {
              "n": 2,
              "max_up_natr": {
                "n": 2,
                "mean": 0.814,
                "median": 0.814,
                "p25": 0.791,
                "p75": 0.836
              },
              "max_down_natr": {
                "n": 2,
                "mean": -0.688,
                "median": -0.688,
                "p25": -0.824,
                "p75": -0.553
              }
            },
            "forming": {
              "n": 0,
              "max_up_natr": {
                "n": 0,
                "mean": null,
                "median": null,
                "p25": null,
                "p75": null
              },
              "max_down_natr": {
                "n": 0,
                "mean": null,
                "median": null,
                "p25": null,
                "p75": null
              }
            }
          }
        }
      ],
      "histogram": {
        "bin_edges": [
          0.0005,
          0.0106,
          0.0208,
          0.0309,
          0.041,
          0.0512,
          0.0613,
          0.0715,
          0.0816,
          0.0918,
          0.1019,
          0.1121,
          0.1222,
          0.1324,
          0.1425,
          0.1526,
          0.1628
        ],
        "counts": [
          115,
          84,
          65,
          43,
          44,
          41,
          29,
          25,
          17,
          13,
          8,
          7,
          13,
          6,
          1,
          7
        ],
        "bin_centers": [
          0.0055,
          0.0157,
          0.0258,
          0.036,
          0.0461,
          0.0563,
          0.0664,
          0.0766,
          0.0867,
          0.0968,
          0.107,
          0.1171,
          0.1273,
          0.1374,
          0.1476,
          0.1577
        ]
      },
      "sample_scope": "last_snapshot"
    },
    {
      "feature": "btc_dist14_mean",
      "display_name": "btc mean",
      "n": 10000,
      "binning": "quantile",
      "bins": [
        {
          "bin_index": 0,
          "label": "Q1",
          "range_label": "-15 \u2013 -0.49",
          "min": -15.04,
          "max": -0.49,
          "median_feature": -1.0992,
          "n": 2500,
          "breakout_success_rate": 62.28,
          "breakdown_success_rate": 31.32,
          "sideways_rate": 6.4,
          "forming_rate": 0.0,
          "both_cleared_rate": 37.36,
          "breakout_success_rate_ci95": [
            60.36,
            64.16
          ],
          "breakdown_success_rate_ci95": [
            29.53,
            33.17
          ],
          "sideways_rate_ci95": [
            5.51,
            7.43
          ],
          "forming_rate_ci95": [
            0.0,
            0.15
          ],
          "mean_ret_10c": 0.932,
          "mean_mfe": 7.73,
          "mean_mae": -5.203,
          "expected_hit_rate": 74.24,
          "max_up_natr": {
            "n": 2500,
            "mean": 2.908,
            "median": 1.959,
            "p25": 0.908,
            "p75": 3.632
          },
          "max_down_natr": {
            "n": 2500,
            "mean": -2.076,
            "median": -1.512,
            "p25": -2.879,
            "p75": -0.602
          },
          "median_max_up_natr": 1.959,
          "median_max_down_natr": -1.512,
          "mean_max_up_natr": 2.908,
          "mean_max_down_natr": -2.076,
          "p25_max_up_natr": 0.908,
          "p75_max_up_natr": 3.632,
          "p25_max_down_natr": -2.879,
          "p75_max_down_natr": -0.602,
          "outcome_natr_moves": {
            "breakout": {
              "n": 1557,
              "max_up_natr": {
                "n": 1557,
                "mean": 3.774,
                "median": 2.74,
                "p25": 1.681,
                "p75": 4.486
              },
              "max_down_natr": {
                "n": 1557,
                "mean": -1.439,
                "median": -0.9,
                "p25": -1.981,
                "p75": -0.335
              }
            },
            "breakdown": {
              "n": 783,
              "max_up_natr": {
                "n": 783,
                "mean": 1.531,
                "median": 0.706,
                "p25": 0.266,
                "p75": 1.754
              },
              "max_down_natr": {
                "n": 783,
                "mean": -3.382,
                "median": -2.811,
                "p25": -4.193,
                "p75": -1.784
              }
            },
            "sideways": {
              "n": 160,
              "max_up_natr": {
                "n": 160,
                "mean": 1.216,
                "median": 0.864,
                "p25": 0.588,
                "p75": 1.666
              },
              "max_down_natr": {
                "n": 160,
                "mean": -1.893,
                "median": -1.584,
                "p25": -2.462,
                "p75": -0.877
              }
            },
            "forming": {
              "n": 0,
              "max_up_natr": {
                "n": 0,
                "mean": null,
                "median": null,
                "p25": null,
                "p75": null
              },
              "max_down_natr": {
                "n": 0,
                "mean": null,
                "median": null,
                "p25": null,
                "p75": null
              }
            }
          }
        },
        {
          "bin_index": 1,
          "label": "Q2",
          "range_label": "-0.49 \u2013 -0.0335",
          "min": -0.49,
          "max": -0.0335,
          "median_feature": -0.2149,
          "n": 2500,
          "breakout_success_rate": 52.76,
          "breakdown_success_rate": 41.48,
          "sideways_rate": 5.76,
          "forming_rate": 0.0,
          "both_cleared_rate": 36.52,
          "breakout_success_rate_ci95": [
            50.8,
            54.71
          ],
          "breakdown_success_rate_ci95": [
            39.56,
            43.42
          ],
          "sideways_rate_ci95": [
            4.91,
            6.74
          ],
          "forming_rate_ci95": [
            0.0,
            0.15
          ],
          "mean_ret_10c": 0.223,
          "mean_mfe": 4.457,
          "mean_mae": -3.674,
          "expected_hit_rate": 74.78,
          "max_up_natr": {
            "n": 2500,
            "mean": 2.663,
            "median": 1.797,
            "p25": 0.698,
            "p75": 3.351
          },
          "max_down_natr": {
            "n": 2500,
            "mean": -2.376,
            "median": -1.746,
            "p25": -3.163,
            "p75": -0.681
          },
          "median_max_up_natr": 1.797,
          "median_max_down_natr": -1.746,
          "mean_max_up_natr": 2.663,
          "mean_max_down_natr": -2.376,
          "p25_max_up_natr": 0.698,
          "p75_max_up_natr": 3.351,
          "p25_max_down_natr": -3.163,
          "p75_max_down_natr": -0.681,
          "outcome_natr_moves": {
            "breakout": {
              "n": 1319,
              "max_up_natr": {
                "n": 1319,
                "mean": 3.856,
                "median": 2.811,
                "p25": 1.77,
                "p75": 4.49
              },
              "max_down_natr": {
                "n": 1319,
                "mean": -1.517,
                "median": -0.853,
                "p25": -1.984,
                "p75": -0.288
              }
            },
            "breakdown": {
              "n": 1037,
              "max_up_natr": {
                "n": 1037,
                "mean": 1.318,
                "median": 0.642,
                "p25": 0.22,
                "p75": 1.627
              },
              "max_down_natr": {
                "n": 1037,
                "mean": -3.55,
                "median": -2.861,
                "p25": -4.374,
                "p75": -1.823
              }
            },
            "sideways": {
              "n": 144,
              "max_up_natr": {
                "n": 144,
                "mean": 1.424,
                "median": 1.009,
                "p25": 0.536,
                "p75": 1.684
              },
              "max_down_natr": {
                "n": 144,
                "mean": -1.794,
                "median": -1.484,
                "p25": -2.632,
                "p75": -0.796
              }
            },
            "forming": {
              "n": 0,
              "max_up_natr": {
                "n": 0,
                "mean": null,
                "median": null,
                "p25": null,
                "p75": null
              },
              "max_down_natr": {
                "n": 0,
                "mean": null,
                "median": null,
                "p25": null,
                "p75": null
              }
            }
          }
        },
        {
          "bin_index": 2,
          "label": "Q3",
          "range_label": "-0.0335 \u2013 0.395",
          "min": -0.0335,
          "max": 0.395,
          "median_feature": 0.1232,
          "n": 2500,
          "breakout_success_rate": 44.68,
          "breakdown_success_rate": 50.28,
          "sideways_rate": 5.04,
          "forming_rate": 0.0,
          "both_cleared_rate": 39.88,
          "breakout_success_rate_ci95": [
            42.74,
            46.64
          ],
          "breakdown_success_rate_ci95": [
            48.32,
            52.24
          ],
          "sideways_rate_ci95": [
            4.25,
            5.97
          ],
          "forming_rate_ci95": [
            0.0,
            0.15
          ],
          "mean_ret_10c": -0.058,
          "mean_mfe": 3.757,
          "mean_mae": -3.585,
          "expected_hit_rate": 74.23,
          "max_up_natr": {
            "n": 2500,
            "mean": 2.688,
            "median": 1.811,
            "p25": 0.698,
            "p75": 3.5
          },
          "max_down_natr": {
            "n": 2500,
            "mean": -2.561,
            "median": -1.958,
            "p25": -3.45,
            "p75": -0.827
          },
          "median_max_up_natr": 1.811,
          "median_max_down_natr": -1.958,
          "mean_max_up_natr": 2.688,
          "mean_max_down_natr": -2.561,
          "p25_max_up_natr": 0.698,
          "p75_max_up_natr": 3.5,
          "p25_max_down_natr": -3.45,
          "p75_max_down_natr": -0.827,
          "outcome_natr_moves": {
            "breakout": {
              "n": 1117,
              "max_up_natr": {
                "n": 1117,
                "mean": 4.076,
                "median": 3.02,
                "p25": 1.851,
                "p75": 4.76
              },
              "max_down_natr": {
                "n": 1117,
                "mean": -1.516,
                "median": -0.828,
                "p25": -2.04,
                "p75": -0.272
              }
            },
            "breakdown": {
              "n": 1257,
              "max_up_natr": {
                "n": 1257,
                "mean": 1.587,
                "median": 0.821,
                "p25": 0.27,
                "p75": 2.101
              },
              "max_down_natr": {
                "n": 1257,
                "mean": -3.536,
                "median": -2.852,
                "p25": -4.408,
                "p75": -1.881
              }
            },
            "sideways": {
              "n": 126,
              "max_up_natr": {
                "n": 126,
                "mean": 1.368,
                "median": 1.141,
                "p25": 0.482,
                "p75": 1.988
              },
              "max_down_natr": {
                "n": 126,
                "mean": -2.104,
                "median": -1.563,
                "p25": -2.821,
                "p75": -0.86
              }
            },
            "forming": {
              "n": 0,
              "max_up_natr": {
                "n": 0,
                "mean": null,
                "median": null,
                "p25": null,
                "p75": null
              },
              "max_down_natr": {
                "n": 0,
                "mean": null,
                "median": null,
                "p25": null,
                "p75": null
              }
            }
          }
        },
        {
          "bin_index": 3,
          "label": "Q4",
          "range_label": "0.395 \u2013 27.7",
          "min": 0.395,
          "max": 27.668,
          "median_feature": 0.9546,
          "n": 2500,
          "breakout_success_rate": 35.48,
          "breakdown_success_rate": 59.2,
          "sideways_rate": 5.32,
          "forming_rate": 0.0,
          "both_cleared_rate": 38.28,
          "breakout_success_rate_ci95": [
            33.63,
            37.38
          ],
          "breakdown_success_rate_ci95": [
            57.26,
            61.11
          ],
          "sideways_rate_ci95": [
            4.51,
            6.27
          ],
          "forming_rate_ci95": [
            0.0,
            0.15
          ],
          "mean_ret_10c": -0.112,
          "mean_mfe": 6.667,
          "mean_mae": -6.813,
          "expected_hit_rate": 67.94,
          "max_up_natr": {
            "n": 2500,
            "mean": 2.635,
            "median": 1.715,
            "p25": 0.612,
            "p75": 3.503
          },
          "max_down_natr": {
            "n": 2500,
            "mean": -3.022,
            "median": -2.128,
            "p25": -3.931,
            "p75": -0.843
          },
          "median_max_up_natr": 1.715,
          "median_max_down_natr": -2.128,
          "mean_max_up_natr": 2.635,
          "mean_max_down_natr": -3.022,
          "p25_max_up_natr": 0.612,
          "p75_max_up_natr": 3.503,
          "p25_max_down_natr": -3.931,
          "p75_max_down_natr": -0.843,
          "outcome_natr_moves": {
            "breakout": {
              "n": 887,
              "max_up_natr": {
                "n": 887,
                "mean": 4.27,
                "median": 3.096,
                "p25": 1.996,
                "p75": 5.01
              },
              "max_down_natr": {
                "n": 887,
                "mean": -1.571,
                "median": -0.654,
                "p25": -1.812,
                "p75": -0.245
              }
            },
            "breakdown": {
              "n": 1480,
              "max_up_natr": {
                "n": 1480,
                "mean": 1.715,
                "median": 0.918,
                "p25": 0.288,
                "p75": 2.326
              },
              "max_down_natr": {
                "n": 1480,
                "mean": -4.023,
                "median": -3.041,
                "p25": -5.015,
                "p75": -1.882
              }
            },
            "sideways": {
              "n": 133,
              "max_up_natr": {
                "n": 133,
                "mean": 1.958,
                "median": 1.471,
                "p25": 0.873,
                "p75": 2.764
              },
              "max_down_natr": {
                "n": 133,
                "mean": -1.558,
                "median": -1.047,
                "p25": -2.108,
                "p75": -0.581
              }
            },
            "forming": {
              "n": 0,
              "max_up_natr": {
                "n": 0,
                "mean": null,
                "median": null,
                "p25": null,
                "p75": null
              },
              "max_down_natr": {
                "n": 0,
                "mean": null,
                "median": null,
                "p25": null,
                "p75": null
              }
            }
          }
        }
      ],
      "histogram": {
        "bin_edges": [
          -4.6977,
          -4.0908,
          -3.484,
          -2.8771,
          -2.2703,
          -1.6634,
          -1.0566,
          -0.4497,
          0.1571,
          0.7639,
          1.3708,
          1.9776,
          2.5845,
          3.1913,
          3.7982,
          4.405,
          5.0119
        ],
        "counts": [
          152,
          54,
          73,
          161,
          297,
          563,
          1340,
          3791,
          1999,
          719,
          317,
          163,
          122,
          80,
          44,
          125
        ],
        "bin_centers": [
          -4.3942,
          -3.7874,
          -3.1806,
          -2.5737,
          -1.9669,
          -1.36,
          -0.7532,
          -0.1463,
          0.4605,
          1.0674,
          1.6742,
          2.2811,
          2.8879,
          3.4947,
          4.1016,
          4.7084
        ]
      },
      "sample_scope": "all_snapshots"
    }
  ],
  "all_ranked_features": [
    "bd_level_1x",
    "bd_level_2x",
    "bd_level_3x",
    "bo_level_1x",
    "bo_level_2x",
    "bo_level_3x",
    "btc_dist14_mean",
    "confidence",
    "current_scale_number",
    "extension_candle_offset",
    "extension_progress",
    "geom_breakout_potential",
    "geom_confidence",
    "geom_height",
    "geom_hs_completion_score",
    "geom_hs_symmetry_score",
    "geom_overlap_ratio",
    "geom_resistance_slope",
    "geom_support_slope",
    "geom_width",
    "is_extended_snapshot",
    "momentum_score",
    "natr_14",
    "natr_pattern_avg",
    "rsi_14",
    "rsi_div_price_delta_pct",
    "rsi_div_price_divergence",
    "rsi_div_rsi_delta",
    "rsi_div_rsi_divergence",
    "rsi_div_span",
    "target_max_down_20c",
    "target_max_up_20c",
    "target_ret_20c",
    "volume_score"
  ],
  "findings": [
    "Across 134,463 deduplicated pattern snapshots on Binance USD-M futures (15m\u20131d), mutually exclusive outcomes were breakout 49.22%, breakdown 45.26%, and sideways 5.52% (first \u00b11\u00d7 NATR threshold within 20 candles; rates sum to 100%).",
    "Expected-direction hit rate (bias-aware) was 72.21%. 38.24% of windows cleared 1\u00d7 NATR in both directions within the horizon; exclusive labels still follow first threshold touch in candle order.",
    "Pooled median 20-candle close return was -0.056% (win rate 49.06%); mean MFE/MAE was 5.81% / -4.807% (MFE\u00f7|MAE| \u2248 1.209).",
    "Highest expected-direction hit rate (n\u2265100): Bearish Flag on 4h at 82.4% (n=1,631). Lowest: Ascending Triangle on 1h at 25.85% (n=205).",
    "By timeframe, expected-direction hit ranged from 66.33% on 4h (n=22,681) to 69.02% on 15m (n=28,417).",
    "Confidence terciles: high-confidence detections had an expected-direction hit rate of 73.93% versus 73.4% in the low tercile (higher than low \u2014 detector confidence is not a reliable standalone filter in this raw sample).",
    "RSI context: breakout success was 78.92% when RSI(14) > 70 versus 20.92% when RSI(14) < 30 (largest-n timeframe slice, n\u226520 per bucket).",
    "Strongest high-n breakout correlate (single timeframe): current_scale_number (Spearman \u03c1=0.6026***, n=10,000). Absolute effect sizes remain small (|\u03c1| typically \u226a 0.1).",
    "Strongest high-n correlate of 20-candle close return: target_ret_20c (\u03c1=1.0***, n=10,000)."
  ]
}