bayesrisk

Informe de validación de modelos

Informe de Validación de Scorecard

USO INTERNO — CONFIDENCIAL

Modelo
Entidad
Cartera
Responsable del desarrollo
Versión del informe
Fecha de emisión
2026-10-19

Trazabilidad de la corrida (lineage)

config_hash=6517b77a1e28178c050eeaf91842a7f5fa1754641301155bb9c05426109be13d
data_hash=d21ea993b85ee031a8a4d1f88e3d7af00ead13d98066496a3711e6b979ef2e7d
git_sha=—
root_seed=20240706

Desarrollo

Nombre y fecha

Validación independiente

Nombre y fecha

Aprobación

Nombre y fecha

Resumen de la corrida

Lo que cuenta la corrida al terminar, con la misma fuente que la puerta guiada y la pestaña Resultados: el estado de la ejecución y de la validación técnica, las cifras clave, qué revisar, las decisiones humanas con su motivo y dónde queda cada archivo. El veredicto lo firma el validador en el resumen ejecutivo.

Las rutas son las que el informe escribió al generarse: si la corrida se copia o se archiva después —desde la interfaz, o al apartar una corrida anterior—, los archivos se buscan en su carpeta de destino, y el registro de auditoría deja constancia de cada uno que se escribió.

Ejecución
corrieron sin fallos Datos y muestras, Análisis exploratorio, Tramos y WoE, Selección de variables, Modelo, Tarjeta de puntuación, Calibración, Desempeño, Estabilidad, Validación formal y Escala maestra; este informe es la última etapa de la corrida
Validación técnica
Falla — lo decide PSI del score Desarrollo vs. OOT (Redesarrollar), PSI de la PD Desarrollo vs. OOT (Redesarrollar), CSI de antiguedad_meses Desarrollo vs. OOT (Redesarrollar), CSI de deuda_ingreso Desarrollo vs. OOT (Revisar), CSI de mora_max_12m Desarrollo vs. OOT (Redesarrollar), CSI de utilizacion_linea Desarrollo vs. OOT (Redesarrollar) y PSI temporal por cohorte (Redesarrollar)

Cifras clave

AUC en Fuera de tiempo (OOT)0,712
Gini en Fuera de tiempo (OOT)0,424
KS en Fuera de tiempo (OOT)0,318
Caída del AUC Desarrollo → Fuera de tiempo (OOT)-0,026 (-3,5 %)
Peor PSI entre score y PD0,7521 (Desarrollo vs. OOT) → Redesarrollar

Qué revisar

  • ⚠ Tramos y WoE: antiguedad_meses: la tasa de malos invierte la tendencia en Holdout y Fuera de tiempo (OOT)
  • ⚠ Tramos y WoE: deuda_ingreso: la tasa de malos invierte la tendencia en Holdout
  • ⚠ Tramos y WoE: ingreso_mensual: la tasa de malos invierte la tendencia en Holdout
  • ⚠ Tramos y WoE: mora_max_12m: la tasa de malos invierte la tendencia en Holdout
  • ⚠ Modelo: Concentra más del 90 % del IV del modelo: deuda_ingreso
  • ⚠ Estabilidad: Estabilidad Desarrollo vs. OOT: banda «Redesarrollar»
  • ⚠ Validación formal: Estado técnico «Falla»: revisar PSI del score Desarrollo vs. OOT (Redesarrollar), PSI de la PD Desarrollo vs. OOT (Redesarrollar), CSI de antiguedad_meses Desarrollo vs. OOT (Redesarrollar), CSI de deuda_ingreso Desarrollo vs. OOT (Revisar), CSI de mora_max_12m Desarrollo vs. OOT (Redesarrollar), CSI de utilizacion_linea Desarrollo vs. OOT (Redesarrollar) y PSI temporal por cohorte (Redesarrollar)
  • ⚠ Escala maestra: En Fuera de tiempo (OOT), el tramo 1 tiene menos de 30 operaciones con desenlace: sin contraste.

Decisiones humanas registradas

Ninguna decisión humana registrada; lo que se decidió vive en el config de la corrida.

Dónde quedó cada archivo

Informe HTML
artifacts/consumo_drift_monotonia_auto/reports\scorecard_report.html
Informe Word
artifacts/consumo_drift_monotonia_auto/reports\scorecard_report.docx (se escribe si el extra docx está instalado)
Registro de auditoría
audit_trail.jsonl, en la carpeta de evidencia de la corrida

Resumen ejecutivo

Veredicto de validación
  • Aprobado
  • Aprobado con observaciones
  • Rechazado

Campo estructural: lo marca y firma el validador independiente; no es un resultado calculado por el motor.

MétricaAlcanceValorEstado
AUC Desarrollo 0,7382 Sin alertas
Gini Desarrollo 0,4763 Sin alertas
KS Desarrollo 0,3578 Sin alertas
AUC Holdout 0,6856 Sin alertas
Gini Holdout 0,3711 Sin alertas
KS Holdout 0,2817 Sin alertas
AUC Fuera de tiempo (OOT) 0,71199 Sin alertas
Gini Fuera de tiempo (OOT) 0,42398 Sin alertas
KS Fuera de tiempo (OOT) 0,3177 Sin alertas
Peor PSI entre score y PD · score Desarrollo vs. Holdout 0,0107 Estable
Peor PSI entre score y PD · PD calibrada Desarrollo vs. OOT 0,7521 Redesarrollar
Estado técnico de validación formal consumo_drift_monotonia_auto 0 de 3 pruebas fallidas Falla

No se configuraron umbrales de discriminación, de modo que el motor no puede levantar alertas sobre AUC, Gini ni KS: «sin alertas» significa que no había umbral contra el cual comparar, no que la métrica sea satisfactoria.

Las bandas de PSI usan los umbrales configurados: estable por debajo de 0,10, revisión desde 0,10 y redesarrollo desde 0,25.

La validación formal ejecutó discriminación, calibración y estabilidad. Su estado es una síntesis técnica del motor y no sustituye el veredicto que debe firmar un validador humano.

Alcance: scorecard y validación formal de las familias configuradas. El capítulo «Validación formal» reproduce el resultado que publicó el motor; el veredicto permanece bajo responsabilidad humana. Todos los valores provienen de la corrida trazada en la portada: no se completan con supuestos.

Índice

1Introducción

POR COMPLETAR — Introducción

Declara el propósito del informe y qué decisión habilita: ¿es una validación inicial previa a la puesta en producción, una revisión periódica o un recalibrado?

Delimita el alcance (qué modelo y qué cartera cubre, qué queda fuera) e identifica la audiencia: Validación independiente, Comité de Riesgo, regulador.

2Contexto del modelo y de la cartera

La población procesada contiene 6.000 observaciones, 8 variables de entrada y una tasa de incumplimiento de 35,57 %. Los conteos por estado, partición y motivo de exclusión se reproducen literalmente en las tablas de esta sección.

La columna objetivo de esta corrida es «target».

La tasa de incumplimiento observada en la población analizada es de 33,17 %, la tasa se agrupó por cohorte en 5 cohortes y se describieron 6 variables frente al incumplimiento.

El perfilado de calidad de datos levantó alertas sobre 1 variable con la marca «casi única». El detalle por variable está en el Anexo B.

La estabilidad temporal de la tasa de incumplimiento no se evaluó: eje de cohorte, sin orden cronológico. El indicador configurado era variación relativa.

La variable objetivo del ejercicio es «target», construida por las reglas de incumplimiento declaradas en el config (Anexo C). La definición de negocio que justifica esas reglas —p. ej. 90+ días de mora— debe explicitarla el analista: el motor aplica la regla, no la fundamenta.

La población se particionó por cohorte sobre «cohorte», reservando como OOT la cohorte «2024Q2», y un Holdout de 20,00 % del resto.

POR COMPLETAR — Contexto del modelo

Describe la cartera sobre la que se construyó el modelo: producto, segmento, volumen y período.

Explicita la definición de incumplimiento utilizada (p. ej. 90+ días de mora) y por qué; declara las exclusiones aplicadas a la población y su justificación.

2.1Población, particiones y exclusiones

Las tablas siguientes reproducen lo que dejó la preparación de datos de esta corrida. Estados, tamaños y tasas por partición, y exclusiones se copian literalmente; el informe no recalcula ni completa valores ausentes.

Estados de la población
EstadoObservaciones
bueno3.866
malo2.134
indeterminado0
excluido0
Particiones de modelamiento
ParticiónObservacionesTasa de incumplimiento
Desarrollo3.9550,3317
Holdout1.0000,3150
Fuera de tiempo (OOT)1.0450,4852
Fuera del ajuste00,0000
Exclusiones aplicadas
MotivoExclusiones

2.2Población y calidad de datos

A continuación se reproducen la tasa de incumplimiento por cohorte, graficada y en su tabla, el perfil por tramo de 6 variables descritas y la calidad de datos por columna.

Tasa de incumplimiento observada en el tiempo image/svg+xml 2023Q1 2023Q2 2023Q3 2023Q4 2024Q1 0,000 0,100 0,200 0,300 0,400 0,500 Tasa de incumplimiento Tasa de incumplimiento observada en el tiempo
Tasa de incumplimiento por tramo de cada variable descrita image/svg+xml > 1 y ≤ 11 > 11 y ≤ 22 > 22 y ≤ 33 > 33 y ≤ 44 > 44 y ≤ 55 > 55 y ≤ 66 > 66 y ≤ 76 > 76 y ≤ 87 > 87 y ≤ 98 > 98 y ≤ 120 0,00 0,10 0,20 0,30 0,40 antiguedad_meses > 0,0034 y ≤ … > 0,118280000… > 0,1853 y ≤ … > 0,2522 y ≤ … > 0,3205 y ≤ … > 0,3938 y ≤ … > 0,483840000… > 0,582439999… > 0,7165 y ≤ … > 0,919299999… 0,00 0,10 0,20 0,30 0,40 0,50 0,60 deuda_ingreso > 52.315,01 y… > 251.196,692… > 318.904,676… > 372.689,544… > 429.434,728… > 490.412,52 … > 555.037,796… > 635.937,039… > 745.715,870… > 935.559,791… 0,00 0,10 0,20 0,30 0,40 0,50 ingreso_mensual > 0 y ≤ 3 > 3 y ≤ 5 > 5 y ≤ 6 > 6 y ≤ 7 > 7 y ≤ 8 > 8 y ≤ 9 > 9 y ≤ 10 > 10 y ≤ 11 > 11 y ≤ 13 > 13 y ≤ 23 0,00 0,10 0,20 0,30 0,40 mora_max_12m asalariado independiente pensionado 0,00 0,10 0,20 0,30 segmento > 0,0192 y ≤ … > 0,2395 y ≤ … > 0,34658 y ≤… > 0,420280000… > 0,487080000… > 0,5489 y ≤ … > 0,615920000… > 0,68406 y ≤… > 0,74944 y ≤… > 0,83078 y ≤… 0,00 0,10 0,20 0,30 0,40 utilizacion_linea Tasa de incumplimiento por tramo de cada variable descrita
Tasa de incumplimiento observada por período o cohorte
periodn_totaln_eligiblen_baddefault_ratelow_confidence
2023Q17727721780,2306no
2023Q27727722150,2785no
2023Q37767762590,3338no
2023Q48008002930,3662no
2024Q18358353670,4395no
Calidad de datos por columna
coldtypemissing_ratecardinalitynear_constantnear_uniquehigh_cardinality
ingreso_mensualfloat640,00003.955nosíno
deuda_ingresofloat640,00003.226nonono
utilizacion_lineafloat640,00003.131nonono
mora_max_12mint640,000024nonono
antiguedad_mesesint640,0000120nonono
segmentoobject0,00003nonono
cohorteobject0,00005nonono
bad_flagint640,00002nonono

3Metodología

Este capítulo describe el procedimiento realmente ejecutado por el motor en esta corrida, con los parámetros efectivos que constan en el config trazado en el Anexo A. No es una descripción genérica de la técnica: cada cifra citada aquí es la que produjo este modelo.

3.1Tratamiento de datos y particiones

El dataset se validó contra un esquema declarado de 8 columnas, con tipos y nulabilidad explícitos; una desviación del esquema detiene la corrida en vez de propagarse.

En el tratamiento de faltantes se reporta para revisión toda variable con más de 99,00 % de valores faltantes, sin eliminarla automáticamente.

3.2Binning WoE

