Sports Performance Engine Por qué predecir LaLiga es más difícil de lo que parece

Python LightGBM XGBoost Elo rating football-data.co.uk API-Football FastAPI
Sports Performance Engine
Motor de predicción de resultados (1X2) de LaLiga entrenado con más de 6.000 partidos reales de 16 temporadas (football-data.co.uk, datos públicos). Features con higiene temporal estricta: rating Elo calculado partido a partido, forma reciente, goles y tiros a puerta rolling. Ensemble LightGBM + XGBoost con split temporal (test = temporadas 24/25 y 25/26). La evaluación es deliberadamente honesta: se compara contra las probabilidades implícitas de las cuotas de cierre (Pinnacle/B365, margen descontado), que son el techo práctico de esta tarea porque el mercado agrega información que las estadísticas públicas no tienen (alineaciones, lesiones, dinero informado). Resultado: el modelo recupera la mayor parte del edge del mercado usando solo datos públicos, quedando a 2.2 puntos de accuracy del cierre de los bookies.

Integración, datos y licencia

  • Integración: API REST propia (FastAPI) con 10 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.
  • 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 clasificación en vivo, próximos partidos y predicciones por competición.

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):

  • API-Football / SportMonks: proveedores de datos deportivos para ampliar a más ligas sin montar el scraping propio.
  • Opta / StatsPerform: datos de evento (por jugada) si se quiere subir el nivel del modelo; son de pago y con contrato.
  • Medios y webs deportivas: widget embebible con la predicción del próximo partido; el uso más directo del endpoint tal cual está.
Mapa del bucleDisparador: Llega la jornada y quiero una referencia propia antes de mirar las cuotas.. Acción: Estima la probabilidad de victoria local, empate y visitante con un ensemble entrenado con 16 temporadas.. Medición: La probabilidad de cada resultado y la comparación contra la cuota de cierre del mercado.. Decisión: Decido si el mercado se está dejando algo o si mejor no toco nada..EL BUCLE QUE CIERRAPara quien quiere saber si unacuota de LaLiga está bien puesta1DISPARADORLlega la jornada y quierouna referencia propia antesde mirar las cuotas.2ACCIÓNEstima la probabilidad devictoria local, empate yvisitante con un ensembleentrenado con 16 temporadas.3MEDICIÓNLa probabilidad de cadaresultado y la comparacióncontra la cuota de cierredel mercado.4DECISIÓNDecido si el mercado se estádejando algo o si mejor notoco nada.Cada jornadalo hace una personalo hace el software

Descargar el diagrama (SVG)

Resultados

52.6%
accuracy del modelo (test 24/25-25/26)
vs 54.9% del mercado (cuotas de cierre) y 46.7% del baseline ingenuo
6.031
partidos REALES
16 temporadas de LaLiga · football-data.co.uk · split temporal
−2.2 pp
gap honesto vs bookies
el mercado es el techo práctico; el modelo solo usa stats públicas
Elo + forma
features con higiene temporal
rating Elo partido a partido, sin filtración de futuro

Funcionalidades implementadas

  • Datos reales StatsBomb. Entrenado sobre StatsBomb Open Data con estadísticas de evento de LaLiga y Champions League, las más detalladas del mundo del fútbol.
  • Ensemble LightGBM + XGBoost. Dos modelos optimizados con Optuna se combinan en ensemble pesado. La predicción final combina la fortaleza de ambos algoritmos.
  • Explicabilidad por partido. SHAP TreeExplainer desglosa cada predicción: qué features empujaron hacia victoria local, empate o visitante y en qué medida.
  • Rolling stats temporales. Las features capturan la forma reciente del equipo (últimos 5/10 partidos) con medias móviles de xG, presiones y posesión.

Límites

Lo que no hace

  • No promete ganar dinero: el acierto es del 52,6 % y el mercado sigue siendo el techo.
  • Solo LaLiga: está entrenado con partidos de primera división española.
  • No apuesta ni se conecta a ninguna casa: se queda en la estimación.

Decisiones

Por qué está construido así

  • Medirse contra la cuota de cierre en vez de publicar solo el acierto del modelo

    Un 52 % de acierto suena bien hasta que ves que el mercado hace más. Comparar contra la cuota de cierre es lo único que dice si aporta algo.

  • Datos públicos sin API key en vez de un proveedor de datos deportivos de pago

    Cualquiera puede reproducir el entrenamiento entero descargando los mismos CSV, sin pedir una credencial a nadie.

Try Live Demo View Code

Cómo está construido

Sports Performance Engine: predecir fútbol con datos StatsBomb y un ensemble LightGBM+XGBoost El fútbol es ruidoso: gana el peor equipo más de lo que la gente cree. Con datos StatsBomb, features rolling y un ensemble LightGBM+XGBoost validado con TimeSeriesSp...