{
  "generated_at": "2026-07-19T08:33:56.651229",
  "snapshot_guard": {
    "snapshot": "C:\\Workspace\\signal-platform\\backtest_snapshots\\prod.sqlite",
    "manifest": null,
    "manifest_ok": null,
    "note": "No completion manifest (prod.sqlite is expected without one). Bar-count sanity still applied.",
    "ticker_count": 506,
    "ohlcv_row_count": 629263,
    "bars_min_avg_max": {
      "min": 14,
      "avg": 1246.1,
      "max": 1261
    },
    "ohlcv_date_range": {
      "min": "2021-06-24",
      "max": "2026-07-02"
    },
    "benchmark_prices": [
      {
        "symbol": "SPY",
        "n": 1516,
        "min": "2020-07-06",
        "max": "2026-07-17"
      },
      {
        "symbol": "XLB",
        "n": 1512,
        "min": "2020-07-10",
        "max": "2026-07-17"
      },
      {
        "symbol": "XLC",
        "n": 1512,
        "min": "2020-07-10",
        "max": "2026-07-17"
      },
      {
        "symbol": "XLE",
        "n": 1512,
        "min": "2020-07-10",
        "max": "2026-07-17"
      },
      {
        "symbol": "XLF",
        "n": 1512,
        "min": "2020-07-10",
        "max": "2026-07-17"
      },
      {
        "symbol": "XLI",
        "n": 1512,
        "min": "2020-07-10",
        "max": "2026-07-17"
      },
      {
        "symbol": "XLK",
        "n": 1512,
        "min": "2020-07-10",
        "max": "2026-07-17"
      },
      {
        "symbol": "XLP",
        "n": 1512,
        "min": "2020-07-10",
        "max": "2026-07-17"
      },
      {
        "symbol": "XLRE",
        "n": 1512,
        "min": "2020-07-10",
        "max": "2026-07-17"
      },
      {
        "symbol": "XLU",
        "n": 1512,
        "min": "2020-07-10",
        "max": "2026-07-17"
      },
      {
        "symbol": "XLV",
        "n": 1512,
        "min": "2020-07-10",
        "max": "2026-07-17"
      },
      {
        "symbol": "XLY",
        "n": 1512,
        "min": "2020-07-10",
        "max": "2026-07-17"
      }
    ],
    "missing_sector_etfs": []
  },
  "sector_coverage": {
    "universe": 506,
    "mapped": 505,
    "mapped_pct": 99.8,
    "with_etf": 505,
    "missing": [
      "RHM"
    ],
    "by_sector": {
      "Industrials": 81,
      "Financials": 75,
      "Information Technology": 72,
      "Health Care": 58,
      "Consumer Discretionary": 47,
      "Consumer Staples": 34,
      "Real Estate": 31,
      "Utilities": 31,
      "Materials": 26,
      "Communication Services": 23,
      "Energy": 22,
      "Consumer Defensive": 2,
      "Technology": 2,
      "Financial Services": 1
    }
  },
  "sector_map_path": "C:\\Workspace\\signal-platform\\data\\research\\ticker_sector_map.json",
  "signal_eval": [
    {
      "signal": "vol_6m",
      "weeks": 39,
      "avg_cross_section": 498.2,
      "mean_ic": 0.0609,
      "ic_t_stat": 1.48,
      "ic_positive_pct": 64.1,
      "mean_quintile_spread": 0.0337,
      "reliable": true
    },
    {
      "signal": "mom_12_1_sector_resid",
      "weeks": 35,
      "avg_cross_section": 497.7,
      "mean_ic": 0.0578,
      "ic_t_stat": 2.34,
      "ic_positive_pct": 65.7,
      "mean_quintile_spread": 0.0245,
      "reliable": true
    },
    {
      "signal": "mom_12_1_resid",
      "weeks": 35,
      "avg_cross_section": 497.7,
      "mean_ic": 0.0552,
      "ic_t_stat": 1.98,
      "ic_positive_pct": 60.0,
      "mean_quintile_spread": 0.0207,
      "reliable": true
    },
    {
      "signal": "mom_12_1",
      "weeks": 35,
      "avg_cross_section": 497.7,
      "mean_ic": 0.0531,
      "ic_t_stat": 1.61,
      "ic_positive_pct": 65.7,
      "mean_quintile_spread": 0.0206,
      "reliable": true
    },
    {
      "signal": "mom_12_1_sector_demeaned",
      "weeks": 35,
      "avg_cross_section": 496.7,
      "mean_ic": 0.034,
      "ic_t_stat": 1.32,
      "ic_positive_pct": 62.9,
      "mean_quintile_spread": 0.0154,
      "reliable": true
    },
    {
      "signal": "trend_200",
      "weeks": 37,
      "avg_cross_section": 497.9,
      "mean_ic": 0.0161,
      "ic_t_stat": 0.44,
      "ic_positive_pct": 59.5,
      "mean_quintile_spread": 0.006,
      "reliable": true
    },
    {
      "signal": "reversal_1m",
      "weeks": 43,
      "avg_cross_section": 498.7,
      "mean_ic": 0.0059,
      "ic_t_stat": 0.22,
      "ic_positive_pct": 53.5,
      "mean_quintile_spread": 0.0053,
      "reliable": true
    },
    {
      "signal": "mom_6_1",
      "weeks": 39,
      "avg_cross_section": 498.2,
      "mean_ic": 0.0051,
      "ic_t_stat": 0.21,
      "ic_positive_pct": 56.4,
      "mean_quintile_spread": 0.0087,
      "reliable": true
    },
    {
      "signal": "mom_3_1",
      "weeks": 42,
      "avg_cross_section": 498.5,
      "mean_ic": -0.0064,
      "ic_t_stat": -0.25,
      "ic_positive_pct": 50.0,
      "mean_quintile_spread": 0.0046,
      "reliable": true
    },
    {
      "signal": "high_52w",
      "weeks": 35,
      "avg_cross_section": 497.7,
      "mean_ic": -0.0086,
      "ic_t_stat": -0.26,
      "ic_positive_pct": 54.3,
      "mean_quintile_spread": -0.0088,
      "reliable": true
    },
    {
      "signal": "fip_id",
      "weeks": 35,
      "avg_cross_section": 497.7,
      "mean_ic": -0.045,
      "ic_t_stat": -2.91,
      "ic_positive_pct": 25.7,
      "mean_quintile_spread": -0.0168,
      "reliable": true
    }
  ],
  "ic_grades": {
    "mom_12_1_sector_resid": {
      "promote_to_ab": true,
      "checks": {
        "sign_ok": true,
        "abs_mean_ic_ge_0_03": true,
        "reliable": true,
        "t_ge_resid": true,
        "mean_ic": 0.0578,
        "ic_t_stat": 2.34,
        "resid_ic_t_stat": 1.98,
        "weeks": 35
      },
      "reason": "clears iron rule and t \u2265 mom_12_1_resid \u2014 authorized for A/B only",
      "row": {
        "signal": "mom_12_1_sector_resid",
        "weeks": 35,
        "avg_cross_section": 497.7,
        "mean_ic": 0.0578,
        "ic_t_stat": 2.34,
        "ic_positive_pct": 65.7,
        "mean_quintile_spread": 0.0245,
        "reliable": true
      }
    },
    "mom_12_1_sector_demeaned": {
      "promote_to_ab": false,
      "checks": {
        "sign_ok": true,
        "abs_mean_ic_ge_0_03": true,
        "reliable": true,
        "t_ge_resid": false,
        "mean_ic": 0.034,
        "ic_t_stat": 1.32,
        "resid_ic_t_stat": 1.98,
        "weeks": 35
      },
      "reason": "does not clear pre-registered IC promotion bar",
      "row": {
        "signal": "mom_12_1_sector_demeaned",
        "weeks": 35,
        "avg_cross_section": 496.7,
        "mean_ic": 0.034,
        "ic_t_stat": 1.32,
        "ic_positive_pct": 62.9,
        "mean_quintile_spread": 0.0154,
        "reliable": true
      }
    }
  },
  "portfolio_ab": {
    "signal": "mom_12_1_sector_resid",
    "ranking_key": "residual_high_vol_blend_80_20_score",
    "fill_mode": "close",
    "validation_split": "2024-07-01",
    "control": {
      "label": "control_mom_12_1_resid",
      "n_qualified_longs": 1086,
      "windows": {
        "train": {
          "sharpe": 1.3,
          "sharpe_se": 0.685,
          "cagr_pct": 29.2,
          "max_drawdown_pct": 21.4,
          "total_return_pct": 70.9,
          "trades": 176,
          "win_rate_pct": null,
          "avg_r": null,
          "n_returns": 525,
          "return_skew": 0.3722,
          "return_kurtosis": 4.6208,
          "psr": 0.971
        },
        "validation": {
          "sharpe": 2.92,
          "sharpe_se": 0.709,
          "cagr_pct": 76.3,
          "max_drawdown_pct": 11.7,
          "total_return_pct": 210.7,
          "trades": 150,
          "win_rate_pct": null,
          "avg_r": null,
          "n_returns": 501,
          "return_skew": 0.1734,
          "return_kurtosis": 4.4625,
          "psr": 1.0
        },
        "full": {
          "sharpe": 2.09,
          "sharpe_se": 0.497,
          "cagr_pct": 51.6,
          "max_drawdown_pct": 21.4,
          "total_return_pct": 424.6,
          "trades": 322,
          "win_rate_pct": null,
          "avg_r": null,
          "n_returns": 1000,
          "return_skew": 0.2686,
          "return_kurtosis": 4.5653,
          "psr": 1.0
        }
      }
    },
    "treatment": {
      "label": "treatment_mom_12_1_sector_resid",
      "n_qualified_longs": 1210,
      "windows": {
        "train": {
          "sharpe": 1.57,
          "sharpe_se": 0.677,
          "cagr_pct": 35.5,
          "max_drawdown_pct": 19.8,
          "total_return_pct": 90.0,
          "trades": 176,
          "win_rate_pct": null,
          "avg_r": null,
          "n_returns": 530,
          "return_skew": 0.466,
          "return_kurtosis": 4.4413,
          "psr": 0.99
        },
        "validation": {
          "sharpe": 2.57,
          "sharpe_se": 0.701,
          "cagr_pct": 66.3,
          "max_drawdown_pct": 14.8,
          "total_return_pct": 176.4,
          "trades": 163,
          "win_rate_pct": null,
          "avg_r": null,
          "n_returns": 501,
          "return_skew": 0.3003,
          "return_kurtosis": 4.4305,
          "psr": 0.9999
        },
        "full": {
          "sharpe": 2.09,
          "sharpe_se": 0.491,
          "cagr_pct": 51.0,
          "max_drawdown_pct": 19.8,
          "total_return_pct": 421.3,
          "trades": 337,
          "win_rate_pct": null,
          "avg_r": null,
          "n_returns": 1005,
          "return_skew": 0.4066,
          "return_kurtosis": 4.3627,
          "psr": 1.0
        }
      }
    },
    "promotion": {
      "promote": true,
      "checks": {
        "validation_sharpe_ge_control_minus_half_se": true,
        "full_sharpe_not_worse": true,
        "full_maxdd_not_worse": true,
        "control_validation_sharpe": 2.92,
        "treatment_validation_sharpe": 2.57,
        "se_used": 0.701,
        "control_full_sharpe": 2.09,
        "treatment_full_sharpe": 2.09,
        "control_full_maxdd": 21.4,
        "treatment_full_maxdd": 19.8
      },
      "reason": "clears pre-registered A/B bar \u2014 human decides wire-in"
    }
  },
  "verdict": "PROMOTE",
  "verdict_detail": "mom_12_1_sector_resid cleared IC + A/B bars. Human must design wire-in; do not ship from this branch.",
  "human_next": "- Approve or reject production residual swap vs dual-signal design.\n- If sector-cap arm ran, review tail-trim diagnostics before any cap.",
  "report_path": "reports/sector-residual-20260719-083356.json",
  "pre_registration": {
    "iron_ic_bar": 0.03,
    "validation_split": "2024-07-01",
    "fill_mode": "close",
    "cost_per_side": 0.001,
    "ab_rule": "val Sharpe >= control - 0.5*SE; full Sharpe & maxDD not worse"
  }
}
