Pipeline for IndabaX Zimbabwe 2026 loan-default hackathon. Public LB 0.6837 ROC-AUC.
# IndabaX Zimbabwe 2026 — Loan Default Prediction
Pipeline for the Deep Learning IndabaX Zimbabwe 2026 hackathon on Zindi: binary classification of loan default in Zimbabwe's banking and microfinance sector.
## Result
**Public LB: 0.683696 (ROC-AUC)** with `SUB_0029_PORT_V5_TIER_S_PSEUDO`. Within ~0.001 of #1.
Session lift: **0.680498 → 0.683696 (+0.0032 AUC)** across 11 LB-confirmed submissions.
## Pipeline (winning configuration)
1. **Load** train (38,932 rows) and test (12,977 rows) with split-aware date parsing:
- Train: `D/M/YYYY` dates, `D-Mon-YY` DOB with century pivot
- Test: `YYYY-MM-DD` dates, `D-Mon-YYYY` DOB
2. **Feature engineering** — 81 features total:
- 7 raw numerics (amount, rate, term, dependents, employment tenure, income, obligations)
- 9 raw categoricals (product, payment freq, purpose, gender, marital, sector, collateral, channel, province)
- 43 date-derived (4 loan dates × `dom/dow/quarter/month/is_month_end/sin/cos` + 4 inter-date deltas + 3 DOB/age features)
- 15 numeric-derived (loan_to_income, installment amortized, dti, effective_rate_burden, income_per_dependent, 6 segment flags, 3 log1p)
- 7 Tier-S v2 features (`pti_band`, `pti_x_is_mfi_rate`, `pti_band_x_collateral_missing`, `grace_period_months/flag`, `age_at_maturity_band`, `is_past_retirement_at_maturity`)
3. **CV scheme**: 5-fold StratifiedKFold (seed=42) on the full 38,932 train.
4. **Pseudo-labeling**: top/bottom 2.5% of teacher predictions as hard labels, weight 0.5, single round.
5. **3-model bench, 4 seeds each**:
- LightGBM untuned (lr=0.01, num_leaves=31, depth=6, is_unbalance=True)
- XGBoost Optuna-tuned with native categorical handling (`enable_categorical=True`)
- CatBoost ordered boosting (depth=6, l2=3, lr=0.03, auto_class_weights=None)
6. **Caruana hill-climb blend** (200 iterations, with replacement, 5 seeds, on out-of-fold predictions).
## What worked
- **Full train + StratifiedKFold** (instead of an OOT-sealed trainpool + GroupKFold-yyyymm) — single biggest …