Procesando…

⚽ LaLiga 2025-26

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.

📈 ELO Temporal

Refleja el nivel acumulado del equipo en toda la temporada. Se calcula partido a partido desde un valor inicial de 1 000 puntos usando la fórmula clásica de Elo:

E = 1 / (1 + 10(ELO_rival − ELO_local) / 400)

Después de cada partido, los dos equipos intercambian puntos en función de lo esperado (E) frente a lo obtenido (1 victoria / 0,5 empate / 0 derrota):

ΔELO = K × factor_goles × (resultado − E)
Diferencia de golesFactor KK efectiva (K_base = 24)
0 (empate)1,024
11,228,8
21,433,6
≥ 31,638,4

El equipo local parte con +50 puntos de ventaja en el cálculo de la probabilidad esperada, para compensar el factor campo.

🔥 ELO Forma

Mide el nivel del equipo en los últimos N partidos (por defecto 10, ajustable con el slider). Se calcula como la media aritmética de los valores ELO registrados tras cada partido dentro de esa ventana:

ELO_forma = media(ELO tras partido−N, …, ELO tras partido−1)

⚠️ Comportamiento contraintuitivo: si un equipo pierde N seguidos, su ELO cae partida a partida. La media de esa ventana queda por encima del ELO actual, porque incluye los valores altos del principio de la racha. Del mismo modo, un equipo en racha ganadora tendrá el forma por debajo del temporal. El ELO forma no indica "está jugando bien últimamente" sino "cuál fue su nivel medio en esa ventana".

Para comparar la tendencia real, usa la diferencia ELO Temp − ELO Forma: si temp > forma, el equipo está en ascenso; si temp < forma, en descenso.

⚖️ ELO Compuesto

Combina ambos ELOs mediante dos sliders cuya suma es siempre 100 %:

ELO_comp = ELO_temp × Ptemp + ELO_forma × Pforma

Se usa como métrica principal para ordenar la tabla, calcular el índice de dificultad y estimar probabilidades en el simulador. Con P_temp = 60 % / P_forma = 40 % (valor por defecto) se pondera más el nivel global de la temporada que la racha reciente.

📊 Índice de dificultad

Para cada equipo, se toman los partidos aún no jugados y se calcula la media del ELO compuesto de sus rivales pendientes:

Índice = media(ELO_comp rival1, …, ELO_comp rivalN)

El nivel (badge de color) compara el índice del equipo con la media global de todos los índices:

Diferencia vs mediaNivel
< −50MUY FÁCIL
−50 … −15FÁCIL
−15 … +15MEDIO
+15 … +50DIFÍCIL
> +50MUY DIFÍCIL

🎮 Simulador — probabilidades

Para cada partido pendiente se calcula la probabilidad de cada resultado a partir de los ELOs compuestos:

P(local) = E = 1 / (1 + 10(ELO_visit − (ELO_local + 50)) / 400)
P(empate) ≈ 0,25 × (1 − |P_local − P_visit|)
P(visitante) = 1 − P(local)

Las tres probabilidades se normalizan para sumar 100 %. El resultado con mayor probabilidad se marca como sugerencia por defecto.

El simulador no recalcula el ELO con los resultados simulados — usa siempre el ELO real hasta la última jornada disputada. Los marcadores simulados son 1-0 / 1-1 / 0-1 según el resultado elegido.

🏆 Desempate LaLiga

Cuando dos o más equipos igualan en puntos, se aplica este orden:

  1. ¿Se han enfrentado ya en ida y vuelta?
    • Sí → clasificación particular entre ellos: puntos, luego diferencia de goles, luego goles a favor en esos enfrentamientos.
    • No → saltar al punto 2.
  2. Diferencia de goles general.
  3. Goles a favor generales.
  4. Orden alfabético (desempate de último recurso).

Si tres o más equipos empatan en puntos particulares, el algoritmo se aplica recursivamente dentro de ese subgrupo.