SPB Git

spb/wp29_uqo

Public

# F1-conf-03 — Leverage at end of year t and default in year t+1

# Question

The question is how leverage at the end of year t relates to default in year t+1, using only information available at the end of year t. The estimand is b1 in the linear-probability model default_next = a + b1·leverage + b2·cash_ratio + b3·log_sales + e. It is estimated by OLS 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). A balanced panel would have 300 firms × 7 years (2016–2022) = 2100 rows.
  • Column excluded: rating_2025 (variables_excluded). The codebook says it is a 2025 final-vintage rating. It was built 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 and would leak the outcome. It is not used and does not appear in out/analytic.csv.
  • Row exclusions (out/exclusions.csv, see also data_issues):
    1. Dropped the column rating_2025: 2140 → 2140.
    2. Removed 40 exact duplicate rows (an assembly error: the same firm-year appeared twice with identical values): 2140 → 2100. No conflicting duplicates remained.
    3. Removed 300 firm-years with no observed default_next. All are from 2022, whose outcome year (2023) falls after the data cut. Outcomes were not imputed: 2100 → 1800.
    4. Removed rows missing any predictor: none, 1800 → 1800.
  • Estimation sample: n_analysed = 1800 firm-years from n_firms = 300 firms, covering origin years 2016–2021 (supp_year_range).

# Method

Baseline: the unconditional default rate in the estimation sample (default_rate). Main model: OLS of default_next on an intercept, leverage, cash_ratio and log_sales (predictors_used), with the covariance clustered by firm_id (statsmodels, cluster-robust with small-sample correction). The method uses no randomness (random_seed = null). out/analysis.py regenerates every output from data/.

# Results

  • Baseline default rate: 0.1211 (default_rate).
  • beta_leverage = 0.2638. Holding cash ratio and log sales fixed, a 0.10 higher leverage ratio goes with about 2.6 percentage points higher probability of default the next year. That is large next to the 12.1% baseline.
  • Clustered SE = 0.0408 (se_leverage_cluster). R² = 0.0349 (r2).
  • Other coefficients, for reference: cash_ratio supp_beta_cash_ratio, log_sales supp_beta_log_sales, intercept supp_intercept.

# Uncertainty

The firm-clustered 95% confidence interval for the leverage coefficient is [0.184, 0.344] (supp_ci95_leverage_cluster). It excludes zero. The heteroskedasticity-robust (HC1) SE without clustering is reported as supp_se_leverage_hc1 for comparison. Clustering uses 300 firms, enough for the cluster-robust asymptotics to be reasonable.

# Limitations and open issues

  • This is an association, not a causal effect. With a linear-probability model, fitted values can fall outside [0,1], and the coefficient is an average linear approximation.
  • The data are synthetic, so the findings do not describe real firms.
  • I assumed duplicates were pure assembly errors because every duplicate is an exact copy. I kept one copy of each.
  • The low R² means leverage and the two controls explain little of the firm-year variation in default.
  • None of the task's requirements was left unmet: feasibility = "complete".
Files · main
Menu

Theme