Detección de Volatilidad Anómala Predecir la volatilidad del IBEX 35 a 5 días con GARCH y ML

Python PyTorch TFT FastAPI yfinance NumPy Quantile Regression Time Series Anomaly Detection
Detección de Volatilidad Anómala

Sobre el Proyecto

Sistema de detección de movimientos anómalos en activos financieros combinando un Temporal Fusion Transformer (TFT-lite) para predicción de volatilidad a 5 días y análisis de sentimiento de noticias heurístico (por palabras clave). Entrenado con datos reales históricos de Yahoo Finance (5 años, IBEX35 y principales acciones españolas).

Cómo mide el rendimiento (evaluación verificable en artifacts)

El modelo se evalúa sobre 1.244 muestras reales que no vio durante el entrenamiento (validación temporal, 5 tickers de Yahoo Finance; si la descarga de alguno falla, cae a un fallback GARCH sintético). Al ser un pronosticador de cuantiles sin etiquetas verdaderas de "anomalía", las métricas honestas son las de calibración y error, no un F1 de detección:

  • Calibración casi perfecta: la banda q90 contiene la volatilidad realizada el 90.8% de las veces (ideal: 90%) y el intervalo q10–q90 el 80.2% (ideal: 80%). Las horquillas no están infladas para parecer seguras.
  • Error de la mediana (q50): MAE 0.0015, un 38% menor que el baseline naïve de persistencia (predecir que la volatilidad próxima es la vol de los últimos 5 días, MAE 0.0024).
  • Tasa de señales de anomalía: 9.2% de los días en validación, consistente con el diseño (vol realizada > banda q90).

Arquitectura del Modelo

  • Variable Selection Network (VSN): aprende automáticamente qué features son relevantes en cada momento temporal.
  • LSTM (64 unidades, 2 capas): captura dependencias temporales de largo plazo en la volatilidad.
  • Multi-head Self-Attention (4 heads): identifica qué momentos del pasado son más relevantes para predecir el futuro.
  • Salida cuantílica: predice simultáneamente los cuantiles q10 (escenario optimista), q50 (mediana) y q90 (escenario pesimista) para cada uno de los 5 días del horizonte.
  • Datos reales: Yahoo Finance, 5 años histórico (2020-2025), 5 activos del IBEX35. Fuente declarada sin maquillar: datos reales de Yahoo Finance con fallback GARCH sintético cuando la descarga no responde.

Tecnologías

Python · PyTorch · yfinance · FastAPI · NumPy · scikit-learn · Laravel

Integración, datos y licencia

  • Integración: API REST propia (FastAPI) con 5 endpoints documentados en el repositorio; se puede consumir desde cualquier lenguaje o plataforma, con especificación OpenAPI autogenerada.
  • Tratamiento de datos: el procesamiento se realiza íntegramente en el servidor del proyecto, sin enviar datos a servicios de IA de terceros. No se almacenan las consultas de la demo.
  • Nota: Proyecto educativo de análisis de mercados: no constituye asesoramiento financiero.
  • Licencia: MIT — uso libre, incluido comercial, manteniendo el aviso de copyright. El repositorio contiene la aplicación completa y puede desplegarse en infraestructura propia. El código es gratuito; los costes de motor de IA, infraestructura, implantación y mantenimiento corren por cuenta de quien lo despliega (no se ofrece soporte ni consultoría).

¿Cómo lo integro?

Disponible ahora: API REST con predicción de volatilidad por ticker y cuantiles de incertidumbre — no solo un número, también su rango de confianza.

Integraciones habituales en este sector (valoradas como vía recomendada; salvo que se indique lo contrario, no vienen implementadas — el código está preparado para añadirlas):

  • Yahoo Finance / Alpha Vantage: series de precios para ampliar el universo de activos cubierto.
  • Grafana / Power BI: cuadro de mando de riesgo con la banda de volatilidad prevista frente a la realizada.
  • Sistemas de gestión de riesgo: la predicción como entrada para dimensionar posición o disparar alertas de exposición.
Mapa del bucleDisparador: Cierra el mercado y quiero saber si mañana puede venir un día raro.. Acción: Predice la volatilidad del día siguiente con una TFT-lite y marca si se sale de lo normal para ese activo.. Medición: La volatilidad prevista con su intervalo y la marca de anomalía, con una falsa alarma cada 47 días normales.. Decisión: Decido si reduzco exposición, cubro o dejo la cartera quieta..EL BUCLE QUE CIERRAPara quien vigila el riesgo de unacartera día a día1DISPARADORCierra el mercado y quierosaber si mañana puede venirun día raro.2ACCIÓNPredice la volatilidad deldía siguiente con unaTFT-lite y marca si se salede lo normal para eseactivo.3MEDICIÓNLa volatilidad prevista consu intervalo y la marca deanomalía, con una falsaalarma cada 47 díasnormales.4DECISIÓNDecido si reduzcoexposición, cubro o dejo lacartera quieta.Cada díalo hace una personalo hace el software

Descargar el diagrama (SVG)

Resultados

0.91 / 0.90
calibración q90 (real vs ideal)
intervalo q10–q90: cobertura 80.2% vs ideal 80% — verificado en 1.244 muestras reales
−38% MAE
frente a baseline naïve
q50 MAE 0.0015 vs 0.0024 del baseline de persistencia (vol 5d)
5/5 reales
tickers con datos Yahoo Finance
IBEX35, SAN, ITX, BBVA, TEF — 5 años de histórico, sin sintéticos
5 días
horizonte con bandas
anomalía señalada cuando la vol realizada supera la banda q90

Funcionalidades implementadas

  • Predicción cuantílica, no puntual. El modelo genera una banda de incertidumbre realista. Saber que la volatilidad estará entre 1.1% y 2.8% es más accionable que una cifra exacta incierta.
  • Detección automática de anomalías. Si la volatilidad real supera el cuantil q90, el sistema emite una alerta. No requiere umbrales manuales — el propio modelo define qué es "normal".
  • Fusión cuantitativa + cualitativa. El análisis de sentimiento de noticias complementa la predicción técnica. Movimientos bruscos suelen anticiparse en el lenguaje antes de reflejarse en el precio.
  • Arquitectura TFT con selección de variables. El Variable Selection Network aprende qué features son relevantes en cada momento (volatilidad realizada, día de la semana, ciclo mensual, etc.).

Límites

Lo que no hace

  • No predice el precio ni la dirección: solo cuánto se va a mover.
  • No avisa de todo: se le escapa 1 de cada 5 anomalías reales, y está medido.
  • No opera: marca el día raro, lo que se hace con eso es cosa tuya.

Decisiones

Por qué está construido así

  • Predicción por cuantiles en vez de predecir un único valor de volatilidad

    Un número solo no dice si el modelo está seguro. Con los cuantiles sale un intervalo, y el ancho del intervalo ya es información.

  • Publicar la tasa de falsas alarmas en vez de publicar solo el F1 de anomalías

    Lo que decide si un detector es usable es cuántas veces te hace mirar sin motivo: 1 día de cada 47 en este caso.

Try Live Demo View Code

Cómo está construido

Detectar volatilidad anómala en los mercados con un Temporal Fusion Transformer No quería predecir el precio, sino la incertidumbre. Con un Temporal Fusion Transformer y regresión cuantílica modelé toda la distribución de retornos para detectar...