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=f3e87cfdef6ba84fac670e41e1433ce311fc36b9818d7b17281bffdd4e6055b0
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,012; PD media agregada 33,00 % frente a 31,50 % observada; la mayor diferencia, en el grupo 9 de 10: 40,00 % observado frente a 52,25 % 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,7097
Gini en Fuera de tiempo (OOT)0,419
KS en Fuera de tiempo (OOT)0,312
Caída del AUC Desarrollo → Fuera de tiempo (OOT)-0,027 (-3,7 %)
Peor PSI entre score y PD0,7487 (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: 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 Hosmer-Lemeshow en Holdout (p-valor 0,012; PD media agregada 33,00 % frente a 31,50 % observada; la mayor diferencia, en el grupo 9 de 10: 40,00 % observado frente a 52,25 % 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 Holdout, la tasa de malos del tramo 4 es menor que la del tramo 3: el orden de los tramos se invierte.
  • ⚠ 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_cinco_bins/reports\scorecard_report.html
Informe Word
artifacts/consumo_drift_cinco_bins/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,7368 Sin alertas
Gini Desarrollo 0,4736 Sin alertas
KS Desarrollo 0,35198 Sin alertas
AUC Holdout 0,6849 Sin alertas
Gini Holdout 0,3698 Sin alertas
KS Holdout 0,2755 Sin alertas
AUC Fuera de tiempo (OOT) 0,7097 Sin alertas
Gini Fuera de tiempo (OOT) 0,4195 Sin alertas
KS Fuera de tiempo (OOT) 0,3122 Sin alertas
Peor PSI entre score y PD · score Desarrollo vs. Holdout 0,0162 Estable
Peor PSI entre score y PD · score Desarrollo vs. OOT 0,7487 Redesarrollar
Estado técnico de validación formal consumo_drift_cinco_bins 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 5 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ó 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 4,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,374), «ingreso_mensual» (0,258) y «utilizacion_linea» (0,119). 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í50,25840,03120,26810,7569mediumnonodescending—
deuda_ingresonumericalOPTIMALsí50,37410,04430,31160,8217strongnonoascending—
utilizacion_lineanumericalOPTIMALsí50,11940,01480,18960,3839mediumnonoascending—
mora_max_12mnumericalOPTIMALsí50,08130,01010,15770,1529weaknonoascending—
antiguedad_mesesnumericalOPTIMALsí50,06190,00770,132960,0801weaknonodescending—
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,2845 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,0619weak0,56650,132960,1037——1,0122———
deuda_ingresodeuda_ingreso__woesíincluded0,3741strong0,65580,31160,2129——1,0317———
ingreso_mensualingreso_mensual__woesíincluded0,2584medium0,634040,26810,1936——1,0049———
mora_max_12mmora_max_12m__woesíincluded0,0813weak0,57890,15770,1216——1,1148———
segmentosegmento__woenolow_iv0,0025—0,51320,02640,0222—————IV 0,0025 < mínimo 0,02
utilizacion_lineautilizacion_linea__woesíincluded0,1194medium0,59480,18960,1467——1,0958———
Factor de inflación de varianza (VIF)
iterationfeaturewoe_columnvifremovedreason
0deuda_ingresodeuda_ingreso__woe1,0317no—
0ingreso_mensualingreso_mensual__woe1,0049no—
0utilizacion_lineautilizacion_linea__woe1,0958no—
0mora_max_12mmora_max_12m__woe1,1148no—
0antiguedad_mesesantiguedad_meses__woe1,0122no—

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

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,70120,0371-18,9121< 0,001-0,7739-0,6286————
antiguedad_mesesantiguedad_meses__woe-0,88840,1498-5,9306< 0,001-1,18204-0,5948negativesí0,06190,0692
deuda_ingresodeuda_ingreso__woe-0,963970,0621-15,5248< 0,001-1,0857-0,8423negativesí0,37410,4179
ingreso_mensualingreso_mensual__woe-1,03160,0761-13,5554< 0,001-1,1807-0,8824negativesí0,25840,2887
mora_max_12mmora_max_12m__woe-0,387970,1351-2,87180,004-0,6528-0,1232negativesí0,08130,0908
utilizacion_lineautilizacion_linea__woe-0,75870,1118-6,7852< 0,001-0,9779-0,5396negativesí0,11940,1334

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,8884-0,140292,56001930,43999binning_table
antiguedad_mesesantiguedad_meses__woe≥ 22,5 y < 39,51-0,1904-0,8884-0,140296,5896970,4104binning_table
antiguedad_mesesantiguedad_meses__woe≥ 39,5 y < 91,520,0878-0,8884-0,1402103,72181040,2782binning_table
antiguedad_mesesantiguedad_meses__woe≥ 91,5 y < 100,530,3683-0,8884-0,1402110,91161110,0884binning_table
antiguedad_mesesantiguedad_meses__woe≥ 100,540,4923-0,8884-0,1402114,0906114-0,0906binning_table
antiguedad_mesesantiguedad_meses__woeValores especiales50,0000-0,8884-0,1402101,4712101-0,4712binning_table
antiguedad_mesesantiguedad_meses__woeFaltantes60,0000-0,8884-0,1402101,4712101-0,4712binning_table
deuda_ingresodeuda_ingreso__woe< 0,1328499987721443200,9041-0,96397-0,1402126,616961270,38304binning_table
deuda_ingresodeuda_ingreso__woe≥ 0,13284999877214432 y < 0,303700000047683710,5397-0,96397-0,1402116,4819116-0,4819binning_table
deuda_ingresodeuda_ingreso__woe≥ 0,3037000000476837 y < 0,71919998526573182-0,0285-0,96397-0,1402100,67971010,3203binning_table
deuda_ingresodeuda_ingreso__woe≥ 0,7191999852657318 y < 1,12520003318786623-0,6934-0,96397-0,140282,1850182-0,18501binning_table
deuda_ingresodeuda_ingreso__woe≥ 1,12520003318786624-1,6439-0,96397-0,140255,7484560,2516binning_table
deuda_ingresodeuda_ingreso__woeValores especiales50,0000-0,96397-0,1402101,4712101-0,4712binning_table
deuda_ingresodeuda_ingreso__woeFaltantes60,0000-0,96397-0,1402101,4712101-0,4712binning_table
ingreso_mensualingreso_mensual__woe< 278.556,6406250-0,7264-1,0316-0,140279,8494800,1506binning_table
ingreso_mensualingreso_mensual__woe≥ 278.556,640625 y < 421.137,7343751-0,3292-1,0316-0,140291,6721920,3279binning_table
ingreso_mensualingreso_mensual__woe≥ 421.137,734375 y < 674.20120,0634-1,0316-0,1402103,3591103-0,3591binning_table
ingreso_mensualingreso_mensual__woe≥ 674.201 y < 1.116.00530,6605-1,0316-0,1402121,1294121-0,1294binning_table
ingreso_mensualingreso_mensual__woe≥ 1.116.00541,39598-1,0316-0,1402143,0215143-0,0215binning_table
ingreso_mensualingreso_mensual__woeValores especiales50,0000-1,0316-0,1402101,4712101-0,4712binning_table
ingreso_mensualingreso_mensual__woeFaltantes60,0000-1,0316-0,1402101,4712101-0,4712binning_table
mora_max_12mmora_max_12m__woe< 5,500,3932-0,38797-0,1402105,87331060,1267binning_table
mora_max_12mmora_max_12m__woe≥ 5,5 y < 6,510,2292-0,38797-0,1402104,0366104-0,0366binning_table
mora_max_12mmora_max_12m__woe≥ 6,5 y < 9,52-0,0298-0,38797-0,1402101,1372101-0,1372binning_table
mora_max_12mmora_max_12m__woe≥ 9,5 y < 14,53-0,2911-0,38797-0,140298,212698-0,2126binning_table
mora_max_12mmora_max_12m__woe≥ 14,54-0,4337-0,38797-0,140296,6158970,3842binning_table
mora_max_12mmora_max_12m__woeValores especiales50,0000-0,38797-0,1402101,4712101-0,4712binning_table
mora_max_12mmora_max_12m__woeFaltantes60,0000-0,38797-0,1402101,4712101-0,4712binning_table
utilizacion_lineautilizacion_linea__woe< 0,3291999995708465600,6121-0,7587-0,1402114,87081150,1292binning_table
utilizacion_lineautilizacion_linea__woe≥ 0,32919999957084656 y < 0,4655999988317489610,24305-0,7587-0,1402106,79191070,2081binning_table
utilizacion_lineautilizacion_linea__woe≥ 0,46559999883174896 y < 0,574799984693527220,0312-0,7587-0,1402102,1544102-0,1544binning_table
utilizacion_lineautilizacion_linea__woe≥ 0,5747999846935272 y < 0,77355000376701353-0,2337-0,7587-0,140296,355796-0,3557binning_table
utilizacion_lineautilizacion_linea__woe≥ 0,77355000376701354-0,4317-0,7587-0,140292,020992-0,0209binning_table
utilizacion_lineautilizacion_linea__woeValores especiales50,0000-0,7587-0,1402101,4712101-0,4712binning_table
utilizacion_lineautilizacion_linea__woeFaltantes60,0000-0,7587-0,1402101,4712101-0,4712binning_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,1872, ECE=0,01604) holdout (Brier=0,1955, ECE=0,0531) oot (Brier=0,2164, ECE=0,0214)

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,7368, Gini 0,4736 y KS 0,35198.

