Proxima Alpha - Powered by Santander

Santander

Últimos 7 días

chat_bubble_outlineActúa como quantitative c...
chat_bubble_outlineActúa como quantitative c...
chat_bubble_outlineEx 28.- Top Cheflabel
chat_bubble_outlineEx 27.- top 25 Q-Alabel
chat_bubble_outlineEx 26.- Panel estructurado de ...label
chat_bubble_outlineEx 25.- Optimización regulator...label
chat_bubble_outlineEx 24.- WWRlabel
chat_bubble_outlineEx 23.- Insurance 1label
chat_bubble_outlineEx 25.- Counterparty Credit Ri...label
chat_bubble_outlineEx 24.- VaR Backtesting Workfl...label
chat_bubble_outlineEx 23.- VaR 2label
chat_bubble_outlineEx 22.- Merton - Credit Risklabel
chat_bubble_outlineEx 21.- Framework de análisis ...label
chat_bubble_outlineEx 20.- Claims, reserveslabel
chat_bubble_outlineEx 19.- credit card scoringlabel
chat_bubble_outlineEx 18.- credit scoring mediant...label
chat_bubble_outlineEx 17.- Mortality, Lee Carterlabel
chat_bubble_outlineEx 16.- business cycle analysi...label
chat_bubble_outlineEx 15.- Portfolio Optimizationlabel
chat_bubble_outlineEx 14.- First-to-Defaultlabel
chat_bubble_outlineEx 13.- Bond Optimizationlabel
chat_bubble_outlineEx 12.- Brinson-Fachler Attrib...label
chat_bubble_outlineEx 11.- Forecasting de tasas d...label
chat_bubble_outlineEx 10.- Asian Basketlabel
chat_bubble_outlineEx 9.- Price a Swaption Using ...label
chat_bubble_outlineEx 8.- Black-Karasinskilabel
chat_bubble_outlineEx 7.- Weather derivativeslabel
chat_bubble_outlineEx 6.- pricing sobre electrici...label
chat_bubble_outlineEx 5.- Option chainlabel
chat_bubble_outlineEx 4.- Semiconductorlabel
chat_bubble_outlineEx 3.- Hurricane Natural Catas...label
chat_bubble_outlineEx 2.- Catastrophe Risklabel
chat_bubble_outlineEx 1 .- Geopolitical risklabel
chat_bubble_outlineUnderstant it first: You ...
chat_bubble_outlineQuiero que entiendas en d...
chat_bubble_outlineQuiero que entiendas en d...
chat_bubble_outlinedibuja el precio de BBVA....
chat_bubble_outlinedibuja el precio de BBVA....
chat_bubble_outlinedime que hay en Movement4...
chat_bubble_outlinedile a quant_calculations...
chat_bubble_outlinedile a quant que haga una...
chat_bubble_outlinellama a quant_calculation...
chat_bubble_outlineDibuja el precio de Santa...
chat_bubble_outlineDibuja el precio de Santa...
chat_bubble_outlineDibuja el precio de Santa...
chat_bubble_outlineDibuja el precio de Santa...
chat_bubble_outlineQuiero que entiendas en d...
chat_bubble_outlinedile a quant que me diga ...
chat_bubble_outlinedile a quant que haga una...
chat_bubble_outlinedile a quant que haga una...
settings Ajustes
help_outlineAyuda
chevron_right
📗
CreditCardData.xlsx64.2 KB
OBJETIVO Construir un workflow completo de credit scorecard analysis usando: CreditCardData.xlsx La idea es replicar el flujo conceptual del caso: 1. cargar datos de tarjetas 2. explorar buenos/malos...

Blackmont

Resumen ejecutivo

He construido el workflow completo de credit scorecard analysis sobre tu archivo CreditCardData (file-W4eY66etqGe5d6xWRmDST3.xlsx), siguiendo todos los pasos que describes: limpieza, binning, WoE/IV, regresión logística, scorecard, PD y validaciones (ROC, CAP, KS, deciles y cutoffs).

