step,rule,n_before,n_after,n_removed,rationale 0_read,rows read from data/firm_panel.csv (excluding header),2140,2140,0,starting point 1_drop_rating_2025,"drop column rating_2025 (known 2025, uses realised outcomes)",2140,2140,0,information-availability rule; column removal only 2_drop_exact_duplicates,drop rows identical on all columns to an earlier row (keep first),2140,2100,40,assembly error: one intended row per firm-year; duplicates would double-weight observations 3_drop_missing_outcome,drop firm-years with default_next empty (outcome year not observed by end-2022 cut),2100,1800,300,outcome not observed; no imputation allowed 4_drop_missing_predictors,"drop rows with missing leverage, cash_ratio or log_sales",1800,1800,0,complete-case for regressors