En Holdout el modelo alcanza AUC 0,6849, Gini 0,3698 y KS 0,2755.

En Fuera de tiempo (OOT) el modelo alcanza AUC 0,7097, Gini 0,4195 y KS 0,3122.

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,73680,47360,351980,3195—0,69970,3477pd_calibratedok
holdout1.0003156850,68490,36980,27550,4073—0,48570,2102pd_calibratedok
oot1.0455075380,70970,41950,31220,5285—0,57990,2677pd_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
desarrollo13962701260,68180,31820,70960,60210,9087460,4495422,0000476,00003962701260,20580,04772,05530,1581
desarrollo23962231730,56310,43690,53920,48430,6011482,8131475,0000489,00007924932990,37580,11311,69750,2626
desarrollo33961692270,42680,57320,45120,412980,4843493,0833489,0000498,00001.1886625260,50460,199021,28650,3056
desarrollo43961652310,41670,58330,38350,353960,4128501,0455497,0000505,00001.5848277570,63030,28641,256030,3439
desarrollo53961342620,33840,66160,32720,30010,3536508,0732504,0000512,00001.9809611.0190,73250,38551,02010,3469
desarrollo63951072880,27090,72910,27330,24810,3001515,5165511,0000520,00002.3751.0681.3070,814020,49450,81660,3195
desarrollo7395953000,24050,75950,22750,20670,2481522,4835519,0000526,00002.7701.1631.6070,88640,608020,7250020,2784
desarrollo8395683270,17220,82780,18530,16310,2067530,0304526,0000535,00003.1651.2311.9340,93830,73170,51890,2065
desarrollo9395493460,12410,87590,13910,114050,1631539,9063534,0000547,00003.5601.2802.2800,97560,86270,37390,11295
desarrollo10395323630,081010,918990,07940,01680,11405559,48101546,0000605,00003.9551.3122.6431,00001,00000,24420,0000
holdout110067330,67000,33000,69060,59860,9154463,1600419,0000476,000010067330,21270,04822,126980,1645
holdout210040600,40000,60000,52250,47390,5893484,8400476,0000491,0000200107930,33970,13581,26980,2039
holdout310046540,46000,54000,440950,40690,4737494,1600490,0000498,00003001531470,48570,21461,46030,2711
holdout410031690,31000,69000,38020,35360,4069501,4500498,0000505,00004001842160,58410,31530,98410,2688
holdout510022780,22000,78000,32760,30240,3536507,9700504,0000512,00005002062940,653970,42920,69840,2248
holdout610032680,32000,68000,27680,25450,3021514,8700511,0000518,00006002383620,75560,52851,01590,2271
holdout710031690,31000,69000,23730,21910,25396521,0300519,0000525,00007002694310,853970,62920,98410,2248
holdout810019810,19000,81000,19710,17210,2183527,6000523,0000532,00008002885120,91430,74740,60320,1668
holdout910019810,19000,81000,14640,12060,1712538,2400533,0000545,00009003075930,97460,86570,60320,1089
holdout101008920,08000,92000,08030,01880,1199559,2800545,0000602,00001.0003156851,00001,00000,253970,0000
oot110583220,79050,20950,83270,765030,9196440,4381418,0000453,000010583220,16370,04091,62930,1228
oot210575300,71430,28570,71870,67360,76503460,2667453,0000467,0000210158520,31160,09671,47220,21498
oot310560450,57140,42860,63150,59590,6734472,0286467,0000477,0000315218970,429980,18031,17780,2497
oot410563420,60000,40000,56760,54080,5923479,7143476,0000483,00004202811390,55420,25841,23670,2959
oot510551540,48570,51430,50890,48170,5406486,6476482,0000490,00005253321930,65480,35871,00110,2961
oot610447570,45190,54810,45510,42980,4817492,5192489,0000496,00006293792500,74750,46470,93150,2829
oot710448560,46150,53850,39530,37120,42904499,5769496,0000503,00007334273060,84220,56880,95130,2734
oot810433710,31730,68270,33780,29540,3712506,7885502,0000512,00008374603770,90730,70070,654020,2066
oot910428760,26920,73080,26930,23580,2954515,9808512,0000521,00009414884530,96250,842010,55490,1205
oot1010419850,18270,81730,1819960,05670,2353531,5096521,0000568,00001.0455075381,00001,00000,37660,0000

