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=74c5d9ddeca8ff71853623d20ace015d0788564549339d61bfb66f24dfadfcc8
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
Pasa

Cifras clave

AUC en Fuera de tiempo (OOT)0,654
Gini en Fuera de tiempo (OOT)0,307
KS en Fuera de tiempo (OOT)0,245
Caída del AUC Desarrollo → Fuera de tiempo (OOT)-0,057 (-8,0 %)
Peor PSI entre score y PD0,0138 (Desarrollo vs. Holdout) → Estable

Qué revisar

  • ⚠ Tramos y WoE: deuda_ingreso: la tasa de malos invierte la tendencia en Fuera de tiempo (OOT)
  • ⚠ Tramos y WoE: ingreso_mensual: la tasa de malos invierte la tendencia en Fuera de tiempo (OOT)
  • ⚠ Tramos y WoE: mora_max_12m: la tasa de malos invierte la tendencia en Holdout y Fuera de tiempo (OOT)
  • ⚠ Modelo: Concentra más del 90 % del IV del modelo: ingreso_mensual
  • ⚠ 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 subestima su PD (rojo).

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_comportamiento_cinco_bins/reports\scorecard_report.html
Informe Word
artifacts/consumo_comportamiento_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,7107 Sin alertas
Gini Desarrollo 0,4214 Sin alertas
KS Desarrollo 0,3135 Sin alertas
AUC Holdout 0,6928 Sin alertas
Gini Holdout 0,3855 Sin alertas
KS Holdout 0,3087 Sin alertas
AUC Fuera de tiempo (OOT) 0,6537 Sin alertas
Gini Fuera de tiempo (OOT) 0,3074 Sin alertas
KS Fuera de tiempo (OOT) 0,2454 Sin alertas
Peor PSI entre score y PD · PD calibrada Desarrollo vs. Holdout 0,0138 Estable
Peor PSI entre score y PD · PD calibrada Desarrollo vs. OOT 0,0078 Estable
Estado técnico de validación formal consumo_comportamiento_cinco_bins 0 de 3 pruebas fallidas Pasa

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 23,45 %. 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 23,33 %, 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
bueno4.593
malo1.407
indeterminado0
excluido0
Particiones de modelamiento
ParticiónObservacionesTasa de incumplimiento
Desarrollo3.9610,2333
Holdout1.0310,2367
Fuera de tiempo (OOT)1.0080,2371
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,050 0,100 0,150 0,200 0,250 Tasa de incumplimiento Tasa de incumplimiento observada en el tiempo
Tasa de incumplimiento por tramo de cada variable descrita image/svg+xml > 1 y ≤ 13 > 13 y ≤ 26 > 26 y ≤ 38 > 38 y ≤ 50 > 50 y ≤ 62 > 62 y ≤ 73 > 73 y ≤ 85 > 85 y ≤ 97 > 97 y ≤ 108 > 108 y ≤ 120 0,00 0,05 0,10 0,15 0,20 0,25 0,30 antiguedad_meses > 0,0032 y ≤ … > 0,0919 y ≤ … > 0,1487 y ≤ … > 0,202000000… > 0,2525 y ≤ … > 0,3088 y ≤ … > 0,3661 y ≤ … > 0,4454 y ≤ … > 0,5362 y ≤ … > 0,6925 y ≤ … 0,00 0,10 0,20 0,30 0,40 deuda_ingreso > 74.032,56 y… > 287.183,36 … > 353.839,8 y… > 409.923,63 … > 460.844,97 … > 526.601,82 … > 600.699,29 … > 689.809,83 … > 810.582,2 y… > 1.017.997,7… 0,00 0,10 0,20 0,30 ingreso_mensual > 0 y ≤ 3 > 3 y ≤ 4 > 4 y ≤ 5 > 5 y ≤ 6 > 6 y ≤ 7 > 7 y ≤ 8 > 8 y ≤ 9 > 9 y ≤ 17 0,00 0,05 0,10 0,15 0,20 0,25 mora_max_12m asalariado independiente pensionado 0,00 0,05 0,10 0,15 0,20 0,25 segmento > 0,0041 y ≤ … > 0,1384 y ≤ … > 0,216 y ≤ 0… > 0,2795 y ≤ … > 0,3346 y ≤ … > 0,3881 y ≤ … > 0,443100000… > 0,5066 y ≤ … > 0,5755 y ≤ … > 0,6618 y ≤ … 0,00 0,05 0,10 0,15 0,20 0,25 0,30 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
2023Q17857852010,2561no
2023Q27897891700,2155no
2023Q38388381880,2243no
2023Q47777771740,2239no
2024Q17727721910,2474no
Calidad de datos por columna
coldtypemissing_ratecardinalitynear_constantnear_uniquehigh_cardinality
ingreso_mensualfloat640,00003.961nosíno
deuda_ingresofloat640,00003.076nonono
utilizacion_lineafloat640,00003.064nonono
mora_max_12mint640,000018nonono
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 23,33 %. El ancla es a través del ciclo (TTC).

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

El ajuste se realizó sobre 3961 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 «ingreso_mensual» (0,2998), «deuda_ingreso» (0,163) y «utilizacion_linea» (0,061). 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,29980,03620,29120,8609mediumnonodescending—
deuda_ingresonumericalOPTIMALsí50,16320,01990,20210,4569mediumnonoascending—
utilizacion_lineanumericalOPTIMALsí50,061030,00760,13150,1732weaknonoascending—
mora_max_12mnumericalOPTIMALsí50,02160,00270,077020,0122weaknonoascending—
antiguedad_mesesnumericalOPTIMALsí50,04140,00510,094970,0757weaknonodescending—
segmentocategoricalOPTIMALsí30,00290,000370,02920,0027—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,0295 y el VIF máximo es 1,002.

Criterios de selección por variable
featurewoe_columnincludedreasoniviv_bandaucginiksmax_abs_corrmax_corr_withvifmax_csiforceddetail
antiguedad_mesesantiguedad_meses__woesíincluded0,0414weak0,54750,094970,0599——1,0011———
deuda_ingresodeuda_ingreso__woesíincluded0,1632medium0,60110,20210,1601——1,0001———
ingreso_mensualingreso_mensual__woesíincluded0,2998medium0,64560,29120,2118——1,0006———
mora_max_12mmora_max_12m__woesíincluded0,0216weak0,53850,077020,0641——1,0017———
segmentosegmento__woenolow_iv0,0029—0,51460,02920,0234—————IV 0,0029 < mínimo 0,02
utilizacion_lineautilizacion_linea__woesíincluded0,06103weak0,56580,13150,0978——1,0007———
Factor de inflación de varianza (VIF)
iterationfeaturewoe_columnvifremovedreason
0ingreso_mensualingreso_mensual__woe1,0006no—
0deuda_ingresodeuda_ingreso__woe1,0001no—
0utilizacion_lineautilizacion_linea__woe1,0007no—
0antiguedad_mesesantiguedad_meses__woe1,0011no—
0mora_max_12mmora_max_12m__woe1,0017no—

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ó 3961 observaciones de Desarrollo, de las cuales 924 son incumplimientos y el pseudo-R² de McFadden es 0,0958.

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

