credit-risk-mlops
2026 — deployed, scoring live$276.3M in avoidable charge-offs · AUC 0.7005 · 10 gates, and one blocks my own model
Credit decisioning system with model governance — design and build
github.com/DavinsonR/credit-risk-mlops- Declining the riskiest 10% of the test portfolio would have avoided $276.3M in charge-offs — 2.15x what random declines achieve — and the report ships the counterweight too: $1.99B in good lending forgone.
- Deployed loss model on 1.96M SBA 7(a) loans: AUC 0.7005 out of time, +0.0311 over an interpretable WoE scorecard, with calibration error 0.0107. The second model, for credit access over 62.4M HMDA applications, is the one the fairness gate refuses to promote; the event study runs separately, over 93.4M applications.
- The first reading was 0.9461, and it was not a model but a leak: TermInMonths is overwritten when a loan is liquidated, so the field carried the outcome. Removing it drops the ablation to 0.6621 — and that is the number published.
- Ten promotion gates judged by exit code, one of them designed to block my own model when it misses the threshold.
- Monitoring caught the source changing its vocabulary without notice: a field stopped meaning the same thing between vintages, and nobody would have known without the control.
- The production ONNX artifact scores in the reader's own browser — no server, and no data leaves the page.