A continuación te explico:

  1. Qué hay en los datos y cómo se limpiaron.
  2. Cómo quedaron los binnings, WoE e IV.
  3. Detalles del modelo logístico y del scorecard.
  4. Calidad del modelo (ROC/AUC, CAP/AR, KS, deciles, calibración y cutoffs).
  5. Dónde están los archivos de salida para que puedas revisarlos o integrarlos en tu propio código.

1. Revisión cuidadosa del archivo de entrada

El archivo se cargó desde /mnt/z/B011/file-W4eY66etqGe5d6xWRmDST3.xlsx, hoja Sheet1, con las columnas esperadas:

  • CustID, CustAge, TmAtAddress, ResStatus, EmpStatus, CustIncome, TmWBank, OtherCC, AMBalance, UtilRate, status.

Limpieza y chequeos

  • Duplicados por CustID: eliminados (no afectaron la estructura final).
  • NaNs: no quedaron valores faltantes tras imputación.
  • Tipos:
    • CustID: string (solo identificador, fuera del modelo).
    • status: entero binario (0=Good, 1=Bad).
    • Numéricas como float.
    • Categóricas como string.

Resumen de datos (PASOS 1–4):

  • Total de clientes: 1200.
  • Buenos (status=0): 803.
  • Malos (status=1): 397.
  • Bad rate total: 33,08 %.

Este resumen está en data_summary dentro de los resultados numéricos.

Archivo de datos limpios exportado:

  • Download file

Gráfico 1 – distribución Good vs Bad:


2. Definición de target y predictores (PASOS 2–3)

  • Target: status
    • 0 → Good
    • 1 → Bad/default
  • ID excluido: CustID no entra en el modelo.
  • Variables numéricas:
    • CustAge, TmAtAddress, CustIncome, TmWBank, AMBalance, UtilRate.
  • Variables categóricas:
    • ResStatus, EmpStatus, OtherCC.

3. Binning, WoE e Information Value

3.1 Categóricas – binning inicial (PASO 5)

Se calculó para cada categoría:

  • Good, Bad, %Good, %Bad, Odds, WoE, IV_bin e IV_variable (con suavizado cuando había Good=0 o Bad=0).

Gráficos interactivos WoE inicial para cada categórica:

  • ResStatus:
  • EmpStatus:
  • OtherCC:

3.2 Numéricas – binning inicial (PASO 6)

  • CustIncome: se usaron explícitamente los puntos de corte que pediste: [-inf, 20000), [20000,25000), …, [55000,60000), [60000,inf).
  • Resto de numéricas: binning por cuantiles (6 bins), cubriendo todo el rango.

Ejemplo gráfico para CustIncome (GRÁFICO 5):

3.3 Autobinning monotónico y revisión (PASOS 7–8)

Se aplicó un autobinning monotónico para cada predictor:

  • Se ordenan bins (por límites numéricos o por odds en categóricas).
  • Se recalculan WoE y se:
    • Fusionan bins con:
    • Good=0 o Bad=0.
    • Tamaño pequeño (share < 3 %).
    • Violación de monotonicidad WoE (en la dirección más consistente).
  • El resultado son bins:
    • Con tendencia WoE razonablemente monotónica.
    • Sin bins vacíos de Good o Bad (con smoothing interno).
    • Con tamaños razonables.

Las reglas finales de binning (numéricas y categóricas) y la tabla de IV están en:

  • Download file

Gráficos 6 – WoE final por variable (solo muestro algunos; todos están en la carpeta):

3.4 Information Value (PASOS 9–9)

IV por variable (ordenado de mayor a menor):

VariableIV
CustIncome0.1192
CustAge0.0910
TmWBank0.0619
EmpStatus0.0480
AMBalance0.0209
OtherCC0.0143
UtilRate0.0141
ResStatus0.0098
TmAtAddress0.0050

Interpretación rápida:

  • CustIncome, CustAge y TmWBank tienen IV próximos a 0,06–0,12 → poder predictivo moderado.
  • El resto son de IV bajo pero aceptables como soporte.