Se discretizó cada variable con OptBinning, resolviendo el problema óptimo por programación entera mixta (MIP), partiendo de un máximo de 20 pre-bins, con un máximo de 6 bins por variable y un tamaño mínimo de bin de 5,00 % de la población.

La tendencia monótona exigida al WoE es automática: el riesgo debe comportarse de forma coherente entre tramos contiguos, sin quiebres que un analista no pueda defender.

De 6 variables candidatas, 6 quedaron binificadas.

Los valores especiales se agrupan en un bin propio y los faltantes reciben el tratamiento «empirical» (OptBinning 0.20.0).

3.3Selección de variables

Se descartaron las variables con IV inferior a 0,02; las de IV igual o superior a 0,50 se marcaron para revisión, porque un poder predictivo tan alto suele indicar fuga de información más que señal legítima.

Se eliminó la redundancia entre pares de variables con correlación (pearson) sobre 0,75 y se acotó la multicolinealidad exigiendo un VIF bajo 5,0.

El filtro dejó 5 de 6 variables candidatas; el motivo de exclusión de cada variable descartada consta en la tabla de selección.

3.4Estimación del modelo PD

La probabilidad de incumplimiento se modeló mediante regresión logística (logit) sobre las variables transformadas a WoE, con un nivel de significancia de 0,05.

La construcción del modelo usó stepwise bidireccional (criterio «wald_pvalue» y p-valor de entrada 0,05 y de salida 0,05).

Se exige que el coeficiente de cada variable en WoE tenga el signo esperado (negativo): cuando se invierte, se marca la variable sin excluirla. Un signo invertido significa que la variable contradice la relación de riesgo que su binning declara.

El modelo final retiene 5 de 5 variables de entrada.

3.5Escalado del scorecard

El modelo se escaló a puntaje con la convención PDO: un puntaje de 600 corresponde a odds de 50:1, y cada 20 puntos adicionales duplican esas odds.

De esa convención se derivan los parámetros efectivos de la escala: factor 28,8539 y offset 487,1229.

Un puntaje más alto indica menor riesgo y los puntajes se emiten con redondeo al entero más cercano.

3.6Calibración de la PD

La PD se calibró por desplazamiento del intercepto (intercept offset), ajustando sobre la partición de Desarrollo contra la tasa de incumplimiento observada en Desarrollo, que resultó ser 33,17 %. El ancla es a través del ciclo (TTC).

El desplazamiento aplicado al intercepto es 2,8e-14, lo que preserva el ordenamiento del score: la calibración corrige el nivel de la PD, no su ranking.

El ajuste se realizó sobre 3955 observaciones de Desarrollo.

4Resultados

Los resultados se presentan por etapa, con las tablas que sostienen el juicio de validación. El detalle exhaustivo —todas las tablas y todos los parámetros de cada paso— no se pierde: vive en los Anexos B y C, que son parte de este mismo informe.

4.1Binning WoE y poder predictivo

El poder predictivo univariado (IV) de las 6 variables binificadas lo encabezan «deuda_ingreso» (0,379), «ingreso_mensual» (0,261) y «utilizacion_linea» (0,1202). El IV de cada variable consta en la tabla siguiente y su binning completo, bin a bin, en el Anexo B.

La monotonía efectiva del WoE resultó en 2 variables con tendencia ascendente y 2 variables con tendencia descendente, y 2 sin tendencia monótona resuelta, lo que debe revisarse.

Resumen de binning — IV por variable
namedtypestatusselectedn_binsivjsginiquality_scoreiv_bandis_suspicious_ivis_zero_ivmonotonic_trendskipped_reason
ingreso_mensualnumericalOPTIMALsí60,26090,03160,27270,6813mediumnonodescending—
deuda_ingresonumericalOPTIMALsí60,37870,04490,32120,8687strongnonoascending—
utilizacion_lineanumericalOPTIMALsí60,12020,01490,19050,2161mediumnono——
mora_max_12mnumericalOPTIMALsí60,08150,01010,15850,0339weaknonoascending—
antiguedad_mesesnumericalOPTIMALsí60,06240,00780,13650,0403weaknonodescending—
segmentocategoricalOPTIMALsí30,00250,000310,02640,00203—nono——

4.2Selección de variables

Las 5 variables que pasaron el filtro son «antiguedad_meses», «deuda_ingreso», «ingreso_mensual», «mora_max_12m» y «utilizacion_linea».

Las exclusiones se reparten en 1 por IV insuficiente.

Tras la selección, la correlación absoluta máxima entre las variables finales es 0,2808 y el VIF máximo es 1,11.

Criterios de selección por variable
featurewoe_columnincludedreasoniviv_bandaucginiksmax_abs_corrmax_corr_withvifmax_csiforceddetail
antiguedad_mesesantiguedad_meses__woesíincluded0,0624weak0,56830,13650,1037——1,0119———
deuda_ingresodeuda_ingreso__woesíincluded0,3787strong0,66060,32120,2287——1,0322———
ingreso_mensualingreso_mensual__woesíincluded0,2609medium0,63640,27270,1936——1,0048———
mora_max_12mmora_max_12m__woesíincluded0,0815weak0,57930,15850,1216——1,1132———
segmentosegmento__woenolow_iv0,0025—0,51320,02640,0222—————IV 0,0025 < mínimo 0,02
utilizacion_lineautilizacion_linea__woesíincluded0,1202medium0,59520,19050,1467——1,0925———
Factor de inflación de varianza (VIF)
iterationfeaturewoe_columnvifremovedreason
0deuda_ingresodeuda_ingreso__woe1,0322no—
0ingreso_mensualingreso_mensual__woe1,0048no—
0utilizacion_lineautilizacion_linea__woe1,0925no—
0mora_max_12mmora_max_12m__woe1,1132no—
0antiguedad_mesesantiguedad_meses__woe1,0119no—

4.3Modelo PD

El modelo final incluye 5 variables: «antiguedad_meses», «deuda_ingreso», «ingreso_mensual», «mora_max_12m» y «utilizacion_linea».

En el ajuste in-sample, el optimizador convergió, el ajuste usó 3955 observaciones de Desarrollo, de las cuales 1312 son incumplimientos y el pseudo-R² de McFadden es 0,1302.

Marcadas por concentrar una contribución excesiva al IV del modelo: «deuda_ingreso».

Coeficientes del modelo (β, IC 95 %) image/svg+xml -1,20 -1,00 -0,80 -0,60 -0,40 -0,20 0,00 Coeficiente β (IC 95 %) mora_max_12m utilizacion_linea antiguedad_meses deuda_ingreso ingreso_mensual Coeficientes del modelo (β, IC 95 %)
Coeficientes del modelo PD
featurewoe_columnbetastandard_errorwald_zp_valueconf_lowconf_highexpected_signsign_okiviv_contribution
interceptconst-0,70110,0371-18,8887< 0,001-0,7739-0,6284————
antiguedad_mesesantiguedad_meses__woe-0,89970,1493-6,0261< 0,001-1,1923-0,6071negativesí0,06240,0691
deuda_ingresodeuda_ingreso__woe-0,96250,0617-15,6064< 0,001-1,0834-0,8416negativesí0,37870,41902
ingreso_mensualingreso_mensual__woe-1,03140,0757-13,6202< 0,001-1,1798-0,88296negativesí0,26090,2887
mora_max_12mmora_max_12m__woe-0,37880,13504-2,80540,005-0,6435-0,1142negativesí0,08150,0901
utilizacion_lineautilizacion_linea__woe-0,76880,1115-6,8972< 0,001-0,9873-0,5503negativesí0,12020,13304

4.4Scorecard

El scorecard asigna puntajes a los tramos de 5 variables.

Scorecard — puntajes por atributo
featurewoe_columnbin_labelbin_indexwoebetaintercept_shareraw_pointspointsrounding_deltasource
antiguedad_mesesantiguedad_meses__woe< 22,50-0,3476-0,8997-0,140292,446492-0,4464binning_table
antiguedad_mesesantiguedad_meses__woe≥ 22,5 y < 39,51-0,1904-0,8997-0,140296,5271970,4729binning_table
antiguedad_mesesantiguedad_meses__woe≥ 39,5 y < 73,520,0649-0,8997-0,1402103,1548103-0,1548binning_table
antiguedad_mesesantiguedad_meses__woe≥ 73,5 y < 91,530,1332-0,8997-0,1402104,92851050,0715binning_table
antiguedad_mesesantiguedad_meses__woe≥ 91,5 y < 100,540,3683-0,8997-0,1402111,0308111-0,0308binning_table
antiguedad_mesesantiguedad_meses__woe≥ 100,550,4923-0,8997-0,1402114,2501114-0,2501binning_table
antiguedad_mesesantiguedad_meses__woeValores especiales60,0000-0,8997-0,1402101,4706101-0,4706binning_table
antiguedad_mesesantiguedad_meses__woeFaltantes70,0000-0,8997-0,1402101,4706101-0,4706binning_table
deuda_ingresodeuda_ingreso__woe< 0,1328499987721443200,9041-0,9625-0,1402126,57871270,4213binning_table
deuda_ingresodeuda_ingreso__woe≥ 0,13284999877214432 y < 0,303700000047683710,5397-0,9625-0,1402116,4588116-0,4588binning_table
deuda_ingresodeuda_ingreso__woe≥ 0,3037000000476837 y < 0,485149994492530820,0709-0,9625-0,1402103,4403103-0,4403binning_table
deuda_ingresodeuda_ingreso__woe≥ 0,4851499944925308 y < 0,71919998526573183-0,1368-0,9625-0,140297,6717980,3283binning_table
deuda_ingresodeuda_ingreso__woe≥ 0,7191999852657318 y < 1,12520003318786624-0,6934-0,9625-0,140282,213382-0,2133binning_table
deuda_ingresodeuda_ingreso__woe≥ 1,12520003318786625-1,6439-0,9625-0,140255,8163560,1837binning_table
deuda_ingresodeuda_ingreso__woeValores especiales60,0000-0,9625-0,1402101,4706101-0,4706binning_table
deuda_ingresodeuda_ingreso__woeFaltantes70,0000-0,9625-0,1402101,4706101-0,4706binning_table
ingreso_mensualingreso_mensual__woe< 278.556,6406250-0,7264-1,0314-0,140279,8524800,1476binning_table
ingreso_mensualingreso_mensual__woe≥ 278.556,640625 y < 421.137,7343751-0,3292-1,0314-0,140291,6731920,3269binning_table
ingreso_mensualingreso_mensual__woe≥ 421.137,734375 y < 582.961,9062520,0109-1,0314-0,1402101,79371020,2063binning_table
ingreso_mensualingreso_mensual__woe≥ 582.961,90625 y < 674.20130,2002-1,0314-0,1402107,42699107-0,42699binning_table
ingreso_mensualingreso_mensual__woe≥ 674.201 y < 1.116.00540,6605-1,0314-0,1402121,1255121-0,1255binning_table
ingreso_mensualingreso_mensual__woe≥ 1.116.00551,39598-1,0314-0,1402143,014004143-0,014004binning_table
ingreso_mensualingreso_mensual__woeValores especiales60,0000-1,0314-0,1402101,4706101-0,4706binning_table
ingreso_mensualingreso_mensual__woeFaltantes70,0000-1,0314-0,1402101,4706101-0,4706binning_table
mora_max_12mmora_max_12m__woe< 4,500,4132-0,3788-0,1402105,98741060,0126binning_table
mora_max_12mmora_max_12m__woe≥ 4,5 y < 5,510,3528-0,3788-0,1402105,32701105-0,32701binning_table
mora_max_12mmora_max_12m__woe≥ 5,5 y < 6,520,2292-0,3788-0,1402103,97581040,0242binning_table
mora_max_12mmora_max_12m__woe≥ 6,5 y < 9,53-0,0298-0,3788-0,1402101,1444101-0,1444binning_table
mora_max_12mmora_max_12m__woe≥ 9,5 y < 14,54-0,2911-0,3788-0,140298,288698-0,2886binning_table
mora_max_12mmora_max_12m__woe≥ 14,55-0,4337-0,3788-0,140296,7293970,2707binning_table
mora_max_12mmora_max_12m__woeValores especiales60,0000-0,3788-0,1402101,4706101-0,4706binning_table
mora_max_12mmora_max_12m__woeFaltantes70,0000-0,3788-0,1402101,4706101-0,4706binning_table
utilizacion_lineautilizacion_linea__woe< 0,2048999965190887500,5312-0,7688-0,1402113,2533113-0,2533binning_table
utilizacion_lineautilizacion_linea__woe≥ 0,20489999651908875 y < 0,3291999995708465610,6738-0,7688-0,1402116,4175116-0,4175binning_table
utilizacion_lineautilizacion_linea__woe≥ 0,32919999957084656 y < 0,4655999988317489620,24305-0,7688-0,1402106,861981070,13802binning_table
utilizacion_lineautilizacion_linea__woe≥ 0,46559999883174896 y < 0,574799984693527230,0312-0,7688-0,1402102,1629102-0,1629binning_table
utilizacion_lineautilizacion_linea__woe≥ 0,5747999846935272 y < 0,77355000376701354-0,2337-0,7688-0,140296,287296-0,2872binning_table
utilizacion_lineautilizacion_linea__woe≥ 0,77355000376701355-0,4317-0,7688-0,140291,8949920,1051binning_table
utilizacion_lineautilizacion_linea__woeValores especiales60,0000-0,7688-0,1402101,4706101-0,4706binning_table
utilizacion_lineautilizacion_linea__woeFaltantes70,0000-0,7688-0,1402101,4706101-0,4706binning_table

