| Clean re-run of analysis.py reproduces results.json byte-identically |
PASS |
| len(analytic.csv) == n_analysed (1800) |
PASS |
| analytic.csv distinct firms == n_firms (300) |
PASS |
| rating_2025 absent from analytic.csv |
PASS |
| exclusions: n_before − n_removed = n_after every row |
PASS |
| exclusions chain: n_before[i] = n_after[i−1]; starts at 2140, ends at 1800 |
PASS |
| se_leverage_cluster > 0 |
PASS |
| 95% CI [0.184, 0.344] contains beta_leverage 0.264 |
PASS |
| analytic max year 2021 (outcome years ≤ 2022 data cut) |
PASS |
| no duplicate firm-years in analytic |
PASS |
| default_rate equals mean of default_next in analytic.csv |
PASS |
| magnitude: beta 0.264 per unit leverage vs baseline rate 0.121 — plausible for LPM (0.1 leverage ≈ +2.6 pp) |
PASS |