Gráfico 7 – IV por variable:


4. Transformación a WoE y regresión logística (PASOS 10–12)

  • Para cada cliente se asignó el bin correspondiente de cada predictor y se reemplazó por su WoE (matriz WoE).

  • Se ajustó una regresión logística:

    • Forma: logit(PD)=intercept+∑βi⋅WoEi\mathrm{logit}(PD) = \mathrm{intercept} + \sum \beta_i \cdot \mathrm{WoE}_ilogit(PD)=intercept+∑βi​⋅WoEi​.

Resultados del modelo

Se usaron todas las variables WoE. Métricas globales:

  • Pseudo R²: 0,0521.
  • Log-likelihood: −722,07.

Coefs principales (resumen):

  • Todos los coeficientes (incluyendo intercepto) salen con signo negativo, consistente con la construcción de WoE (bins más “malos” tienen WoE más alto, de forma que coeficiente negativo → mayor WoE implica mayor riesgo / mayor logit de PD antes del escalado a puntos).

Tabla completa de coeficientes y p-values:

  • Download file

VIFs (para revisar multicolinealidad en la matriz WoE):

  • Download file

5. Scorecard: escalado y puntos (PASOS 13–15)

Parámetros de escala utilizados (según tu especificación):

  • TargetPoints = 500.
  • TargetOdds = 2 (Good/Bad).
  • PDO = 50 puntos.

Se calculan:

  • factor=PDOln⁡(2)\mathrm{factor} = \frac{\mathrm{PDO}}{\ln(2)}factor=ln(2)PDO​
  • offset=TargetPoints−factor⋅ln⁡(TargetOdds)\mathrm{offset} = \mathrm{TargetPoints} - \mathrm{factor}\cdot\ln(\mathrm{TargetOdds})offset=TargetPoints−factor⋅ln(TargetOdds)

Con el intercepto del modelo, se obtiene:

  • BasePoints ≈ 500,71.

Puntos por bin de cada variable:

  • points_bin = - beta * WoE_bin * factor

  • Tabla completa de puntos:

    • Download file

Ejemplos de gráficos de puntos por bin (GRÁFICO 8):

Cada cliente recibe:

  • Score total = BasePoints + suma de puntos por predictor.

Distribución de scores (GRÁFICO 9):


6. Probability of Default, calibración y consistencia (PASOS 16–17)

Conversión Score → PD

Se usó exactamente tu fórmula:

  • oddsgood/bad=TargetOdds⋅2Score−TargetPointsPDO\mathrm{odds}_{good/bad} = \mathrm{TargetOdds} \cdot 2^{\frac{\mathrm{Score} - \mathrm{TargetPoints}}{\mathrm{PDO}}}oddsgood/bad​=TargetOdds⋅2PDOScore−TargetPoints​
  • PD=11+oddsgood/badPD = \frac{1}{1 + \mathrm{odds}_{good/bad}}PD=1+oddsgood/bad​1​

Se obtiene un PD por cliente en [0,1], recortado ligeramente para evitar 0/1 exactos.

Distribución de PD (GRÁFICO 10):

Verificación Score–Odds–PD

Se generó una tabla de diagnóstico para scores 450, 500, 550:

  • 500 → odds ≈ 2 (por construcción).
  • 550 → odds ≈ 4 (dupl. odds).
  • 450 → odds ≈ 1 (mitad de odds).

Archivo diagnóstico:

  • Download file

Relación score vs odds (GRÁFICO 11):


7. Validaciones ROC, CAP, KS (PASOS 18–20)

ROC y AUC

  • AUC: ≈ 0,351.
    • Es un valor bajo: el modelo discrimina poco entre buenos y malos.

ROC (GRÁFICO 12):

CAP y Accuracy Ratio

  • AR: ≈ 0,298 (también bajo, coherente con AUC).

CAP (GRÁFICO 13):

KS

  • KS_stat: ≈ 0,209.
  • Score cutoff asociado: ≈ 493,48.

KS (GRÁFICO 14):

