← Todos los artículos
· 3 min de lectura

Fusionar 3 fuentes de señal para el IBEX35: técnico, sentimiento y geopolítica (GDELT)

Un ensemble que combina LightGBM sobre 25+ indicadores técnicos, sentimiento de noticias y eventos geopolíticos de GDELT. Por qué el Sharpe importa más que el accuracy. Educativo, no consejo.

#Machine Learning#LightGBM#Finanzas#GDELT#SHAP#Series temporales
Fusionar 3 fuentes de señal para el IBEX35: técnico, sentimiento y geopolítica (GDELT)

Aviso importante: esto es un proyecto de investigación y demostración técnica. Las señales que genera no son asesoramiento financiero ni recomendación de inversión. Lo interesante aquí no es "ganar a la bolsa" (spoiler: predecir la dirección del mercado es casi imposible), sino cómo se combinan tres fuentes de señal muy distintas en un solo modelo.

La honestidad primero: el mercado es casi aleatorio

Voy a empezar por el número más incómodo: el AUC-ROC del clasificador es 0.5280. Un AUC de 0.5 es puro azar. ¿Fracaso? No: es exactamente lo que la literatura predice para la predicción de dirección de mercado a corto plazo. Cualquiera que te enseñe un AUC de 0.85 prediciendo si el IBEX sube mañana o te está engañando o tiene data leakage. La pregunta correcta no es "¿aciertas la dirección?" sino "¿gestionas el riesgo mejor que comprar y esperar?".

MétricaEstrategiaBuy & Hold
Ratio de Sharpe2.561.83
AUC-ROC dirección0.528 (≈ azar, esperado)

Ahí está el valor: un Sharpe de 2.56 frente a 1.83 del Buy & Hold. El sistema no acierta más veces; pierde menos cuando se equivoca.

Las tres fuentes

La señal final es un ensemble de tres perspectivas independientes sobre cada uno de los 15 tickers del IBEX35 (5 años de OHLCV vía yfinance):

Nota de transparencia: el diseño original contemplaba ProsusAI/finbert (441 MB) para el sentimiento. En la demo del portfolio uso análisis heurístico por palabras clave, más ligero; FinBERT se integraría en producción con inferencia por lotes nocturna. Lo cuento porque prometer "FinBERT" y servir otra cosa sería mentir, y este portfolio se toma la honestidad en serio.

Explicabilidad: SHAP por ticker

Un modelo de trading que no puedes explicar es inservible. Cada señal viene con sus valores SHAP (TreeExplainer sobre el LightGBM), que dicen exactamente qué indicador empujó la decisión:

import shap
explainer = shap.TreeExplainer(model)
shap_values = explainer.shap_values(X_ticker)
# → "COMPRA de SAN.MC: +0.12 por RSI(14)=58, +0.04 por MACD>0, -0.02 por tensión GDELT"

Por qué fusionar y no elegir

Cada fuente sola es débil. El técnico ve patrones pero es ciego a una crisis diplomática; GDELT ve la crisis pero no la sobrecompra técnica. Combinarlas no sube el accuracy mágicamente —el mercado sigue siendo casi aleatorio— pero reduce los falsos positivos caros: la señal técnica de compra se atenúa si GDELT detecta tensión alta. Eso es lo que mueve el Sharpe.

Pruébalo tú mismo

Es un proyecto personal y open source: no vendo nada, solo comparto cómo está construido. Puedes probar la demo en vivo y trastear con ella. El código está en GitHub. Si te resulta útil o tienes una idea para mejorarlo, encantado de leerla.

Sobre este proyecto

AlphaSignal — Laboratorio de señales IBEX35

Pipeline three-source para el IBEX35: LightGBM técnico + sentimiento de noticias (heurístico) + GDELT (geopolítica), con actualización diaria. Evaluación transparente: el modelo ti...

Newsletter

¿Te aviso de nuevos proyectos y artículos?

Sin spam. Solo un email cuando publico algo nuevo de IA. Baja en un clic.

Sigue leyendo