4.5Calibración

En Desarrollo, la PD media calibrada es 33,17 %, frente a 33,17 % antes de calibrar, contra una tasa de incumplimiento observada de 33,17 %.

La calibración preservó el ordenamiento de las observaciones: la capacidad discriminante del modelo no se altera.

Curva de calibración (confiabilidad) por partición image/svg+xml 0,00 0,20 0,40 0,60 0,80 1,00 PD predicha (media por bin) 0,00 0,20 0,40 0,60 0,80 1,00 Tasa de default observada Curva de calibración (confiabilidad) por partición Calibración perfecta desarrollo (Brier=0,1868, ECE=0,0191) holdout (Brier=0,1953, ECE=0,0474) oot (Brier=0,2158, ECE=0,0267)

4.6Desempeño y discriminación

Las métricas de discriminación se calcularon sobre la PD calibrada.

En Desarrollo el modelo alcanza AUC 0,7382, Gini 0,4763 y KS 0,3578.

En Holdout el modelo alcanza AUC 0,6856, Gini 0,3711 y KS 0,2817.

En Fuera de tiempo (OOT) el modelo alcanza AUC 0,71199, Gini 0,42398 y KS 0,3177.

La tabla de desempeño usa hasta 10 tramos de riesgo configurados, ordenados por la PD calibrada. Los tramos efectivos por partición fueron Desarrollo: 10, Holdout: 10 y Fuera de tiempo (OOT): 10, y permiten verificar la evolución de la tasa de incumplimiento observada entre tramos.

Curva de ganancia acumulada por partición image/svg+xml 0,00 0,20 0,40 0,60 0,80 1,00 Fracción acumulada de población 0,00 0,20 0,40 0,60 0,80 1,00 Fracción de malos capturada Curva de ganancia acumulada por partición Aleatorio desarrollo holdout oot
Discriminación (AUC/Gini/KS) por partición image/svg+xml desarrollo holdout oot 0,00 0,20 0,40 0,60 0,80 1,00 Valor de la métrica Discriminación (AUC/Gini/KS) por partición AUC GINI KS
Métricas de discriminación por partición
partitionn_totaln_badn_goodaucginiksks_cutoff_risk_scoreks_cutoff_scoretpr_at_ksfpr_at_kssourcestatus
desarrollo3.9551.3122.6430,73820,47630,35780,3389—0,66690,3091pd_calibratedok
holdout1.0003156850,68560,37110,28170,3958—0,526980,2453pd_calibratedok
oot1.0455075380,711990,423980,31770,4757—0,67460,3569pd_calibratedok
Desempeño por tramo de riesgo
partitiondecilen_totaln_badn_goodbad_rategood_ratemean_pdmin_pdmax_pdmean_scoremin_scoremax_scorecum_totalcum_badcum_goodcum_bad_capture_ratecum_good_capture_rateliftks_at_decile
desarrollo13962731230,68940,31060,71080,60290,9087459,8485422,0000475,00003962731230,20810,04652,07820,1615
desarrollo23962171790,547980,452020,54090,49190,6029482,1389474,0000488,00007924903020,37350,11431,65190,2592
desarrollo33961702260,42930,57070,45380,41720,4917492,19697487,0000498,00001.1886605280,503050,19981,29410,3033
desarrollo43961732230,43690,56310,38470,35480,4172500,3636496,0000505,00001.5848337510,63490,28411,31690,3508
desarrollo53961302660,32830,67170,32650,29870,3546507,6288503,0000512,00001.9809631.0170,733990,38480,98960,3492
desarrollo63951012940,25570,74430,27210,246950,2986515,1595511,0000520,00002.3751.0641.3110,810980,496030,77080,3149
desarrollo7395992960,25060,74940,22580,20490,24695522,2481518,0000527,00002.7701.1631.6070,88640,608020,75550,2784
desarrollo8395763190,19240,80760,182950,16190,2049529,8962525,0000535,00003.1651.2391.9260,94440,72870,5800020,2156
desarrollo9395433520,10890,89110,13920,11440,1619539,3418533,0000546,00003.5601.2822.2780,97710,86190,32820,1152
desarrollo10395303650,07590,92410,07870,01590,11402559,0861545,0000606,00003.9551.3122.6431,00001,00000,22890,0000
holdout110067330,67000,33000,69370,59310,9157462,3400418,0000476,000010067330,21270,04822,126980,1645
holdout210046540,46000,54000,52580,47650,5888483,8500476,0000490,0000200113870,35870,127011,46030,2317
holdout310038620,38000,62000,44540,41450,4765493,2000489,0000498,00003001511490,47940,21751,20630,2618
holdout410029710,29000,71000,38350,35470,4143500,4900496,0000504,00004001802200,57140,32120,92060,2503
holdout510027730,27000,73000,32440,29960,3519507,8700504,0000512,00005002072930,65710,42770,85710,2294
holdout610030700,30000,70000,27520,25280,2993514,6300511,0000519,00006002373630,75240,52990,95240,2225
holdout710027730,27000,73000,23360,21430,2518520,9700518,0000525,00007002644360,83810,63650,85710,2016
holdout810024760,24000,76000,19480,17260,2137527,4800524,0000532,00008002885120,91430,74740,76190,1668
holdout910020800,20000,80000,14390,11680,1724538,2700532,0000546,00009003085920,97780,86420,63490,1135
holdout101007930,07000,93000,07910,02010,1159558,9100545,0000599,00001.0003156851,00001,00000,22220,0000
oot110583220,79050,20950,83350,773960,9198439,9714417,0000452,000010583220,16370,04091,62930,1228
oot210574310,70480,29520,719030,66930,7738459,7714452,0000466,0000210157530,30970,09851,45260,2112
oot310560450,57140,42860,632010,59580,6693471,4762466,0000476,0000315217980,428010,18221,17780,2459
oot410564410,60950,39050,56860,54320,5958479,0857476,0000482,00004202811390,55420,25841,25630,2959
oot510556490,53330,46670,51190,481990,5431485,6095481,0000490,00005253371880,66470,34941,09930,3153
oot610444600,42310,57690,45520,43090,48199492,1250489,0000495,00006293812480,75150,460970,872020,2905
oot710445590,43270,56730,39680,36710,4309498,8942494,0000503,00007334263070,84020,57060,89180,2696
oot810437670,35580,64420,33810,30420,3671506,2500502,0000511,00008374633740,91320,69520,73330,21805
oot910427770,25960,74040,26780,23170,3042515,9519510,0000522,00009414904510,96650,83830,53510,1282
oot1010417870,16350,83650,18010,05430,2317531,4519521,0000569,00001.0455075381,00001,00000,33690,0000

4.7Estabilidad

El peor PSI entre score y PD en Desarrollo vs. Holdout es 0,0107 (banda «Estable»); corresponde al score. La distribución de la magnitud ganadora se mantiene, de modo que no hay desplazamiento poblacional.

El peor PSI entre score y PD en Desarrollo vs. OOT es 0,7521 (banda «Redesarrollar»); corresponde a la PD calibrada. El desplazamiento de la distribución es severo: el motor lo clasifica en banda de redesarrollo.

A nivel de variable, el mayor CSI corresponde a «mora_max_12m__points» con 2,16402.

Se configuraron hasta 10 tramos por magnitud para el PSI, definidos en Desarrollo.