Coeficientes del modelo (β, IC 95 %) image/svg+xml -1,40 -1,20 -1,00 -0,80 -0,60 -0,40 -0,20 0,00 Coeficiente β (IC 95 %) mora_max_12m ingreso_mensual deuda_ingreso antiguedad_meses utilizacion_linea Coeficientes del modelo (β, IC 95 %)
Coeficientes del modelo PD
featurewoe_columnbetastandard_errorwald_zp_valueconf_lowconf_highexpected_signsign_okiviv_contribution
interceptconst-1,19230,0405-29,4338< 0,001-1,2717-1,1129————
antiguedad_mesesantiguedad_meses__woe-1,08160,2102-5,14501< 0,001-1,4936-0,6696negativesí0,04140,0704
deuda_ingresodeuda_ingreso__woe-1,08040,0971-11,1251< 0,001-1,2707-0,8901negativesí0,16320,2781
ingreso_mensualingreso_mensual__woe-1,05120,077996-13,4776< 0,001-1,2041-0,8983negativesí0,29980,5107
mora_max_12mmora_max_12m__woe-0,95020,2729-3,4823< 0,001-1,48502-0,4154negativesí0,02160,0368
utilizacion_lineautilizacion_linea__woe-1,10860,1631-6,7968< 0,001-1,4282-0,7889negativesí0,061030,10397

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< 12,50-0,3152-1,0816-0,238594,4689794-0,46897binning_table
antiguedad_mesesantiguedad_meses__woe≥ 12,5 y < 36,51-0,1345-1,0816-0,2385100,1069100-0,1069binning_table
antiguedad_mesesantiguedad_meses__woe≥ 36,5 y < 89,520,0021-1,0816-0,2385104,3705104-0,3705binning_table
antiguedad_mesesantiguedad_meses__woe≥ 89,5 y < 114,530,1349-1,0816-0,2385108,514031090,48597binning_table
antiguedad_mesesantiguedad_meses__woe≥ 114,540,7505-1,0816-0,2385127,72611280,2739binning_table
antiguedad_mesesantiguedad_meses__woeValores especiales50,0000-1,0816-0,2385104,3051104-0,3051binning_table
antiguedad_mesesantiguedad_meses__woeFaltantes60,0000-1,0816-0,2385104,3051104-0,3051binning_table
deuda_ingresodeuda_ingreso__woe< 0,0779500007629394500,7138-1,0804-0,2385126,55591270,4441binning_table
deuda_ingresodeuda_ingreso__woe≥ 0,07795000076293945 y < 0,37409999966621410,2319-1,0804-0,2385111,53391120,4661binning_table
deuda_ingresodeuda_ingreso__woe≥ 0,374099999666214 y < 0,51164999604225162-0,1035-1,0804-0,2385101,0787101-0,0787binning_table
deuda_ingresodeuda_ingreso__woe≥ 0,5116499960422516 y < 0,85049998760223393-0,3902-1,0804-0,238592,140792-0,1407binning_table
deuda_ingresodeuda_ingreso__woe≥ 0,85049998760223394-1,0825-1,0804-0,238570,5596710,4404binning_table
deuda_ingresodeuda_ingreso__woeValores especiales50,0000-1,0804-0,2385104,3051104-0,3051binning_table
deuda_ingresodeuda_ingreso__woeFaltantes60,0000-1,0804-0,2385104,3051104-0,3051binning_table
ingreso_mensualingreso_mensual__woe< 354.256,50-0,66904-1,0512-0,238584,012484-0,0124binning_table
ingreso_mensualingreso_mensual__woe≥ 354.256,5 y < 464.805,093751-0,2536-1,0512-0,238596,6143970,3857binning_table
ingreso_mensualingreso_mensual__woe≥ 464.805,09375 y < 631.639,4687520,0364-1,0512-0,2385105,4093105-0,4093binning_table
ingreso_mensualingreso_mensual__woe≥ 631.639,46875 y < 913.196,9687530,4278-1,0512-0,2385117,2797117-0,2797binning_table
ingreso_mensualingreso_mensual__woe≥ 913.196,9687541,2099-1,0512-0,2385141,0032141-0,0032binning_table
ingreso_mensualingreso_mensual__woeValores especiales50,0000-1,0512-0,2385104,3051104-0,3051binning_table
ingreso_mensualingreso_mensual__woeFaltantes60,0000-1,0512-0,2385104,3051104-0,3051binning_table
mora_max_12mmora_max_12m__woe< 2,500,3607-0,9502-0,2385114,1941114-0,1941binning_table
mora_max_12mmora_max_12m__woe≥ 2,5 y < 3,510,2141-0,9502-0,2385110,1746110-0,1746binning_table
mora_max_12mmora_max_12m__woe≥ 3,5 y < 5,520,09102-0,9502-0,2385106,80061070,1994binning_table
mora_max_12mmora_max_12m__woe≥ 5,5 y < 9,53-0,0942-0,9502-0,2385101,72261020,2774binning_table
mora_max_12mmora_max_12m__woe≥ 9,54-0,2065-0,9502-0,238598,6446990,3554binning_table
mora_max_12mmora_max_12m__woeValores especiales50,0000-0,9502-0,2385104,3051104-0,3051binning_table
mora_max_12mmora_max_12m__woeFaltantes60,0000-0,9502-0,2385104,3051104-0,3051binning_table
utilizacion_lineautilizacion_linea__woe< 0,1025499999523162800,6119-1,1086-0,2385123,87741240,1226binning_table
utilizacion_lineautilizacion_linea__woe≥ 0,10254999995231628 y < 0,2512999922037124610,2496-1,1086-0,2385112,2881112-0,2881binning_table
utilizacion_lineautilizacion_linea__woe≥ 0,25129999220371246 y < 0,448350012302398720,0619-1,1086-0,2385106,2857106-0,2857binning_table
utilizacion_lineautilizacion_linea__woe≥ 0,4483500123023987 y < 0,67790001630783083-0,1648-1,1086-0,238599,034899-0,0348binning_table
utilizacion_lineautilizacion_linea__woe≥ 0,67790001630783084-0,46599-1,1086-0,238589,399789-0,3997binning_table
utilizacion_lineautilizacion_linea__woeValores especiales50,0000-1,1086-0,2385104,3051104-0,3051binning_table
utilizacion_lineautilizacion_linea__woeFaltantes60,0000-1,1086-0,2385104,3051104-0,3051binning_table

4.5Calibración

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

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,1604, ECE=0,0138) holdout (Brier=0,1646, ECE=0,0342) oot (Brier=0,1716, ECE=0,035998)

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,7107, Gini 0,4214 y KS 0,3135.

En Holdout el modelo alcanza AUC 0,6928, Gini 0,3855 y KS 0,3087.

