EDA para datos financieros — Las trampas

Seis maneras en que los datos financieros hacen tropezar al análisis exploratorio: colas pesadas, sesgo de supervivencia, sesgo de anticipación (lookahead), cambios de régimen, faltantes que significan algo y minas ocultas en las zonas horarias.

El análisis exploratorio de datos es lo primero que haces con un dataset nuevo, y los datos financieros tienen un conjunto específico de trampas de las que los tutoriales de EDA nunca te advierten. Estas son en las que he visto caer a gente inteligente.

1. Las colas pesadas no son outliers

En una distribución normal, un evento de 5 sigmas ocurre aproximadamente una vez cada 1.7 millones de observaciones. En rendimientos accionarios diarios, los días de 5 sigmas ocurren varias veces por década. No son errores en los datos: son los datos.

Si tu pipeline de EDA elimina automáticamente los “outliers” por z-score, acabas de tirar a la basura las observaciones más informativas — los días que de verdad importan para el riesgo. No winsorices a ciegas.

Qué hacer en su lugar: grafica la CDF empírica en escala logarítmica. Observa el comportamiento de la cola directamente. Si tienes que recortar, recorta con criterios documentados de errores de datos (por ejemplo, ajustes por splits accionarios que sabes que faltan), no con criterios estadísticos.

2. Sesgo de supervivencia

Si tomas “todas las empresas que están hoy en el S&P 500” y haces backtesting de una estrategia con ellas, seleccionaste a los ganadores. Los perdedores fueron deslistados y no están en tu muestra. Obtendrás rendimientos 1–2% más altos por año que la realidad.

La misma trampa con los fondos de inversión: las bases de datos como Morningstar que solo incluyen fondos vivos tienen ~1% anual de sesgo de supervivencia. Los fondos muertos tuvieron peores rendimientos y desaparecieron.

Qué hacer en su lugar: usa datos point-in-time — el universo tal como era en cada fecha histórica, no como es ahora. CRSP para acciones de EE. UU. lo tiene. Para crédito corporativo, usa CompuStat con estados financieros point-in-time.

3. Sesgo de anticipación (lookahead)

Más fácil de describir que de evitar. Construyes una variable usando las utilidades del Q1 como si las conocieras el 1 de enero — pero las utilidades no se reportan hasta finales de febrero o marzo. Tu modelo “conoce el futuro” y se ve brillante en el backtest.

Qué hacer en su lugar: rezaga cada variable según su fecha real de disponibilidad. Para datos contables, esa es la fecha de presentación (o la fecha de presentación + un colchón para “cuando el mercado realmente la procesó”). Para datos macro, cuida la distinción entre fecha de publicación y periodo de referencia (una cifra etiquetada “CPI de enero de 2026” se publica a mediados de febrero).

4. Los cambios de régimen rompen la estacionariedad

La mayoría del machine learning asume que el proceso generador de datos no cambia. Los datos financieros violan esto constantemente: regímenes de política monetaria, cambios en la estructura del mercado, transformaciones tecnológicas en el trading.

Un modelo entrenado con 2010–2019 (tasas cero, baja volatilidad) es un modelo distinto a uno entrenado incluyendo 2020–2022. La crisis de 2008 rompió modelos que habían funcionado de maravilla durante una década.

Qué hacer en su lugar: revisa la estacionariedad (prueba ADF, prueba KPSS, pero sobre todo inspección visual). Grafica medias móviles y correlaciones móviles. Si van a la deriva, tu modelo probablemente no va a generalizar.

5. Los valores faltantes significan cosas

En un dataset de encuestas, un faltante puede significar “el encuestado se saltó esta pregunta”. En datos financieros, un faltante normalmente significa algo específico que deberías codificar:

No imputes la media. No imputes la mediana. Crea un indicador de faltante y deja que el modelo lo use.

6. Zonas horarias y calendarios bursátiles

Dos maneras en que esto se rompe:

Un checklist de EDA útil para cualquier dataset financiero nuevo

Antes de cualquier modelado, escribe las respuestas a:

  1. ¿Cuál es realmente la unidad de observación? (¿Préstamo? ¿Acreditado? ¿Préstamo-mes?)
  2. ¿Qué es realmente la columna de fecha — originación, observación o fecha de reporte?
  3. ¿Cuál es la regla de selección del universo? ¿Es point-in-time o la lista actual?
  4. ¿Qué fracción falta por columna, y qué significa cada faltante?
  5. ¿Cómo se ve la cola? (CDF empírica en escala logarítmica.)
  6. ¿Hay un quiebre estructural en la serie de tiempo? ¿Dónde?
  7. ¿Cuál es la fecha más temprana en la que cada variable habría sido conocible?

Si puedes responder las siete antes de ajustar un solo modelo, ya evitaste las vergüenzas más comunes.


Lo que sigue en esta ruta: Módulo 2 — Ingeniería de variables para crédito y riesgo — construir variables que respeten todas las trampas de arriba, usando WOE e Information Value (que también usaremos en el post de modelos de crédito sobre Scoring de crédito retail).


Recibe los nuevos posts por correo

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