# F1-conf-03 — Leverage and next-year default (simulated panel) ## 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, when only information available at the end of year t is used? Estimand: the 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 synthetic (simulated), not observed data. ## Data and exclusions Input: `data/firm_panel.csv`, 2140 data rows read (`n_input_rows`). The exclusion ledger is in `out/exclusions.csv`: 1. Column `rating_2025` removed, no rows removed. The rating was assigned in 2025 from each firm's realised default history through 2022 and its average leverage over the sample, so it was not known at the end of year t. In the raw data only rating-D firms ever default, which shows the field leaks the outcome (`variables_excluded`). 2. 40 exact duplicate rows removed (2140 → 2100). These are assembly errors: every copy is identical in all columns. After removal the panel is balanced at 300 firms × 7 years (`data_issues`). 3. 300 firm-years with empty `default_next` removed (2100 → 1800). All of them have origin year 2022, so their outcome year (2023) falls after the end-2022 data cut. Outcomes were not imputed (`data_issues`). 4. Rows with missing predictors: none (1800 → 1800). Estimation sample: `n_analysed` = 1800 firm-years from `n_firms` = 300 firms, origin years 2016–2021 (`out/analytic.csv`). Predictors: `predictors_used` = leverage, cash_ratio, log_sales. `firm_id` and `year` are kept only as identifiers, and `default_next` is the outcome (`variables_excluded`). ## Method - Baseline: the unconditional default rate in the estimation sample (`default_rate`). - Main model: OLS linear probability model with an intercept and the three predictors. - Standard errors: clustered by `firm_id` (statsmodels CR1 with small-sample correction, 300 clusters; `cluster_se_type`). - No randomness is used (`random_seed` = null). - `out/analysis.py` regenerates every output deterministically. A clean re-run produced byte-identical files (`out/state/checks.md`). ## Results - Baseline: 12.11% of firm-years have default_next = 1 (`default_rate` = 0.121111). - Leverage: `beta_leverage` = 0.2638. Holding cash ratio and log sales fixed, 0.10 more leverage goes with about 2.6 percentage points higher probability of default the next year. - Other coefficients (`coef_all`): - cash_ratio: −0.186 (cluster SE 0.059, `se_all_cluster`) - log_sales: −0.0073 (cluster SE 0.0076) - intercept: 0.090 - Fit is low: `r2` = 0.0349. ## Uncertainty - Firm-clustered SE: `se_leverage_cluster` = 0.0408. The 95% confidence interval is [0.184, 0.344] (`ci95_leverage_cluster`), so the association is clearly positive (t ≈ 6.5). - The non-clustered OLS SE is 0.0358 (`se_leverage_nonrobust`). It is smaller, which fits with outcomes being correlated within firms. - Only sampling uncertainty is reflected here. Uncertainty about model specification is not. ## Limitations and open issues - The data are synthetic. The estimate is an association, not a causal effect. - An LPM can predict values outside [0,1]. Clustered SEs handle the heteroskedasticity built into an LPM. - Leverage has a point mass at its minimum of 0.02 (54 estimation-sample rows; 57 in the de-duplicated full panel), which looks like a floor or censoring in the extract. These rows were kept as recorded (`data_issues`). - Firms can default in more than one year, and the panel does not drop firms after they default. Rows were used as recorded, because the codebook gives no rule for exit after default. - Outcomes for origin year 2022 are unobserved by design, so the sample covers origin years 2016–2021 only. - Feasibility: complete (`feasibility`).