En Fuera de tiempo (OOT) el modelo alcanza AUC 0,6537, Gini 0,3074 y KS 0,2454.

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.9619243.0370,71070,42140,31350,2245—0,70240,3889pd_calibratedok
holdout1.0312447870,69280,38550,30870,2592—0,59840,2897pd_calibratedok
oot1.0082397690,65370,30740,24540,2993—0,45610,2107pd_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
desarrollo13971932040,48610,51390,51350,42020,8233485,4332443,0000497,00003971932040,20890,06722,084010,1417
desarrollo23961592370,40150,59850,37780,34290,4202501,6414496,0000506,00007933524410,380950,14521,72120,2357
desarrollo33961282680,32320,67680,31430,28840,3426509,6566505,0000514,00001.1894807090,51950,23351,38560,28603
desarrollo43961042920,26260,73740,26890,24880,2884516,0985513,0000519,00001.5855841.0010,632030,32961,12580,3024
desarrollo5396943020,23740,76260,22840,20850,2488522,3232519,0000526,00001.9816781.3030,73380,429041,01760,3047
desarrollo6396663300,16670,83330,19320,17790,2085528,4394525,0000532,00002.3777441.6330,80520,53770,71450,2675
desarrollo7396693270,17420,82580,16160,14590,1779534,70202530,0000539,00002.7738131.9600,87990,64540,74690,2345
desarrollo8396523440,13130,86870,12770,11080,1459542,65404538,0000547,00003.1698652.3040,93610,75860,56290,1775
desarrollo9396433530,10860,89140,09380,075030,1108552,8611547,0000560,00003.5659082.6570,98270,87490,46550,1078
desarrollo10396163800,04040,95960,05280,01050,07503572,0429559,0000619,00003.9619243.0371,00001,00000,17320,0000
holdout110449550,47120,52880,527020,43060,7832483,7500450,0000496,000010449550,20080,06991,99080,1309
holdout210343600,41750,58250,38520,34860,4296500,7184495,0000506,0000207921150,377050,14611,764010,2309
holdout310335680,33980,66020,31940,29370,3477508,9903505,0000513,00003101271830,52050,23251,43580,28796
holdout410324790,233010,766990,26650,24340,2937516,4466512,0000521,00004131512620,61890,33290,98460,2859
holdout510322810,21360,78640,224020,20850,2422523,0097520,0000526,00005161733430,709020,43580,90250,2732
holdout610315880,14560,85440,194050,18180,2081528,2233525,0000531,00006191884310,77050,54760,61540,2228
holdout710324790,233010,766990,16720,15110,1818533,6019530,0000538,00007222125100,86890,648030,98460,2208
holdout810312910,11650,88350,12950,11090,1511542,2816537,0000547,00008252246010,918030,76370,49230,1544
holdout910312910,11650,88350,09320,07380,1109553,0777547,0000560,00009282366920,96720,87930,49230,0879
holdout101038950,07770,92230,05430,01790,07298570,8252560,0000603,00001.0312447871,00001,00000,32820,0000
oot110148530,47520,52480,52510,42960,7832483,9307450,0000496,000010148530,20080,06892,00440,1319
oot210136650,35640,64360,37940,34110,4241501,3861496,0000506,0000202841180,35150,15341,50330,19802
oot310128730,27720,72280,31120,28870,3411510,0396506,0000513,00003031121910,46860,24841,16920,2202
oot410121800,20790,79210,26490,23910,2884516,70297513,0000521,00004041332710,55650,35240,87690,2041
oot510123780,22770,77230,22030,20330,2391523,6634520,0000527,00005051563490,65270,45380,96040,1989
oot610124770,23760,76240,18840,17630,2033529,4653526,0000532,00006061804260,75310,553971,00220,1992
oot710119820,18810,81190,15950,146010,1763535,1584531,0000539,00007071995080,83260,66060,79340,17204
oot810116850,15840,84160,12970,11280,1459542,0891538,0000547,00008082155930,89960,77110,66810,1285
oot910014860,14000,86000,093010,07480,1109553,1200547,0000559,00009082296790,95820,882960,59050,0752
oot1010010900,10000,90000,05360,00960,0746571,7500560,0000622,00001.0082397691,00001,00000,42180,0000

4.7Estabilidad

El peor PSI entre score y PD en Desarrollo vs. Holdout es 0,0138 (banda «Estable»); corresponde a la PD calibrada. 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,0078 (banda «Estable»); corresponde a la PD calibrada. La distribución de la magnitud ganadora se mantiene, de modo que no hay desplazamiento poblacional.

