Sistema de decisión · credit-risk-mlops
El modelo no es el punto. El punto es que sobrevive una auditoría.
Un modelo de crédito que nadie puede auditar no se despliega, por bueno que sea. Esta página muestra las cuatro cosas que un validador pregunta —y que casi ningún portafolio enseña— con la medición al lado: qué pasa cuando la fuente cambia de idioma, qué cuesta la decisión en dólares, qué hace el control cuando el modelo no cumple, y qué se puede afirmar de verdad sobre una brecha que se mueve.
datos: SBA 7(a) FOIA + HMDA (FFIEC/CFPB) · métricas recomputadas desde las predicciones guardadas · código abierto
El modelo, corriendo en tu navegador
No es un vídeo ni una captura: es el artefacto ONNX de producción puntuando en local, sin servidor y sin que ningún dato salga de la página. Prueba a poner la antigüedad en «Change of Ownership» — el modelo responde con el mismo aplomo, y la sección siguiente explica por qué eso es el problema.
La fuente cambió de vocabulario y nadie se enteró
El SBA rehizo el esquema de categorías de la antigüedad del negocio entre FY2018 y FY2021. No las renombró: cambió la clasificación. Hoy la mayoría de los valores cae en categorías sobre las que el modelo no tiene ninguna evidencia, y el serving las manda a «desconocido».
El modelo no se degrada: pierde la variable entera y sigue devolviendo HTTP 200. Ninguna métrica de desempeño lo habría mostrado, porque el desempeño no se puede medir en cosechas jóvenes — un charge-off tarda una mediana de 51 meses en aparecer.
Y cuánto costó arreglarlo
Armonizar el vocabulario pierde resolución: cuatro tramos de antigüedad colapsan en uno. Argumentar eso es fácil; medirlo es entrenar el modelo dos veces con el mismo split y la misma semilla.
- costo en AUC
- 0,0015
- cobertura recuperada
- +74,7 pp
- irreducible
- 9,7%
El argumento cualitativo era correcto en dirección y despreciable en magnitud. Lo que no se mueve es el residuo: «Change of Ownership» no es una antigüedad sino una forma de adquisición, y mapearla sería inventar el dato.
FY2024–2026 · 15,4% → 90,1% · AUC 0,7005 → 0,6990 · última cosecha FY2026 (35.641 préstamos, año en curso): 82,9%
La decisión, en dólares y con su contrapeso
Rechazar el 10% más riesgoso de la cartera de prueba habría evitado pérdidas reales. Una presentación de ventas se detendría ahí.
FY2017–2018 · 89.313 préstamos · absorbido por la SBA $942M
El control bloquea mi propio modelo
De los diez gates de promoción, el de equidad no lo pasa el modelo de acceso: la razón de impacto dispar queda por debajo del umbral de cuatro quintos. El umbral no se movió.
peor grupo: Native Hawaiian or Other Pacific Islander
La brecha no se amplió: volvió
Entre 2021 y 2023 la brecha racial de denegación creció, y yo mismo publiqué esa cifra. Con tres años más de datos —FY2018 y FY2019 son años de tasas corrientes— resulta que la línea base estaba mal elegida: 2020-21 fue el auge de refinanciación, un régimen anómalo.
- FY2018-2019 · tasas corrientes
- 15,70pp
- FY2020-2021 · auge de refinanciación
- 13,14pp
- FY2023-2025 · post-shock
- 15,73pp
La brecha post-shock está a tres centésimas de punto de la pre-pandemia. El número que circulaba mide el auge acabándose, no el shock de tasas. (+0,03 pp contra FY2018–2019; +2,59 pp contra 2021)
Y aun así, no se publica un efecto causal
El estimador compara la brecha dentro de condado, propósito, gravamen y ocupación, sobre un panel balanceado y con errores agrupados por condado. Los coeficientes previos al shock deberían ser cero. No lo son.
Tres razones medidas, no tres excusas
1
Las tendencias previas no son planas
El coeficiente de 2018 supera el umbral, y la violación es monótona: es una tendencia, no ruido.
2
El arreglo de manual fabrica el efecto
Extrapolar la tendencia previa da un efecto grande y significativo — porque lo que extrapola es el auge que el shock termina.
3
Los dos pools no se vaciaron igual
Las solicitudes de un grupo cayeron mucho menos que las del otro. El pool de 2023 no es el de 2021 con menos gente: es otro pool.
La conclusión se parece a la del diagnóstico causal sobre SBA —no se publica un efecto— pero el contenido es el contrario. Allá no había con qué falsificar. Aquí sí, el test corrió, y la falsificación es la que cierra el caso.
92.860.926 solicitudes · FY2018–FY2025 · retención diferencial 17,2 pp
Lo que hay detrás de esta página
El repositorio publica el registro completo de lo que se rompió, incluidos los defectos que encontré en mi propio tooling mientras construía esto. Es la parte que no se puede falsificar.
Ningún número de esta página está escrito a mano. Todos salen del bundle que el repositorio publica y verifica contra sus propios exports. 0f1f958efacecb47