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=3e2f2965984fe19f97f205ced60c9ea7aac6611884b2a12a49f5bcf07f803d01
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 Hosmer-Lemeshow en Holdout (p-valor 0,028; PD media agregada 32,99 % frente a 31,50 % observada; la mayor diferencia, en el grupo 7 de 10: 25,00 % observado frente a 38,38 % predicho), 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,3197
Caída del AUC Desarrollo → Fuera de tiempo (OOT)-0,026 (-3,5 %)
Peor PSI entre score y PD0,7454 (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
  • ⚠ Estabilidad: Estabilidad Desarrollo vs. OOT: banda «Redesarrollar»
  • ⚠ Validación formal: Estado técnico «Falla»: revisar Hosmer-Lemeshow en Holdout (p-valor 0,028; PD media agregada 32,99 % frente a 31,50 % observada; la mayor diferencia, en el grupo 7 de 10: 25,00 % observado frente a 38,38 % predicho), 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_sin_stepwise/reports\scorecard_report.html
Informe Word
artifacts/consumo_drift_sin_stepwise/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,73797 Sin alertas
Gini Desarrollo 0,4759 Sin alertas
KS Desarrollo 0,3578 Sin alertas
AUC Holdout 0,6864 Sin alertas
Gini Holdout 0,3729 Sin alertas
KS Holdout 0,2758 Sin alertas
AUC Fuera de tiempo (OOT) 0,71203 Sin alertas
Gini Fuera de tiempo (OOT) 0,4241 Sin alertas
KS Fuera de tiempo (OOT) 0,3197 Sin alertas
Peor PSI entre score y PD · score Desarrollo vs. Holdout 0,0129 Estable
Peor PSI entre score y PD · score Desarrollo vs. OOT 0,7454 Redesarrollar
Estado técnico de validación formal consumo_drift_sin_stepwise 1 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 (ascendente o descendente): 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ó sin stepwise: se ajustó con todas las variables seleccionadas.

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 3,3e-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,1198). 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 3 variables con tendencia ascendente y 2 variables con tendencia descendente, y 1 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,11980,01480,19010,1403mediumnonoascending—
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,289004 y el VIF máximo es 1,12.

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

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,1299.

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,8937< 0,001-0,7739-0,6284————
antiguedad_mesesantiguedad_meses__woe-0,89810,1493-6,0148< 0,001-1,1907-0,6054negativesí0,06240,0691
deuda_ingresodeuda_ingreso__woe-0,96130,0617-15,5893< 0,001-1,0822-0,8405negativesí0,37870,4192
ingreso_mensualingreso_mensual__woe-1,03190,0757-13,6291< 0,001-1,1803-0,8835negativesí0,26090,2889
mora_max_12mmora_max_12m__woe-0,37480,1353-2,77050,006-0,63998-0,1097negativesí0,08150,0902
utilizacion_lineautilizacion_linea__woe-0,760970,11196-6,7967< 0,001-0,9804-0,5415negativesí0,11980,1326

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,8981-0,140292,4629792-0,46297binning_table
antiguedad_mesesantiguedad_meses__woe≥ 22,5 y < 39,51-0,1904-0,8981-0,140296,5362970,4638binning_table
antiguedad_mesesantiguedad_meses__woe≥ 39,5 y < 73,520,0649-0,8981-0,1402103,1519103-0,1519binning_table
antiguedad_mesesantiguedad_meses__woe≥ 73,5 y < 91,530,1332-0,8981-0,1402104,92231050,0777binning_table
antiguedad_mesesantiguedad_meses__woe≥ 91,5 y < 100,540,3683-0,8981-0,1402111,0135111-0,0135binning_table
antiguedad_mesesantiguedad_meses__woe≥ 100,550,4923-0,8981-0,1402114,2269114-0,2269binning_table
antiguedad_mesesantiguedad_meses__woeValores especiales60,0000-0,8981-0,1402101,4707101-0,4707binning_table
antiguedad_mesesantiguedad_meses__woeFaltantes70,0000-0,8981-0,1402101,4707101-0,4707binning_table
deuda_ingresodeuda_ingreso__woe< 0,1328499987721443200,9041-0,9613-0,1402126,54751270,4525binning_table
deuda_ingresodeuda_ingreso__woe≥ 0,13284999877214432 y < 0,303700000047683710,5397-0,9613-0,1402116,4402116-0,4402binning_table
deuda_ingresodeuda_ingreso__woe≥ 0,3037000000476837 y < 0,485149994492530820,0709-0,9613-0,1402103,43798103-0,43798binning_table
deuda_ingresodeuda_ingreso__woe≥ 0,4851499944925308 y < 0,71919998526573183-0,1368-0,9613-0,140297,6766980,3234binning_table
deuda_ingresodeuda_ingreso__woe≥ 0,7191999852657318 y < 1,12520003318786624-0,6934-0,9613-0,140282,237582-0,2375binning_table
deuda_ingresodeuda_ingreso__woe≥ 1,12520003318786625-1,6439-0,9613-0,140255,8735560,1265binning_table
deuda_ingresodeuda_ingreso__woeValores especiales60,0000-0,9613-0,1402101,4707101-0,4707binning_table
deuda_ingresodeuda_ingreso__woeFaltantes70,0000-0,9613-0,1402101,4707101-0,4707binning_table
ingreso_mensualingreso_mensual__woe< 278.556,6406250-0,7264-1,0319-0,140279,8417800,1583binning_table
ingreso_mensualingreso_mensual__woe≥ 278.556,640625 y < 421.137,7343751-0,3292-1,0319-0,140291,6683920,3317binning_table
ingreso_mensualingreso_mensual__woe≥ 421.137,734375 y < 582.961,9062520,0109-1,0319-0,1402101,794011020,20599binning_table
ingreso_mensualingreso_mensual__woe≥ 582.961,90625 y < 674.20130,2002-1,0319-0,1402107,4301107-0,4301binning_table
ingreso_mensualingreso_mensual__woe≥ 674.201 y < 1.116.00540,6605-1,0319-0,1402121,1355121-0,1355binning_table
ingreso_mensualingreso_mensual__woe≥ 1.116.00551,39598-1,0319-0,1402143,03501143-0,03501binning_table
ingreso_mensualingreso_mensual__woeValores especiales60,0000-1,0319-0,1402101,4707101-0,4707binning_table
ingreso_mensualingreso_mensual__woeFaltantes70,0000-1,0319-0,1402101,4707101-0,4707binning_table
mora_max_12mmora_max_12m__woe< 4,500,4132-0,3748-0,1402105,93951060,0605binning_table
mora_max_12mmora_max_12m__woe≥ 4,5 y < 5,510,3528-0,3748-0,1402105,2861105-0,2861binning_table
mora_max_12mmora_max_12m__woe≥ 5,5 y < 6,520,2292-0,3748-0,1402103,94921040,0508binning_table
mora_max_12mmora_max_12m__woe≥ 6,5 y < 9,53-0,0298-0,3748-0,1402101,14803101-0,14803binning_table
mora_max_12mmora_max_12m__woe≥ 9,5 y < 14,54-0,2911-0,3748-0,140298,322698-0,3226binning_table
mora_max_12mmora_max_12m__woe≥ 14,55-0,4337-0,3748-0,140296,7799970,2201binning_table
mora_max_12mmora_max_12m__woeValores especiales60,0000-0,3748-0,1402101,4707101-0,4707binning_table
mora_max_12mmora_max_12m__woeFaltantes70,0000-0,3748-0,1402101,4707101-0,4707binning_table
utilizacion_lineautilizacion_linea__woe< 0,272250011563301100,6442-0,76097-0,1402115,61551160,3845binning_table
utilizacion_lineautilizacion_linea__woe≥ 0,2722500115633011 y < 0,3291999995708465610,5371-0,76097-0,1402113,2635113-0,2635binning_table
utilizacion_lineautilizacion_linea__woe≥ 0,32919999957084656 y < 0,4655999988317489620,24305-0,76097-0,1402106,80731070,1927binning_table
utilizacion_lineautilizacion_linea__woe≥ 0,46559999883174896 y < 0,574799984693527230,0312-0,76097-0,1402102,15595102-0,15595binning_table
utilizacion_lineautilizacion_linea__woe≥ 0,5747999846935272 y < 0,77355000376701354-0,2337-0,76097-0,140296,340196-0,3401binning_table
utilizacion_lineautilizacion_linea__woe≥ 0,77355000376701355-0,4317-0,76097-0,140291,9924920,0076binning_table
utilizacion_lineautilizacion_linea__woeValores especiales60,0000-0,76097-0,1402101,4707101-0,4707binning_table
utilizacion_lineautilizacion_linea__woeFaltantes70,0000-0,76097-0,1402101,4707101-0,4707binning_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,1869, ECE=0,01899) holdout (Brier=0,1951, ECE=0,0474) oot (Brier=0,2158, ECE=0,0318)

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,73797, Gini 0,4759 y KS 0,3578.