A nivel de variable, el mayor CSI corresponde a «ingreso_mensual__points» con 0,0086.

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,05 0,10 0,15 0,20 0,25 PSI / CSI csi·dev_vs_oot·antiguedad_meses__points csi·dev_vs_holdout·ingreso_mensual__points csi·dev_vs_holdout·antiguedad_meses__points csi·dev_vs_holdout·deuda_ingreso__points csi·dev_vs_oot·utilizacion_linea__points csi·dev_vs_holdout·mora_max_12m__points score_psi·dev_vs_oot·score csi·dev_vs_oot·mora_max_12m__points csi·dev_vs_holdout·utilizacion_linea__points pd_psi·dev_vs_oot·pd_calibrated csi·dev_vs_oot·deuda_ingreso__points csi·dev_vs_oot·ingreso_mensual__points temporal_score·cohort·score score_psi·dev_vs_holdout·score pd_psi·dev_vs_holdout·pd_calibrated 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,011950,100,25stable—
score_psidev_vs_ootscore0,00650,100,25stable—
pd_psidev_vs_holdoutpd_calibrated0,01380,100,25stable—
pd_psidev_vs_ootpd_calibrated0,00780,100,25stable—
csidev_vs_holdoutantiguedad_meses__points0,00260,100,25stable—
csidev_vs_ootantiguedad_meses__points0,00150,100,25stable—
csidev_vs_holdoutdeuda_ingreso__points0,00330,100,25stable—
csidev_vs_ootdeuda_ingreso__points0,00820,100,25stable—
csidev_vs_holdoutingreso_mensual__points0,00230,100,25stable—
csidev_vs_ootingreso_mensual__points0,00860,100,25stable—
csidev_vs_holdoutmora_max_12m__points0,00590,100,25stable—
csidev_vs_ootmora_max_12m__points0,00690,100,25stable—
csidev_vs_holdoututilizacion_linea__points0,00720,100,25stable—
csidev_vs_ootutilizacion_linea__points0,003970,100,25stable—
temporal_scorecohortscore0,00950,100,25stable—
PSI por tramo de score
metriccomparisonfeaturebin_labelexpected_countactual_countexpected_pctactual_pctcomponent_valuetotal_valueband
score_psidev_vs_holdoutscorebin_003731020,09420,09890,000240,01195stable
score_psidev_vs_holdoutscorebin_013761040,09490,10090,000360,01195stable
score_psidev_vs_holdoutscorebin_023911020,09870,09894,9e-070,01195stable
score_psidev_vs_holdoutscorebin_03392790,098960,07660,00570,01195stable
score_psidev_vs_holdoutscorebin_044311170,10880,11350,0001960,01195stable
score_psidev_vs_holdoutscorebin_053601100,09090,10670,00250,01195stable
score_psidev_vs_holdoutscorebin_064141140,10450,11060,000340,01195stable
score_psidev_vs_holdoutscorebin_07393870,09920,08440,00240,01195stable
score_psidev_vs_holdoutscorebin_084041020,101990,09890,0000930,01195stable
score_psidev_vs_holdoutscorebin_094271140,10780,11060,00007030,01195stable
score_psidev_vs_ootscorebin_00373950,09420,09426,4e-080,0065stable
score_psidev_vs_ootscorebin_01376970,09490,09620,0000180,0065stable
score_psidev_vs_ootscorebin_02391960,09870,09520,000120,0065stable
score_psidev_vs_ootscorebin_03392910,098960,09030,0007980,0065stable
score_psidev_vs_ootscorebin_044311030,10880,10220,000420,0065stable
score_psidev_vs_ootscorebin_05360900,09090,08930,0000280,0065stable
score_psidev_vs_ootscorebin_064141250,10450,124010,00330,0065stable
score_psidev_vs_ootscorebin_073931090,09920,10810,000770,0065stable
score_psidev_vs_ootscorebin_08404930,101990,09230,000980,0065stable
score_psidev_vs_ootscorebin_094271090,10780,10810,000001030,0065stable
pd_psidev_vs_holdoutpd_calibratedbin_003951080,09970,10480,000250,0138stable
pd_psidev_vs_holdoutpd_calibratedbin_01394950,09950,09210,000560,0138stable
pd_psidev_vs_holdoutpd_calibratedbin_02396930,099970,09020,0010050,0138stable
pd_psidev_vs_holdoutpd_calibratedbin_03398950,10050,09210,000720,0138stable
pd_psidev_vs_holdoutpd_calibratedbin_043751240,09470,12030,00610,0138stable
pd_psidev_vs_holdoutpd_calibratedbin_054131140,10430,11060,000370,0138stable
pd_psidev_vs_holdoutpd_calibratedbin_06402850,10150,08240,003960,0138stable
pd_psidev_vs_holdoutpd_calibratedbin_073951000,09970,096990,0000760,0138stable
pd_psidev_vs_holdoutpd_calibratedbin_083821010,09640,097960,0000240,0138stable
pd_psidev_vs_holdoutpd_calibratedbin_094111160,10380,11250,000710,0138stable
pd_psidev_vs_ootpd_calibratedbin_003951020,09970,10120,0000210,0078stable
pd_psidev_vs_ootpd_calibratedbin_01394900,09950,08930,00110,0078stable
pd_psidev_vs_ootpd_calibratedbin_023961080,099970,10710,0004960,0078stable
pd_psidev_vs_ootpd_calibratedbin_033981080,10050,10710,000430,0078stable
pd_psidev_vs_ootpd_calibratedbin_043751110,09470,11010,00230,0078stable
pd_psidev_vs_ootpd_calibratedbin_05413990,10430,09820,000360,0078stable
pd_psidev_vs_ootpd_calibratedbin_06402870,10150,08630,00250,0078stable
pd_psidev_vs_ootpd_calibratedbin_073951030,09970,10220,000059960,0078stable
pd_psidev_vs_ootpd_calibratedbin_08382910,09640,09030,000410,0078stable
pd_psidev_vs_ootpd_calibratedbin_094111090,10380,10810,000180,0078stable
csidev_vs_holdoutantiguedad_meses__points94 puntos384930,09690,09020,000490,0026stable
csidev_vs_holdoutantiguedad_meses__points100 puntos7632110,19260,20470,000730,0026stable
csidev_vs_holdoutantiguedad_meses__points104 puntos1.7694530,44660,43940,000120,0026stable
csidev_vs_holdoutantiguedad_meses__points109 puntos8382270,21160,22020,000340,0026stable
csidev_vs_holdoutantiguedad_meses__points128 puntos207470,05230,04560,000910,0026stable
csidev_vs_ootantiguedad_meses__points94 puntos384900,09690,08930,000630,0015stable
csidev_vs_ootantiguedad_meses__points100 puntos7632030,19260,20140,000390,0015stable
csidev_vs_ootantiguedad_meses__points104 puntos1.7694460,44660,44250,0000390,0015stable
csidev_vs_ootantiguedad_meses__points109 puntos8382200,21160,21830,000210,0015stable
csidev_vs_ootantiguedad_meses__points128 puntos207490,05230,04860,000260,0015stable
csidev_vs_holdoutdeuda_ingreso__points71 puntos205520,05180,05040,0000340,0033stable
csidev_vs_holdoutdeuda_ingreso__points92 puntos6741950,17020,18910,002010,0033stable
csidev_vs_holdoutdeuda_ingreso__points101 puntos6541560,16510,15130,00120,0033stable
csidev_vs_holdoutdeuda_ingreso__points112 puntos2.1355540,539010,53730,00000510,0033stable
csidev_vs_holdoutdeuda_ingreso__points127 puntos293740,073970,07180,0000660,0033stable
csidev_vs_ootdeuda_ingreso__points71 puntos205580,05180,05750,000610,0082stable
csidev_vs_ootdeuda_ingreso__points92 puntos6741860,17020,18450,00120,0082stable
csidev_vs_ootdeuda_ingreso__points101 puntos6541490,16510,14780,00190,0082stable
csidev_vs_ootdeuda_ingreso__points112 puntos2.1355570,539010,55260,000340,0082stable
csidev_vs_ootdeuda_ingreso__points127 puntos293580,073970,05750,00410,0082stable
csidev_vs_holdoutingreso_mensual__points84 puntos7972170,20120,21050,000420,0023stable
csidev_vs_holdoutingreso_mensual__points97 puntos8062020,20350,19590,000290,0023stable
csidev_vs_holdoutingreso_mensual__points105 puntos9172230,23150,21630,001030,0023stable
csidev_vs_holdoutingreso_mensual__points117 puntos8762380,22120,23080,000420,0023stable
csidev_vs_holdoutingreso_mensual__points141 puntos5651510,14260,14650,0001010,0023stable
csidev_vs_ootingreso_mensual__points84 puntos7972050,20120,20340,0000230,0086stable
csidev_vs_ootingreso_mensual__points97 puntos8061700,20350,16870,00650,0086stable
csidev_vs_ootingreso_mensual__points105 puntos9172390,23150,23710,000130,0086stable
csidev_vs_ootingreso_mensual__points117 puntos8762390,22120,23710,00110,0086stable
csidev_vs_ootingreso_mensual__points141 puntos5651550,14260,15380,000840,0086stable
csidev_vs_holdoutmora_max_12m__points99 puntos349940,08810,09120,0001050,0059stable
csidev_vs_holdoutmora_max_12m__points102 puntos1.8445020,46550,48690,000960,0059stable
csidev_vs_holdoutmora_max_12m__points107 puntos1.1732730,29610,26480,00350,0059stable
csidev_vs_holdoutmora_max_12m__points110 puntos355900,08960,08730,0000610,0059stable
csidev_vs_holdoutmora_max_12m__points114 puntos240720,06060,06980,00130,0059stable
csidev_vs_ootmora_max_12m__points99 puntos349970,08810,09620,000720,0069stable
csidev_vs_ootmora_max_12m__points102 puntos1.8444700,46550,46630,00000110,0069stable
csidev_vs_ootmora_max_12m__points107 puntos1.1733070,29610,30460,000240,0069stable
csidev_vs_ootmora_max_12m__points110 puntos355690,08960,06850,00570,0069stable
csidev_vs_ootmora_max_12m__points114 puntos240650,06060,06450,000240,0069stable
csidev_vs_holdoututilizacion_linea__points89 puntos3431130,08660,10960,00540,0072stable
csidev_vs_holdoututilizacion_linea__points99 puntos1.2123080,305980,29870,000170,0072stable
csidev_vs_holdoututilizacion_linea__points106 puntos1.3853380,34970,32780,00140,0072stable
csidev_vs_holdoututilizacion_linea__points112 puntos7882080,19890,20170,0000390,0072stable
csidev_vs_holdoututilizacion_linea__points124 puntos233640,05880,06210,000180,0072stable
csidev_vs_ootutilizacion_linea__points89 puntos3431010,08660,10020,001990,00397stable
csidev_vs_ootutilizacion_linea__points99 puntos1.2122980,305980,29560,000360,00397stable
csidev_vs_ootutilizacion_linea__points106 puntos1.3853350,34970,33230,000880,00397stable
csidev_vs_ootutilizacion_linea__points112 puntos7882120,19890,21030,000630,00397stable
csidev_vs_ootutilizacion_linea__points124 puntos233620,05880,06150,000120,00397stable
PSI del puntaje por período contra Desarrollo
PeríodoOperacionesPuntaje medioMediana del puntajePD mediaPSIBanda
2023Q11.005526,3463526,000023,50 %0,0037Estable
2023Q21.002526,98503526,000023,04 %0,0014Estable
2023Q31.011525,7982525,000023,79 %0,0074Estable
2023Q4992526,9315526,000023,05 %0,0087Estable
2024Q1982526,28004526,000023,57 %0,0095Estable
2024Q21.008526,6597527,000023,28 %0,0065Estable

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 4,82 % a 58,04 %; su promedio en Desarrollo es el ancla de la calibración, 23,33 %.

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