Estabilidad PSI/CSI por comparación image/svg+xml 0,00 0,50 1,00 1,50 2,00 PSI / CSI csi·dev_vs_holdout·ingreso_mensual__points csi·dev_vs_holdout·mora_max_12m__points csi·dev_vs_holdout·antiguedad_meses__points pd_psi·dev_vs_holdout·pd_calibrated csi·dev_vs_holdout·deuda_ingreso__points score_psi·dev_vs_holdout·score csi·dev_vs_holdout·utilizacion_linea__points csi·dev_vs_oot·ingreso_mensual__points csi·dev_vs_oot·deuda_ingreso__points temporal_score·cohort·score score_psi·dev_vs_oot·score pd_psi·dev_vs_oot·pd_calibrated csi·dev_vs_oot·utilizacion_linea__points csi·dev_vs_oot·antiguedad_meses__points csi·dev_vs_oot·mora_max_12m__points Estabilidad PSI/CSI por comparación Revisión: 0,10 ≤ índice < 0,25 Redesarrollo: índice ≥ 0,25
Métricas de estabilidad (PSI/CSI)
metriccomparisonfeaturevaluestable_thresholdreview_thresholdbandaction
score_psidev_vs_holdoutscore0,01070,100,25stable—
score_psidev_vs_ootscore0,74030,100,25redevelopredesarrollar
pd_psidev_vs_holdoutpd_calibrated0,009980,100,25stable—
pd_psidev_vs_ootpd_calibrated0,75210,100,25redevelopredesarrollar
csidev_vs_holdoutantiguedad_meses__points0,009030,100,25stable—
csidev_vs_ootantiguedad_meses__points1,77570,100,25redevelopredesarrollar
csidev_vs_holdoutdeuda_ingreso__points0,01020,100,25stable—
csidev_vs_ootdeuda_ingreso__points0,14920,100,25reviewvigilar
csidev_vs_holdoutingreso_mensual__points0,00370,100,25stable—
csidev_vs_ootingreso_mensual__points0,08380,100,25stable—
csidev_vs_holdoutmora_max_12m__points0,00740,100,25stable—
csidev_vs_ootmora_max_12m__points2,164020,100,25redevelopredesarrollar
csidev_vs_holdoututilizacion_linea__points0,01330,100,25stable—
csidev_vs_ootutilizacion_linea__points0,87040,100,25redevelopredesarrollar
temporal_scorecohortscore0,74030,100,25redevelopredesarrollar
PSI por tramo de score
metriccomparisonfeaturebin_labelexpected_countactual_countexpected_pctactual_pctcomponent_valuetotal_valueband
score_psidev_vs_holdoutscorebin_00387950,09790,09500,0000840,0107stable
score_psidev_vs_holdoutscorebin_01393860,09940,08600,00190,0107stable
score_psidev_vs_holdoutscorebin_024051140,10240,11400,00120,0107stable
score_psidev_vs_holdoutscorebin_03362990,09150,09900,000590,0107stable
score_psidev_vs_holdoutscorebin_04387960,09790,09600,0000350,0107stable
score_psidev_vs_holdoutscorebin_054251200,10750,12000,00140,0107stable
score_psidev_vs_holdoutscorebin_063921140,09910,11400,00210,0107stable
score_psidev_vs_holdoutscorebin_07387870,09790,08700,00130,0107stable
score_psidev_vs_holdoutscorebin_08414910,10470,09100,00190,0107stable
score_psidev_vs_holdoutscorebin_09403980,10190,09800,000150,0107stable
score_psidev_vs_ootscorebin_003872920,09790,27940,19050,7403redevelop
score_psidev_vs_ootscorebin_013932130,09940,20380,075050,7403redevelop
score_psidev_vs_ootscorebin_024051430,10240,13680,009980,7403redevelop
score_psidev_vs_ootscorebin_03362990,09150,09470,000110,7403redevelop
score_psidev_vs_ootscorebin_04387860,09790,08230,00270,7403redevelop
score_psidev_vs_ootscorebin_05425850,10750,08130,00730,7403redevelop
score_psidev_vs_ootscorebin_06392580,09910,05550,02530,7403redevelop
score_psidev_vs_ootscorebin_07387360,09790,03440,06620,7403redevelop
score_psidev_vs_ootscorebin_08414250,10470,02390,11920,7403redevelop
score_psidev_vs_ootscorebin_0940380,10190,00770,24390,7403redevelop
pd_psidev_vs_holdoutpd_calibratedbin_00395980,09990,09800,0000350,00998stable
pd_psidev_vs_holdoutpd_calibratedbin_01396880,10010,08800,00160,00998stable
pd_psidev_vs_holdoutpd_calibratedbin_02395890,09990,08900,00130,00998stable
pd_psidev_vs_holdoutpd_calibratedbin_033961050,10010,10500,000230,00998stable
pd_psidev_vs_holdoutpd_calibratedbin_043941160,09960,11600,00250,00998stable
pd_psidev_vs_holdoutpd_calibratedbin_053961050,10010,10500,000230,00998stable
pd_psidev_vs_holdoutpd_calibratedbin_063961030,10010,10300,0000810,00998stable
pd_psidev_vs_holdoutpd_calibratedbin_073951140,09990,11400,00190,00998stable
pd_psidev_vs_holdoutpd_calibratedbin_08394860,09960,08600,0020030,00998stable
pd_psidev_vs_holdoutpd_calibratedbin_09398960,10060,09600,000220,00998stable
pd_psidev_vs_ootpd_calibratedbin_0039570,09990,00670,25180,7521redevelop
pd_psidev_vs_ootpd_calibratedbin_01396250,10010,02390,10910,7521redevelop
pd_psidev_vs_ootpd_calibratedbin_02395340,09990,03250,07550,7521redevelop
pd_psidev_vs_ootpd_calibratedbin_03396580,10010,05550,02630,7521redevelop
pd_psidev_vs_ootpd_calibratedbin_04394720,09960,06890,01130,7521redevelop
pd_psidev_vs_ootpd_calibratedbin_05396900,10010,08610,00210,7521redevelop
pd_psidev_vs_ootpd_calibratedbin_063961130,10010,10810,000620,7521redevelop
pd_psidev_vs_ootpd_calibratedbin_073951370,09990,13110,00850,7521redevelop
pd_psidev_vs_ootpd_calibratedbin_083942060,09960,19710,06650,7521redevelop
pd_psidev_vs_ootpd_calibratedbin_093983030,10060,289950,20030,7521redevelop
csidev_vs_holdoutantiguedad_meses__points92 puntos8022340,20280,23400,00450,00903stable
csidev_vs_holdoutantiguedad_meses__points97 puntos5971560,15090,15600,000170,00903stable
csidev_vs_holdoutantiguedad_meses__points103 puntos1.2852920,32490,29200,00350,00903stable
csidev_vs_holdoutantiguedad_meses__points105 puntos6571660,16610,16608,5e-080,00903stable
csidev_vs_holdoutantiguedad_meses__points111 puntos309820,07810,08200,000190,00903stable
csidev_vs_holdoutantiguedad_meses__points114 puntos305700,07710,07000,000690,00903stable
csidev_vs_ootantiguedad_meses__points92 puntos8022500,20280,23920,006031,7757redevelop
csidev_vs_ootantiguedad_meses__points97 puntos5971970,15090,18850,00831,7757redevelop
csidev_vs_ootantiguedad_meses__points103 puntos1.2853840,32490,36750,00521,7757redevelop
csidev_vs_ootantiguedad_meses__points105 puntos6572140,16610,20480,00811,7757redevelop
csidev_vs_ootantiguedad_meses__points111 puntos30900,07810,00000100,88021,7757redevelop
csidev_vs_ootantiguedad_meses__points114 puntos30500,07710,00000100,86781,7757redevelop
csidev_vs_holdoutdeuda_ingreso__points56 puntos207510,05230,05100,0000350,0102stable
csidev_vs_holdoutdeuda_ingreso__points82 puntos5741150,14510,11500,007010,0102stable
csidev_vs_holdoutdeuda_ingreso__points98 puntos7941960,20080,19600,000110,0102stable
csidev_vs_holdoutdeuda_ingreso__points103 puntos8952510,22630,25100,00260,0102stable
csidev_vs_holdoutdeuda_ingreso__points116 puntos1.0072660,25460,26600,0004980,0102stable
csidev_vs_holdoutdeuda_ingreso__points127 puntos4781210,12090,12101,6e-070,0102stable
csidev_vs_ootdeuda_ingreso__points56 puntos2071440,05230,13780,08270,1492review
csidev_vs_ootdeuda_ingreso__points82 puntos5742000,14510,19140,01280,1492review
csidev_vs_ootdeuda_ingreso__points98 puntos7942190,20080,20960,000380,1492review
csidev_vs_ootdeuda_ingreso__points103 puntos8952220,22630,21240,000880,1492review
csidev_vs_ootdeuda_ingreso__points116 puntos1.0071800,25460,17220,03220,1492review
csidev_vs_ootdeuda_ingreso__points127 puntos478800,12090,07660,02020,1492review
csidev_vs_holdoutingreso_mensual__points80 puntos5371320,13580,13200,000110,0037stable
csidev_vs_holdoutingreso_mensual__points92 puntos9922490,25080,24900,0000130,0037stable
csidev_vs_holdoutingreso_mensual__points102 puntos9992590,25260,25900,000160,0037stable
csidev_vs_holdoutingreso_mensual__points107 puntos398930,10060,09300,0006020,0037stable
csidev_vs_holdoutingreso_mensual__points121 puntos8282250,20940,22500,00110,0037stable
csidev_vs_holdoutingreso_mensual__points143 puntos201420,05080,04200,00170,0037stable
csidev_vs_ootingreso_mensual__points80 puntos5372090,13580,20000,02490,0838stable
csidev_vs_ootingreso_mensual__points92 puntos9923250,25080,3110050,01290,0838stable
csidev_vs_ootingreso_mensual__points102 puntos9992480,25260,23730,000950,0838stable
csidev_vs_ootingreso_mensual__points107 puntos398900,10060,08610,00230,0838stable
csidev_vs_ootingreso_mensual__points121 puntos8281390,20940,133010,03460,0838stable
csidev_vs_ootingreso_mensual__points143 puntos201340,05080,03250,00820,0838stable
csidev_vs_holdoutmora_max_12m__points97 puntos249470,062960,04700,00470,0074stable
csidev_vs_holdoutmora_max_12m__points98 puntos1.0952790,27690,27900,0000160,0074stable
csidev_vs_holdoutmora_max_12m__points101 puntos1.1232810,28390,28100,0000310,0074stable
csidev_vs_holdoutmora_max_12m__points104 puntos4241060,10720,10600,0000140,0074stable
csidev_vs_holdoutmora_max_12m__points105 puntos348840,087990,08400,000190,0074stable
csidev_vs_holdoutmora_max_12m__points106 puntos7162030,181040,20300,00250,0074stable
csidev_vs_ootmora_max_12m__points97 puntos2493900,062960,37320,55212,16402redevelop
csidev_vs_ootmora_max_12m__points98 puntos1.0955160,27690,49380,12552,16402redevelop
csidev_vs_ootmora_max_12m__points101 puntos1.1231240,28390,11870,14422,16402redevelop
csidev_vs_ootmora_max_12m__points104 puntos424100,10720,00960,23592,16402redevelop
csidev_vs_ootmora_max_12m__points105 puntos34830,087990,00290,29132,16402redevelop
csidev_vs_ootmora_max_12m__points106 puntos71620,181040,00190,81492,16402redevelop
csidev_vs_holdoututilizacion_linea__points92 puntos6441540,16280,15400,000490,0133stable
csidev_vs_holdoututilizacion_linea__points96 puntos1.1783480,29790,34800,00780,0133stable
csidev_vs_holdoututilizacion_linea__points102 puntos6681690,16890,16905,9e-080,0133stable
csidev_vs_holdoututilizacion_linea__points107 puntos7531670,19040,16700,00310,0133stable
csidev_vs_holdoututilizacion_linea__points113 puntos301680,07610,06800,000910,0133stable
csidev_vs_holdoututilizacion_linea__points116 puntos411940,10390,09400,0009950,0133stable
csidev_vs_ootutilizacion_linea__points92 puntos6444610,16280,44110,27740,8704redevelop
csidev_vs_ootutilizacion_linea__points96 puntos1.1783910,29790,37420,01740,8704redevelop
csidev_vs_ootutilizacion_linea__points102 puntos6681100,16890,10530,03010,8704redevelop
csidev_vs_ootutilizacion_linea__points107 puntos753610,19040,05840,15610,8704redevelop
csidev_vs_ootutilizacion_linea__points113 puntos30130,07610,00290,240030,8704redevelop
csidev_vs_ootutilizacion_linea__points116 puntos411190,10390,01820,14950,8704redevelop
PSI del puntaje por período contra Desarrollo
PeríodoOperacionesPuntaje medioMediana del puntajePD mediaPSIBanda
2023Q1964527,9865527,000022,13 %0,4885Redesarrollar
2023Q2973520,1141521,000026,77 %0,1558Revisar
2023Q31.001509,7463509,000033,52 %0,0183Estable
2023Q4987502,7001503,000038,21 %0,1107Revisar
2024Q11.030494,5592495,000044,23 %0,3823Redesarrollar
2024Q21.045487,9589489,000049,11 %0,7403Redesarrollar

4.8Escala maestra y puntos de corte

7 tramos de puntaje, del 1, de menor riesgo, al 7; cada uno con al menos el 5 % de Desarrollo y una tasa de malos distinta de la de sus vecinos.

PD del tramo de 5,13 % a 77,78 %; su promedio en Desarrollo es el ancla de la calibración, 33,17 %.

En Holdout y Fuera de tiempo (OOT) la tasa de malos sigue el orden de los tramos con contraste y ninguno subestima su PD.

El tramo mayor tiene el 22,0 % de Desarrollo (tramo 5); índice de concentración 0,171.

Sin corte declarado: la tabla de cortes muestra, para cada límite, cuánto se aprueba, la tasa de malos, los malos evitados y los buenos rechazados.

La PD de cada tramo es su tasa de malos de Desarrollo llevada al ancla de la calibración; en una cartera de aprobados, la tabla mide a quien pasó la política anterior.

Qué revisar: En Fuera de tiempo (OOT), el tramo 1 tiene menos de 30 operaciones con desenlace: sin contraste.

Escala maestra — los tramos y su PD
TramoPuntajePD del tramoParticipación DesarrolloTasa de malos DesarrolloSemáforo DesarrolloParticipación HoldoutTasa de malos HoldoutSemáforo HoldoutParticipación Fuera de tiempo (OOT)Tasa de malos Fuera de tiempo (OOT)Semáforo Fuera de tiempo (OOT)
1desde 553 puntos5,13 %6,62 %4,96 %Verde7,10 %7,04 %Verde0,57 %16,67 %Sin contraste
2de 530 a 552 puntos12,98 %18,56 %12,94 %Verde15,00 %18,00 %Ámbar4,11 %11,63 %Verde
3de 514 a 529 puntos22,87 %21,90 %22,86 %Verde24,20 %26,45 %Verde12,92 %22,22 %Verde
4de 505 a 513 puntos33,68 %12,24 %33,68 %Verde13,40 %27,61 %Verde9,47 %37,37 %Verde
5de 487 a 504 puntos43,26 %22,02 %43,28 %Verde23,60 %36,02 %Verde26,51 %44,04 %Verde
6de 465 a 486 puntos57,10 %13,27 %57,14 %Verde12,30 %54,47 %Verde28,23 %57,63 %Verde
7hasta 464 puntos77,78 %5,39 %77,93 %Verde4,40 %68,18 %Verde18,18 %74,74 %Verde
Tabla de puntos de corte
MuestraAprobarPuntajeAprobadosTasa de malos de los aprobadosPD esperada de los aprobadosMalos evitadosBuenos rechazados
DesarrolloTramos 1 a 1desde 553 puntos6,62 %4,96 %5,13 %99,01 %90,58 %
DesarrolloTramos 1 a 2desde 530 puntos25,18 %10,84 %10,91 %91,77 %66,40 %
DesarrolloTramos 1 a 3desde 514 puntos47,08 %16,43 %16,47 %76,68 %41,13 %
DesarrolloTramos 1 a 4desde 505 puntos59,32 %19,99 %20,02 %64,25 %28,98 %
DesarrolloTramos 1 a 5desde 487 puntos81,34 %26,30 %26,32 %35,52 %10,29 %
DesarrolloTramos 1 a 6desde 465 puntos94,61 %30,63 %30,63 %12,65 %1,78 %
DesarrolloTodos los tramostodos los puntajes100,00 %33,17 %33,17 %0,00 %0,00 %
HoldoutTramos 1 a 1desde 553 puntos7,10 %7,04 %5,13 %98,41 %90,36 %
HoldoutTramos 1 a 2desde 530 puntos22,10 %14,48 %10,46 %89,84 %72,41 %
HoldoutTramos 1 a 3desde 514 puntos46,30 %20,73 %16,95 %69,52 %46,42 %
HoldoutTramos 1 a 4desde 505 puntos59,70 %22,28 %20,70 %57,78 %32,26 %
HoldoutTramos 1 a 5desde 487 puntos83,30 %26,17 %27,09 %30,79 %10,22 %
HoldoutTramos 1 a 6desde 465 puntos95,60 %29,81 %30,95 %9,52 %2,04 %
HoldoutTodos los tramostodos los puntajes100,00 %31,50 %33,01 %0,00 %0,00 %
Fuera de tiempo (OOT)Tramos 1 a 1desde 553 puntos0,57 %16,67 %5,13 %99,80 %99,07 %
Fuera de tiempo (OOT)Tramos 1 a 2desde 530 puntos4,69 %12,24 %12,02 %98,82 %92,01 %
Fuera de tiempo (OOT)Tramos 1 a 3desde 514 puntos17,61 %19,57 %19,98 %92,90 %72,49 %
Fuera de tiempo (OOT)Tramos 1 a 4desde 505 puntos27,08 %25,80 %24,77 %85,60 %60,97 %
Fuera de tiempo (OOT)Tramos 1 a 5desde 487 puntos53,59 %34,82 %33,92 %61,54 %32,16 %
Fuera de tiempo (OOT)Tramos 1 a 6desde 465 puntos81,82 %42,69 %41,92 %28,01 %8,92 %
Fuera de tiempo (OOT)Todos los tramostodos los puntajes100,00 %48,52 %48,44 %0,00 %0,00 %

