Data audit
- data/firm_panel.csv sha256 a1f1af88b1ab05900155991f2468cce09695af978923e5bc3ef9c28d45683b6f; 2140 data rows, 7 columns (firm_id str, year int, leverage, cash_ratio, log_sales float, rating_2025 str A-D, default_next 0/1).
- data/README.md sha256 26573e982ab6ca9e7f90d2b89bd2878aa6a670f90da21496bff787b59216b9a2 (codebook).
- Years 2016–2022; 300 firms (IDs F###).
- Duplicates: 40 rows are exact duplicates of another row; all (firm_id, year) key duplicates are exact duplicates (80 rows involved). After dropping: 2100 rows = 300 firms × 7 years, balanced.
- Missing: only default_next, 307 raw rows (300 after dedupe), all in year 2022 (outcome year 2023 not observed at the 2022 data cut).
- Ranges: leverage 0.02–0.95, cash_ratio 0.0046–0.74, log_sales 1.29–8.88; no negatives, no impossible values.
- rating_2025 constant within firm; known only in 2025 and built from realised defaults through 2022: violates information rule. Crosstab: all 218 defaults (deduped, observed) are in rating D; A/B/C have zero defaults → clear leakage. Excluded from predictors and from analytic.csv.