En Holdout el modelo alcanza AUC 0,6864, Gini 0,3729 y KS 0,2758.

En Fuera de tiempo (OOT) el modelo alcanza AUC 0,71203, Gini 0,4241 y KS 0,3197.

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,737970,47590,35780,3403—0,66690,3091pd_calibratedok
holdout1.0003156850,68640,37290,27580,4122—0,48890,2131pd_calibratedok
oot1.0455075380,712030,42410,31970,4742—0,67650,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
desarrollo13962721240,68690,31310,71060,60260,9081459,7955422,0000475,00003962721240,20730,04692,07060,1604
desarrollo23962171790,547980,452020,54040,49230,6026482,1768474,0000488,00007924893030,37270,11461,65190,2581
desarrollo33961712250,43180,56820,45350,41660,4923492,2096487,0000498,00001.1886605280,503050,19981,30170,3033
desarrollo43961732230,43690,56310,38430,35460,41601500,4293496,0000505,00001.5848337510,63490,28411,31690,3508
desarrollo53961342620,33840,66160,326980,29910,3546507,6035504,0000512,00001.9809671.0130,737040,38331,02010,3538
desarrollo63951012940,25570,74430,27230,24790,2988515,2228511,0000519,00002.3751.0681.3070,814020,49450,77080,3195
desarrollo7395923030,23290,76710,22630,20520,2479522,2785518,0000527,00002.7701.1601.6100,88410,60920,70210,27499
desarrollo8395783170,19750,80250,182960,16160,2052530,0709525,0000536,00003.1651.2381.9270,94360,72910,59530,2145
desarrollo9395433520,10890,89110,13910,11470,1616539,5772534,0000547,00003.5601.2812.2790,97640,86230,32820,1141
desarrollo10395313640,07850,92150,0790030,01630,1145559,24304545,0000606,00003.9551.3122.6431,00001,00000,23660,0000
holdout110067330,67000,33000,69280,59440,9152462,3700418,0000476,000010067330,21270,04822,126980,1645
holdout210046540,46000,54000,52520,47640,5926483,8700476,0000490,0000200113870,35870,127011,46030,2317
holdout310041590,41000,59000,44490,41220,4752493,2300489,0000498,00003001541460,48890,21311,30160,2758
holdout410025750,25000,75000,38380,35240,4121500,5100496,0000505,00004001792210,56830,32260,79370,2456
holdout510028720,28000,72000,32430,29880,3513507,9200504,0000512,00005002072930,65710,42770,88890,2294
holdout610029710,29000,71000,27550,25350,2988514,6500511,0000519,00006002363640,74920,53140,92060,2178
holdout710031690,31000,69000,23420,21510,2535520,9400518,0000526,00007002674330,84760,63210,98410,2155
holdout810020800,20000,80000,19430,17060,2149527,7300523,0000533,00008002875130,91110,74890,63490,1622
holdout910021790,21000,79000,14450,11730,1704538,2800532,0000546,00009003085920,97780,86420,66670,1135
holdout101007930,07000,93000,07970,01860,1173558,9600545,0000602,00001.0003156851,00001,00000,22220,0000
oot110583220,79050,20950,83270,77320,9192439,9714417,0000452,000010583220,16370,04091,62930,1228
oot210574310,70480,29520,71820,66880,7731459,7714452,0000466,0000210157530,30970,09851,45260,2112
oot310559460,56190,43810,63110,59560,6688471,4667466,0000476,0000315216990,426040,184011,15820,24202
oot410565400,619050,380950,56799990,54310,5953479,0381476,0000482,00004202811390,55420,25841,27590,2959
oot510556490,53330,46670,51110,48080,5427485,6095481,0000490,00005253371880,66470,34941,09930,3153
oot610443610,41350,58650,45460,43020,4808492,0865489,0000495,00006293802490,74950,46280,85220,2867
oot710447570,45190,54810,39660,36640,4302498,8558494,0000503,00007334273060,84220,56880,93150,2734
oot810436680,34620,65380,33790,30420,3661506,1923502,0000511,00008374633740,91320,69520,71350,21805
oot910427770,25960,74040,26810,23110,3033515,8558510,0000522,00009414904510,96650,83830,53510,1282
oot1010417870,16350,83650,180020,05440,2311531,3942521,0000569,00001.0455075381,00001,00000,33690,0000