5Validación formal

La validación formal del modelo «consumo_drift_monotonia_auto» ejecutó discriminación, calibración y estabilidad. El estado técnico agregado publicado por el motor es «Falla».

El resultado registra 3 pruebas, de las cuales 0 quedaron fallidas. Las tablas se copian del resultado que publicó la validación, sin recalcular métricas ni decisiones.

Este estado es evidencia técnica; el veredicto de aprobación, aprobación con observaciones o rechazo corresponde al validador humano y queda POR COMPLETAR.

POR COMPLETAR — Veredicto de validación formal

Emite el juicio humano sobre la aptitud del modelo para su uso previsto: aprobar, aprobar con observaciones o rechazar.

Documenta observaciones, responsables, plazos y la fecha de la próxima revisión; el estado técnico del motor no sustituye este veredicto.

5.1Discriminación

La tabla reproduce por partición AUC, Gini y KS, junto con población, fuente y estado de evaluabilidad. Filas evaluadas: 3.

Validación formal — discriminación
partitionn_totaln_badaucginikssourcestatus
Desarrollo3.9551.3120,73820,47630,3578Reusada de la etapa de desempeñoEvaluada
Holdout1.0003150,68560,37110,2817Reusada de la etapa de desempeñoEvaluada
Fuera de tiempo (OOT)1.0455070,711990,423980,3177Reusada de la etapa de desempeñoEvaluada

5.2Calibración

La tabla reúne Hosmer-Lemeshow, Brier y, cuando fue configurado, el contraste por grado con sus decisiones y semáforo publicados. Filas evaluadas: 6.

Validación formal — calibración
partitiontestgradenobserved_defaultsexpected_pdobserved_drstatisticdegrees_of_freedomp_valuealphadecisiontraffic_light
DesarrolloHosmer-Lemeshow—3.9551.3120,33170,331712,130580,1450,05Pasa—
DesarrolloPuntaje de Brier—3.9551.3120,33170,33170,1868———Sin veredicto—
HoldoutHosmer-Lemeshow—1.0003150,32990,315013,875780,0850,05Pasa—
HoldoutPuntaje de Brier—1.0003150,32990,31500,1953———Sin veredicto—
Fuera de tiempo (OOT)Hosmer-Lemeshow—1.0455070,49110,48526,177980,6270,05Pasa—
Fuera de tiempo (OOT)Puntaje de Brier—1.0455070,49110,48520,2158———Sin veredicto—
Hosmer-Lemeshow por grupo · Desarrollo
GrupoObservacionesMalos observadosMalos esperadosTasa observada (%)PD media (%)Diferencia (pp)O/EContribución al estadístico
13963031,20007,58007,8800-0,30000,96200,0500
23964355,200010,860013,9400-3,08000,77903,1300
33967672,600019,190018,32000,87001,04700,2000
43969989,600025,000022,62002,38001,10501,2800
5396102108,000025,760027,2700-1,51000,94500,4500
6395130129,200032,910032,71000,20001,00600,0100
7395174152,200044,050038,53005,52001,14305,0800
8395170179,400043,040045,4200-2,39000,94700,9100
9395216213,800054,680054,13000,55001,01000,0500
10395272280,900068,860071,1100-2,24000,96800,9700
Hosmer-Lemeshow por grupo · Holdout
GrupoObservacionesMalos observadosMalos esperadosTasa observada (%)PD media (%)Diferencia (pp)O/EContribución al estadístico
110077,90007,00007,9100-0,91000,88500,1100
21002014,400020,000014,39005,61001,38902,5500
31002419,500024,000019,48004,52001,23201,3000
41002723,400027,000023,36003,64001,15600,7400
51003027,500030,000027,52002,48001,09000,3100
61002732,400027,000032,4400-5,44000,83201,3500
71002938,300029,000038,3500-9,35000,75603,7000
81003944,500039,000044,5400-5,54000,87601,2400
91004552,600045,000052,5800-7,58000,85602,3000
101006769,400067,000069,3700-2,37000,96600,2600
Hosmer-Lemeshow por grupo · Fuera de tiempo (OOT)
GrupoObservacionesMalos observadosMalos esperadosTasa observada (%)PD media (%)Diferencia (pp)O/EContribución al estadístico
11051719,000016,190018,0600-1,87000,89600,2500
21052828,200026,670026,8800-0,21000,99200,0000
31053735,700035,240033,95001,28001,03800,0800
41054641,900043,810039,90003,91001,09800,6700
51054648,000043,810045,7400-1,93000,95800,1600
61045453,500051,920051,45000,47001,00900,0100
71046559,300062,500057,03005,47001,09601,2700
81045865,900055,770063,3800-7,61000,88002,5900
91047374,900070,190072,0500-1,86000,97400,1800
101048386,700079,810083,4100-3,60000,95700,9700

5.3Estabilidad

La tabla reproduce PSI/estabilidad, umbrales, banda, acción y la decisión que dejó la validación. Filas evaluadas: 15.

Validación formal — estabilidad
metriccomparisonfeaturevaluestable_thresholdreview_thresholdbandactionsourcestatusdecision
PSI del scoreDesarrollo vs. Holdoutscore0,01070,100,25Estable—Reusado de la etapa de estabilidadEvaluadaPasa
PSI del scoreDesarrollo vs. OOTscore0,74030,100,25RedesarrollarredesarrollarReusado de la etapa de estabilidadEvaluadaFalla
PSI de la PDDesarrollo vs. Holdoutpd_calibrated0,009980,100,25Estable—Reusado de la etapa de estabilidadEvaluadaPasa
PSI de la PDDesarrollo vs. OOTpd_calibrated0,75210,100,25RedesarrollarredesarrollarReusado de la etapa de estabilidadEvaluadaFalla
CSIDesarrollo vs. Holdoutantiguedad_meses__points0,009030,100,25Estable—Reusado de la etapa de estabilidadEvaluadaPasa
CSIDesarrollo vs. OOTantiguedad_meses__points1,77570,100,25RedesarrollarredesarrollarReusado de la etapa de estabilidadEvaluadaFalla
CSIDesarrollo vs. Holdoutdeuda_ingreso__points0,01020,100,25Estable—Reusado de la etapa de estabilidadEvaluadaPasa
CSIDesarrollo vs. OOTdeuda_ingreso__points0,14920,100,25RevisarvigilarReusado de la etapa de estabilidadEvaluadaRevisar
CSIDesarrollo vs. Holdoutingreso_mensual__points0,00370,100,25Estable—Reusado de la etapa de estabilidadEvaluadaPasa
CSIDesarrollo vs. OOTingreso_mensual__points0,08380,100,25Estable—Reusado de la etapa de estabilidadEvaluadaPasa
CSIDesarrollo vs. Holdoutmora_max_12m__points0,00740,100,25Estable—Reusado de la etapa de estabilidadEvaluadaPasa
CSIDesarrollo vs. OOTmora_max_12m__points2,164020,100,25RedesarrollarredesarrollarReusado de la etapa de estabilidadEvaluadaFalla
CSIDesarrollo vs. Holdoututilizacion_linea__points0,01330,100,25Estable—Reusado de la etapa de estabilidadEvaluadaPasa
CSIDesarrollo vs. OOTutilizacion_linea__points0,87040,100,25RedesarrollarredesarrollarReusado de la etapa de estabilidadEvaluadaFalla
PSI temporalCohortescore0,74030,100,25RedesarrollarredesarrollarReusado de la etapa de estabilidadEvaluadaFalla

6Conclusiones y recomendación

Discriminación (AUC): Desarrollo 0,7382, Holdout 0,6856 y Fuera de tiempo (OOT) 0,71199.

Estabilidad (peor PSI entre score y PD): Desarrollo vs. Holdout 0,0107 («Estable»; score) y Desarrollo vs. OOT 0,7521 («Redesarrollar»; PD calibrada).

La estabilidad exige atención en Desarrollo vs. OOT antes de aprobar el uso continuado del modelo.

Calibración: la PD media calibrada en Desarrollo (33,17 %) se contrasta con la tasa observada (33,17 %).

Estos hallazgos son los que el motor puede sostener con los números de la corrida. La recomendación —aprobar, aprobar con observaciones o rechazar— es un juicio humano y no se deriva automáticamente de ellos.

POR COMPLETAR — Conclusiones y recomendación

Emite el juicio: ¿el modelo es apto para el uso previsto? La recomendación (aprobar, aprobar con observaciones o rechazar) la firma un humano, no el motor.

Enumera las observaciones y condiciones de uso, con responsable y plazo para cada una, y fija la fecha de la próxima revisión.

7Limitaciones y supuestos

El alcance de este informe es la construcción y evaluación del scorecard. La validación formal ejecutó discriminación, calibración y estabilidad y se documenta en su capítulo propio; el estado técnico no sustituye el veredicto humano.

Todas las métricas provienen de la corrida trazada en el Anexo A. El informe no completa ningún hueco con supuestos: lo que no se pudo calcular aparece declarado como no disponible.

Caveats de reproducibilidad declarados por la corrida: git no disponible: la corrida no tiene SHA de origen.

No hay secciones obligatorias ausentes en esta corrida.

Anexo A —Lineage y reproducibilidad

La corrida queda identificada por los hashes de configuración y de datos, el commit del código y la semilla raíz. Con estos cuatro valores el resultado es reproducible.

Parámetros y payload

config_hash
6517b77a1e28178c050eeaf91842a7f5fa1754641301155bb9c05426109be13d
created_at
2026-10-19T14:07:32.246479Z
data_hash
d21ea993b85ee031a8a4d1f88e3d7af00ead13d98066496a3711e6b979ef2e7d
determinism_caveats
[
  "git no disponible: la corrida no tiene SHA de origen"
]
git_dirty
no
git_sha
—
library_versions
{
  "PyYAML": "6.0.3",
  "bayesrisk": "2.16.0",
  "numpy": "1.26.4",
  "pandas": "2.3.3",
  "pydantic": "2.14.1"
}
root_seed
20240706
runtime_environment_hash
1e4e5c376bed6a330dfaf0da715d45ad30bd08f7bd80a20a342243ff2e4dfb7b
schema_version
1.0.0
uv_lock_hash
6c446c2ad040ff52262caae544ea32b26af36b8abebe5f10d5d276f49e967322

Anexo B —Tablas detalladas

Este anexo reproduce íntegras todas las tablas que produjo la corrida, incluidas las que el cuerpo del informe ya mostró. Es la trazabilidad completa: nada de lo que el motor calculó queda fuera del documento.

Parámetros y payload

