Ingeniería de variables para crédito y riesgo

Razones, rezagos, ventanas móviles, variables de tendencia y codificación WOE — cómo los datos crudos de préstamos se vuelven alimento para el modelo sin fugar el futuro ni explotar en producción.

El Módulo 1 trataba de no engañarte cuando miras datos financieros. Este trata del paso donde realmente se gana o se pierde la mayor parte del desempeño de un modelo de crédito: convertir registros crudos en variables. El algoritmo importa mucho menos de lo que la gente cree — una regresión logística con variables excelentes le gana a un gradient boosting con variables flojas, y todo modelador de crédito con experiencia ha visto ocurrir esa sorpresa.

A lo largo del módulo, el ejemplo recurrente es el planteamiento estándar de crédito: un panel préstamo-mes (una fila por préstamo por mes) con saldos, pagos, límites y estatus de morosidad, a partir del cual predecimos el incumplimiento en los próximos 12 meses.

Primero, fija el diseño de observación

Antes de que exista cualquier variable, tres decisiones de diseño definen qué es una fila — si las tomas mal, ninguna variable puede salvarte:

  1. Fecha de corte (snapshot) — el momento en el que finges estar parado. Cada variable debe poder calcularse con datos disponibles estrictamente antes de esta fecha (la regla de anticipación (lookahead) del Módulo 1, que ahora carga peso estructural).
  2. Ventana de desempeño — qué tan adelante miras para el desenlace (¿incumplimiento en 12 meses? ¿24?). Ventanas más largas significan más positivos pero relaciones más rancias — y pierdes silenciosamente el año (o años) más reciente de datos, que todavía no se puede etiquetar.
  3. La definición de malo — 90+ días de atraso es lo convencional, pero elijas lo que elijas, el modelo predice exactamente eso, no el “incumplimiento” en abstracto.

Razones: la transformación caballo de batalla

Las magnitudes crudas casi nunca son buenas variables de crédito: un saldo de $5,000 es alarmante con un límite de $6,000 y trivial con uno de $100,000. Dividir arregla tres problemas a la vez — elimina la escala (así la variable se transfiere entre acreditados chicos y grandes), codifica conocimiento del dominio (utilización = dependencia del dinero prestado) y hace las distribuciones mucho más estables en el tiempo conforme los portafolios crecen y la inflación se mueve.

Las clásicas se ganan su lugar: utilización (saldo/límite), razón de pago (pago/pago mínimo), deuda-a-ingreso, meses de colchón de efectivo. La ruta de modelos de crédito corre sobre las versiones corporativas — cobertura, apalancamiento, rotación.

Higiene de razones, aprendida a la mala:

Rezagos y ventanas móviles: meterle tiempo a una fila

La foto de un solo mes desperdicia el verdadero activo del panel: la trayectoria. El kit de herramientas, en orden creciente de sofisticación:

Rezagos — el valor de hace kk meses: utilization_lag3, dpd_lag1. Baratos, interpretables, y le permiten a un modelo puntual ver el cambio: el par (ahora, hace 6 meses) es una derivada burda.

Agregados móviles — estadísticas sobre una ventana hacia atrás: mean(utilization, 6m), max(days_past_due, 12m), count(payments_missed, 24m). Tres reglas de diseño de ventanas:

Variables de tendencia — la dirección: utilization_now − utilization_6m_ago, o la pendiente de una regresión sobre la ventana. Dos acreditados al 60% de utilización son animales distintos si uno venía del 30% y el otro del 90%. Utilización al alza más razón de pago a la baja es la firma clásica de pre-morosidad — cada variable es mediocre sola y fuerte en conjunto.

Categóricas: el caso a favor de la codificación WOE

El one-hot encoding, el default del machine learning, se porta mal con datos de crédito: los campos de alta cardinalidad (región, industria, código de producto) explotan en dummies dispersas; las categorías raras reciben coeficientes ajustados con un puñado de préstamos; y la primera categoría no vista en producción lanza un error a la hora de calificar.

La respuesta de casa del modelado de crédito es la codificación Weight of Evidence — reemplaza cada categoría (o bin numérico) con la razón de log-odds que trae consigo:

WOEi=ln ⁣(%de buenos en la categorıˊi%de malos en la categorıˊi)\text{WOE}_i = \ln\!\left(\frac{\%\,\text{de buenos en la categoría } i}{\%\,\text{de malos en la categoría } i}\right)

La misma transformación que construye scorecards en el Módulo 2 de modelos de crédito es, desde el lado de la ciencia de datos, un codificador supervisado: sale una sola columna numérica sin importar la cardinalidad, los valores faltantes se vuelven simplemente otra categoría, y la escala codificada ya está en log-odds — exactamente lo que un modelo logístico quiere consumir de forma lineal.

Para variables continuas, WOE necesita bins primero, y el binning es donde entra el juicio: muy pocos bins desperdician señal, demasiados producen estimaciones de WOE ruidosas en celdas delgadas, y un validador rechazará (con razón) una variable de utilización cuyo patrón de riesgo zigzaguea. Construye la intuición a mano:

Explorador de Binning WOE

Un portafolio sintético donde mayor utilización significa más incumplimientos. Mueve los cuatro puntos de corte y observa cómo responden el Weight of Evidence de cada bin y el Information Value total.

Bin Part. pobl. Tasa de malos % buenos % malos WOE Contrib. IV
Information Value total
Diagnóstico

Nota el trade-off conforme mueves los cortes: empujar un borde hacia la cola dispersa de alta utilización hace que el WOE de ese bin sea dramático e inestable — el diagnóstico lo marca. La práctica estándar es el binning monotónico: elige los bordes de modo que el WOE se mueva en una sola dirección, aceptando un IV in-sample ligeramente menor a cambio de un patrón que generaliza y que se le puede explicar a un regulador en una oración.

Faltantes, interacciones y el checklist

Tres hábitos de cierre. Primero, según el Módulo 1: lo faltante significa algo en datos de crédito — codifica indicadores o dale a lo faltante su propio bin de WOE; nunca imputes la media en silencio. Segundo, interacciones: expediente delgado × alta utilización es más riesgoso que cualquiera de los dos por separado; en el mundo de los scorecards estas se codifican como bins específicos por segmento (o scorecards separados — la segmentación de FICO del Módulo 2 de modelos de crédito es exactamente esta idea), mientras que los modelos basados en árboles las encuentran automáticamente al costo de explicarlas después. Tercero, escribe el diccionario de variables sobre la marcha — nombre, fórmula, ventana, rezago de disponibilidad, regla de valores faltantes. La validación de modelos lo va a exigir, el monitoreo en producción va a depender de él, y tu yo del futuro no va a recordar qué significaba util_wavg_6m_v3.

El checklist pre-modelado:

  1. ¿Cada variable es computable estrictamente antes de la fecha de corte, con su verdadero rezago de disponibilidad?
  2. ¿Todas las razones están topadas, con los denominadores degenerados marcados?
  3. ¿Las ventanas móviles terminan en t1t-1 con longitudes documentadas?
  4. ¿Los mapeos de WOE se ajustan out-of-fold, con suavizamiento en celdas delgadas?
  5. ¿El patrón de WOE de cada variable con bins es monótono (o defendiblemente no)?
  6. ¿Existe el diccionario de variables y coincide con el código?

Dónde conecta esto

Pruébalo tú mismo

El notebook de abajo genera un panel préstamo-mes sintético (5,000 préstamos, 36 meses, con comportamiento de incumplimiento diseñado a propósito), y luego construye el conjunto completo de variables de este post: razones con higiene, rezagos, medias/máximos móviles con la alineación de frontera correcta, pendientes de tendencia y codificación WOE con ajuste out-of-fold — y cuantifica la fuga de información que obtienes cuando se rompen las reglas de frontera y de out-of-fold, comparando el AUC in-sample contra el out-of-time para las versiones limpia y con fuga de las mismas variables. Cada sección es ejecutable de principio a fin.

Ingeniería de variables para crédito (notebook de Jupyter)
Descarga gratuita, sin registro (archivo en inglés).
Descargar

Recibe los nuevos posts por correo

Un correo por cada artículo nuevo. Sin spam, sin ventas, cancela cuando quieras.