El tramo mayor tiene el 19,7 % de Desarrollo (tramo 4); índice de concentración 0,1599.

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 subestima su PD (rojo).

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 555 puntos4,82 %13,30 %4,74 %Verde13,48 %9,35 %Ámbar13,89 %12,86 %Rojo
2de 537 a 554 puntos13,09 %19,31 %13,07 %Verde17,46 %11,67 %Verde18,55 %14,97 %Verde
3de 525 a 536 puntos17,54 %18,86 %17,54 %Verde21,44 %21,27 %Verde20,93 %20,85 %Verde
4de 513 a 524 puntos25,30 %19,74 %25,32 %Verde17,75 %19,67 %Verde18,06 %20,88 %Verde
5de 505 a 512 puntos33,08 %10,83 %33,10 %Verde10,57 %34,86 %Verde10,22 %32,04 %Verde
6de 490 a 504 puntos40,89 %12,52 %40,93 %Verde13,00 %41,79 %Verde12,50 %38,10 %Verde
7hasta 489 puntos58,04 %5,43 %58,14 %Verde6,30 %50,77 %Verde5,85 %50,85 %Verde
Tabla de puntos de corte
MuestraAprobarPuntajeAprobadosTasa de malos de los aprobadosPD esperada de los aprobadosMalos evitadosBuenos rechazados
DesarrolloTramos 1 a 1desde 555 puntos13,30 %4,74 %4,82 %97,29 %83,47 %
DesarrolloTramos 1 a 2desde 537 puntos32,62 %9,67 %9,72 %86,47 %61,57 %
DesarrolloTramos 1 a 3desde 525 puntos51,48 %12,56 %12,58 %72,29 %41,29 %
DesarrolloTramos 1 a 4desde 513 puntos71,22 %16,09 %16,11 %50,87 %22,06 %
DesarrolloTramos 1 a 5desde 505 puntos82,05 %18,34 %18,35 %35,50 %12,61 %
DesarrolloTramos 1 a 6desde 490 puntos94,57 %21,33 %21,34 %13,53 %2,96 %
DesarrolloTodos los tramostodos los puntajes100,00 %23,33 %23,33 %0,00 %0,00 %
HoldoutTramos 1 a 1desde 555 puntos13,48 %9,35 %4,82 %94,67 %83,99 %
HoldoutTramos 1 a 2desde 537 puntos30,94 %10,66 %9,49 %86,07 %63,79 %
HoldoutTramos 1 a 3desde 525 puntos52,38 %15,00 %12,78 %66,80 %41,68 %
HoldoutTramos 1 a 4desde 513 puntos70,13 %16,18 %15,95 %52,05 %23,00 %
HoldoutTramos 1 a 5desde 505 puntos80,70 %18,63 %18,20 %36,48 %13,98 %
HoldoutTramos 1 a 6desde 490 puntos93,70 %21,84 %21,34 %13,52 %4,07 %
HoldoutTodos los tramostodos los puntajes100,00 %23,67 %23,66 %0,00 %0,00 %
Fuera de tiempo (OOT)Tramos 1 a 1desde 555 puntos13,89 %12,86 %4,82 %92,47 %84,14 %
Fuera de tiempo (OOT)Tramos 1 a 2desde 537 puntos32,44 %14,07 %9,55 %80,75 %63,46 %
Fuera de tiempo (OOT)Tramos 1 a 3desde 525 puntos53,37 %16,73 %12,69 %62,34 %41,74 %
Fuera de tiempo (OOT)Tramos 1 a 4desde 513 puntos71,43 %17,78 %15,88 %46,44 %23,02 %
Fuera de tiempo (OOT)Tramos 1 a 5desde 505 puntos81,65 %19,56 %18,03 %32,64 %13,91 %
Fuera de tiempo (OOT)Tramos 1 a 6desde 490 puntos94,15 %22,02 %21,06 %12,55 %3,77 %
Fuera de tiempo (OOT)Todos los tramostodos los puntajes100,00 %23,71 %23,23 %0,00 %0,00 %

5Validación formal

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

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

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

POR COMPLETAR — Veredicto de validación formal

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

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

5.1Discriminación

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