figure_keys
[
  "eda.figures"
]
table_keys
[
  "eda.default_rate.by_period",
  "eda.univariate.profiles.antiguedad_meses",
  "eda.univariate.profiles.deuda_ingreso",
  "eda.univariate.profiles.ingreso_mensual",
  "eda.univariate.profiles.mora_max_12m",
  "eda.univariate.profiles.segmento",
  "eda.univariate.profiles.utilizacion_linea",
  "eda.quality.by_column",
  "binning.tables.antiguedad_meses",
  "binning.tables.deuda_ingreso",
  "binning.tables.ingreso_mensual",
  "binning.tables.mora_max_12m",
  "binning.tables.segmento",
  "binning.tables.utilizacion_linea",
  "binning.summary",
  "binning.woe_frame",
  "selection.selected_woe_frame",
  "selection.selection_table",
  "selection.correlation_matrix",
  "selection.vif_table",
  "selection.stability_table",
  "model.coefficients",
  "model.raw_pd_frame",
  "scorecard.scorecard",
  "scorecard.score",
  "calibration.calibrated_pd_frame",
  "performance.performance_table",
  "performance.discriminant_metrics",
  "stability.psi_table",
  "stability.stability_metrics",
  "master_scale.grades",
  "master_scale.grade_table",
  "master_scale.cutoff_table",
  "data.states",
  "data.partitions",
  "data.exclusions",
  "validation.discrimination",
  "validation.calibration",
  "validation.stability",
  "validation.hosmer_lemeshow_groups.desarrollo",
  "validation.hosmer_lemeshow_groups.holdout",
  "validation.hosmer_lemeshow_groups.oot",
  "master_scale.scale",
  "master_scale.cutoffs",
  "stability.psi_by_period"
]
Tabla de binning WoE — variable «antiguedad_meses»
BinCountCount (%)Non-eventEventEvent rateWoEIVJS
< 22,58020,20284713310,4127-0,34760,02580,0032
≥ 22,5 y < 39,55970,15093732240,3752-0,19040,00560,000704
≥ 39,5 y < 73,51.2850,32498774080,31750,06490,00140,00017
≥ 73,5 y < 91,56570,16614581990,30290,13320,00290,00036
≥ 91,5 y < 100,53090,0781230790,25570,36830,00990,0012
≥ 100,53050,0771234710,23280,49230,01690,0021
Valores especiales00,0000000,00000,00000,00000,0000
Faltantes00,0000000,00000,00000,00000,0000
3.9551,00002.6431.3120,33170,06240,0078
Tabla de binning WoE — variable «deuda_ingreso»
BinCountCount (%)Non-eventEventEvent rateWoEIVJS
< 0,132849998772144324780,1209398800,16740,90410,081010,0098
≥ 0,13284999877214432 y < 0,30370000004768371.0070,25467812260,22440,53970,06650,0082
≥ 0,3037000000476837 y < 0,48514999449253088950,22636122830,31620,07090,00110,00014
≥ 0,4851499944925308 y < 0,71919998526573187940,20085062880,3627-0,13680,00380,00048
≥ 0,7191999852657318 y < 1,12520003318786625740,14512882860,4983-0,69340,07560,0093
≥ 1,12520003318786622070,0523581490,7198-1,64390,15060,01696
Valores especiales00,0000000,00000,00000,00000,0000
Faltantes00,0000000,00000,00000,00000,0000
3.9551,00002.6431.3120,33170,37870,0449
Tabla de binning WoE — variable «ingreso_mensual»
BinCountCount (%)Non-eventEventEvent rateWoEIVJS
< 278.556,6406255370,13582652720,5065-0,72640,07780,0095
≥ 278.556,640625 y < 421.137,7343759920,25085874050,4083-0,32920,02850,0035
≥ 421.137,734375 y < 582.961,906259990,25266703290,32930,01090,00002970,0000037
≥ 582.961,90625 y < 674.2013980,10062831150,28890,20020,00390,00049
≥ 674.201 y < 1.116.0058280,20946591690,20410,66050,07960,0098
≥ 1.116.0052010,0508179220,10951,395980,07110,0082
Valores especiales00,0000000,00000,00000,00000,0000
Faltantes00,0000000,00000,00000,00000,0000
3.9551,00002.6431.3120,33170,26090,0316
Tabla de binning WoE — variable «mora_max_12m»
BinCountCount (%)Non-eventEventEvent rateWoEIVJS
< 4,57160,181045391770,24720,41320,02850,0035
≥ 4,5 y < 5,53480,08799258900,25860,35280,01020,0013
≥ 5,5 y < 6,54240,10723041200,283020,22920,00540,00067
≥ 6,5 y < 9,51.1230,28397433800,3384-0,02980,000250,000032
≥ 9,5 y < 14,51.0950,27696584370,3991-0,29110,02450,0031
≥ 14,52490,062961411080,4337-0,43370,01260,0016
Valores especiales00,0000000,00000,00000,00000,0000
Faltantes00,0000000,00000,00000,00000,0000
3.9551,00002.6431.3120,33170,08150,0101
Tabla de binning WoE — variable «segmento»
BinCountCount (%)Non-eventEventEvent rateWoEIVJS
asalariado1.3210,334018984230,32020,05240,000910,00011
pensionado1.3300,33638934370,32860,01430,0000690,0000086
independiente1.3040,32978524520,3466-0,06650,00150,00018
Valores especiales00,0000000,00000,00000,00000,0000
Faltantes00,0000000,00000,00000,00000,0000
3.9551,00002.6431.3120,33170,00250,00031
Tabla de binning WoE — variable «utilizacion_linea»
BinCountCount (%)Non-eventEventEvent rateWoEIVJS
< 0,204899996519088753010,0761233680,22590,53120,01930,0024
≥ 0,20489999651908875 y < 0,329199999570846564110,1039328830,20190,67380,040990,00503
≥ 0,32919999957084656 y < 0,465599998831748967530,19045422110,28020,243050,01080,0013
≥ 0,46559999883174896 y < 0,57479998469352726680,16894512170,32490,03120,000160,0000205
≥ 0,5747999846935272 y < 0,77355000376701351.1780,29797244540,3854-0,23370,01680,0021
≥ 0,77355000376701356440,16283652790,4332-0,43170,03220,00399
Valores especiales00,0000000,00000,00000,00000,0000
Faltantes00,0000000,00000,00000,00000,0000
3.9551,00002.6431.3120,33170,12020,0149
Perfil frente al incumplimiento — variable «antiguedad_meses»
tramoncoveragedefault_rate
> 1 y ≤ 114010,10140,39401
> 11 y ≤ 224010,10140,4314
> 22 y ≤ 333910,09890,3632
> 33 y ≤ 443920,09910,3393
> 44 y ≤ 553970,10040,3174
> 55 y ≤ 664260,10770,33803
> 66 y ≤ 763930,09940,2952
> 76 y ≤ 873910,09890,3095
> 87 y ≤ 983980,10060,2714
> 98 y ≤ 1203650,09230,2493
Perfil frente al incumplimiento — variable «deuda_ingreso»
tramoncoveragedefault_rate
> 0,0034 y ≤ 0,118280000000000013960,10010,1692
> 0,11828000000000001 y ≤ 0,18533970,10040,2217
> 0,1853 y ≤ 0,25223960,10010,2096
> 0,2522 y ≤ 0,32053940,09960,2513
> 0,3205 y ≤ 0,39383950,09990,3291
> 0,3938 y ≤ 0,483840000000000053950,09990,3063
> 0,48384000000000005 y ≤ 0,58243999999999963950,09990,36203
> 0,5824399999999996 y ≤ 0,71653980,10060,3643
> 0,7165 y ≤ 0,91929999999999993930,09940,4936
> 0,9192999999999999 y ≤ 2,53960,10010,6111
Perfil frente al incumplimiento — variable «ingreso_mensual»
tramoncoveragedefault_rate
> 52.315,01 y ≤ 251.196,6923960,10010,4899
> 251.196,692 y ≤ 318.904,676000000043950,09990,4658
> 318.904,67600000004 y ≤ 372.689,544000000173960,10010,40404
> 372.689,54400000017 y ≤ 429.434,728000000063950,09990,3873
> 429.434,72800000006 y ≤ 490.412,523960,10010,3434
> 490.412,52 y ≤ 555.037,79600000023950,09990,31899
> 555.037,7960000002 y ≤ 635.937,03999999993950,09990,2886
> 635.937,0399999999 y ≤ 745.715,87000000013960,10010,2626
> 745.715,8700000001 y ≤ 935.559,79199999993950,09990,2025
> 935.559,7919999999 y ≤ 2.624.228,23960,10010,15404
Perfil frente al incumplimiento — variable «mora_max_12m»
tramoncoveragedefault_rate
> 0 y ≤ 34250,10750,2565
> 3 y ≤ 56390,16160,2473
> 5 y ≤ 64240,10720,28302
> 6 y ≤ 74000,10110,3550
> 7 y ≤ 83700,09360,3135
> 8 y ≤ 93530,08930,3456
> 9 y ≤ 102870,07260,4355
> 10 y ≤ 112970,07510,4175
> 11 y ≤ 133910,09890,3708
> 13 y ≤ 233690,09330,4092
Perfil frente al incumplimiento — variable «segmento»
tramoncoveragedefault_rate
asalariado1.3210,334010,3202
independiente1.3040,32970,3466
pensionado1.3300,33630,3286
Perfil frente al incumplimiento — variable «utilizacion_linea»
tramoncoveragedefault_rate
> 0,0192 y ≤ 0,23953970,10040,2191
> 0,2395 y ≤ 0,346583940,09960,2183
> 0,34658 y ≤ 0,42028000000000013960,10010,2727
> 0,4202800000000001 y ≤ 0,487080000000000073950,09990,3241
> 0,48708000000000007 y ≤ 0,54893960,10010,3106
> 0,5489 y ≤ 0,61592000000000013950,09990,3823
> 0,6159200000000001 y ≤ 0,684063950,09990,3595
> 0,68406 y ≤ 0,749443960,10010,4066
> 0,74944 y ≤ 0,830783950,09990,4177
> 0,83078 y ≤ 0,9983960,10010,4066
Puntos de corte por muestra
samplegrades_approvedcutoff_scoredeclaredn_scoredn_with_outcomen_approvedn_approved_with_outcomen_badn_goodapproved_shareapproved_bad_rateapproved_expected_pdbads_avoided_sharegoods_rejected_share
desarrollo1552,50no3.9553.9552622621.3122.6430,06620,04960,05130,99010,9058
desarrollo2529,50no3.9553.9559969961.3122.6430,25180,10840,10910,91770,66402
desarrollo3513,50no3.9553.9551.8621.8621.3122.6430,47080,16430,16470,76680,4113
desarrollo4504,50no3.9553.9552.3462.3461.3122.6430,59320,19990,20020,64250,2898
desarrollo5486,50no3.9553.9553.2173.2171.3122.6430,81340,262980,26320,35520,1029
desarrollo6464,50no3.9553.9553.7423.7421.3122.6430,94610,30630,30630,12650,0178
desarrollo7—no3.9553.9553.9553.9551.3122.6431,00000,33170,33170,00000,0000
holdout1552,50no1.0001.00071713156850,07100,07040,05130,98410,9036
holdout2529,50no1.0001.0002212213156850,22100,14480,10460,89840,7241
holdout3513,50no1.0001.0004634633156850,46300,20730,16950,69520,4642
holdout4504,50no1.0001.0005975973156850,59700,22280,207020,57780,3226
holdout5486,50no1.0001.0008338333156850,83300,26170,27090,30790,1022
holdout6464,50no1.0001.0009569563156850,95600,29810,30950,09520,0204
holdout7—no1.0001.0001.0001.0003156851,00000,31500,33010,00000,0000
oot1552,50no1.0451.045665075380,00570,16670,05130,998030,9907
oot2529,50no1.0451.04549495075380,04690,12240,12020,98820,9201
oot3513,50no1.0451.0451841845075380,17610,19570,19980,928990,7249
oot4504,50no1.0451.0452832835075380,27080,257950,24770,856020,6097
oot5486,50no1.0451.0455605605075380,53590,34820,33920,61540,3216
oot6464,50no1.0451.0458558555075380,81820,42690,41920,28010,0892
oot7—no1.0451.0451.0451.0455075381,00000,48520,48440,00000,0000
Tramos de la escala por muestra
samplegradensharen_with_outcomen_badbad_ratepdjeffreys_p_valuetraffic_light
desarrollo12620,0662262130,04960,05130,532green
desarrollo27340,1856734950,12940,12980,506green
desarrollo38660,218968661980,22860,22870,499green
desarrollo44840,12244841630,33680,33680,499green
desarrollo58710,22028713770,43280,43260,494green
desarrollo65250,13275253000,57140,570970,492green
desarrollo72130,05392131660,77930,77780,485green
holdout1710,07107150,07040,05130,2201green
holdout21500,1500150270,18000,12980,038amber
holdout32420,2420242640,26450,22870,094green
holdout41340,1340134370,27610,33680,933green
holdout52360,2360236850,36020,43260,988green
holdout61230,1230123670,54470,570970,723green
holdout7440,044044300,68180,77780,933green
oot160,0057610,16670,0513—not_evaluable
oot2430,04114350,11630,12980,583green
oot31350,1292135300,22220,22870,564green
oot4990,094799370,37370,33680,217green
oot52770,26512771220,44040,43260,395green
oot62950,28232951700,57630,570970,428green
oot71900,18181901420,74740,77780,844green
Tramos de la escala maestra
gradescore_minscore_maxlabelpdn_developmentshare_developmentn_bad_developmentbad_rate_developmentsource
1552,50—desde 553 puntos0,05132620,0662130,0496formed
2529,50552,50de 530 a 552 puntos0,12987340,1856950,1294formed
3513,50529,50de 514 a 529 puntos0,22878660,218961980,2286formed
4504,50513,50de 505 a 513 puntos0,33684840,12241630,3368formed
5486,50504,50de 487 a 504 puntos0,43268710,22023770,4328formed
6464,50486,50de 465 a 486 puntos0,570975250,13273000,5714formed
7—464,50hasta 464 puntos0,77782130,05391660,7793formed
Matriz de correlación entre variables
deuda_ingreso__woeingreso_mensual__woeutilizacion_linea__woemora_max_12m__woeantiguedad_meses__woe
1,00000,03940,114980,15340,0517
0,03941,00000,03370,05750,0241
0,114980,03371,00000,28080,0492
0,15340,05750,28081,00000,0983
0,05170,02410,04920,09831,0000
Estabilidad de las variables candidatas
featurewoe_columnsamplecsicsi_bandsmoothing