4.7Estabilidad

El peor PSI entre score y PD en Desarrollo vs. Holdout es 0,0162 (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,7487 (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,1225.

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 csi·dev_vs_holdout·utilizacion_linea__points pd_psi·dev_vs_holdout·pd_calibrated score_psi·dev_vs_holdout·score 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,01620,100,25stable—
score_psidev_vs_ootscore0,74870,100,25redevelopredesarrollar
pd_psidev_vs_holdoutpd_calibrated0,01510,100,25stable—
pd_psidev_vs_ootpd_calibrated0,74560,100,25redevelopredesarrollar
csidev_vs_holdoutantiguedad_meses__points0,00780,100,25stable—
csidev_vs_ootantiguedad_meses__points1,77480,100,25redevelopredesarrollar
csidev_vs_holdoutdeuda_ingreso__points0,00850,100,25stable—
csidev_vs_ootdeuda_ingreso__points0,148010,100,25reviewvigilar
csidev_vs_holdoutingreso_mensual__points0,00290,100,25stable—
csidev_vs_ootingreso_mensual__points0,08320,100,25stable—
csidev_vs_holdoutmora_max_12m__points0,00590,100,25stable—
csidev_vs_ootmora_max_12m__points2,12250,100,25redevelopredesarrollar
csidev_vs_holdoututilizacion_linea__points0,01330,100,25stable—
csidev_vs_ootutilizacion_linea__points0,82210,100,25redevelopredesarrollar
temporal_scorecohortscore0,74870,100,25redevelopredesarrollar
PSI por tramo de score
metriccomparisonfeaturebin_labelexpected_countactual_countexpected_pctactual_pctcomponent_valuetotal_valueband
score_psidev_vs_holdoutscorebin_00366900,09250,09000,0000710,0162stable
score_psidev_vs_holdoutscorebin_01411850,10390,08500,00380,0162stable
score_psidev_vs_holdoutscorebin_02338990,08550,09900,001990,0162stable
score_psidev_vs_holdoutscorebin_034491200,11350,12000,000360,0162stable
score_psidev_vs_holdoutscorebin_044071030,10290,10308,3e-080,0162stable
score_psidev_vs_holdoutscorebin_053631030,09180,10300,00130,0162stable
score_psidev_vs_holdoutscorebin_064071260,10290,12600,00470,0162stable
score_psidev_vs_holdoutscorebin_07372800,09410,08000,00230,0162stable
score_psidev_vs_holdoutscorebin_08418970,10570,09700,000750,0162stable
score_psidev_vs_holdoutscorebin_09424970,10720,09700,001020,0162stable
score_psidev_vs_ootscorebin_003662820,09250,26990,18980,7487redevelop
score_psidev_vs_ootscorebin_014112150,10390,20570,06950,7487redevelop
score_psidev_vs_ootscorebin_023381370,08550,13110,01950,7487redevelop
score_psidev_vs_ootscorebin_034491170,11350,111960,0000220,7487redevelop
score_psidev_vs_ootscorebin_04407760,10290,07270,01050,7487redevelop
score_psidev_vs_ootscorebin_05363840,09180,08040,00150,7487redevelop
score_psidev_vs_ootscorebin_06407630,10290,06030,02280,7487redevelop
score_psidev_vs_ootscorebin_07372360,09410,03440,05990,7487redevelop
score_psidev_vs_ootscorebin_08418270,10570,02580,11250,7487redevelop
score_psidev_vs_ootscorebin_0942480,10720,00770,26270,7487redevelop
pd_psidev_vs_holdoutpd_calibratedbin_00392890,09910,08900,00110,0151stable
pd_psidev_vs_holdoutpd_calibratedbin_01399940,10090,09400,000490,0151stable
pd_psidev_vs_holdoutpd_calibratedbin_02391820,09890,08200,00320,0151stable
pd_psidev_vs_holdoutpd_calibratedbin_033941230,09960,12300,00490,0151stable
pd_psidev_vs_holdoutpd_calibratedbin_044011110,10140,11100,000870,0151stable
pd_psidev_vs_holdoutpd_calibratedbin_053951040,09990,10400,000170,0151stable
pd_psidev_vs_holdoutpd_calibratedbin_063951080,09990,10800,000640,0151stable
pd_psidev_vs_holdoutpd_calibratedbin_073951100,09990,11000,000980,0151stable
pd_psidev_vs_holdoutpd_calibratedbin_08397860,10040,08600,00220,0151stable
pd_psidev_vs_holdoutpd_calibratedbin_09396930,10010,09300,000530,0151stable
pd_psidev_vs_ootpd_calibratedbin_0039270,09910,00670,249010,7456redevelop
pd_psidev_vs_ootpd_calibratedbin_01399260,10090,02490,10640,7456redevelop
pd_psidev_vs_ootpd_calibratedbin_02391340,09890,03250,07370,7456redevelop
pd_psidev_vs_ootpd_calibratedbin_03394590,09960,05650,02450,7456redevelop
pd_psidev_vs_ootpd_calibratedbin_04401840,10140,08040,00490,7456redevelop
pd_psidev_vs_ootpd_calibratedbin_05395810,09990,07750,00570,7456redevelop
pd_psidev_vs_ootpd_calibratedbin_063951040,09990,09950,00000120,7456redevelop
pd_psidev_vs_ootpd_calibratedbin_073951440,09990,13780,01220,7456redevelop
pd_psidev_vs_ootpd_calibratedbin_083971940,10040,18560,05240,7456redevelop
pd_psidev_vs_ootpd_calibratedbin_093963120,10010,29860,21680,7456redevelop
csidev_vs_holdoutantiguedad_meses__points93 puntos8022340,20280,23400,00450,0078stable
csidev_vs_holdoutantiguedad_meses__points97 puntos5971560,15090,15600,000170,0078stable
csidev_vs_holdoutantiguedad_meses__points104 puntos1.9424580,491020,45800,00230,0078stable
csidev_vs_holdoutantiguedad_meses__points111 puntos309820,07810,08200,000190,0078stable
csidev_vs_holdoutantiguedad_meses__points114 puntos305700,07710,07000,000690,0078stable
csidev_vs_ootantiguedad_meses__points93 puntos8022500,20280,23920,006031,7748redevelop
csidev_vs_ootantiguedad_meses__points97 puntos5971970,15090,18850,00831,7748redevelop
csidev_vs_ootantiguedad_meses__points104 puntos1.9425980,491020,57220,01241,7748redevelop
csidev_vs_ootantiguedad_meses__points111 puntos30900,07810,00000100,88021,7748redevelop
csidev_vs_ootantiguedad_meses__points114 puntos30500,07710,00000100,86781,7748redevelop
csidev_vs_holdoutdeuda_ingreso__points56 puntos207510,05230,05100,0000350,0085stable
csidev_vs_holdoutdeuda_ingreso__points82 puntos5741150,14510,11500,007010,0085stable
csidev_vs_holdoutdeuda_ingreso__points101 puntos1.6894470,42710,44700,000910,0085stable
csidev_vs_holdoutdeuda_ingreso__points116 puntos1.0072660,25460,26600,0004980,0085stable
csidev_vs_holdoutdeuda_ingreso__points127 puntos4781210,12090,12101,6e-070,0085stable
csidev_vs_ootdeuda_ingreso__points56 puntos2071440,05230,13780,08270,14801review
csidev_vs_ootdeuda_ingreso__points82 puntos5742000,14510,19140,01280,14801review
csidev_vs_ootdeuda_ingreso__points101 puntos1.6894410,42710,422010,00005990,14801review
csidev_vs_ootdeuda_ingreso__points116 puntos1.0071800,25460,17220,03220,14801review
csidev_vs_ootdeuda_ingreso__points127 puntos478800,12090,07660,02020,14801review
csidev_vs_holdoutingreso_mensual__points80 puntos5371320,13580,13200,000110,0029stable
csidev_vs_holdoutingreso_mensual__points92 puntos9922490,25080,24900,0000130,0029stable
csidev_vs_holdoutingreso_mensual__points103 puntos1.3973520,35320,35200,00000420,0029stable
csidev_vs_holdoutingreso_mensual__points121 puntos8282250,20940,22500,00110,0029stable
csidev_vs_holdoutingreso_mensual__points143 puntos201420,05080,04200,00170,0029stable
csidev_vs_ootingreso_mensual__points80 puntos5372090,13580,20000,02490,0832stable
csidev_vs_ootingreso_mensual__points92 puntos9923250,25080,3110050,01290,0832stable
csidev_vs_ootingreso_mensual__points103 puntos1.3973380,35320,32340,00260,0832stable
csidev_vs_ootingreso_mensual__points121 puntos8281390,20940,133010,03460,0832stable
csidev_vs_ootingreso_mensual__points143 puntos201340,05080,03250,00820,0832stable
csidev_vs_holdoutmora_max_12m__points97 puntos249470,062960,04700,00470,0059stable
csidev_vs_holdoutmora_max_12m__points98 puntos1.0952790,27690,27900,0000160,0059stable
csidev_vs_holdoutmora_max_12m__points101 puntos1.1232810,28390,28100,0000310,0059stable
csidev_vs_holdoutmora_max_12m__points104 puntos4241060,10720,10600,0000140,0059stable
csidev_vs_holdoutmora_max_12m__points106 puntos1.0642870,269030,28700,00120,0059stable
csidev_vs_ootmora_max_12m__points97 puntos2493900,062960,37320,55212,1225redevelop
csidev_vs_ootmora_max_12m__points98 puntos1.0955160,27690,49380,12552,1225redevelop
csidev_vs_ootmora_max_12m__points101 puntos1.1231240,28390,11870,14422,1225redevelop
csidev_vs_ootmora_max_12m__points104 puntos424100,10720,00960,23592,1225redevelop
csidev_vs_ootmora_max_12m__points106 puntos1.06450,269030,00481,06472,1225redevelop
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__points115 puntos7121620,180030,16200,00190,0133stable
csidev_vs_ootutilizacion_linea__points92 puntos6444610,16280,44110,27740,8221redevelop
csidev_vs_ootutilizacion_linea__points96 puntos1.1783910,29790,37420,01740,8221redevelop
csidev_vs_ootutilizacion_linea__points102 puntos6681100,16890,10530,03010,8221redevelop
csidev_vs_ootutilizacion_linea__points107 puntos753610,19040,05840,15610,8221redevelop
csidev_vs_ootutilizacion_linea__points115 puntos712220,180030,02110,34120,8221redevelop
PSI del puntaje por período contra Desarrollo
PeríodoOperacionesPuntaje medioMediana del puntajePD mediaPSIBanda
2023Q1964528,4699527,000022,23 %0,4782Redesarrollar
2023Q2973520,5766521,000026,80 %0,15003Revisar
2023Q31.001510,2398510,000033,49 %0,0156Estable
2023Q4987503,0983502,000038,24 %0,1131Revisar
2024Q11.030495,16505497,000044,10 %0,3701Redesarrollar
2024Q21.045488,4478490,000049,07 %0,7487Redesarrollar

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,05 % a 76,46 %; su promedio en Desarrollo es el ancla de la calibración, 33,17 %.

En Holdout y Fuera de tiempo (OOT) hay tramos que revisar (ver «Qué revisar»).

El tramo mayor tiene el 26,4 % de Desarrollo (tramo 3); índice de concentración 0,189.

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 Holdout, la tasa de malos del tramo 4 es menor que la del tramo 3: el orden de los tramos se invierte.

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 554 puntos5,05 %6,73 %4,89 %Verde6,90 %7,25 %Verde0,57 %16,67 %Sin contraste
2de 529 a 553 puntos13,43 %19,82 %13,39 %Verde16,90 %18,34 %Ámbar4,40 %10,87 %Verde
3de 510 a 528 puntos25,67 %26,40 %25,67 %Verde29,10 %27,15 %Verde16,56 %24,86 %Verde
4de 505 a 509 puntos35,37 %7,51 %35,35 %Verde7,70 %23,38 %Verde6,60 %39,13 %Verde
5de 485 a 504 puntos43,64 %23,34 %43,66 %Verde25,40 %38,58 %Verde29,95 %43,77 %Verde
6de 465 a 484 puntos59,95 %11,13 %60,00 %Verde9,80 %55,10 %Verde23,64 %61,13 %Verde
7hasta 464 puntos76,46 %5,08 %76,62 %Verde4,20 %71,43 %Verde18,28 %74,87 %Verde
Tabla de puntos de corte
MuestraAprobarPuntajeAprobadosTasa de malos de los aprobadosPD esperada de los aprobadosMalos evitadosBuenos rechazados
DesarrolloTramos 1 a 1desde 554 puntos6,73 %4,89 %5,05 %99,01 %90,43 %
DesarrolloTramos 1 a 2desde 529 puntos26,55 %11,24 %11,30 %91,01 %64,74 %
DesarrolloTramos 1 a 3desde 510 puntos52,95 %18,43 %18,47 %70,58 %35,38 %
DesarrolloTramos 1 a 4desde 505 puntos60,46 %20,54 %20,57 %62,58 %28,11 %
DesarrolloTramos 1 a 5desde 485 puntos83,79 %26,98 %26,99 %31,86 %8,44 %
DesarrolloTramos 1 a 6desde 465 puntos94,92 %30,85 %30,86 %11,74 %1,78 %
DesarrolloTodos los tramostodos los puntajes100,00 %33,17 %33,17 %0,00 %0,00 %
HoldoutTramos 1 a 1desde 554 puntos6,90 %7,25 %5,05 %98,41 %90,66 %
HoldoutTramos 1 a 2desde 529 puntos23,80 %15,13 %11,00 %88,57 %70,51 %
HoldoutTramos 1 a 3desde 510 puntos52,90 %21,74 %19,07 %63,49 %39,56 %
HoldoutTramos 1 a 4desde 505 puntos60,60 %21,95 %21,14 %57,78 %30,95 %
HoldoutTramos 1 a 5desde 485 puntos86,00 %26,86 %27,79 %26,67 %8,18 %
HoldoutTramos 1 a 6desde 465 puntos95,80 %29,75 %31,08 %9,52 %1,75 %
HoldoutTodos los tramostodos los puntajes100,00 %31,50 %32,98 %0,00 %0,00 %
Fuera de tiempo (OOT)Tramos 1 a 1desde 554 puntos0,57 %16,67 %5,05 %99,80 %99,07 %
Fuera de tiempo (OOT)Tramos 1 a 2desde 529 puntos4,98 %11,54 %12,46 %98,82 %91,45 %
Fuera de tiempo (OOT)Tramos 1 a 3desde 510 puntos21,53 %21,78 %22,62 %90,34 %67,29 %
Fuera de tiempo (OOT)Tramos 1 a 4desde 505 puntos28,13 %25,85 %25,61 %85,01 %59,48 %
Fuera de tiempo (OOT)Tramos 1 a 5desde 485 puntos58,09 %35,09 %34,91 %57,99 %26,77 %
Fuera de tiempo (OOT)Tramos 1 a 6desde 465 puntos81,72 %42,62 %42,15 %28,21 %8,92 %
Fuera de tiempo (OOT)Todos los tramostodos los puntajes100,00 %48,52 %48,42 %0,00 %0,00 %

5Validación formal

La validación formal del modelo «consumo_drift_cinco_bins» 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,73680,47360,35198Reusada de la etapa de desempeñoEvaluada
Holdout1.0003150,68490,36980,2755Reusada de la etapa de desempeñoEvaluada
Fuera de tiempo (OOT)1.0455070,70970,41950,3122Reusada 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,33177,3809980,4960,05Pasa—
DesarrolloPuntaje de Brier—3.9551.3120,33170,33170,1872———Sin veredicto—
HoldoutHosmer-Lemeshow—1.0003150,329970,315019,585580,0120,05Falla—
HoldoutPuntaje de Brier—1.0003150,329970,31500,1955———Sin veredicto—
Fuera de tiempo (OOT)Hosmer-Lemeshow—1.0455070,49070,48524,554580,8040,05Pasa—
Fuera de tiempo (OOT)Puntaje de Brier—1.0455070,49070,48520,2164———Sin veredicto—
Hosmer-Lemeshow por grupo · Desarrollo
GrupoObservacionesMalos observadosMalos esperadosTasa observada (%)PD media (%)Diferencia (pp)O/EContribución al estadístico
13963131,50007,83007,9500-0,12000,98400,0100
23965155,200012,880013,9300-1,05000,92400,3700
33966973,500017,420018,5600-1,13000,93900,3400
43969390,200023,480022,78000,70001,03100,1100
5396109108,500027,530027,39000,13001,00500,0000
6395133129,500033,670032,79000,89001,02700,1400
7395167151,700042,280038,40003,87001,10102,5100
8395167178,400042,280045,1600-2,89000,93601,3300
9395223213,200056,460053,97002,49001,04600,9800
10395269280,400068,100070,9900-2,88000,95901,6000
Hosmer-Lemeshow por grupo · Holdout
GrupoObservacionesMalos observadosMalos esperadosTasa observada (%)PD media (%)Diferencia (pp)O/EContribución al estadístico
110088,00008,00008,0300-0,03000,99600,0000
21001914,600019,000014,64004,36001,29801,5200
31001919,700019,000019,7100-0,71000,96400,0300
41003123,700031,000023,73007,27001,30702,9200
51003227,700032,000027,68004,32001,15600,9300
61002132,800021,000032,7600-11,76000,64106,2800
71003238,000032,000038,0200-6,02000,84201,5400
81004644,100046,000044,10001,90001,04300,1500
91004052,200040,000052,2500-12,25000,76606,0100
101006769,100067,000069,0600-2,06000,97000,2000
Hosmer-Lemeshow por grupo · Fuera de tiempo (OOT)
GrupoObservacionesMalos observadosMalos esperadosTasa observada (%)PD media (%)Diferencia (pp)O/EContribución al estadístico
11051919,200018,100018,2500-0,16000,99100,0000
21052828,400026,670027,0100-0,34000,98700,0100
31053635,700034,290033,96000,33001,01000,0000
41054741,700044,760039,73005,03001,12701,1100
51054548,000042,860045,7300-2,87000,93700,3500
61045453,200051,920051,14000,79001,01500,0300
71046159,200058,650056,94001,71001,03000,1200
81046065,900057,690063,3300-5,64000,91101,4200
91047574,900072,120072,00000,12001,00200,0000
101048286,700078,850083,3300-4,49000,94601,5100

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,01620,100,25Estable—Reusado de la etapa de estabilidadEvaluadaPasa
PSI del scoreDesarrollo vs. OOTscore0,74870,100,25RedesarrollarredesarrollarReusado de la etapa de estabilidadEvaluadaFalla
PSI de la PDDesarrollo vs. Holdoutpd_calibrated0,01510,100,25Estable—Reusado de la etapa de estabilidadEvaluadaPasa
PSI de la PDDesarrollo vs. OOTpd_calibrated0,74560,100,25RedesarrollarredesarrollarReusado de la etapa de estabilidadEvaluadaFalla
CSIDesarrollo vs. Holdoutantiguedad_meses__points0,00780,100,25Estable—Reusado de la etapa de estabilidadEvaluadaPasa
CSIDesarrollo vs. OOTantiguedad_meses__points1,77480,100,25RedesarrollarredesarrollarReusado de la etapa de estabilidadEvaluadaFalla
CSIDesarrollo vs. Holdoutdeuda_ingreso__points0,00850,100,25Estable—Reusado de la etapa de estabilidadEvaluadaPasa
CSIDesarrollo vs. OOTdeuda_ingreso__points0,148010,100,25RevisarvigilarReusado de la etapa de estabilidadEvaluadaRevisar
CSIDesarrollo vs. Holdoutingreso_mensual__points0,00290,100,25Estable—Reusado de la etapa de estabilidadEvaluadaPasa
CSIDesarrollo vs. OOTingreso_mensual__points0,08320,100,25Estable—Reusado de la etapa de estabilidadEvaluadaPasa
CSIDesarrollo vs. Holdoutmora_max_12m__points0,00590,100,25Estable—Reusado de la etapa de estabilidadEvaluadaPasa
CSIDesarrollo vs. OOTmora_max_12m__points2,12250,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,82210,100,25RedesarrollarredesarrollarReusado de la etapa de estabilidadEvaluadaFalla
PSI temporalCohortescore0,74870,100,25RedesarrollarredesarrollarReusado de la etapa de estabilidadEvaluadaFalla

6Conclusiones y recomendación

Discriminación (AUC): Desarrollo 0,7368, Holdout 0,6849 y Fuera de tiempo (OOT) 0,7097.

Estabilidad (peor PSI entre score y PD): Desarrollo vs. Holdout 0,0162 («Estable»; score) y Desarrollo vs. OOT 0,7487 («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
f3e87cfdef6ba84fac670e41e1433ce311fc36b9818d7b17281bffdd4e6055b0
created_at
2026-10-19T14:07:17.073690Z
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 < 91,51.9420,491021.3356070,31260,08780,00370,00047
≥ 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,06190,0077
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,71919998526573181.6890,42711.1185710,3381-0,02850,000350,000043
≥ 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,37410,0443
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 < 674.2011.3970,35329534440,31780,06340,00140,00018
≥ 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,25840,0312
Tabla de binning WoE — variable «mora_max_12m»
BinCountCount (%)Non-eventEventEvent rateWoEIVJS
< 5,51.0640,269037972670,25090,39320,03860,0048
≥ 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,08130,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,329199999570846567120,180035611510,21210,61210,05950,0073
≥ 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,11940,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
desarrollo1553,50no3.9553.9552662661.3122.6430,06730,04890,05050,99010,9043
desarrollo2528,50no3.9553.9551.0501.0501.3122.6430,26550,11240,113040,91010,6474
desarrollo3509,50no3.9553.9552.0942.0941.3122.6430,52950,18430,18470,70580,3538
desarrollo4504,50no3.9553.9552.3912.3911.3122.6430,60460,20540,20570,62580,2811
desarrollo5484,50no3.9553.9553.3143.3141.3122.6430,83790,26980,26990,31860,0844
desarrollo6464,50no3.9553.9553.7543.7541.3122.6430,94920,30850,30860,11740,0178
desarrollo7—no3.9553.9553.9553.9551.3122.6431,00000,33170,33170,00000,0000
holdout1553,50no1.0001.00069693156850,06900,07250,05050,98410,9066
holdout2528,50no1.0001.0002382383156850,23800,15130,109970,88570,7051
holdout3509,50no1.0001.0005295293156850,52900,21740,19070,63490,3956
holdout4504,50no1.0001.0006066063156850,60600,21950,21140,57780,3095
holdout5484,50no1.0001.0008608603156850,86000,26860,27790,26670,0818
holdout6464,50no1.0001.0009589583156850,95800,29750,31080,09520,0175
holdout7—no1.0001.0001.0001.0003156851,00000,31500,32980,00000,0000
oot1553,50no1.0451.045665075380,00570,16670,05050,998030,9907
oot2528,50no1.0451.04552525075380,04980,11540,12460,98820,9145
oot3509,50no1.0451.0452252255075380,21530,21780,22620,90340,6729
oot4504,50no1.0451.0452942945075380,28130,25850,25610,85010,5948
oot5484,50no1.0451.0456076075075380,58090,35090,34910,57990,2677
oot6464,50no1.0451.0458548545075380,81720,42620,42150,28210,0892
oot7—no1.0451.0451.0451.0455075381,00000,48520,48420,00000,0000
Tramos de la escala por muestra
samplegradensharen_with_outcomen_badbad_ratepdjeffreys_p_valuetraffic_light
desarrollo12660,0673266130,04890,05050,532green
desarrollo27840,19827841050,13390,13430,506green
desarrollo31.0440,263971.0442680,25670,25670,498green
desarrollo42970,07512971050,35350,35370,501green
desarrollo59230,23349234030,43660,43640,494green
desarrollo64400,11134402640,60000,59950,492green
desarrollo72010,05082011540,76620,76460,485green
holdout1690,06906950,07250,05050,194green
holdout21690,1690169310,18340,13430,035amber
holdout32910,2910291790,27150,25670,2796green
holdout4770,077077180,23380,35370,988green
holdout52540,2540254980,38580,43640,948green
holdout6980,098098540,551020,59950,836green
holdout7420,042042300,71430,76460,783green
oot160,0057610,16670,0505—not_evaluable
oot2460,044024650,10870,13430,6796green
oot31730,1656173430,24860,25670,592green
oot4690,0660369270,39130,35370,255green
oot53130,29953131370,43770,43640,4804green
oot62470,23642471510,61130,59950,353green
oot71910,18281911430,74870,76460,702green
Tramos de la escala maestra
gradescore_minscore_maxlabelpdn_developmentshare_developmentn_bad_developmentbad_rate_developmentsource
1553,50—desde 554 puntos0,05052660,0673130,0489formed
2528,50553,50de 529 a 553 puntos0,13437840,19821050,1339formed
3509,50528,50de 510 a 528 puntos0,25671.0440,263972680,2567formed
4504,50509,50de 505 a 509 puntos0,35372970,07511050,3535formed
5484,50504,50de 485 a 504 puntos0,43649230,23344030,4366formed
6464,50484,50de 465 a 484 puntos0,59954400,11132640,6000formed
7—464,50hasta 464 puntos0,76462010,05081540,7662formed
Matriz de correlación entre variables
deuda_ingreso__woeingreso_mensual__woeutilizacion_linea__woemora_max_12m__woeantiguedad_meses__woe
1,00000,03730,11820,15090,0499
0,03731,00000,03290,05820,02905
0,11820,03291,00000,28450,0522
0,15090,05820,28451,00000,0992
0,04990,029050,05220,09921,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": 5,
  "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,0619",
  "deuda_ingreso": "0,3741",
  "ingreso_mensual": "0,2584",
  "mora_max_12m": "0,0813",
  "segmento": "0,0025",
  "utilizacion_linea": "0,1194"
}
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,2845
max_vif_after_selection
1,1148
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.390,59",
  "bic": "4.428,29",
  "converged": true,
  "llr": "647,4097",
  "llr_p_value": "< 0,001",
  "log_likelihood": "-2.189,296",
  "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,1288"
}
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
4,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,7368",
    "gini": "0,4736",
    "ks": "0,35198"
  },
  "holdout": {
    "auc": "0,6849",
    "gini": "0,3698",
    "ks": "0,2755"
  },
  "oot": {
    "auc": "0,7097",
    "gini": "0,4195",
    "ks": "0,3122"
  }
}
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,0162",
  "dev_vs_oot": "0,7487"
}
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,1225

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_cinco_bins
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",
  "484,50",
  "504,50",
  "509,50",
  "528,50",
  "553,50"
]
delta
-0,0012
diagnostics
{
  "desarrollo": {
    "amber_grades": [],
    "hhi": "0,1886",
    "inversions": [],
    "max_share": "0,26397",
    "max_share_grade": 3,
    "monotonic": true,
    "not_evaluable_grades": [],
    "red_grades": []
  },
  "holdout": {
    "amber_grades": [
      2
    ],
    "hhi": "0,1998",
    "inversions": [
      [
        3,
        4
      ]
    ],
    "max_share": "0,2910",
    "max_share_grade": 3,
    "monotonic": false,
    "not_evaluable_grades": [],
    "red_grades": []
  },
  "oot": {
    "amber_grades": [],
    "hhi": "0,2127",
    "inversions": [],
    "max_share": "0,2995",
    "max_share_grade": 5,
    "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,0505",
  "0,1343",
  "0,2567",
  "0,3537",
  "0,4364",
  "0,5995",
  "0,7646"
]
samples
[
  "desarrollo",
  "holdout",
  "oot"
]
score_direction
higher_is_lower_risk
solver_status
OPTIMAL
source
formed