Métricas ROC/CAP/KS consolidadas:

  • Download file

8. Validación por deciles y calibración (PASOS 21–22)

Deciles

Clientes ordenados por PD (más riesgoso decil 1). Para cada decil:

  • Número de clientes, Good, Bad, default observado, PD media predicha, odds observadas y score medio.

Extracto (deciles 1–10):

  • Decil 1 (mayor riesgo):
    • Observed default rate ≈ 59,17 %, PD media ≈ 57,06 %, score medio ≈ 429.
  • Decil 10 (menor riesgo):
    • Observed default rate ≈ 15,83 %, PD media ≈ 15,44 %, score medio ≈ 573.

Decile table:

  • Download file

Gráfico 15 – default observado vs predicho por decil:

Conclusión:

  • El ranking por riesgo funciona razonablemente (decil 1 >> decil 10 en tasa de default).
  • Sin embargo, el poder discriminante global es limitado (AUC y KS bajos).

Calibración PD

Se agruparon clientes en bins de PD y se comparó:

  • PD promedio predicha vs default observado.

Tabla de calibración:

  • Download file

Gráfico 16 – Calibration plot:


9. Análisis de cutoffs de decisión (PASOS 23–23)

Se evaluó una malla de cutoffs de score:

  • Para cada cutoff:
    • Approval rate.
    • Bad rate entre aprobados.
    • Capture rate de malos.
    • Expected loss proxy (PD medio de aprobados).

Tabla de cutoffs:

  • Download file

Gráfico 17 – Approval vs Bad Rate:

Esto te permite definir zonas de:

  • Aprobar (score alto → baja bad rate, menor coverage de malos).
  • Revisar (zona media).
  • Rechazar (score bajo → alta bad rate, buena captura de malos).

10. Validaciones finales y archivos clave (PASOS 24–26)

Chequeos adicionales:

  • status es binaria (0/1).
  • CustID no entra en el modelo.
  • No hay WoE infinitos ni PD fuera de [0,1].
  • El score es monótonamente decreciente con el riesgo a nivel agregado (scores más bajos → PD más alta).
  • Deciles están razonablemente ordenados por riesgo, aunque no perfectamente (warning leve).

Warnings consolidado en:

  • Download file

Paquete de outputs principales

  • Datos limpios: Download file
  • Reglas de binning + IV table: Download file
  • Modelo (coeficientes, p-values): Download file
  • Puntos por bin (scorecard): Download file
  • Scores y PD por cliente (incluye breakdown de puntos por variable): Download file
  • Métricas ROC/CAP/KS: Download file
  • Decile validation: Download file
  • Cutoff analysis: Download file

11. Recomendaciones y próximos pasos

  1. Uso conceptual / enseñanza:

    • El workflow implementa exactamente el “caso escuela” que describiste (WoE, IV, score scaling, PD, ROC/CAP/KS, deciles, cutoffs). Es un buen template didáctico.
  2. Mejora de performance:

    • Las métricas (AUC ≈ 0,35; KS ≈ 0,21; AR ≈ 0,30) indican modelo débil.
    • Para un uso productivo, sugeriría:
    • Incorporar más variables (historial de pagos, comportamiento, deuda total, etc.).
    • Probar formas de segmentación (por edad, ingresos, vintage).
    • Ajustar manualmente binnings clave (CustIncome, TmWBank, CustAge) buscando IV más alto y WoE más estable.
  3. Siguiente nivel:

    • Añadir regularización o selección de variables (por ejemplo L1) sobre las WoE para simplificar el modelo.
    • Hacer validación temporal o cross-validation más rigurosa.

Si quieres, en el siguiente paso puedo:

  • Generarte pseudocódigo / plantilla en Python o R para replicar este flujo en tu entorno.
  • O profundizar en una parte concreta (por ejemplo, explicar en detalle cómo se hace el autobinning monotónico o cómo interpretar cada gráfico).

Nuestro Asistente es una herramienta de inteligencia artificial. La información generada no debe considerarse asesoramiento oficial