Detalle por observación

Esta corrida produjo tablas con una fila por operación que no se reproducen en el informe (son datos, no evidencia de validación) y que no se exportaron: añada csv o xlsx a report.formats para obtenerlas completas.

  • Dataset transformado a WoE — 6.000 filas
  • PD calibrada por observación — 6.000 filas
  • PD sin calibrar por observación — 6.000 filas
  • Puntaje por observación — 6.000 filas
  • Dataset WoE de las variables seleccionadas — 6.000 filas

Anexo C —Parámetros completos

Este anexo reproduce el payload completo de cada etapa: los parámetros efectivos y las métricas estructuradas tal como las publicó cada step, sin resumir.

C.1Población, particiones y exclusiones

Artefacto de origen: data.data_card

Parámetros y payload

bad_rate
0,3557
class_counts
{
  "bueno": 3866,
  "excluido": 0,
  "indeterminado": 0,
  "malo": 2134
}
data_hash
d21ea993b85ee031a8a4d1f88e3d7af00ead13d98066496a3711e6b979ef2e7d
effective_config
{
  "load": {
    "backend": "pandas",
    "csv_options": {
      "decimal": ".",
      "encoding": "utf-8",
      "sep": ","
    },
    "file_format": "auto",
    "source": "prepared/consumo_drift/input.parquet"
  },
  "missing": {
    "max_missing_rate": "0,99",
    "special_values": []
  },
  "partition": {
    "min_bads_per_partition": 30,
    "strategy": {
      "cohort_col": "cohorte",
      "holdout_fraction": "0,20",
      "oot_cohorts": [
        "2024Q2"
      ],
      "type": "cohort"
    },
    "ttd_includes_excluded": true
  },
  "schema_": {
    "columns": [
      {
        "coerce": false,
        "dtype": "float",
        "ge": null,
        "isin": null,
        "le": null,
        "name": "ingreso_mensual",
        "nullable": false,
        "required": true,
        "unique": false
      },
      {
        "coerce": false,
        "dtype": "float",
        "ge": null,
        "isin": null,
        "le": null,
        "name": "deuda_ingreso",
        "nullable": false,
        "required": true,
        "unique": false
      },
      {
        "coerce": false,
        "dtype": "float",
        "ge": null,
        "isin": null,
        "le": null,
        "name": "utilizacion_linea",
        "nullable": false,
        "required": true,
        "unique": false
      },
      {
        "coerce": false,
        "dtype": "int",
        "ge": null,
        "isin": null,
        "le": null,
        "name": "mora_max_12m",
        "nullable": false,
        "required": true,
        "unique": false
      },
      {
        "coerce": false,
        "dtype": "int",
        "ge": null,
        "isin": null,
        "le": null,
        "name": "antiguedad_meses",
        "nullable": false,
        "required": true,
        "unique": false
      },
      {
        "coerce": false,
        "dtype": "str",
        "ge": null,
        "isin": null,
        "le": null,
        "name": "segmento",
        "nullable": false,
        "required": true,
        "unique": false
      },
      {
        "coerce": false,
        "dtype": "str",
        "ge": null,
        "isin": null,
        "le": null,
        "name": "cohorte",
        "nullable": false,
        "required": true,
        "unique": false
      },
      {
        "coerce": false,
        "dtype": "int",
        "ge": null,
        "isin": null,
        "le": null,
        "name": "bad_flag",
        "nullable": false,
        "required": true,
        "unique": false
      }
    ],
    "index_col": "loan_id",
    "ordered": false,
    "strict": false,
    "unique_keys": null
  },
  "target": {
    "bad_rule": {
      "all_of": [
        {
          "col": "bad_flag",
          "op": "==",
          "value": 1
        }
      ],
      "any_of": []
    },
    "exclusion_rules": [],
    "good_rule": {
      "all_of": [
        {
          "col": "bad_flag",
          "op": "==",
          "value": 0
        }
      ],
      "any_of": []
    },
    "indeterminate_rule": {
      "all_of": [
        {
          "col": "bad_flag",
          "op": "isna",
          "value": null
        }
      ],
      "any_of": []
    },
    "target_col": "target",
    "window": null
  },
  "type": "standard"
}
exclusions_by_reason
{}
n_features
8
n_rows
6.000
partition_bad_rates
{
  "desarrollo": "0,3317",
  "fuera_de_modelo": "0,0000",
  "holdout": "0,3150",
  "oot": "0,4852"
}
partition_sizes
{
  "desarrollo": 3955,
  "fuera_de_modelo": 0,
  "holdout": 1000,
  "oot": 1045
}
performance_window_months
—
source
data-64d3cca96e04c90b.parquet
target_col
target

C.2Población y calidad de datos

Artefacto de origen: eda.eda_card

Parámetros y payload

axis
cohort
axis_inferred
no
default_rate_not_evaluable_reason
—
effective_config
{
  "analysis_partition": "desarrollo",
  "default_rate": {
    "axis": "cohort",
    "cohort_col": "cohorte",
    "date_col": null,
    "min_obs_per_period": 50,
    "period_freq": "M"
  },
  "quality": {
    "high_cardinality_threshold": 50,
    "near_constant_threshold": "0,99"
  },
  "sampling": {
    "enabled": false,
    "max_rows": 500000
  },
  "stability": {
    "metric": "cv",
    "threshold": "0,25"
  },
  "type": "standard",
  "univariate": {
    "columns": [
      "ingreso_mensual",
      "deuda_ingreso",
      "utilizacion_linea",
      "mora_max_12m",
      "antiguedad_meses",
      "segmento"
    ],
    "compute_descriptive_iv": false,
    "n_quantile_bins": 10,
    "rare_level_threshold": "0,01"
  }
}
failed_analyses
{}
n_columns_profiled
6
n_figures
6
n_periods
5
overall_default_rate
0,3317
quality_flag_counts
{
  "high_cardinality": 0,
  "near_constant": 0,
  "near_unique": 1
}
stability_flagged
no
stability_metric_used
cv
stability_not_evaluable_reason
eje_cohorte
stability_threshold
0,25
stability_value
—

C.3Binning WoE y poder predictivo

Artefacto de origen: binning.binning_card

Parámetros y payload

assigned_bins
[]
effective_config
{
  "cat_cutoff": "0,01",
  "cat_unknown": null,
  "categorical_columns": [
    "segmento"
  ],
  "exclude_columns": [],
  "fail_on_non_binnable": false,
  "feature_columns": [
    "ingreso_mensual",
    "deuda_ingreso",
    "utilizacion_linea",
    "mora_max_12m",
    "antiguedad_meses",
    "segmento"
  ],
  "keep_structural_columns": true,
  "max_n_bins": 6,
  "max_n_prebins": 20,
  "max_pvalue": null,
  "max_pvalue_policy": "consecutive",
  "metric_missing": "empirical",
  "metric_special": "empirical",
  "min_bin_n_event": 1,
  "min_bin_n_nonevent": 1,
  "min_bin_size": "0,05",
  "min_event_rate_diff": "0,00",
  "min_n_bins": null,
  "min_prebin_size": "0,05",
  "mip_solver": "bop",
  "monotonic_trend": "auto",
  "n_jobs": null,
  "output_suffix": "__woe",
  "require_optimal": true,
  "solver": "mip",
  "special_handling": "separate",
  "split_digits": null,
  "time_limit": 10,
  "type": "standard",
  "variable_overrides": []
}
excluded_by_target_rule
[]
iv_by_variable
{
  "antiguedad_meses": "0,0624",
  "deuda_ingreso": "0,3787",
  "ingreso_mensual": "0,2609",
  "mora_max_12m": "0,0815",
  "segmento": "0,0025",
  "utilizacion_linea": "0,1202"
}
missing_handling
empirical
monotonicity_by_variable
{
  "antiguedad_meses": "descending",
  "deuda_ingreso": "ascending",
  "ingreso_mensual": "descending",
  "mora_max_12m": "ascending",
  "segmento": null,
  "utilizacion_linea": null
}
n_variables_binned
6
n_variables_requested
6
n_variables_skipped
0
optbinning_version
0.20.0
rare_category_regroupings
{}
special_handling
separate

C.4Selección de variables

Artefacto de origen: selection.selection_card

Parámetros y payload

dependency_versions
{
  "numpy": "1.26.4",
  "pandas": "2.3.3",
  "scikit-learn": "1.7.2",
  "scipy": "1.17.1",
  "statsmodels": "0.15.0"
}
effective_config
{
  "compute_univariate_metrics": true,
  "correlation": {
    "clustering_method": "none",
    "enabled": true,
    "method": "pearson",
    "threshold": "0,75"
  },
  "exclude_columns": [],
  "fail_if_no_features": true,
  "feature_columns": "*",
  "force_exclude": [],
  "force_include": [],
  "keep_structural_columns": true,
  "max_iv": "0,50",
  "max_iv_action": "flag",
  "min_auc": null,
  "min_gini": null,
  "min_iv": "0,02",
  "min_ks": null,
  "priority_order": [
    "iv",
    "auc",
    "ks",
    "name"
  ],
  "stability": {
    "action": "report_only",
    "enabled": false,
    "review_threshold": "0,25",
    "smoothing": "0,000001",
    "stable_threshold": "0,10"
  },
  "type": "standard",
  "vif": {
    "add_intercept": true,
    "enabled": true,
    "max_iterations": null,
    "threshold": "5,00"
  }
}
excluded_by_reason
{
  "low_iv": 1
}
high_iv_flags
[]
max_abs_correlation_after_selection
0,2808
max_vif_after_selection
1,1132
n_candidates
6
n_excluded
1
n_selected
5
selected_features
[
  "antiguedad_meses",
  "deuda_ingreso",
  "ingreso_mensual",
  "mora_max_12m",
  "utilizacion_linea"
]
stability_flags
[]
thresholds
{
  "correlation.clustering_method": "none",
  "correlation.method": "pearson",
  "correlation.threshold": "0,75",
  "max_iv": "0,50",
  "max_iv_action": "flag",
  "min_auc": null,
  "min_gini": null,
  "min_iv": "0,02",
  "min_ks": null,
  "stability.action": "report_only",
  "stability.review_threshold": null,
  "stability.stable_threshold": null,
  "vif.threshold": "5,00"
}

C.5Modelo PD

Artefacto de origen: model.model_card

