# F1-conf-03 — Leverage and next-year default (information-respecting) ## Question How is a firm's leverage at the end of year t associated with default in year t+1, using only information available at the end of year t? Estimand: coefficient b1 on `leverage` in the OLS linear-probability model default_next = a + b1·leverage + b2·cash_ratio + b3·log_sales + e. The model is fit on firm-years with an observed outcome, with standard errors clustered by firm. Data are simulated (synthetic panel). ## Data and exclusions Input: `data/firm_panel.csv`, 2140 data rows (`n_input_rows`). Exclusion ledger (`out/exclusions.csv`): - Column `rating_2025` dropped (no rows removed). It is a 2025 final-vintage field built from realised defaults through 2022 and sample-average leverage, so it was not known at the end of t (`variables_excluded`). Diagnostic: the observed default rate is 0 for ratings A/B/C and about 0.227 for D, so the rating effectively encodes the outcome (`default_rate_by_rating_2025_diagnostic`). - 40 exact duplicate rows removed (identical on every column, no conflicting values). That leaves 2100 rows = 300 firms × 7 years (`data_issues`). - 300 firm-years with empty `default_next` removed, all with origin year 2022 (the outcome year 2023 lies after the data cut). No outcomes were imputed (`data_issues`). - No rows had missing predictors. Estimation sample: `n_analysed` = 1800 firm-years, `n_firms` = 300, origin years 2016–2021. It is written to `out/analytic.csv` with columns firm_id, year, leverage, cash_ratio, log_sales, default_next. ## Method Baseline: the unconditional default rate in the estimation sample (`default_rate`). Main model: OLS with an intercept and `predictors_used` = leverage, cash_ratio, log_sales (statsmodels). Standard errors are cluster-robust by `firm_id` (300 clusters, `n_clusters`), using the standard CR1 small-sample correction. An independent numpy recomputation matched the coefficient, SE and R² to within 1e-15 (`out/state/checks.md`). The analysis uses no randomness (`random_seed` = null). ## Results - Baseline: the default rate is 0.121 (`default_rate`). - `beta_leverage` = 0.264: holding cash ratio and log sales fixed, one unit more leverage (debt/assets going from 0 to 1) goes with a 26.4 percentage-point higher probability of default the next year. A one-SD change in leverage (≈0.21, from the audit) therefore corresponds to about 5.5 pp, which is large next to the 12.1% base rate. - Other coefficients: `beta_cash_ratio` = −0.002 with SE 0.065, so not distinguishable from zero. `beta_log_sales` = 0.012 with SE 0.009. `intercept` = −0.04 (numbers rounded from results.json). - `r2` = 0.035: the three predictors explain little of the variation in individual defaults. ## Uncertainty `se_leverage_cluster` = 0.041 (clustered by firm). The 95% CI is [0.184, 0.344] (`ci95_leverage_cluster`), with p ≈ 1e-10 (`pvalue_leverage_cluster`). These rely on large-cluster asymptotics; 300 clusters is ample. ## Limitations and open issues - This is an association in a linear-probability model, not a causal effect. LPM fitted values may fall outside [0,1]. - The data are synthetic. Results describe this simulated panel only. - Firms keep appearing after a default year, and some default in several years (up to 4). The codebook defines default per year and gives no exit rule, so all firm-years were kept as provided. - I kept the first copy of each duplicate. Because the copies are identical, the choice does not affect the results. - I did not test alternatives such as logit/probit or year fixed effects, because the task specifies the model.