Sin datos
Ejecuta python build.py para cargar resultado.xlsx,
luego npm run dev.
Sin datos
Ejecuta python build.py para cargar resultado.xlsx,
luego npm run dev.
Sin datos
Ejecuta python build.py para cargar resultado.xlsx,
luego npm run dev.
⚽ LaLiga 2025-26 · ELO + Simulador
Herramienta de análisis y simulación de la clasificación final de LaLiga basada en el sistema de puntuación ELO.
📊 Las tres pestañas
- Dificultad — Muestra el índice de dificultad del calendario restante de cada equipo, calculado como la media del ELO compuesto de sus rivales pendientes.
- ELO — Tabla ordenable con el ELO temporada, ELO forma y ELO compuesto de los 20 equipos, más el gráfico de evolución a lo largo de las jornadas.
- Simulador — Permite fijar resultados para las jornadas pendientes y ver en tiempo real la clasificación final proyectada con zonas europeas y descenso.
📈 Sistema ELO
Cada equipo arranca en ELO 1000. Tras cada partido se ajustan los puntos según la probabilidad esperada y el resultado real:
El factor K varía según la diferencia de goles:
| Diferencia | Factor K |
|---|---|
| 0 goles (empate) | 24 × 1.0 = 24 |
| 1 gol | 24 × 1.2 = 28.8 |
| 2 goles | 24 × 1.4 = 33.6 |
| ≥ 3 goles | 24 × 1.6 = 38.4 |
El equipo local recibe +50 puntos de ventaja en el cálculo de la probabilidad esperada.
⚖️ ELO Temporada vs ELO Forma
- ELO Temporada — ELO acumulado desde el inicio de la temporada (J1 hasta hoy).
- ELO Forma — ELO calculado solo con los últimos N partidos (ventana configurable, por defecto 6). Refleja el momento actual del equipo.
- ELO Compuesto — Combinación ponderada:
ELO_comp = ELO_temp × peso_temp + ELO_forma × peso_forma. Los sliders permiten ajustar el peso de cada componente (suman 100%).
🗓️ Índice de dificultad
Para cada equipo se calcula la media del ELO compuesto de todos sus rivales pendientes:
El nivel se asigna comparando el índice del equipo con la media global:
| Diferencia vs media | Nivel |
|---|---|
| < −50 | 🟢 Muy fácil |
| −50 a −15 | 🟡 Fácil |
| −15 a +15 | 🟠 Medio |
| +15 a +50 | 🔴 Difícil |
| > +50 | 🔴 Muy difícil |
🎮 Simulador
- Para cada partido pendiente se sugiere automáticamente el resultado más probable según las probabilidades ELO.
- Puedes modificar cualquier resultado manualmente con los botones 1 / X / 2.
- Simular todo por ELO — Rellena todas las jornadas con el resultado más probable según ELO.
- Reiniciar — Devuelve todos los partidos al estado original (sugerido por ELO).
- La clasificación final se actualiza en tiempo real al cambiar cualquier resultado.
- Las flechas ↑ ↓ = muestran el cambio respecto a la clasificación actual real.
🏆 Zonas competitivas
| Puestos | Competición |
|---|---|
| 1 – 4 | Champions League (UCL) |
| 5 – 6 | Europa League (UEL) |
| 7 | Conference League (UECL) |
| 8 – 17 | Sin competición europea |
| 18 – 20 | Descenso a Segunda |
⚖️ Criterios de desempate
Cuando dos o más equipos tienen los mismos puntos, se aplica este orden:
- ¿Se han enfrentado ya todos entre sí (ida y vuelta)?
- Sí → Clasificación particular: puntos en enfrentamientos directos entre esos equipos.
- Si persiste empate → diferencia de goles en esos enfrentamientos.
- Si persiste → goles a favor en esos enfrentamientos.
- No se han completado todos los cruces → Diferencia de goles general.
- Goles a favor generales.
- Orden alfabético (desempate estable).
El desempate particular se aplica de forma recursiva: si 3 equipos empatan en puntos particulares, el algoritmo se vuelve a ejecutar solo entre esos 3.
📂 Fuente de datos
- Los datos provienen de resultado.xlsx (380 filas, una por partido).
- Los partidos sin marcador (
null) se consideran pendientes. - Para actualizar: añadir los resultados en el Excel y ejecutar
python build.py. - También se puede cargar el Excel directamente en el navegador con el botón Cargar Excel.
📷 Exportar imagen
El botón Descargar imagen captura la vista activa como PNG a resolución 2×. El nombre del archivo incluye la pestaña y la fecha (laliga_elo_2026-04-16.png).