{
  "id": "m1d_calibrated_miss_v1",
  "generated_at_utc": "2026-09-09T15:41:02.333176+00:00",
  "protocol": {
    "id": "m1d_calibrated_miss_protocol_v1",
    "declared_before_fit": true,
    "research_only": true,
    "production_freeze": false,
    "score_authorized_m1": false,
    "target": "PAGO_R(t)",
    "predictor": "PEXP_R(t-12)",
    "model": "OLS linear: PAGO_expected(t) = a + b * PEXP_R(t-12)",
    "training": {
      "rule": "train only on strictly prior eligible monthly observations (no future leakage)",
      "schemes": [
        {
          "name": "expanding",
          "min_train_n": 60
        },
        {
          "name": "rolling",
          "window": 120,
          "min_train_n": 60
        }
      ]
    },
    "eligibility": "obs_date where pago_r and pexp_r_lag12 both non-null; join A229RX YoY when available (dependence diagnostics only)",
    "evaluation_start_rule": "first OOS month is the first eligible month after min_train_n prior eligible months are available",
    "evaluation_end": "last eligible month in local archive (currently through 2026-07)",
    "candidate_miss": {
      "formula": "max(0, predictedPAGO - actualPAGO)",
      "coding_direction_check": "require expanding-scheme mean(b)>0 OR majority of OOS fits have b>0 before interpreting positive miss as shortfall vs expected assessment; if b<=0 on average, flag coding inversion and do not freeze candidate",
      "note": "NOT production; residual forecast error is not automatically subjective disappointment"
    },
    "baselines": [
      {
        "name": "intercept_mean_prior_pago",
        "rule": "predicted = mean(PAGO) over same prior train set"
      }
    ],
    "metrics_predeclared": [
      "MAE",
      "RMSE",
      "calibration_slope_intercept",
      "mean_signed_error"
    ],
    "era_splits_predeclared": [
      "1979-01..1999-12",
      "2000-01..2019-12",
      "2020-01..2026-07",
      "phone_era_pre_2024-04",
      "transition_2024-04..2024-06",
      "web_era_2024-07.."
    ],
    "dependence_predeclared": [
      "corr(candidate_miss, actual_PAGO)",
      "corr(candidate_miss, A229RX_YoY)",
      "corr(prediction_error, actual_PAGO)",
      "corr(prediction_error, A229RX_YoY)"
    ],
    "data_caveat": "latest revised Michigan/BEA series in local archive \u2260 true vintage/real-time backtest; release availability not reconstructed",
    "no_tuning": "no political/phase/outcome labels used in train or eval"
  },
  "data_inputs": {
    "a2_gap_monthly_csv": "data/m1/a2_gap_monthly.csv",
    "a2_sha256": "ae14d30de08d016c07e2940fd428c9d2321f263a476f9788dab365d50ab49471",
    "a229rx_yoy_monthly_csv": "data/m1/a229rx_yoy_monthly.csv",
    "yoy_sha256": "484c96b6025e8caaab5a21ce645e771b28aa4717007881434707949c2c74cf04",
    "n_eligible_months": 571,
    "eligible_start": "1979-01-01",
    "eligible_end": "2026-07-01",
    "vintage_caveat": "latest revised Michigan/BEA series in local archive \u2260 true vintage/real-time backtest; release availability not reconstructed"
  },
  "schemes": [
    {
      "scheme": "expanding",
      "params": {
        "name": "expanding",
        "min_train_n": 60
      },
      "summary": {
        "n": 511,
        "eval_start": "1984-01-01",
        "eval_end": "2026-07-01",
        "linear": {
          "MAE": 10.73349325987118,
          "RMSE": 13.41851855392579,
          "mean_signed_error_pred_minus_actual": 1.2556303747004336,
          "calibration_intercept_c0": -4.8064407620346685,
          "calibration_slope_c1": 1.0325940157275395,
          "mean_candidate_miss": 5.994561817285807
        },
        "baseline_intercept": {
          "MAE": 15.58271478011313,
          "RMSE": 19.07527966531569,
          "mean_signed_error": -0.7508228022145346,
          "mean_baseline_miss": 7.415945988949298
        },
        "coding_direction": {
          "mean_slope_b": 1.040996869177477,
          "frac_slope_b_positive": 1.0,
          "median_slope_b": 1.056800735412026
        },
        "mae_improvement_vs_baseline": 4.849221520241951,
        "rmse_improvement_vs_baseline": 5.656761111389901
      },
      "dependence": {
        "corr_candidate_miss_pago": -0.7244164035633268,
        "corr_error_pago": -0.7483168673559059,
        "n_with_yoy": 511,
        "corr_candidate_miss_a229rx_yoy": -0.22603129517537965,
        "corr_error_a229rx_yoy": -0.2338119812877466
      },
      "era_stability": {
        "1979-01..1999-12": {
          "n": 192,
          "eval_start": "1984-01-01",
          "eval_end": "1999-12-01",
          "linear": {
            "MAE": 7.43933626083717,
            "RMSE": 9.311892476492252,
            "mean_signed_error_pred_minus_actual": -1.4937624074462585,
            "calibration_intercept_c0": 24.31723868580346,
            "calibration_slope_c1": 0.7997684315225738,
            "mean_candidate_miss": 2.9727869266954556
          },
          "baseline_intercept": {
            "MAE": 13.688696461609695,
            "RMSE": 15.681386085759597,
            "mean_signed_error": -10.999365664999415,
            "mean_baseline_miss": 1.3446653983051398
          },
          "coding_direction": {
            "mean_slope_b": 1.0228519497827324,
            "frac_slope_b_positive": 1.0,
            "median_slope_b": 1.0157112899753695
          },
          "mae_improvement_vs_baseline": 6.249360200772525,
          "rmse_improvement_vs_baseline": 6.369493609267344,
          "dependence": {
            "corr_candidate_miss_pago": -0.720740607954484,
            "corr_error_pago": -0.7791992413700095,
            "n_with_yoy": 192,
            "corr_candidate_miss_a229rx_yoy": -0.3952891272920534,
            "corr_error_a229rx_yoy": -0.4677975908609836
          }
        },
        "2000-01..2019-12": {
          "n": 240,
          "eval_start": "2000-01-01",
          "eval_end": "2019-12-01",
          "linear": {
            "MAE": 13.055198964825879,
            "RMSE": 15.66022046778279,
            "mean_signed_error_pred_minus_actual": 1.5239963269823613,
            "calibration_intercept_c0": 0.6611978702092927,
            "calibration_slope_c1": 0.9797852498964765,
            "mean_candidate_miss": 7.28959764590412
          },
          "baseline_intercept": {
            "MAE": 15.711222900096278,
            "RMSE": 19.903344727824592,
            "mean_signed_error": 2.050132104495014,
            "mean_baseline_miss": 8.880677502295645
          },
          "coding_direction": {
            "mean_slope_b": 1.030210310044025,
            "frac_slope_b_positive": 1.0,
            "median_slope_b": 1.053985024391685
          },
          "mae_improvement_vs_baseline": 2.656023935270399,
          "rmse_improvement_vs_baseline": 4.243124260041803,
          "dependence": {
            "corr_candidate_miss_pago": -0.7568679533073669,
            "corr_error_pago": -0.7796156127330649,
            "n_with_yoy": 240,
            "corr_candidate_miss_a229rx_yoy": -0.3390184670354965,
            "corr_error_a229rx_yoy": -0.37750769328972467
          }
        },
        "2020-01..2026-07": {
          "n": 79,
          "eval_start": "2020-01-01",
          "eval_end": "2026-07-01",
          "linear": {
            "MAE": 11.6862625589269,
            "RMSE": 14.452963579558801,
            "mean_signed_error_pred_minus_actual": 7.122409939567549,
            "calibration_intercept_c0": 5.568682404669218,
            "calibration_slope_c1": 0.8721124427521678,
            "mean_candidate_miss": 9.404336249247224
          },
          "baseline_intercept": {
            "MAE": 19.795494126400527,
            "RMSE": 23.505291057934215,
            "mean_signed_error": 15.647798109739963,
            "mean_baseline_miss": 17.721646118070247
          },
          "coding_direction": {
            "mean_slope_b": 1.117865207352407,
            "frac_slope_b_positive": 1.0,
            "median_slope_b": 1.1153010759237114
          },
          "mae_improvement_vs_baseline": 8.109231567473627,
          "rmse_improvement_vs_baseline": 9.052327478375414,
          "dependence": {
            "corr_candidate_miss_pago": -0.5288642190992833,
            "corr_error_pago": -0.5680277838588083,
            "n_with_yoy": 79,
            "corr_candidate_miss_a229rx_yoy": -0.1141225239508061,
            "corr_error_a229rx_yoy": -0.08338258313138129
          }
        },
        "phone_era_pre_2024-04": {
          "n": 483,
          "eval_start": "1984-01-01",
          "eval_end": "2024-03-01",
          "linear": {
            "MAE": 10.500385591357746,
            "RMSE": 13.13646238878647,
            "mean_signed_error_pred_minus_actual": 0.5851810988648238,
            "calibration_intercept_c0": 0.9198995461137116,
            "calibration_slope_c1": 0.9863268787017246,
            "mean_candidate_miss": 5.542783345111285
          },
          "baseline_intercept": {
            "MAE": 14.726338071684658,
            "RMSE": 18.109141952631262,
            "mean_signed_error": -2.5540712545460607,
            "mean_baseline_miss": 6.086133408569299
          },
          "coding_direction": {
            "mean_slope_b": 1.035805468329841,
            "frac_slope_b_positive": 1.0,
            "median_slope_b": 1.0511599721552138
          },
          "mae_improvement_vs_baseline": 4.225952480326912,
          "rmse_improvement_vs_baseline": 4.9726795638447925,
          "dependence": {
            "corr_candidate_miss_pago": -0.7428388385290862,
            "corr_error_pago": -0.7601128094541075,
            "n_with_yoy": 483,
            "corr_candidate_miss_a229rx_yoy": -0.23171234419867695,
            "corr_error_a229rx_yoy": -0.2356413068071391
          }
        },
        "transition_2024-04..2024-06": {
          "n": 3,
          "eval_start": "2024-04-01",
          "eval_end": "2024-06-01",
          "linear": {
            "MAE": 6.390793407439166,
            "RMSE": 7.10468317389689,
            "mean_signed_error_pred_minus_actual": 0.5705518693704003,
            "calibration_intercept_c0": 401.1190802250543,
            "calibration_slope_c1": -3.4846171393500898,
            "mean_candidate_miss": 3.4806726384047835
          },
          "baseline_intercept": {
            "MAE": 18.51964054937872,
            "RMSE": 19.426536058414825,
            "mean_signed_error": 18.51964054937872,
            "mean_baseline_miss": 18.51964054937872
          },
          "coding_direction": {
            "mean_slope_b": 1.109117592672755,
            "frac_slope_b_positive": 1.0,
            "median_slope_b": 1.1088742918427001
          },
          "mae_improvement_vs_baseline": 12.128847141939556,
          "rmse_improvement_vs_baseline": 12.321852884517934,
          "dependence": {
            "corr_candidate_miss_pago": -0.9607689228305228,
            "corr_error_pago": -0.9937928855977358,
            "n_with_yoy": 3,
            "corr_candidate_miss_a229rx_yoy": 0.9351577743676617,
            "corr_error_a229rx_yoy": 0.9815224962746537
          }
        },
        "web_era_2024-07..": {
          "n": 25,
          "eval_start": "2024-07-01",
          "eval_end": "2026-07-01",
          "linear": {
            "MAE": 15.75825739784255,
            "RMSE": 18.44757378907786,
            "mean_signed_error_pred_minus_actual": 14.290919804484014,
            "calibration_intercept_c0": 50.80560417538631,
            "calibration_slope_c1": 0.2712878796910948,
            "mean_candidate_miss": 15.024588601163282
          },
          "baseline_intercept": {
            "MAE": 31.77548169463936,
            "RMSE": 32.50107181671465,
            "mean_signed_error": 31.77548169463936,
            "mean_baseline_miss": 31.77548169463936
          },
          "coding_direction": {
            "mean_slope_b": 1.1331202467343686,
            "frac_slope_b_positive": 1.0,
            "median_slope_b": 1.1332654935904256
          },
          "mae_improvement_vs_baseline": 16.01722429679681,
          "rmse_improvement_vs_baseline": 14.053498027636788,
          "dependence": {
            "corr_candidate_miss_pago": -0.044240645809596454,
            "corr_error_pago": 0.004287549031233433,
            "n_with_yoy": 25,
            "corr_candidate_miss_a229rx_yoy": 0.47754528515325434,
            "corr_error_a229rx_yoy": 0.5665858170546365
          }
        }
      }
    },
    {
      "scheme": "rolling",
      "params": {
        "name": "rolling",
        "window": 120,
        "min_train_n": 60
      },
      "summary": {
        "n": 511,
        "eval_start": "1984-01-01",
        "eval_end": "2026-07-01",
        "linear": {
          "MAE": 11.119890599724966,
          "RMSE": 13.992176771174693,
          "mean_signed_error_pred_minus_actual": 0.9084887516480646,
          "calibration_intercept_c0": 21.818641306593307,
          "calibration_slope_c1": 0.79071356253315,
          "mean_candidate_miss": 6.014189675686516
        },
        "baseline_intercept": {
          "MAE": 16.966302853217645,
          "RMSE": 20.682445077230817,
          "mean_signed_error": 0.13255559427094085,
          "mean_baseline_miss": 8.549429223744292
        },
        "coding_direction": {
          "mean_slope_b": 1.0126214567970053,
          "frac_slope_b_positive": 1.0,
          "median_slope_b": 1.0627293134668465
        },
        "mae_improvement_vs_baseline": 5.846412253492678,
        "rmse_improvement_vs_baseline": 6.690268306056124
      },
      "dependence": {
        "corr_candidate_miss_pago": -0.5786038189196425,
        "corr_error_pago": -0.5629203213533113,
        "n_with_yoy": 511,
        "corr_candidate_miss_a229rx_yoy": -0.14412168040405596,
        "corr_error_a229rx_yoy": -0.15163653166970137
      },
      "era_stability": {
        "1979-01..1999-12": {
          "n": 192,
          "eval_start": "1984-01-01",
          "eval_end": "1999-12-01",
          "linear": {
            "MAE": 7.807215658794635,
            "RMSE": 9.748003741521005,
            "mean_signed_error_pred_minus_actual": -1.5664634837494127,
            "calibration_intercept_c0": 24.060746897695864,
            "calibration_slope_c1": 0.8025305098955832,
            "mean_candidate_miss": 3.120376087522611
          },
          "baseline_intercept": {
            "MAE": 13.09825047566432,
            "RMSE": 15.085454133243568,
            "mean_signed_error": -8.062052558997651,
            "mean_baseline_miss": 2.5180989583333337
          },
          "coding_direction": {
            "mean_slope_b": 0.854975595208125,
            "frac_slope_b_positive": 1.0,
            "median_slope_b": 0.9163203521304515
          },
          "mae_improvement_vs_baseline": 5.2910348168696855,
          "rmse_improvement_vs_baseline": 5.337450391722562,
          "dependence": {
            "corr_candidate_miss_pago": -0.7489676419640733,
            "corr_error_pago": -0.852115883253572,
            "n_with_yoy": 192,
            "corr_candidate_miss_a229rx_yoy": -0.39639700343958306,
            "corr_error_a229rx_yoy": -0.5005164579071375
          }
        },
        "2000-01..2019-12": {
          "n": 240,
          "eval_start": "2000-01-01",
          "eval_end": "2019-12-01",
          "linear": {
            "MAE": 12.40736224678803,
            "RMSE": 15.21113514875014,
            "mean_signed_error_pred_minus_actual": -0.8140035088426122,
            "calibration_intercept_c0": 27.84013747653806,
            "calibration_slope_c1": 0.7444602938290669,
            "mean_candidate_miss": 5.796679368972708
          },
          "baseline_intercept": {
            "MAE": 18.107222222222223,
            "RMSE": 22.174074876835753,
            "mean_signed_error": 0.145625,
            "mean_baseline_miss": 9.126423611111111
          },
          "coding_direction": {
            "mean_slope_b": 1.0484166202921774,
            "frac_slope_b_positive": 1.0,
            "median_slope_b": 1.1081690437070786
          },
          "mae_improvement_vs_baseline": 5.699859975434194,
          "rmse_improvement_vs_baseline": 6.962939728085614,
          "dependence": {
            "corr_candidate_miss_pago": -0.5040701812260725,
            "corr_error_pago": -0.4926274306556899,
            "n_with_yoy": 240,
            "corr_candidate_miss_a229rx_yoy": -0.1933978525673177,
            "corr_error_a229rx_yoy": -0.21490430576671557
          }
        },
        "2020-01..2026-07": {
          "n": 79,
          "eval_start": "2020-01-01",
          "eval_end": "2026-07-01",
          "linear": {
            "MAE": 15.259642414452674,
            "RMSE": 18.23499832184594,
            "mean_signed_error_pred_minus_actual": 12.156450418914876,
            "calibration_intercept_c0": 21.32567002247029,
            "calibration_slope_c1": 0.6788913379114829,
            "mean_candidate_miss": 13.708046416683777
          },
          "baseline_intercept": {
            "MAE": 22.901054852320677,
            "RMSE": 26.834713254347214,
            "mean_signed_error": 20.008860759493672,
            "mean_baseline_miss": 21.45495780590717
          },
          "coding_direction": {
            "mean_slope_b": 1.2870159654833817,
            "frac_slope_b_positive": 1.0,
            "median_slope_b": 1.243051870021091
          },
          "mae_improvement_vs_baseline": 7.641412437868002,
          "rmse_improvement_vs_baseline": 8.599714932501275,
          "dependence": {
            "corr_candidate_miss_pago": -0.31610023032866974,
            "corr_error_pago": -0.2324905727462108,
            "n_with_yoy": 79,
            "corr_candidate_miss_a229rx_yoy": -0.034810595199014166,
            "corr_error_a229rx_yoy": -0.0009210361752153214
          }
        },
        "phone_era_pre_2024-04": {
          "n": 483,
          "eval_start": "1984-01-01",
          "eval_end": "2024-03-01",
          "linear": {
            "MAE": 10.786723639209702,
            "RMSE": 13.583503078536038,
            "mean_signed_error_pred_minus_actual": 0.26665865777395203,
            "calibration_intercept_c0": 26.849369177716582,
            "calibration_slope_c1": 0.7529456584028565,
            "mean_candidate_miss": 5.526691148491827
          },
          "baseline_intercept": {
            "MAE": 16.004463267068772,
            "RMSE": 19.61712643962108,
            "mean_signed_error": -1.8051533981936838,
            "mean_baseline_miss": 7.099654934437543
          },
          "coding_direction": {
            "mean_slope_b": 0.990028978809637,
            "frac_slope_b_positive": 1.0,
            "median_slope_b": 1.0418161543682731
          },
          "mae_improvement_vs_baseline": 5.2177396278590695,
          "rmse_improvement_vs_baseline": 6.033623361085043,
          "dependence": {
            "corr_candidate_miss_pago": -0.5753268740679157,
            "corr_error_pago": -0.5675870004669916,
            "n_with_yoy": 483,
            "corr_candidate_miss_a229rx_yoy": -0.14817158307349154,
            "corr_error_a229rx_yoy": -0.15833093502264114
          }
        },
        "transition_2024-04..2024-06": {
          "n": 3,
          "eval_start": "2024-04-01",
          "eval_end": "2024-06-01",
          "linear": {
            "MAE": 5.935162264585756,
            "RMSE": 8.999829229119985,
            "mean_signed_error_pred_minus_actual": 5.654748701829637,
            "calibration_intercept_c0": 366.06947107970717,
            "calibration_slope_c1": -2.927158699163622,
            "mean_candidate_miss": 5.794955483207697
          },
          "baseline_intercept": {
            "MAE": 24.57222222222222,
            "RMSE": 25.246625187009315,
            "mean_signed_error": 24.57222222222222,
            "mean_baseline_miss": 24.57222222222222
          },
          "coding_direction": {
            "mean_slope_b": 1.1823586205893388,
            "frac_slope_b_positive": 1.0,
            "median_slope_b": 1.18879393080755
          },
          "mae_improvement_vs_baseline": 18.637059957636463,
          "rmse_improvement_vs_baseline": 16.24679595788933,
          "dependence": {
            "corr_candidate_miss_pago": -0.9861198477431615,
            "corr_error_pago": -0.9896422259160933,
            "n_with_yoy": 3,
            "corr_candidate_miss_a229rx_yoy": 0.9694384731270005,
            "corr_error_a229rx_yoy": 0.9747693999122341
          }
        },
        "web_era_2024-07..": {
          "n": 25,
          "eval_start": "2024-07-01",
          "eval_end": "2026-07-01",
          "linear": {
            "MAE": 18.178843677096584,
            "RMSE": 20.670775743482206,
            "mean_signed_error_pred_minus_actual": 12.739094971274131,
            "calibration_intercept_c0": 57.00077185242408,
            "calibration_slope_c1": 0.20550711024623003,
            "mean_candidate_miss": 15.458969324185357
          },
          "baseline_intercept": {
            "MAE": 34.63633333333333,
            "RMSE": 35.10059998695812,
            "mean_signed_error": 34.63633333333333,
            "mean_baseline_miss": 34.63633333333333
          },
          "coding_direction": {
            "mean_slope_b": 1.4287396718578793,
            "frac_slope_b_positive": 1.0,
            "median_slope_b": 1.446240714500408
          },
          "mae_improvement_vs_baseline": 16.45748965623675,
          "rmse_improvement_vs_baseline": 14.429824243475917,
          "dependence": {
            "corr_candidate_miss_pago": 0.08102726243167009,
            "corr_error_pago": 0.211264017673325,
            "n_with_yoy": 25,
            "corr_candidate_miss_a229rx_yoy": 0.5674083292857218,
            "corr_error_a229rx_yoy": 0.723615114725322
          }
        }
      }
    }
  ],
  "recommendation_status": {
    "menu": "MODIFY",
    "note": "Candidate miss still strongly tracks low actual PAGO (corr<-0.5); risk of PAGO-dominance contamination similar to A2 \u2014 continue research, not production.",
    "still_research_only": true,
    "production_formula": false,
    "score_authorized_m1": false
  },
  "gates": {
    "score_authorized_m1": false,
    "formula_freeze": false,
    "l1_unchanged": true
  }
}