{
  "task_id": "F1-conf-03",
  "n_analysed": 1800,
  "n_firms": 300,
  "predictors_used": [
    "leverage",
    "cash_ratio",
    "log_sales"
  ],
  "variables_excluded": [
    {
      "variable": "rating_2025",
      "reason": "Final-vintage field assigned in 2025 using realised default history through 2022 and sample-average leverage; not known at end of origin year t (look-ahead / outcome leakage)."
    },
    {
      "variable": "default_next",
      "reason": "Outcome variable (known only at end of year t+1); used as dependent variable, not as a predictor."
    },
    {
      "variable": "firm_id",
      "reason": "Identifier; used only for clustering standard errors, not as a predictor."
    },
    {
      "variable": "year",
      "reason": "Origin-year index; kept in analytic.csv for identification but not entered as a regressor (task model specifies leverage, cash_ratio, log_sales only)."
    }
  ],
  "beta_leverage": 0.263784,
  "se_leverage_cluster": 0.040757,
  "ci95_leverage_cluster": [
    0.183901,
    0.343666
  ],
  "r2": 0.034906,
  "default_rate": 0.121111,
  "coef_all": {
    "const": 0.089979,
    "leverage": 0.263784,
    "cash_ratio": -0.185948,
    "log_sales": -0.007342
  },
  "se_all_cluster": {
    "const": 0.043516,
    "leverage": 0.040757,
    "cash_ratio": 0.058886,
    "log_sales": 0.007626
  },
  "se_leverage_nonrobust": 0.035821,
  "cluster_se_type": "statsmodels CR1 (small-sample corrected), G = number of firms",
  "feasibility": "complete",
  "feasibility_reason": null,
  "data_issues": [
    {
      "issue": "40 exact duplicate rows (80 rows involved in duplicated firm_id-year keys); all duplicates identical across all columns",
      "handling": "kept first occurrence, dropped the copies (ledger step 3)"
    },
    {
      "issue": "default_next missing for 300 unique firm-years (origin years [2022]), because year t+1 is after the data cut",
      "handling": "excluded from estimation sample, not imputed (ledger step 4)"
    },
    {
      "issue": "leverage has a point mass of 54 estimation-sample rows at its minimum 0.02 (apparent floor/censoring in the extract)",
      "handling": "retained as recorded; noted as limitation"
    },
    {
      "issue": "rating_2025 is a final-vintage field built from realised outcomes (perfectly separates defaulters: only rating D firms ever default)",
      "handling": "excluded from the analytic dataset (ledger step 2, variables_excluded)"
    }
  ],
  "n_input_rows": {
    "firm_panel.csv": 2140
  },
  "random_seed": null
}