Foto enhanced

Trader cuantitativo y autor de ‘Trading Algorítmico con Python: Desarrolla tus habilidades en el Trading Algorítmico’. Gestor del Darwin TWCS en Darwinex, donde aplica estrategias automatizadas para operar en los mercados.
Brett N. Steenbarger, Ph.D. / Trading Algorítmico con Python

 

  • Detectar días atípicos ya no depende sólo de cuántos sigmas” te separan del promedio. Con DBSCAN y un enfoque por densidad, puedes descubrir cuándo el mercado realmente rompe el guion.
  • Artículo publicado en Hispatrading 63.

Cada vez que repasamos un gráfico largo (da igual si es el S&P 500 o los futuros de zumo de naranja congelado) aparecen velas imposibles de ignorar: sesiones que se desploman de un plumazo, subidones que se salen de escala o días tan planos que jurarías que el mercado está en coma.

Y esas rarezas cuentan. Si entrenas un modelo de volatilidad, un flash-crash puede inflar la varianza y convertir tu stop-loss en una broma. Si construyes una serie sintética para backtest, un dato mal calibrado echa todo el experimento por tierra. Y, en intradía, un rango extrañamente ancho debería encender la alarma antes de que sigas comprando como si nada.

En mi libro dedico un capítulo a los filtros “de siempre” (z-score, IQR, MAD) porque son rápidos y funcionan bien mientras la distribución se porte con cierta estabilidad. Pero los mercados cambian de humor: pasan del aburrimiento al pánico y de ahí a la euforia en un parpadeo. Aquí el umbral global se queda corto: o pinta medio gráfico en rojo o no marca absolutamente nada.

Hoy desempolvamos nuestras Ray-Ban más rockeras y miramos con otra óptica: DBSCAN. 

Dejamos atrás el “¿a cuántas desviaciones estás?” para fijarnos en “¿cuántos colegas tienes alrededor?”

Ya lo menciono de pasada en el libro, pero hoy profundizaremos en su funcionamiento.

¿Qué es DBSCAN y por qué lo elegimos?

DBSCAN es un algoritmo ML no supervisado de clustering que agrupa puntos según su densidad local. Imagina que tu serie temporal son vecinos en un barrio:

  1. Dibujas un círculo de radio eps alrededor de cada dato (cada “casa”).
  2. Cuentas cuántos vecinos hay dentro de ese círculo.
    • Si hay al menos k vecinos, esa casa forma parte de un barrio (un cluster)
    • Si hay menos de k, la casa queda señalada como ruido (outlier).

Esa forma de trabajar lo hace poderoso para detectar valores atípicos porque:

  • No presupone forma alguna de la distribución (olvida las campanas de Gauss).
  • Se adapta a múltiples “regímenes” o “climas” de volatilidad (clusters separados).
  • Sólo requiere dos parámetros claros: el radio eps y el tamaño mínimo de vecindario k.

Qué medimos exactamente

Para no complicarme uso el ETF SPY en velas diarias y destilo cada día en dos números, ambos en porcentaje:

  1. Retorno diario (el salto de cierre a cierre).
  2. Rango intradía (High − Low sobre el cierre).

Trabajar en % nos libera del nivel del índice y de los splits; y al estandarizar con un RobustScaler (mediana cero, IQR = 1) ambos ejes pesan parecido en la distancia que DBSCAN calcula.

Figura 01

Elegir k sin volverse loco

Me gusta una regla que escala con el número de filas:

k=⌈log2​n⌉ 

Seis años de datos diarios son unas 1.500 barras, así que k = 11.
No es un valor sagrado, pero log2n crece despacio (cada vez que doblas la muestra añades un vecino) y evita que con 20.000 datos pidamos el mismo k que con 200.

Figura 02 Figura 03

Encontrar eps a ojo: la curva k-distance

Ordeno la distancia al 11.º vecino de cada punto y la dibujo.
Durante la mayor parte del trayecto la curva es casi plana: los puntos viven apretados. Al final se dispara en vertical: ahí está el codo. En SPY el codo cae en torno a 0.8. Ese valor será mi eps.

Para convencerme de que no es casual bajo k a 6 y lo subo a 16. Con 6 vecinos el codo se desplaza a 0.45 y DBSCAN etiqueta 54 días raros, con 16 sube a 1.1 y sólo marca 29. El término medio (k = 11, eps = 0.8) se queda con 39 outliers.

Figura 04 Figura 05

Lo que aparece en el gráfico

Al lanzar DBSCAN esos veintinueve días se pintan de rojo sobre la curva del precio:

  • Todo marzo 2020 arde en rojo vivo: es el “crash Covid”, como era de esperar.
  • Febrero 2022 y otoño 2022: los sustos iniciales de la invasión de Ucrania y los repuntes inflacionarios.
  • Y abril de este año, cómo no, con saltos de dos dígitos que no podían quedarse sin su ración de outliers, destacando el repunte del 10.50 % del 09-04-2025 y varios rebotes demoledores, que dejaron aquella jornada a 9.23 unidades de distancia de su vecindario.

Figura 06 Figura 7

Ponerles nombre y apellidos

Para no quedarnos en el gráfico, extraemos los diez días más extremos ordenados por la distancia al 11.º vecino (kdist):

Fecha Retorno (%) Rango (%) Dist-k
2025-04-09 +10.50 10.13 9.23
2020-03-16 –10.94 8.15 6.94
2020-03-13 +8.55 8.53 6.83
2020-03-12 –9.57 7.65 5.71
2020-03-24 +9.06 4.24 4.97
2020-03-18 –5.06 8.48 4.95
2020-03-17 +5.40 7.56 4.74
2020-04-06 +6.72 7.11 4.69
2025-04-07 –0.18 8.20 4.31
2025-04-08 –1.57 7.21 3.57

Figura 08

 

kdist es, literalmente, “lo lejos que quedó el punto de sus vecinos”, así que sirve de ranking natural:  el 9 de abril de 2025 lidera la clasificación con un repunte brutal del 10.5 % y un rango de vela igual de descomunal tan excéntrico que casi vive en una galaxia muy, muy lejana.

¿Cuándo confiar en esta foto y cuándo no?

DBSCAN brilla cuando la serie mezcla climas distintos o cuando quieres aislar saltos de datos sin suponer normalidad. No es la mejor opción en alta frecuencia con millones de filas (su complejidad se dispara) o no puedes estandarizar los ejes (un retorno de 3 % pesará menos que un rango de 10 %, y el círculo eps se deforma).

Moraleja

Los filtros de “tres sigmas” seguirán en la caja de herramientas, pero a veces necesitamos preguntar “¿hay alguien ahí afuera?” en lugar de “¿a cuántos sigmas estoy?”. Con un k que crezca con la muestra y un vistazo rápido a la curva del codo, DBSCAN te da una lista corta y razonada de días que merecen una lupa especial.

Vale para el S&P 500, pero también para el bitcoin, para un sensor industrial o para las ventas diarias de tu tienda online: cambia el ticker, conserva la lógica y deja que el algoritmo te señale cuándo el mundo realmente se salió del guion.

https://colab.research.google.com/drive/12bl76NrK9izlrIQPh5oMZ2DbtNtzC7yx?usp=sharing