{
  "task_id": "F1-conf-03",
  "n_analysed": 1800,
  "n_firms": 300,
  "predictors_used": [
    "leverage",
    "cash_ratio",
    "log_sales"
  ],
  "variables_excluded": [
    {
      "variable": "rating_2025",
      "reason": "becomes known in 2025; built from realised default history through 2022 and average leverage over the sample -> violates end-of-year-t information rule (outcome leakage)"
    },
    {
      "variable": "default_next",
      "reason": "outcome variable (known end of year t+1); used only as dependent variable"
    },
    {
      "variable": "firm_id",
      "reason": "identifier; used only for clustering"
    },
    {
      "variable": "year",
      "reason": "origin-year index; not a regressor in the specified model"
    }
  ],
  "beta_leverage": 0.2637836102938267,
  "se_leverage_cluster": 0.04075692804346149,
  "r2": 0.03490564212216729,
  "default_rate": 0.12111111111111111,
  "feasibility": "complete",
  "feasibility_reason": null,
  "data_issues": [
    {
      "issue": "40 exact duplicate rows (same firm_id, year and all values)",
      "handling": "dropped; first copy kept, giving one row per firm-year (300 firms x 7 years)"
    },
    {
      "issue": "default_next missing for 300 unique firm-years (origin years [2022]: outcome year 2023 after the end-2022 data cut)",
      "handling": "excluded from estimation, not imputed"
    },
    {
      "issue": "leverage takes the value 0.02 exactly in 57 unique firm-years (minimum of the variable), suggesting bottom-coding/censoring at 0.02",
      "handling": "kept as recorded; noted as limitation (cannot recover true values)"
    },
    {
      "issue": "rating_2025 is a final-vintage (2025) field constructed from realised default history and sample-average leverage; it is perfectly informative of default here (all defaults occur in rating D)",
      "handling": "excluded from the analytic dataset as look-ahead leakage"
    }
  ],
  "n_input_rows": {
    "firm_panel.csv": 2140
  },
  "random_seed": null,
  "extra": {
    "ci95_leverage": [
      0.18390149920815163,
      0.34366572137950174
    ],
    "p_leverage": 9.663918872288908e-11,
    "params": {
      "Intercept": 0.08997926409935522,
      "leverage": 0.2637836102938267,
      "cash_ratio": -0.18594837465723182,
      "log_sales": -0.007342181807581363
    },
    "se_cluster": {
      "Intercept": 0.04351602070943619,
      "leverage": 0.04075692804346149,
      "cash_ratio": 0.058886083766457535,
      "log_sales": 0.007626106514531851
    },
    "se_cluster_note": "statsmodels cluster-robust (CR1 with small-sample correction), 300 clusters"
  }
}