4.7Estabilidad

El peor PSI entre score y PD en Desarrollo vs. Holdout es 0,0129 (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,7454 (banda «Redesarrollar»); corresponde al score. 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 csi·dev_vs_holdout·deuda_ingreso__points pd_psi·dev_vs_holdout·pd_calibrated 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 pd_psi·dev_vs_oot·pd_calibrated temporal_score·cohort·score score_psi·dev_vs_oot·score 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,01290,100,25stable—
score_psidev_vs_ootscore0,74540,100,25redevelopredesarrollar
pd_psidev_vs_holdoutpd_calibrated0,012050,100,25stable—
pd_psidev_vs_ootpd_calibrated0,74110,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,01420,100,25stable—
csidev_vs_ootutilizacion_linea__points0,88580,100,25redevelopredesarrollar
temporal_scorecohortscore0,74540,100,25redevelopredesarrollar
PSI por tramo de score
metriccomparisonfeaturebin_labelexpected_countactual_countexpected_pctactual_pctcomponent_valuetotal_valueband
score_psidev_vs_holdoutscorebin_00387950,09790,09500,0000840,0129stable
score_psidev_vs_holdoutscorebin_01394850,09960,08500,00230,0129stable
score_psidev_vs_holdoutscorebin_023991120,10090,11200,00120,0129stable
score_psidev_vs_holdoutscorebin_033581020,09050,10200,00140,0129stable
score_psidev_vs_holdoutscorebin_04397930,10040,09300,000560,0129stable
score_psidev_vs_holdoutscorebin_054301260,10870,12600,00250,0129stable
score_psidev_vs_holdoutscorebin_063821090,09660,10900,00150,0129stable
score_psidev_vs_holdoutscorebin_07380880,09610,08800,000710,0129stable
score_psidev_vs_holdoutscorebin_08422910,10670,09100,00250,0129stable
score_psidev_vs_holdoutscorebin_09406990,10270,09900,000130,0129stable
score_psidev_vs_ootscorebin_003872920,09790,27940,19050,7454redevelop
score_psidev_vs_ootscorebin_013942130,09960,20380,07460,7454redevelop
score_psidev_vs_ootscorebin_023991430,10090,13680,010960,7454redevelop
score_psidev_vs_ootscorebin_033581000,09050,09570,000290,7454redevelop
score_psidev_vs_ootscorebin_04397850,10040,08130,0040040,7454redevelop
score_psidev_vs_ootscorebin_05430860,10870,08230,00740,7454redevelop
score_psidev_vs_ootscorebin_06382570,09660,05450,024020,7454redevelop
score_psidev_vs_ootscorebin_07380360,09610,03440,06320,7454redevelop
score_psidev_vs_ootscorebin_08422250,10670,02390,12380,7454redevelop
score_psidev_vs_ootscorebin_0940680,10270,00770,24660,7454redevelop
pd_psidev_vs_holdoutpd_calibratedbin_00396970,10010,09700,0000990,01205stable
pd_psidev_vs_holdoutpd_calibratedbin_01395860,09990,08600,00210,01205stable
pd_psidev_vs_holdoutpd_calibratedbin_02393910,09940,09100,000740,01205stable
pd_psidev_vs_holdoutpd_calibratedbin_033981110,10060,11100,001020,01205stable
pd_psidev_vs_holdoutpd_calibratedbin_043931160,09940,11600,00260,01205stable
pd_psidev_vs_holdoutpd_calibratedbin_053981010,10060,10100,00000130,01205stable
pd_psidev_vs_holdoutpd_calibratedbin_063941040,09960,10400,000190,01205stable
pd_psidev_vs_holdoutpd_calibratedbin_073941140,09960,11400,00190,01205stable
pd_psidev_vs_holdoutpd_calibratedbin_08397830,10040,08300,00330,01205stable
pd_psidev_vs_holdoutpd_calibratedbin_09397970,10040,09700,000120,01205stable
pd_psidev_vs_ootpd_calibratedbin_0039680,10010,00770,23770,7411redevelop
pd_psidev_vs_ootpd_calibratedbin_01395230,09990,022010,11780,7411redevelop
pd_psidev_vs_ootpd_calibratedbin_02393350,09940,03350,07160,7411redevelop
pd_psidev_vs_ootpd_calibratedbin_03398570,10060,05450,02820,7411redevelop
pd_psidev_vs_ootpd_calibratedbin_04393730,09940,06990,01040,7411redevelop
pd_psidev_vs_ootpd_calibratedbin_05398890,10060,08520,00260,7411redevelop
pd_psidev_vs_ootpd_calibratedbin_063941120,09960,10720,000550,7411redevelop
pd_psidev_vs_ootpd_calibratedbin_073941420,09960,13590,01130,7411redevelop
pd_psidev_vs_ootpd_calibratedbin_083972070,10040,19810,06640,7411redevelop
pd_psidev_vs_ootpd_calibratedbin_093972990,10040,28610,19460,7411redevelop
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,0142stable
csidev_vs_holdoututilizacion_linea__points96 puntos1.1783480,29790,34800,00780,0142stable
csidev_vs_holdoututilizacion_linea__points102 puntos6681690,16890,16905,9e-080,0142stable
csidev_vs_holdoututilizacion_linea__points107 puntos7531670,19040,16700,00310,0142stable
csidev_vs_holdoututilizacion_linea__points113 puntos209530,05280,05304,6e-070,0142stable
csidev_vs_holdoututilizacion_linea__points116 puntos5031090,12720,10900,00280,0142stable
csidev_vs_ootutilizacion_linea__points92 puntos6444610,16280,44110,27740,8858redevelop
csidev_vs_ootutilizacion_linea__points96 puntos1.1783910,29790,37420,01740,8858redevelop
csidev_vs_ootutilizacion_linea__points102 puntos6681100,16890,10530,03010,8858redevelop
csidev_vs_ootutilizacion_linea__points107 puntos753610,19040,05840,15610,8858redevelop
csidev_vs_ootutilizacion_linea__points113 puntos209150,05280,01440,05020,8858redevelop
csidev_vs_ootutilizacion_linea__points116 puntos50370,12720,00670,35470,8858redevelop
PSI del puntaje por período contra Desarrollo
PeríodoOperacionesPuntaje medioMediana del puntajePD mediaPSIBanda
2023Q1964528,3475527,000022,09 %0,4938Redesarrollar
2023Q2973520,1973520,000026,79 %0,1551Revisar
2023Q31.001509,7403509,000033,54 %0,0186Estable
2023Q4987502,6454503,000038,23 %0,1133Revisar
2024Q11.030494,5126495,000044,21 %0,3835Redesarrollar
2024Q21.045487,9244489,000049,06 %0,7454Redesarrollar

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,11 % a 77,99 %; 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 23,9 % de Desarrollo (tramo 3); í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,11 %6,65 %4,94 %Verde7,00 %7,14 %Verde0,57 %16,67 %Sin contraste
2de 532 a 552 puntos12,37 %16,61 %12,33 %Verde14,00 %17,14 %Ámbar3,54 %8,11 %Verde
3de 514 a 531 puntos22,71 %23,94 %22,70 %Verde25,30 %26,09 %Verde13,40 %22,86 %Verde
4de 505 a 513 puntos33,34 %12,21 %33,33 %Verde13,50 %28,89 %Verde9,47 %36,36 %Verde
5de 488 a 504 puntos43,06 %20,83 %43,08 %Verde22,20 %34,68 %Verde24,69 %43,02 %Verde
6de 465 a 487 puntos56,32 %14,31 %56,36 %Verde13,60 %54,41 %Verde30,14 %57,78 %Verde
7hasta 464 puntos77,99 %5,44 %78,14 %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,65 %4,94 %5,11 %99,01 %90,54 %
DesarrolloTramos 1 a 2desde 532 puntos23,26 %10,22 %10,29 %92,84 %68,75 %
DesarrolloTramos 1 a 3desde 514 puntos47,21 %16,55 %16,59 %76,45 %41,05 %
DesarrolloTramos 1 a 4desde 505 puntos59,42 %20,00 %20,03 %64,18 %28,87 %
DesarrolloTramos 1 a 5desde 488 puntos80,25 %25,99 %26,01 %37,12 %11,12 %
DesarrolloTramos 1 a 6desde 465 puntos94,56 %30,59 %30,60 %12,80 %1,78 %
DesarrolloTodos los tramostodos los puntajes100,00 %33,17 %33,17 %0,00 %0,00 %
HoldoutTramos 1 a 1desde 553 puntos7,00 %7,14 %5,11 %98,41 %90,51 %
HoldoutTramos 1 a 2desde 532 puntos21,00 %13,81 %9,95 %90,79 %73,58 %
HoldoutTramos 1 a 3desde 514 puntos46,30 %20,52 %16,92 %69,84 %46,28 %
HoldoutTramos 1 a 4desde 505 puntos59,80 %22,41 %20,63 %57,46 %32,26 %
HoldoutTramos 1 a 5desde 488 puntos82,00 %25,73 %26,70 %33,02 %11,09 %
HoldoutTramos 1 a 6desde 465 puntos95,60 %29,81 %30,91 %9,52 %2,04 %
HoldoutTodos los tramostodos los puntajes100,00 %31,50 %32,98 %0,00 %0,00 %
Fuera de tiempo (OOT)Tramos 1 a 1desde 553 puntos0,57 %16,67 %5,11 %99,80 %99,07 %
Fuera de tiempo (OOT)Tramos 1 a 2desde 532 puntos4,11 %9,30 %11,36 %99,21 %92,75 %
Fuera de tiempo (OOT)Tramos 1 a 3desde 514 puntos17,51 %19,67 %20,04 %92,90 %72,68 %
Fuera de tiempo (OOT)Tramos 1 a 4desde 505 puntos26,99 %25,53 %24,71 %85,80 %60,97 %
Fuera de tiempo (OOT)Tramos 1 a 5desde 488 puntos51,67 %33,89 %33,48 %63,91 %33,64 %
Fuera de tiempo (OOT)Tramos 1 a 6desde 465 puntos81,82 %42,69 %41,89 %28,01 %8,92 %
Fuera de tiempo (OOT)Todos los tramostodos los puntajes100,00 %48,52 %48,45 %0,00 %0,00 %

5Validación formal

La validación formal del modelo «consumo_drift_sin_stepwise» 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 1 quedó fallida. 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,737970,47590,3578Reusada de la etapa de desempeñoEvaluada
Holdout1.0003150,68640,37290,2758Reusada de la etapa de desempeñoEvaluada
Fuera de tiempo (OOT)1.0455070,712030,42410,3197Reusada 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,116280,1460,05Pasa—
DesarrolloPuntaje de Brier—3.9551.3120,33170,33170,1869———Sin veredicto—
HoldoutHosmer-Lemeshow—1.0003150,32990,315017,231480,0280,05Falla—
HoldoutPuntaje de Brier—1.0003150,32990,31500,1951———Sin veredicto—
Fuera de tiempo (OOT)Hosmer-Lemeshow—1.0455070,49060,48527,293680,5050,05Pasa—
Fuera de tiempo (OOT)Puntaje de Brier—1.0455070,49060,48520,2158———Sin veredicto—
Hosmer-Lemeshow por grupo · Desarrollo
GrupoObservacionesMalos observadosMalos esperadosTasa observada (%)PD media (%)Diferencia (pp)O/EContribución al estadístico
13963131,30007,83007,9100-0,08000,99000,0000
23964355,200010,860013,9300-3,07000,78003,1100
33967872,600019,700018,32001,37001,07500,5000
43969389,800023,480022,67000,82001,03600,1500
5396102108,100025,760027,2900-1,53000,94400,4700
6395133129,400033,670032,76000,91001,02800,1500
7395175152,000044,300038,49005,82001,15105,6400
8395169179,300042,780045,4000-2,61000,94201,0900
9395216213,600054,680054,08000,60001,01100,0600
10395272280,800068,860071,0800-2,22000,96900,9500
Hosmer-Lemeshow por grupo · Holdout
GrupoObservacionesMalos observadosMalos esperadosTasa observada (%)PD media (%)Diferencia (pp)O/EContribución al estadístico
110078,00007,00007,9700-0,97000,87800,1300
21002114,500021,000014,45006,55001,45303,4700
31002019,400020,000019,43000,57001,02900,0200
41003023,400030,000023,42006,58001,28102,4100
51003027,600030,000027,55002,45001,08900,3000
61002832,400028,000032,4300-4,43000,86300,9000
71002538,400025,000038,3800-13,38000,65107,5700
81004144,500041,000044,4900-3,49000,92200,4900
91004652,500046,000052,5200-6,52000,87601,7000
101006769,300067,000069,2800-2,28000,96700,2400
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,0500-1,86000,89700,2500
21052728,300025,710026,9100-1,20000,95500,0800
31053735,600035,240033,93001,30001,03800,0800
41054741,900044,760039,88004,88001,12201,0400
51054648,000043,810045,6800-1,87000,95900,1500
61045553,400052,880051,37001,51001,02900,1000
71046559,300062,500056,97005,53001,09701,3000
81045765,800054,810063,2900-8,48000,86603,2200
91047374,800070,190071,9600-1,77000,97500,1600
101048386,700079,810083,3300-3,52000,95800,9300

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,01290,100,25Estable—Reusado de la etapa de estabilidadEvaluadaPasa
PSI del scoreDesarrollo vs. OOTscore0,74540,100,25RedesarrollarredesarrollarReusado de la etapa de estabilidadEvaluadaFalla
PSI de la PDDesarrollo vs. Holdoutpd_calibrated0,012050,100,25Estable—Reusado de la etapa de estabilidadEvaluadaPasa
PSI de la PDDesarrollo vs. OOTpd_calibrated0,74110,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,01420,100,25Estable—Reusado de la etapa de estabilidadEvaluadaPasa
CSIDesarrollo vs. OOTutilizacion_linea__points0,88580,100,25RedesarrollarredesarrollarReusado de la etapa de estabilidadEvaluadaFalla
PSI temporalCohortescore0,74540,100,25RedesarrollarredesarrollarReusado de la etapa de estabilidadEvaluadaFalla

6Conclusiones y recomendación

Discriminación (AUC): Desarrollo 0,73797, Holdout 0,6864 y Fuera de tiempo (OOT) 0,71203.

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

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
3e2f2965984fe19f97f205ced60c9ea7aac6611884b2a12a49f5bcf07f803d01
created_at
2026-10-19T14:07:02.454612Z
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,27225001156330115030,12723991040,20680,64420,04620,0057
≥ 0,2722500115633011 y < 0,329199999570846562090,0528162470,22490,53710,01370,0017
≥ 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,11980,0148
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.9552632631.3122.6430,06650,04940,05110,99010,9054
desarrollo2531,50no3.9553.9559209201.3122.6430,23260,10220,10290,92840,6875
desarrollo3513,50no3.9553.9551.8671.8671.3122.6430,47210,16550,16590,76450,4105
desarrollo4504,50no3.9553.9552.3502.3501.3122.6430,59420,20000,20030,64180,2887
desarrollo5487,50no3.9553.9553.1743.1741.3122.6430,80250,25990,26010,37120,1112
desarrollo6464,50no3.9553.9553.7403.7401.3122.6430,94560,30590,305970,128050,0178
desarrollo7—no3.9553.9553.9553.9551.3122.6431,00000,33170,33170,00000,0000
holdout1552,50no1.0001.00070703156850,07000,07140,05110,98410,9051
holdout2531,50no1.0001.0002102103156850,21000,13810,09950,90790,7358
holdout3513,50no1.0001.0004634633156850,46300,20520,16920,69840,4628
holdout4504,50no1.0001.0005985983156850,59800,22410,20630,57460,3226
holdout5487,50no1.0001.0008208203156850,82000,25730,2670030,33020,1109
holdout6464,50no1.0001.0009569563156850,95600,29810,30910,09520,0204
holdout7—no1.0001.0001.0001.0003156851,00000,31500,32980,00000,0000
oot1552,50no1.0451.045665075380,00570,16670,05110,998030,9907
oot2531,50no1.0451.04543435075380,04110,093020,11360,99210,9275
oot3513,50no1.0451.0451831835075380,17510,19670,20040,928990,7268
oot4504,50no1.0451.0452822825075380,26990,25530,24710,857990,6097
oot5487,50no1.0451.0455405405075380,51670,33890,33480,63910,3364
oot6464,50no1.0451.0458558555075380,81820,42690,41890,28010,0892
oot7—no1.0451.0451.0451.0455075381,00000,48520,48450,00000,0000
Tramos de la escala por muestra
samplegradensharen_with_outcomen_badbad_ratepdjeffreys_p_valuetraffic_light
desarrollo12630,0665263130,04940,05110,531green
desarrollo26570,1661657810,12330,12370,507green
desarrollo39470,23949472150,227030,22710,499green
desarrollo44830,12214831610,33330,33340,499green
desarrollo58240,20838243550,43080,43060,494green
desarrollo65660,14315663190,56360,56320,492green
desarrollo72150,05442151680,78140,77990,484green
holdout1700,07007050,07140,05110,209green
holdout21400,1400140240,17140,12370,048amber
holdout32530,2530253660,26090,22710,101green
holdout41350,1350135390,28890,33340,864green
holdout52220,2220222770,34680,43060,994green
holdout61360,1360136740,54410,56320,674green
holdout7440,044044300,68180,77990,937green
oot160,0057610,16670,0511—not_evaluable
oot2370,03543730,08110,12370,777green
oot31400,13397140320,22860,22710,476green
oot4990,094799360,36360,33340,259green
oot52580,24692581110,43020,43060,503green
oot63150,30143151820,57780,56320,301green
oot71900,18181901420,74740,77990,8597green
Tramos de la escala maestra
gradescore_minscore_maxlabelpdn_developmentshare_developmentn_bad_developmentbad_rate_developmentsource
1552,50—desde 553 puntos0,05112630,0665130,0494formed
2531,50552,50de 532 a 552 puntos0,12376570,1661810,1233formed
3513,50531,50de 514 a 531 puntos0,22719470,23942150,22703formed
4504,50513,50de 505 a 513 puntos0,33344830,12211610,3333formed
5487,50504,50de 488 a 504 puntos0,43068240,20833550,4308formed
6464,50487,50de 465 a 487 puntos0,56325660,14313190,5636formed
7—464,50hasta 464 puntos0,77992150,05441680,7814formed
Matriz de correlación entre variables
deuda_ingreso__woeingreso_mensual__woeutilizacion_linea__woemora_max_12m__woeantiguedad_meses__woe
1,00000,03940,11920,15340,0517
0,03941,00000,03170,05750,0241
0,11920,03171,00000,2890040,0524
0,15340,05750,2890041,00000,0983
0,05170,02410,05240,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_asc_desc",
  "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,1198"
}
missing_handling
empirical
monotonicity_by_variable
{
  "antiguedad_meses": "descending",
  "deuda_ingreso": "ascending",
  "ingreso_mensual": "descending",
  "mora_max_12m": "ascending",
  "segmento": null,
  "utilizacion_linea": "ascending"
}
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,289004
max_vif_after_selection
1,1183
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": false,
    "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.385,02",
  "bic": "4.422,72",
  "converged": true,
  "llr": "652,9809",
  "llr_p_value": "< 0,001",
  "log_likelihood": "-2.186,51",
  "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,1299"
}
iv_contribution_flags
[]
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": "none",
  "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