Parámetros y payload

dependency_versions
{
  "numpy": "1.26.4",
  "pandas": "2.3.3",
  "scikit-learn": "1.7.2",
  "scipy": "1.17.1",
  "statsmodels": "0.15.0"
}
effective_config
{
  "alpha": "0,05",
  "engine": "logit",
  "fail_if_no_features": true,
  "fit_intercept": true,
  "fit_maxiter": 100,
  "force_exclude": [],
  "force_include": [],
  "iv_contribution": {
    "action": "flag",
    "threshold": "0,90"
  },
  "optimizer": "newton",
  "sign_policy": {
    "action": "flag",
    "expected_beta_sign": "negative",
    "fail_on_forced_inverted": false
  },
  "stepwise": {
    "criterion": "wald_pvalue",
    "direction": "bidirectional",
    "enabled": true,
    "entry_p_value": "0,05",
    "exit_p_value": "0,05",
    "max_iter": 100,
    "min_features": 1
  },
  "tol": "0,00000001",
  "type": "standard"
}
engine
logit
final_features
[
  "antiguedad_meses",
  "deuda_ingreso",
  "ingreso_mensual",
  "mora_max_12m",
  "utilizacion_linea"
]
fit_statistics
{
  "aic": "4.383,54",
  "bic": "4.421,24",
  "converged": true,
  "llr": "654,4574",
  "llr_p_value": "< 0,001",
  "log_likelihood": "-2.185,77",
  "n_events_dev": 1312,
  "n_iterations": 6,
  "n_nonevents_dev": 2643,
  "n_obs_dev": 3955,
  "null_log_likelihood": "-2.513,001",
  "optimizer": "newton",
  "pseudo_r2_mcfadden": "0,1302"
}
iv_contribution_flags
[
  "deuda_ingreso"
]
n_candidates
5
n_final_features
5
sign_flags
[]
thresholds
{
  "alpha": "0,05",
  "engine": "logit",
  "entry_p_value": "0,05",
  "exit_p_value": "0,05",
  "fail_if_no_features": "true",
  "fit_intercept": "true",
  "fit_maxiter": "100,00",
  "iv_contribution.action": "flag",
  "iv_contribution.threshold": "0,90",
  "optimizer": "newton",
  "sign_policy.action": "flag",
  "sign_policy.expected_beta_sign": "negative",
  "stepwise.criterion": "wald_pvalue",
  "stepwise.direction": "bidirectional",
  "stepwise.max_iter": "100,00",
  "stepwise.min_features": "1,00"
}

C.6Scorecard

Artefacto de origen: scorecard.card

Parámetros y payload

dependency_versions
{
  "numpy": "1.26.4",
  "pandas": "2.3.3"
}
effective_config
{
  "clip": false,
  "intercept_allocation": "uniform",
  "max_score": null,
  "min_score": null,
  "output_suffix": "__points",
  "pdo": "20,00",
  "point_overrides": [],
  "rounding_method": "nearest_integer",
  "score_column": "score",
  "score_direction": "higher_is_lower_risk",
  "target_odds": "50,00",
  "target_score": "600,00",
  "type": "standard"
}
factor
28,8539
max_score
—
min_score
—
n_variables
5
offset
487,1229
overrides_count
0
pdo
20,0000
points_columns
[
  "antiguedad_meses__points",
  "deuda_ingreso__points",
  "ingreso_mensual__points",
  "mora_max_12m__points",
  "utilizacion_linea__points"
]
rounding_method
nearest_integer
score_column
score
score_direction
higher_is_lower_risk
target_odds
50,0000
target_score
600,0000

C.7Calibración

Artefacto de origen: calibration.card

Parámetros y payload

anchor_kind
through_the_cycle
anchor_source
development_observed
calibrated_mean_pd_dev
0,3317
dependency_versions
{
  "numpy": "1.26.4",
  "pandas": "2.3.3",
  "scipy": "1.17.1"
}
effective_config
{
  "anchor_kind": "through_the_cycle",
  "anchor_source": "development_observed",
  "fit_partition": "desarrollo",
  "linear_predictor_calibrated_column": "linear_predictor_calibrated",
  "linear_predictor_column": "linear_predictor",
  "max_abs_offset": null,
  "max_iter": 100,
  "method": "intercept_offset",
  "min_fit_rows": 30,
  "partition_column": "partition",
  "pd_calibrated_column": "pd_calibrated",
  "pd_raw_column": "pd_raw",
  "require_both_classes_for_supervised": true,
  "target_column": "target",
  "target_pd": null,
  "target_tolerance": "0,000000000001",
  "type": "standard"
}
fit_partition
desarrollo
intercept
—
method
intercept_offset
n_fit
3.955
observed_default_rate_dev
0,3317
offset
2,8e-14
pd_calibrated_column
pd_calibrated
pd_raw_column
pd_raw
ranking_preserved
sí
raw_mean_pd_dev
0,3317
slope
—
target_pd
0,3317
ties_created
0

C.8Desempeño y discriminación

Artefacto de origen: performance.card

Parámetros y payload

bands_by_partition
{
  "desarrollo": "ok",
  "holdout": "ok",
  "oot": "ok"
}
dependency_versions
{
  "numpy": "1.26.4",
  "pandas": "2.3.3",
  "scikit-learn": "1.7.2"
}
effective_config
{
  "evaluation_source": "pd_calibrated",
  "min_events_per_partition": 1,
  "min_rows_per_partition": 30,
  "n_deciles": 10,
  "optional_thresholds": {},
  "partition_column": "partition",
  "partitions": [
    "desarrollo",
    "holdout",
    "oot"
  ],
  "pd_column": "pd_calibrated",
  "schema_version": "1.0.0",
  "score_column": "score",
  "score_direction": "higher_is_lower_risk",
  "target_column": "target",
  "type": "standard"
}
evaluation_source
pd_calibrated
max_metrics_by_partition
{
  "desarrollo": {
    "auc": "0,7382",
    "gini": "0,4763",
    "ks": "0,3578"
  },
  "holdout": {
    "auc": "0,6856",
    "gini": "0,3711",
    "ks": "0,2817"
  },
  "oot": {
    "auc": "0,71199",
    "gini": "0,42398",
    "ks": "0,3177"
  }
}
n_deciles
10
partitions
[
  "desarrollo",
  "holdout",
  "oot"
]
score_direction
higher_is_lower_risk
thresholds
{}

Métricas estructuradas

discrimination
{
  "effective_deciles_by_partition": {
    "desarrollo": 10,
    "holdout": 10,
    "oot": 10
  },
  "not_evaluable_reasons_by_partition": {},
  "threshold_flags_by_partition": {}
}

C.9Estabilidad

Artefacto de origen: stability.card

Parámetros y payload

bands_by_comparison
{
  "dev_vs_holdout": "stable",
  "dev_vs_oot": "redevelop"
}
comparisons
[
  "dev_vs_holdout",
  "dev_vs_oot"
]
csi_source
score_points
dependency_versions
{
  "numpy": "1.26.4",
  "pandas": "2.3.3",
  "pandera": "0.34.1"
}
effective_config
{
  "comparisons": [
    "dev_vs_holdout",
    "dev_vs_oot"
  ],
  "csi_bins": 10,
  "csi_source": "score_points",
  "include_pd_stability": true,
  "partition_column": "partition",
  "pd_column": "pd_calibrated",
  "psi_bins": 10,
  "psi_review_threshold": "0,25",
  "psi_stable_threshold": "0,10",
  "schema_version": "1.0.0",
  "score_column": "score",
  "score_direction": "higher_is_lower_risk",
  "smoothing": "0,000001",
  "temporal_axis": "cohort",
  "temporal_column": "cohorte",
  "temporal_freq": "M",
  "type": "standard"
}
max_psi_by_comparison
{
  "dev_vs_holdout": "0,0107",
  "dev_vs_oot": "0,7521"
}
psi_bins
10
psi_metric_by_comparison
{
  "dev_vs_holdout": "score_psi",
  "dev_vs_oot": "pd_psi"
}
review_threshold
0,25
score_direction
higher_is_lower_risk
stable_threshold
0,10
worst_csi_feature
mora_max_12m__points
worst_csi_value
2,16402

Métricas estructuradas

stability
{
  "csi_features": [
    "antiguedad_meses__points",
    "deuda_ingreso__points",
    "ingreso_mensual__points",
    "mora_max_12m__points",
    "utilizacion_linea__points"
  ],
  "include_pd_stability": true,
  "n_periods": 6,
  "temporal_axis": "cohort"
}

C.10Validación formal

Artefacto de origen: validation.card

Parámetros y payload

dependency_versions
{
  "numpy": "1.26.4",
  "pandas": "2.3.3",
  "scipy": "1.17.1"
}
effective_config
{
  "backtesting": {
    "alpha": "0,05",
    "enabled": false,
    "one_sided": true,
    "parameters": [
      "pd",
      "lgd",
      "ead"
    ],
    "pd_test": "jeffreys",
    "realised_ead_col": "realised_ead",
    "realised_lgd_col": "realised_lgd",
    "realised_pd_col": "realised_default",
    "segment_col": "portfolio"
  },
  "calibration": {
    "alpha": "0,05",
    "binomial_by_grade": false,
    "brier": true,
    "grade_col": "grade",
    "hl_grouping": "deciles",
    "hl_n_groups": 10,
    "hosmer_lemeshow": true,
    "min_rows_per_group": 30,
    "partition_column": "partition",
    "pd_column": "pd_calibrated",
    "pd_test": "jeffreys",
    "target_column": "target",
    "traffic_light_green_alpha": "0,05",
    "traffic_light_red_alpha": "0,01"
  },
  "discrimination": {
    "consume_performance": true,
    "partitions": [
      "desarrollo",
      "holdout",
      "oot"
    ]
  },
  "fail_on_falta_dato": true,
  "families": [
    "discrimination",
    "calibration",
    "stability"
  ],
  "schema_version": "1.0.0",
  "stability": {
    "consume_stability": true,
    "psi_review_threshold": "0,25",
    "psi_stable_threshold": "0,10"
  },
  "type": "standard"
}
falta_dato
[]
families_run
[
  "discrimination",
  "calibration",
  "stability"
]
model_ref
consumo_drift_monotonia_auto
n_failed
0
n_tests
3
overall_status
fail

Métricas estructuradas

validation
{
  "families_run": [
    "discrimination",
    "calibration",
    "stability"
  ],
  "min_rows_per_group": 30,
  "n_failed": 0,
  "n_tests": 3,
  "not_evaluable_grades": [],
  "not_evaluable_partitions": [],
  "overall_status": "fail",
  "stability_recompute": null,
  "stability_source": "stability_artifact",
  "traffic_light": {
    "amber": 0,
    "green": 0,
    "red": 0
  },
  "traffic_light_cuts": null
}

C.11Escala maestra y puntos de corte

Artefacto de origen: master_scale.card

Parámetros y payload

anchor
0,3317
anchor_source
development_observed
approval_cutoff
—
cutoff_out_of_range
no
cuts
[
  "464,50",
  "486,50",
  "504,50",
  "513,50",
  "529,50",
  "552,50"
]
delta
-0,0013
diagnostics
{
  "desarrollo": {
    "amber_grades": [],
    "hhi": "0,1708",
    "inversions": [],
    "max_share": "0,2202",
    "max_share_grade": 5,
    "monotonic": true,
    "not_evaluable_grades": [],
    "red_grades": []
  },
  "holdout": {
    "amber_grades": [
      2
    ],
    "hhi": "0,1768",
    "inversions": [],
    "max_share": "0,2420",
    "max_share_grade": 3,
    "monotonic": true,
    "not_evaluable_grades": [],
    "red_grades": []
  },
  "oot": {
    "amber_grades": [],
    "hhi": "0,2104",
    "inversions": [],
    "max_share": "0,2823",
    "max_share_grade": 6,
    "monotonic": true,
    "not_evaluable_grades": [
      1
    ],
    "red_grades": []
  }
}
effective_config
{
  "approval_cutoff": null,
  "grade_edges": null
}
equalized_grades
[]
formation_cause
—
integer_card
sí
n_grades
7
neighbours_not_distinct
[]
pd
[
  "0,0513",
  "0,1298",
  "0,2287",
  "0,3368",
  "0,4326",
  "0,57097",
  "0,7778"
]
samples
[
  "desarrollo",
  "holdout",
  "oot"
]
score_direction
higher_is_lower_risk
solver_status
OPTIMAL
source
formed