SPB Git

spb/wp29_uqo

Public

# F1-conf-03 — Next-year default and leverage (information-respecting analytic dataset)

# 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, OLS on firm-years with observed outcome, SEs clustered by firm. The data are simulated (synthetic), not observed.

# Data and exclusions

data/firm_panel.csv has 2140 data rows (n_input_rows). Steps (see out/exclusions.csv):

  1. Column rating_2025 removed (0 rows): it is assigned in 2025 from the firm's realised default history through 2022, so it was not known at the end of year t (variables_excluded). In the data every default carries rating D and A/B/C firms never default, confirming the leakage.
  2. 40 rows that exactly duplicated another row (same firm-year, identical values) dropped → 2100 rows = 300 firms × 7 years (data_issues).
  3. 300 firm-years with empty default_next dropped (all origin year 2022; outcome year 2023 lies beyond the end-2022 data cut). No outcomes imputed.
  4. Missing predictors: none (0 removed).

Estimation sample: n_analysed = 1800 firm-years, n_firms = 300, origin years 2016–2021. Predictors: predictors_used = leverage, cash_ratio, log_sales. firm_id and year are not regressors (firm_id is used only for clustering).

# Method

OLS of default_next on an intercept and the three predictors (statsmodels), with a cluster-robust covariance by firm_id (CR1, small-sample factor G/(G−1)·(N−1)/(N−K), 300 clusters). Baseline: unconditional default rate in the estimation sample (default_rate). No randomness (random_seed = null). Estimates were checked against an independent numpy computation (out/state/checks.md).

# Results

  • Baseline default rate: default_rate = 0.121.
  • beta_leverage = 0.264: holding cash_ratio and log_sales fixed, a 0.1 increase in leverage (debt/assets) goes with about 2.6 percentage points higher probability of default next year.
  • r2 = 0.035. Other coefficients, reported in supplementary (not required): cash_ratio −0.186, log_sales −0.0073.

# Uncertainty

se_leverage_cluster = 0.0408 (firm-clustered). The 95% CI is [0.184, 0.344] (supplementary.ci95_leverage_cluster), with p < 1e-9 (supplementary.p_leverage_cluster). The heteroskedasticity-robust SE without clustering is 0.0374 (supplementary.se_leverage_hc1), so clustering makes the SE somewhat larger.

# Limitations and open issues

  • The result is an association, not a causal effect. The LPM can produce fitted probabilities outside [0,1]. R² is low, so leverage explains only a small share of the variation in default.
  • Some firms have default_next = 1 in more than one year. The codebook does not say that default is absorbing, so these rows were kept. If default should end a firm's time at risk, the sample definition would change.
  • Leverage is bounded exactly at 0.02 and 0.95, which suggests truncation in the source. Values were kept as recorded.
  • Duplicates were treated as assembly errors because the copies were identical on every column, so no conflicts had to be resolved.
  • Feasibility: complete (feasibility).
Files · main
Menu

Theme