F1-conf-03 — Leverage at end of year t and default in year t+1
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 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 (a synthetic panel), not observed data.
Data and exclusions
Input: data/firm_panel.csv, 2,140 data rows, 300 firms, years 2016–2022.
| step | rule | n_before | n_after | removed |
|---|---|---|---|---|
| 1 | rows read | 2140 | 2140 | 0 |
| 2 | drop column rating_2025 (information rule) |
2140 | 2140 | 0 |
| 3 | drop exact duplicate rows | 2140 | 2100 | 40 |
| 4 | drop rows with missing default_next |
2100 | 1800 | 300 |
| 5 | drop rows with missing predictors | 1800 | 1800 | 0 |
Data issues I found and how I handled them:
rating_2025breaks the information rule. It was assigned in 2025, using each firm's realised default history through 2022 and its average leverage over the whole sample. It therefore leaks the outcome: every default in the data has rating D. I left it out of the analytic dataset and the model, and it is listed invariables_excluded.- 40 exact duplicate rows. These are assembly errors: 40 firms have 8 rows instead of 7. Every duplicate is identical in all columns, so I kept one copy of each. After this step there is exactly one row per firm-year.
- 300 missing outcomes. All of them, and only them, are origin year 2022. Their outcome year, 2023, falls after the end-2022 data cut. I excluded them and did not impute.
- Leverage piles up at its minimum value of 0.02. 54 analysed rows sit exactly there, which suggests floor-coding. I kept the values as recorded.
- Repeat defaults. 56 firms have
default_next = 1in more than one year, i.e. firms do not leave the panel after defaulting. I kept these rows because the estimand is defined over firm-years, and the firm-clustered standard errors allow for correlation within a firm.
Final estimation sample (out/analytic.csv): 1,800 firm-years, 300 firms, origin years 2016–2021. Columns: firm_id, year, leverage, cash_ratio, log_sales, default_next.
Method
OLS linear probability model with predictors leverage, cash_ratio and log_sales (all measured at the end of year t), using statsmodels. Standard errors are clustered by firm_id (300 clusters) with statsmodels' default small-sample correction. The method is deterministic, so no random seed is used. out/analysis.py regenerates every output from data/.
Results
- Baseline default rate in the sample: 0.1211 (218 of 1,800 firm-years).
- beta_leverage = 0.2638: holding cash ratio and log sales fixed, an increase of 1.0 in leverage (e.g. from 0 to 1) goes with a 26.4 percentage-point higher probability of default next year. Equivalently, about 2.6 pp per 0.10 of leverage.
- cash_ratio: −0.186 (clustered SE 0.059). log_sales: −0.0073 (SE 0.0076). Intercept: 0.090.
- R² = 0.0349.
Uncertainty
The firm-clustered SE of beta_leverage is 0.0408, giving a 95% CI of [0.184, 0.344] and p ≈ 1e-10. Leverage is positively associated with next-year default. The intervals reflect sampling variation within this synthetic panel only.
Limitations and open issues
- The estimate is an association, not a causal effect. Confounders that were not observed are not controlled for.
- A linear probability model can predict values outside [0, 1], and its errors are heteroskedastic by construction. Clustered SEs are robust to the heteroskedasticity.
- The floor at leverage = 0.02 may be censoring, which would slightly distort the slope. I did not correct for it.
- Because defaults repeat within firms, "default" here is a recurring event rather than an absorbing one. If the outcome was meant to be first default, the sample definition would have to change.
- The data are simulated, so the results describe how the data were generated, not real firms.
- Feasibility: complete.