F1-conf-03 — Leverage and next-year default (information-respecting)
Question
How strongly is a firm's leverage at the end of year t associated with default in year t+1, after conditioning on cash_ratio and log_sales? Only information known at the end of year t may be used. The estimand is b1 in the linear-probability model default_next = a + b1·leverage + b2·cash_ratio + b3·log_sales + e, estimated by OLS with standard errors clustered by firm. The data are simulated (synthetic).
Data and exclusions
- Input:
data/firm_panel.csv, 2140 data rows (n_input_rows). rating_2025was removed. It was assigned in 2025 from each firm's realised default history through 2022, so it contains the outcome. In years before 2022, ratings A, B and C have a 0 % default rate and D has about 23 % (seeout/state/data_audit.md). That makes it target leakage (variables_excluded).- 40 exact duplicate firm-year rows were dropped. These were assembly errors; after dropping them the panel is balanced, 300 firms × 7 years (
data_issues). - 300 rows have no observed
default_next. These are all from origin year 2022, whose outcome year (2023) falls after the data cut. They were excluded, not imputed (data_issues,out/exclusions.csv). - No predictor values were missing.
- Estimation sample:
n_analysed= 1800 firm-years fromn_firms= 300 firms, covering origin years 2016–2021. Every step appears inout/exclusions.csv: 2140 − 40 − 300 = 1800.
Method
- Baseline: the unconditional default rate in the estimation sample (
default_rate, alsobaseline_default_rate). - Main model: OLS linear-probability model on
predictors_used= leverage, cash_ratio, log_sales, plus an intercept. Standard errors are cluster-robust byfirm_id, using statsmodels' default small-sample correction (n_clusters= 300). - The analysis uses no randomness (
random_seed= null).out/analysis.pyregenerates every output deterministically.
Results
- Baseline default rate: 0.1211 (
default_rate). - Leverage coefficient:
beta_leverage= 0.2638. A 0.10 increase in leverage goes with about 2.6 percentage points higher next-year default probability, holding cash_ratio and log_sales fixed. - Other coefficients:
beta_cash_ratio= −0.1859,beta_log_sales= −0.0073,intercept= 0.0900. - In-sample fit:
r2= 0.0349.
Uncertainty
- Firm-clustered SE:
se_leverage_cluster= 0.0408. The 95 % CI is [0.1839, 0.3437] (ci95_leverage_cluster), with p ≈ 1e-10 (p_leverage_cluster). - The classical (non-clustered) SE is 0.0358 (
se_leverage_classical). The clustered SE is somewhat larger because outcomes are correlated within firms.
Limitations and open issues
- This is a descriptive conditional association, not a causal effect.
- A linear-probability model can produce fitted values outside [0, 1], and its errors are heteroskedastic. The cluster-robust SE accounts for the heteroskedasticity.
- Leverage has a mass point at its minimum value of 0.02 (54 estimation firm-years), which suggests flooring or censoring in the extract. These values were kept as recorded (
data_issues). - Origin year 2022 cannot be used because its outcomes are not yet observed.
- Year effects are not included, because the specified model does not include them.
- The data are synthetic, so these results say nothing about real firms.
- Feasibility:
feasibility= "complete".