Saltar al contenido

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.

Abrir la demo1,9 MB · paridad numérica verificada contra el modelo original

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».

0 %25 %50 %75 %100 %161718192021222324252648 %83 %masa sin soporte de business_age
Proporción de cada cosecha cuyo valor de business_age cae en categorías con menos del 0,5% de la masa de entrenamiento. Las barras huecas son cosechas sanas.

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.

FY20242026 · 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í.

Pérdida evitada$276MVolumen sano que se renuncia$1,99B
Ambas cifras viajan en el mismo payload del repositorio. Un titular que muestra solo el numerador no es un titular.

FY20172018 · 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ó.

0,600,700,800,901,00umbral 0,80observado 0,7639razón de impacto dispar (regla de cuatro quintos)
El veredicto distingue dos cosas que suelen confundirse: que el build no se rompa y que el modelo cumpla. Aquí no coinciden, y el reporte lo dice con esas palabras.

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.

umbral económico declarado antes de estimar-10123antes del shockdespués1819202122232425brecha intra-celda vs. 2021 (pp)
Punto hueco: período previo. Barra: intervalo de confianza del 95%, agrupado por condado. La banda es la magnitud que se declaró relevante antes de ver ningún resultado.

Tres razones medidas, no tres excusas

  1. 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. 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. 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