credit-risk-mlops
Decision system with model governance
The problem
A credit model nobody can audit does not get deployed, however good it is. The validator does not ask what the AUC is: they ask who can change that figure without anyone noticing, what happens when the regime shifts, and how you know the model still sees the population it was trained for.
What I built
A credit decisioning system over 1.96M SBA 7(a) loans and 62.4M HMDA applications, with out-of-time validation across the COVID shock, ten gates that block promotion of a model that does not comply, a model card and validation report generated from the run, drift monitoring, and a causal inference layer. No published figure is written by hand: the gate recomputes them from the saved predictions before letting anything be promoted.
Why it matters
This is what separates a model from a deployable one. The same structure — thresholds derived and written down, documentation that regenerates itself, controls that fail closed — is what a model risk examination asks for, and what makes a number survive the question of where it came from.
Published finding
My first AUC was 0.9461 and I deleted it: it was a leak. And of the ten gates, one blocks my own access model at a disparate impact ratio of 0.7639 against a 0.80 threshold — I did not move the threshold.