Validación formal — discriminación
partitionn_totaln_badaucginikssourcestatus
Desarrollo3.9619240,71070,42140,3135Reusada de la etapa de desempeñoEvaluada
Holdout1.0312440,69280,38550,3087Reusada de la etapa de desempeñoEvaluada
Fuera de tiempo (OOT)1.0082390,65370,30740,2454Reusada 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.9619240,23330,23337,6269680,4710,05Pasa—
DesarrolloPuntaje de Brier—3.9619240,23330,23330,1604———Sin veredicto—
Fuera de tiempo (OOT)Hosmer-Lemeshow—1.0082390,23280,237113,5429680,0940,05Pasa—
Fuera de tiempo (OOT)Puntaje de Brier—1.0082390,23280,23710,1716———Sin veredicto—
HoldoutHosmer-Lemeshow—1.0312440,23630,23679,988480,2660,05Pasa—
HoldoutPuntaje de Brier—1.0312440,23630,23670,1646———Sin veredicto—
Hosmer-Lemeshow por grupo · Desarrollo
GrupoObservacionesMalos observadosMalos esperadosTasa observada (%)PD media (%)Diferencia (pp)O/EContribución al estadístico
13971621,00004,03005,2900-1,26000,76201,2500
23964437,200011,11009,39001,72001,18401,3800
33965150,600012,880012,78000,10001,00800,0000
43966964,000017,420016,17001,26001,07800,4600
53966676,500016,670019,3300-2,66000,86201,8000
63969390,500023,480022,85000,64001,02800,0900
7396105106,500026,520026,9000-0,39000,98600,0300
8396128124,500032,320031,45000,87001,02800,1400
9396160149,700040,400037,80002,61001,06901,1500
10396192203,400048,480051,3800-2,89000,94401,3200
Hosmer-Lemeshow por grupo · Fuera de tiempo (OOT)
GrupoObservacionesMalos observadosMalos esperadosTasa observada (%)PD media (%)Diferencia (pp)O/EContribución al estadístico
1101105,40009,90005,38004,52001,84004,0500
2101149,500013,86009,36004,50001,48102,4100
31011713,200016,830013,03003,80001,29201,2900
41011916,200018,810016,01002,80001,17500,5900
51012419,100023,760018,89004,87001,25801,5700
61012222,300021,780022,1000-0,32000,98500,0100
71012126,900020,790026,5900-5,80000,78201,7400
81012831,500027,720031,2200-3,50000,88800,5800
91003738,100037,000038,0700-1,07000,97200,0500
101004752,600047,000052,6000-5,60000,89301,2600
Hosmer-Lemeshow por grupo · Holdout
GrupoObservacionesMalos observadosMalos esperadosTasa observada (%)PD media (%)Diferencia (pp)O/EContribución al estadístico
110495,70008,65005,45003,20001,58802,0700
2103119,600010,68009,35001,33001,14200,2100
31031213,400011,650012,9900-1,34000,89700,1600
41032417,200023,300016,74006,56001,39203,1800
51031620,000015,530019,4300-3,90000,79901,0000
61032123,100020,390022,4400-2,05000,90900,2500
71032427,500023,300026,7000-3,40000,87300,6100
81033533,000033,980032,00001,98001,06200,1900
91034439,800042,720038,60004,12001,10700,7400
101034854,400046,600052,8000-6,19000,88301,5900

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,011950,100,25Estable—Reusado de la etapa de estabilidadEvaluadaPasa
PSI del scoreDesarrollo vs. OOTscore0,00650,100,25Estable—Reusado de la etapa de estabilidadEvaluadaPasa
PSI de la PDDesarrollo vs. Holdoutpd_calibrated0,01380,100,25Estable—Reusado de la etapa de estabilidadEvaluadaPasa
PSI de la PDDesarrollo vs. OOTpd_calibrated0,00780,100,25Estable—Reusado de la etapa de estabilidadEvaluadaPasa
CSIDesarrollo vs. Holdoutantiguedad_meses__points0,00260,100,25Estable—Reusado de la etapa de estabilidadEvaluadaPasa
CSIDesarrollo vs. OOTantiguedad_meses__points0,00150,100,25Estable—Reusado de la etapa de estabilidadEvaluadaPasa
CSIDesarrollo vs. Holdoutdeuda_ingreso__points0,00330,100,25Estable—Reusado de la etapa de estabilidadEvaluadaPasa
CSIDesarrollo vs. OOTdeuda_ingreso__points0,00820,100,25Estable—Reusado de la etapa de estabilidadEvaluadaPasa
CSIDesarrollo vs. Holdoutingreso_mensual__points0,00230,100,25Estable—Reusado de la etapa de estabilidadEvaluadaPasa
CSIDesarrollo vs. OOTingreso_mensual__points0,00860,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__points0,00690,100,25Estable—Reusado de la etapa de estabilidadEvaluadaPasa
CSIDesarrollo vs. Holdoututilizacion_linea__points0,00720,100,25Estable—Reusado de la etapa de estabilidadEvaluadaPasa
CSIDesarrollo vs. OOTutilizacion_linea__points0,003970,100,25Estable—Reusado de la etapa de estabilidadEvaluadaPasa
PSI temporalCohortescore0,00950,100,25Estable—Reusado de la etapa de estabilidadEvaluadaPasa

6Conclusiones y recomendación

