{
  "task_id": "F1-conf-03",
  "n_analysed": 1800,
  "n_firms": 300,
  "predictors_used": [
    "leverage",
    "cash_ratio",
    "log_sales"
  ],
  "variables_excluded": [
    {
      "variable": "rating_2025",
      "reason": "Known only in 2025 and constructed from realised default history through 2022 and sample-average leverage; violates end-of-year-t availability rule (outcome leakage)."
    },
    {
      "variable": "default_next",
      "reason": "Outcome variable (known end of t+1); dependent variable, not a predictor."
    },
    {
      "variable": "firm_id",
      "reason": "Identifier; used only for clustering standard errors, not as a regressor."
    },
    {
      "variable": "year",
      "reason": "Origin-year index; not part of the specified model, used only to identify firm-years."
    }
  ],
  "beta_leverage": 0.2637836102938267,
  "se_leverage_cluster": 0.0407569280434615,
  "r2": 0.03490564212216729,
  "default_rate": 0.12111111111111111,
  "feasibility": "complete",
  "feasibility_reason": null,
  "data_issues": [
    {
      "issue": "40 rows are exact duplicates of another row (duplicated firm_id-year keys, identical on all columns).",
      "handling": "Dropped duplicate copies, keeping one row per firm-year (exclusion step 2)."
    },
    {
      "issue": "default_next empty for 300 de-duplicated rows, all in origin year(s) [2022] (outcome beyond the end-2022 data cut).",
      "handling": "Excluded from estimation; not imputed (exclusion step 3)."
    },
    {
      "issue": "rating_2025 is a final-vintage field built from realised defaults (all defaults carry rating D) - look-ahead leakage.",
      "handling": "Column removed from analytic dataset and listed in variables_excluded (exclusion step 1)."
    },
    {
      "issue": "Some firms have default_next = 1 in several years (default not absorbing in the panel).",
      "handling": "Kept as recorded; codebook does not define default as absorbing. Noted as a limitation."
    },
    {
      "issue": "leverage bounded exactly at 0.02 and 0.95 (possible truncation in the source).",
      "handling": "Kept as recorded; noted as a limitation."
    }
  ],
  "n_input_rows": {
    "firm_panel.csv": 2140
  },
  "random_seed": null,
  "supplementary": {
    "intercept": 0.08997926409935522,
    "beta_cash_ratio": -0.18594837465723182,
    "beta_log_sales": -0.007342181807581363,
    "se_cash_ratio_cluster": 0.0588860837664576,
    "se_log_sales_cluster": 0.007626106514531905,
    "ci95_leverage_cluster": [
      0.18390149920815163,
      0.34366572137950174
    ],
    "p_leverage_cluster": 9.663918872288981e-11,
    "se_leverage_hc1": 0.03744708748506851,
    "n_clusters": 300,
    "cluster_se_note": "statsmodels cluster-robust covariance with default small-sample correction (G/(G-1))*((N-1)/(N-K)); CI uses normal critical values."
  }
}