{
  "cohorts": {
    "calibration": {
      "default_rate": 0.158333,
      "loans": 120
    },
    "test": {
      "default_rate": 0.275,
      "loans": 120
    },
    "train": {
      "default_rate": 0.220833,
      "loans": 240
    }
  },
  "config": {
    "calibration_end": "2023-12-31",
    "calibration_start": "2023-07-01",
    "evaluation_as_of": "2025-07-01",
    "review_fraction": 0.1,
    "scenario_lgd": 0.45,
    "seed": 20260927,
    "test_end": "2024-12-31",
    "test_start": "2024-07-01",
    "train_end": "2022-12-31",
    "train_start": "2022-01-01"
  },
  "data_kind": "synthetic",
  "environment": {
    "numpy": "2.5.3",
    "python": "3.12.14",
    "scikit_learn": "1.9.1"
  },
  "label_rule": "90+ DPD within 180 days; negatives need all six reports",
  "model": "fixed logistic regression + separate isotonic calibration",
  "project": "CreditVintage",
  "review_at_fixed_capacity": {
    "default_capture": 0.212121,
    "fraction": 0.1,
    "loans": 12,
    "precision": 0.583333
  },
  "test_metrics": {
    "calibrated": {
      "average_precision": 0.465271,
      "brier": 0.196046,
      "roc_auc": 0.65465
    },
    "constant_train_rate": {
      "average_precision": 0.275,
      "brier": 0.202309,
      "roc_auc": 0.5
    },
    "raw_logistic": {
      "average_precision": 0.506944,
      "brier": 0.181079,
      "roc_auc": 0.67224
    }
  },
  "test_portfolio": {
    "loans": 120,
    "mean_pd": 0.146176,
    "observed_default_rate": 0.275,
    "principal_usd": 1888776.62,
    "scenario_expected_loss_usd": 132386.46,
    "scenario_observed_loss_proxy_usd": 243632.32
  },
  "vintage_bootstrap": {
    "brier_95_interval": [
      0.157078,
      0.245302
    ],
    "requested_replicates": 300,
    "roc_auc_95_interval": [
      0.521704,
      0.770833
    ],
    "unit": "origination_month",
    "valid_replicates": 300
  }
}