Discriminación (AUC): Desarrollo 0,7107, Holdout 0,6928 y Fuera de tiempo (OOT) 0,6537.

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

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

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:06:12.965117Z
data_hash
74c5d9ddeca8ff71853623d20ace015d0788564549339d61bfb66f24dfadfcc8
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.oot",
  "validation.hosmer_lemeshow_groups.holdout",
  "master_scale.scale",
  "master_scale.cutoffs",
  "stability.psi_by_period"
]
Tabla de binning WoE — variable «antiguedad_meses»
BinCountCount (%)Non-eventEventEvent rateWoEIVJS
< 12,53840,09692711130,2943-0,31520,01040,0013
≥ 12,5 y < 36,57630,19265661970,2582-0,13450,00360,00045
≥ 36,5 y < 89,51.7690,44661.3574120,23290,00210,000001962,4e-07
≥ 89,5 y < 114,58380,21166621760,210020,13490,00370,00046
≥ 114,52070,0523181260,12560,75050,02360,0029
Valores especiales00,0000000,00000,00000,00000,0000
Faltantes00,0000000,00000,00000,00000,0000
3.9611,00003.0379240,23330,04140,0051
Tabla de binning WoE — variable «deuda_ingreso»
BinCountCount (%)Non-eventEventEvent rateWoEIVJS
< 0,077950000762939452930,07397255380,12970,71380,03060,0037
≥ 0,07795000076293945 y < 0,3740999996662142.1350,539011.7204150,19440,23190,02720,0034
≥ 0,374099999666214 y < 0,51164999604225166540,16514891650,2523-0,10350,00180,00023
≥ 0,5116499960422516 y < 0,85049998760223396740,17024652090,3101-0,39020,02850,0035
≥ 0,85049998760223392050,0518108970,4732-1,08250,07510,00896
Valores especiales00,0000000,00000,00000,00000,0000
Faltantes00,0000000,00000,00000,00000,0000
3.9611,00003.0379240,23330,16320,0199
Tabla de binning WoE — variable «ingreso_mensual»
BinCountCount (%)Non-eventEventEvent rateWoEIVJS
< 354.256,57970,20125002970,3726-0,669040,10490,0129
≥ 354.256,5 y < 464.805,093758060,20355792270,2816-0,25360,013950,0017
≥ 464.805,09375 y < 631.639,468759170,23157092080,22680,03640,0003040,000038
≥ 631.639,46875 y < 913.196,968758760,22127311450,16550,42780,03580,0044
≥ 913.196,968755650,1426518470,08321,20990,14480,0171
Valores especiales00,0000000,00000,00000,00000,0000
Faltantes00,0000000,00000,00000,00000,0000
3.9611,00003.0379240,23330,29980,0362
Tabla de binning WoE — variable «mora_max_12m»
BinCountCount (%)Non-eventEventEvent rateWoEIVJS
< 2,52400,0606198420,17500,36070,00710,00089
≥ 2,5 y < 3,53550,0896285700,19720,21410,00390,00048
≥ 3,5 y < 5,51.1730,29619182550,21740,091020,00240,000299
≥ 5,5 y < 9,51.8440,46551.3824620,2505-0,09420,00420,00053
≥ 9,53490,0881254950,2722-0,20650,003960,00049
Valores especiales00,0000000,00000,00000,00000,0000
Faltantes00,0000000,00000,00000,00000,0000
3.9611,00003.0379240,23330,02160,0027
Tabla de binning WoE — variable «segmento»
BinCountCount (%)Non-eventEventEvent rateWoEIVJS
independiente1.3530,34161.0523010,22250,06140,00130,00016
asalariado1.3030,328961.0013020,23180,00840,0000230,0000029
pensionado1.3050,32959843210,24598-0,06970,00160,000204
Valores especiales00,0000000,00000,00000,00000,0000
Faltantes00,0000000,00000,00000,00000,0000
3.9611,00003.0379240,23330,00290,00037
Tabla de binning WoE — variable «utilizacion_linea»
BinCountCount (%)Non-eventEventEvent rateWoEIVJS
< 0,102549999952316282330,0588200330,14160,61190,01840,0023
≥ 0,10254999995231628 y < 0,251299992203712467880,19896371510,19160,24960,01160,0014
≥ 0,25129999220371246 y < 0,44835001230239871.3850,34971.0773080,22240,06190,00130,00016
≥ 0,4483500123023987 y < 0,67790001630783081.2120,305988923200,26403-0,16480,00870,0011
≥ 0,67790001630783083430,08662311120,3265-0,465990,021040,0026
Valores especiales00,0000000,00000,00000,00000,0000
Faltantes00,0000000,00000,00000,00000,0000
3.9611,00003.0379240,23330,061030,0076
Perfil frente al incumplimiento — variable «antiguedad_meses»
tramoncoveragedefault_rate
> 1 y ≤ 134220,10650,2844
> 13 y ≤ 263990,10070,2281
> 26 y ≤ 383830,09670,2872
> 38 y ≤ 503930,09920,2239
> 50 y ≤ 624160,105020,2308
> 62 y ≤ 733710,09370,2264
> 73 y ≤ 854070,10280,2555
> 85 y ≤ 974160,105020,2163
> 97 y ≤ 1083700,09340,2135
> 108 y ≤ 1203840,09690,1615
Perfil frente al incumplimiento — variable «deuda_ingreso»
tramoncoveragedefault_rate
> 0,0032 y ≤ 0,09193970,10020,1562
> 0,0919 y ≤ 0,14873980,10050,1859
> 0,1487 y ≤ 0,202000000000000073940,09950,1954
> 0,20200000000000007 y ≤ 0,25253970,10020,1914
> 0,2525 y ≤ 0,30883970,10020,2191
> 0,3088 y ≤ 0,36613950,09970,1797
> 0,3661 y ≤ 0,44543960,099970,2424
> 0,4454 y ≤ 0,53623950,09970,2684
> 0,5362 y ≤ 0,69253960,099970,30303
> 0,6925 y ≤ 1,79733960,099970,3914
Perfil frente al incumplimiento — variable «ingreso_mensual»
tramoncoveragedefault_rate
> 74.032,56 y ≤ 287.183,363970,10020,3753
> 287.183,36 y ≤ 353.839,83960,099970,3687
> 353.839,8 y ≤ 409.923,633960,099970,2778
> 409.923,63 y ≤ 460.844,973960,099970,2828
> 460.844,97 y ≤ 526.601,823960,099970,2172
> 526.601,82 y ≤ 600.699,293960,099970,2298
> 600.699,29 y ≤ 689.809,833960,099970,1894
> 689.809,83 y ≤ 810.582,23960,099970,1742
> 810.582,2 y ≤ 1.017.997,743960,099970,1237
> 1.017.997,74 y ≤ 3.524.342,263960,099970,0934
Perfil frente al incumplimiento — variable «mora_max_12m»
tramoncoveragedefault_rate
> 0 y ≤ 35950,15020,1882
> 3 y ≤ 45470,13810,2139
> 4 y ≤ 56260,158040,2204
> 5 y ≤ 66360,16060,2516
> 6 y ≤ 75300,13380,2415
> 7 y ≤ 83900,09850,2641
> 8 y ≤ 92880,07270,2465
> 9 y ≤ 173490,08810,2722
Perfil frente al incumplimiento — variable «segmento»
tramoncoveragedefault_rate
asalariado1.3030,328960,2318
independiente1.3530,34160,2225
pensionado1.3050,32950,24598
Perfil frente al incumplimiento — variable «utilizacion_linea»
tramoncoveragedefault_rate
> 0,0041 y ≤ 0,13843970,10020,1763
> 0,1384 y ≤ 0,2163970,10020,1965
> 0,216 y ≤ 0,27953950,09970,2025
> 0,2795 y ≤ 0,33463960,099970,2500
> 0,3346 y ≤ 0,38813960,099970,20202
> 0,3881 y ≤ 0,443100000000000053960,099970,20202
> 0,44310000000000005 y ≤ 0,50663970,10020,2997
> 0,5066 y ≤ 0,57553950,09970,23797
> 0,5755 y ≤ 0,66183960,099970,2551
> 0,6618 y ≤ 0,97243960,099970,3106
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
desarrollo1554,50no3.9613.9615275279243.0370,133050,04740,04820,97290,8347
desarrollo2536,50no3.9613.9611.2921.2929243.0370,32620,09670,09720,86470,6157
desarrollo3524,50no3.9613.9612.0392.0399243.0370,51480,12560,12580,72290,4129
desarrollo4512,50no3.9613.9612.8212.8219243.0370,71220,16090,16110,50870,2206
desarrollo5504,50no3.9613.9613.2503.2509243.0370,82050,18340,18350,354980,1261
desarrollo6489,50no3.9613.9613.7463.7469243.0370,94570,21330,21340,13530,0296
desarrollo7—no3.9613.9613.9613.9619243.0371,00000,23330,23330,00000,0000
holdout1554,50no1.0311.0311391392447870,13480,09350,04820,94670,8399
holdout2536,50no1.0311.0313193192447870,30940,10660,09490,86070,6379
holdout3524,50no1.0311.0315405402447870,52380,15000,12780,668030,4168
holdout4512,50no1.0311.0317237232447870,70130,16180,15950,52050,22999
holdout5504,50no1.0311.0318328322447870,806980,18630,181980,36480,1398
holdout6489,50no1.0311.0319669662447870,936950,21840,21340,13520,0407
holdout7—no1.0311.0311.0311.0312447871,00000,23670,23660,00000,0000
oot1554,50no1.0081.0081401402397690,13890,12860,04820,92470,8414
oot2536,50no1.0081.0083273272397690,32440,14070,09550,80750,6346
oot3524,50no1.0081.0085385382397690,53370,16730,12690,62340,4174
oot4512,50no1.0081.0087207202397690,71430,17780,15880,46440,2302
oot5504,50no1.0081.0088238232397690,81650,19560,18030,32640,1391
oot6489,50no1.0081.0089499492397690,94150,22020,21060,12550,0377
oot7—no1.0081.0081.0081.0082397691,00000,23710,23230,00000,0000
Tramos de la escala por muestra
samplegradensharen_with_outcomen_badbad_ratepdjeffreys_p_valuetraffic_light
desarrollo15270,13305527250,04740,04820,5196green
desarrollo27650,19317651000,13070,13090,501green
desarrollo37470,18867471310,17540,17540,498green
desarrollo47820,19747821980,25320,253040,493green
desarrollo54290,10834291420,3310020,33080,495green
desarrollo64960,12524962030,40930,40890,491green
desarrollo72150,05432151250,58140,58040,4899green
holdout11390,1348139130,09350,04820,011amber
holdout21800,1746180210,11670,13090,708green
holdout32210,2144221470,21270,17540,075green
holdout41830,1775183360,19670,253040,963green
holdout51090,1057109380,34860,33080,343green
holdout61340,12997134560,41790,40890,414green
holdout7650,0630565330,50770,58040,882green
oot11400,1389140180,12860,0482< 0,001red
oot21870,1855187280,14970,13090,219green
oot32110,2093211440,20850,17540,105green
oot41820,1806182380,20880,253040,917green
oot51030,1022103330,32040,33080,585green
oot61260,1250126480,380950,40890,737green
oot7590,058559300,50850,58040,868green
Tramos de la escala maestra
gradescore_minscore_maxlabelpdn_developmentshare_developmentn_bad_developmentbad_rate_developmentsource
1554,50—desde 555 puntos0,04825270,13305250,0474formed
2536,50554,50de 537 a 554 puntos0,13097650,19311000,1307formed
3524,50536,50de 525 a 536 puntos0,17547470,18861310,1754formed
4512,50524,50de 513 a 524 puntos0,253047820,19741980,2532formed
5504,50512,50de 505 a 512 puntos0,33084290,10831420,331002formed
6489,50504,50de 490 a 504 puntos0,40894960,12522030,4093formed
7—489,50hasta 489 puntos0,58042150,05431250,5814formed
Matriz de correlación entre variables
ingreso_mensual__woedeuda_ingreso__woeutilizacion_linea__woeantiguedad_meses__woemora_max_12m__woe
1,00000,00404-0,00730,01470,0184
0,004041,00000,0098-0,0000850,0015
-0,00730,00981,00000,00280,0229
0,0147-0,0000850,00281,00000,0295
0,01840,00150,02290,02951,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,2345
class_counts
{
  "bueno": 4593,
  "excluido": 0,
  "indeterminado": 0,
  "malo": 1407
}
data_hash
74c5d9ddeca8ff71853623d20ace015d0788564549339d61bfb66f24dfadfcc8
effective_config
{
  "load": {
    "backend": "pandas",
    "csv_options": {
      "decimal": ".",
      "encoding": "utf-8",
      "sep": ","
    },
    "file_format": "auto",
    "source": "prepared/consumo_comportamiento/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,2333",
  "fuera_de_modelo": "0,0000",
  "holdout": "0,2367",
  "oot": "0,2371"
}
partition_sizes
{
  "desarrollo": 3961,
  "fuera_de_modelo": 0,
  "holdout": 1031,
  "oot": 1008
}
performance_window_months
—
source
data-68164c7a2a160d24.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,2333
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,0414",
  "deuda_ingreso": "0,1632",
  "ingreso_mensual": "0,2998",
  "mora_max_12m": "0,0216",
  "segmento": "0,0029",
  "utilizacion_linea": "0,06103"
}
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,0295
max_vif_after_selection
1,0017
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": "3.903,04",
  "bic": "3.940,75",
  "converged": true,
  "llr": "412,2101",
  "llr_p_value": "< 0,001",
  "log_likelihood": "-1.945,52",
  "n_events_dev": 924,
  "n_iterations": 6,
  "n_nonevents_dev": 3037,
  "n_obs_dev": 3961,
  "null_log_likelihood": "-2.151,63",
  "optimizer": "newton",
  "pseudo_r2_mcfadden": "0,0958"
}
iv_contribution_flags
[
  "ingreso_mensual"
]
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,2333
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.961
observed_default_rate_dev
0,2333
offset
-6,5e-15
pd_calibrated_column
pd_calibrated
pd_raw_column
pd_raw
ranking_preserved
sí
raw_mean_pd_dev
0,2333
slope
—
target_pd
0,2333
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,7107",
    "gini": "0,4214",
    "ks": "0,3135"
  },
  "holdout": {
    "auc": "0,6928",
    "gini": "0,3855",
    "ks": "0,3087"
  },
  "oot": {
    "auc": "0,6537",
    "gini": "0,3074",
    "ks": "0,2454"
  }
}
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": "stable"
}
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,0138",
  "dev_vs_oot": "0,0078"
}
psi_bins
10
psi_metric_by_comparison
{
  "dev_vs_holdout": "pd_psi",
  "dev_vs_oot": "pd_psi"
}
review_threshold
0,25
score_direction
higher_is_lower_risk
stable_threshold
0,10
worst_csi_feature
ingreso_mensual__points
worst_csi_value
0,0086

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_comportamiento_cinco_bins
n_failed
0
n_tests
3
overall_status
pass