3,3e-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,73797",
    "gini": "0,4759",
    "ks": "0,3578"
  },
  "holdout": {
    "auc": "0,6864",
    "gini": "0,3729",
    "ks": "0,2758"
  },
  "oot": {
    "auc": "0,71203",
    "gini": "0,4241",
    "ks": "0,3197"
  }
}
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,0129",
  "dev_vs_oot": "0,7454"
}
psi_bins
10
psi_metric_by_comparison
{
  "dev_vs_holdout": "score_psi",
  "dev_vs_oot": "score_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_sin_stepwise
n_failed
1
n_tests
3
overall_status
fail

Métricas estructuradas

validation
{
  "families_run": [
    "discrimination",
    "calibration",
    "stability"
  ],
  "min_rows_per_group": 30,
  "n_failed": 1,
  "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",
  "487,50",
  "504,50",
  "513,50",
  "531,50",
  "552,50"
]
delta
-0,0013
diagnostics
{
  "desarrollo": {
    "amber_grades": [],
    "hhi": "0,1711",
    "inversions": [],
    "max_share": "0,2394",
    "max_share_grade": 3,
    "monotonic": true,
    "not_evaluable_grades": [],
    "red_grades": []
  },
  "holdout": {
    "amber_grades": [
      2
    ],
    "hhi": "0,1764",
    "inversions": [],
    "max_share": "0,2530",
    "max_share_grade": 3,
    "monotonic": true,
    "not_evaluable_grades": [],
    "red_grades": []
  },
  "oot": {
    "amber_grades": [],
    "hhi": "0,2131",
    "inversions": [],
    "max_share": "0,3014",
    "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,0511",
  "0,1237",
  "0,2271",
  "0,3334",
  "0,4306",
  "0,5632",
  "0,7799"
]
samples
[
  "desarrollo",
  "holdout",
  "oot"
]
score_direction
higher_is_lower_risk
solver_status
OPTIMAL
source
formed