Data audit
| file | sha256 | rows (excl. header) | cols |
|---|---|---|---|
| data/firm_panel.csv | a1f1af88b1ab05900155991f2468cce09695af978923e5bc3ef9c28d45683b6f | 2140 | 7 |
| data/README.md (codebook) | 26573e982ab6ca9e7f90d2b89bd2878aa6a670f90da21496bff787b59216b9a2 | – | – |
Schema: firm_id (str, F### pattern, 300 distinct), year (int 2016–2022), leverage (ratio, 0.02–0.95), cash_ratio (ratio, 0.0046–0.7406), log_sales (log thousand USD, 1.29–8.88), rating_2025 (A/B/C/D, constant within firm), default_next (0/1, 307 empty).
- Missing: only default_next, 307 rows, all year 2022 (outcome 2023 is after the end-2022 cut). After de-duplication: 300.
- Duplicates: 40 rows exactly identical to another row on all columns; 40 duplicated (firm_id, year) keys; no conflicting duplicates. After removal: 2100 rows = 300 firms × 7 years, balanced.
- Range anomalies: none (ratios in [0,1], no negatives).
- Information availability: rating_2025 known in 2025 and built from realised defaults through 2022 → violates rule; excluded. Diagnostic: default rate is 0 for A/B/C and ~0.227 for D (leakage).
- Observation: firms can default in several years (up to 4 defaults per firm); the codebook defines default per year and gives no exit rule, so rows are kept as given (noted as limitation).