Métricas estructuradas

validation
{
  "families_run": [
    "discrimination",
    "calibration",
    "stability"
  ],
  "min_rows_per_group": 30,
  "n_failed": 0,
  "n_tests": 3,
  "not_evaluable_grades": [],
  "not_evaluable_partitions": [],
  "overall_status": "pass",
  "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,2333
anchor_source
development_observed
approval_cutoff
—
cutoff_out_of_range
no
cuts
[
  "489,50",
  "504,50",
  "512,50",
  "524,50",
  "536,50",
  "554,50"
]
delta
-0,0025
diagnostics
{
  "desarrollo": {
    "amber_grades": [],
    "hhi": "0,1599",
    "inversions": [],
    "max_share": "0,1974",
    "max_share_grade": 4,
    "monotonic": true,
    "not_evaluable_grades": [],
    "red_grades": []
  },
  "holdout": {
    "amber_grades": [
      1
    ],
    "hhi": "0,1582",
    "inversions": [
      [
        3,
        4
      ]
    ],
    "max_share": "0,2144",
    "max_share_grade": 3,
    "monotonic": false,
    "not_evaluable_grades": [],
    "red_grades": []
  },
  "oot": {
    "amber_grades": [],
    "hhi": "0,1596",
    "inversions": [],
    "max_share": "0,2093",
    "max_share_grade": 3,
    "monotonic": true,
    "not_evaluable_grades": [],
    "red_grades": [
      1
    ]
  }
}
effective_config
{
  "approval_cutoff": null,
  "grade_edges": null
}
equalized_grades
[]
formation_cause
—
integer_card
sí
n_grades
7
neighbours_not_distinct
[]
pd
[
  "0,0482",
  "0,1309",
  "0,1754",
  "0,25304",
  "0,3308",
  "0,4089",
  "0,5804"
]
samples
[
  "desarrollo",
  "holdout",
  "oot"
]
score_direction
higher_is_lower_risk
solver_status
OPTIMAL
source
formed