Sistema ELO – Documentación Técnica

Especificaciones Matemáticas Completas

Este documento describe en detalle las fórmulas matemáticas y algoritmos utilizados en el cálculo del sistema ELO adaptado para pádel por parejas.


1. Fundamentos Matemáticos

1.1 Fórmula Base ELO

El sistema utiliza la fórmula estándar de ELO con adaptaciones específicas:

ΔR = K × M × (S - E)

Donde:

  • ΔR = Cambio en el rating ELO
  • K = Factor de sensibilidad (por defecto: 32)
  • M = Modificador de resultado (0.5 – 1.5)
  • S = Score real obtenido (0, 0.5, o 1)
  • E = Score esperado (probabilidad de victoria)

1.2 Cálculo del Score Esperado

La probabilidad esperada de victoria se calcula mediante la fórmula logística:

E_A = 1 / (1 + 10^((R_B - R_A) / 400))

Donde:

  • E_A = Probabilidad de victoria del equipo A
  • R_A = Rating ELO del equipo A
  • R_B = Rating ELO del equipo B

Ejemplo Numérico:

Si Equipo A tiene ELO 1600 y Equipo B tiene ELO 1500:

E_A = 1 / (1 + 10^((1500 - 1600) / 400))
E_A = 1 / (1 + 10^(-0.25))
E_A = 1 / (1 + 0.5623)
E_A = 1 / 1.5623
E_A ≈ 0.64 (64% de probabilidad)

Por tanto, E_B = 1 – 0.64 = 0.36 (36% de probabilidad)


2. Adaptación para Pádel por Parejas

2.1 Cálculo de ELO Promedio por Equipo

Dado que el pádel se juega en parejas, primero se calcula el ELO promedio de cada equipo:

R_equipo = (R_jugador1 + R_jugador2) / 2

Ejemplo:

Equipo A:
- Jugador 1: 1650
- Jugador 2: 1550
R_A = (1650 + 1550) / 2 = 1600

Equipo B:
- Jugador 3: 1700
- Jugador 4: 1500
R_B = (1700 + 1500) / 2 = 1600

2.2 Distribución del Cambio

El cambio de ELO calculado se aplica por igual a ambos miembros de cada pareja:

ΔR_jugador1 = ΔR_jugador2 = ΔR_equipo

No hay diferenciación individual dentro de la pareja.


3. Sistema de Modificadores

3.1 Fórmula General del Modificador

M = M_base × M_juegos × M_sets

M ∈ [0.5, 1.5]  (limitado a este rango)

3.2 Modificador Base (M_base)

Depende de la diferencia de sets ganados:

Diferencia de SetsM_baseCaso
0 sets0.5Empate o partido incompleto
1 set1.0Victoria ajustada (2-1)
2 sets1.2Victoria cómoda (2-0)
3 sets1.3Victoria abrumadora (3-0, raro)

Fórmula Programática:

if sets_diff == 0:
    M_base = 0.5
elif sets_diff == 1:
    M_base = 1.0
elif sets_diff == 2:
    M_base = 1.2
else:  # sets_diff >= 3
    M_base = 1.3

3.3 Modificador por Diferencia de Juegos (M_juegos)

Calcula la proporción de juegos ganados respecto al total:

games_ratio = |games_team1 - games_team2| / (games_team1 + games_team2)

Luego aplica ajustes:

if games_ratio < 0.15:
    # Partido muy cerrado
    M_juegos = 1.1
elif games_ratio > 0.4:
    # Partido muy desigual
    M_juegos = 1.2
else:
    # Partido normal
    M_juegos = 1.0

Ejemplo:

Partido con resultado por juegos: 6-4, 6-3 (Team 1 gana)

games_team1 = 6 + 6 = 12
games_team2 = 4 + 3 = 7
total_games = 12 + 7 = 19
games_diff = |12 - 7| = 5
games_ratio = 5 / 19 ≈ 0.26

0.26 está entre 0.15 y 0.4 → M_juegos = 1.0

3.4 Modificador por Extensión (M_sets)

Si el partido llegó al tercer set completo:

M_sets = 1.05

Reconoce la competitividad de un partido que necesitó 3 sets para resolverse.

3.5 Cálculo Final del Modificador

M = min(1.5, max(0.5, M_base × M_juegos × M_sets))

Ejemplo Completo:

Resultado: 7-6, 6-7, 6-4 (Team 1 gana)

Sets ganados: Team 1 = 2, Team 2 = 1
sets_diff = |2 - 1| = 1 → M_base = 1.0

Juegos: Team 1 = 7+6+6 = 19, Team 2 = 6+7+4 = 17
total_games = 36
games_diff = |19 - 17| = 2
games_ratio = 2 / 36 ≈ 0.056 < 0.15 → M_juegos = 1.1

Partido a 3 sets → M_sets = 1.05

M = 1.0 × 1.1 × 1.05 = 1.155 ≈ 1.16

4. Casos Especiales

4.1 Empates

Cuando el partido termina en empate (ej: 1-1 en sets sin tercer set):

S_teamA = 0.5
S_teamB = 0.5
M = 0.5

Cambio de ELO:

ΔR_A = K × 0.5 × (0.5 - E_A)
ΔR_B = K × 0.5 × (0.5 - E_B)

Ejemplo:

Team A ELO: 1600 → E_A = 0.64
Team B ELO: 1500 → E_B = 0.36

ΔR_A = 32 × 0.5 × (0.5 - 0.64) = 32 × 0.5 × (-0.14) = -2.24 ≈ -2
ΔR_B = 32 × 0.5 × (0.5 - 0.36) = 32 × 0.5 × 0.14 = +2.24 ≈ +2

Los cambios son mínimos en empates.

4.2 Límites de ELO

def limit_elo(elo):
    MIN_ELO = 100
    MAX_ELO = 3000
    
    if elo < MIN_ELO:
        return MIN_ELO
    if elo > MAX_ELO:
        return MAX_ELO
    return elo

4.3 Redondeo

Todos los cambios de ELO se redondean al entero más cercano:

ΔR = round(K × M × (S - E))

5. Ejemplos de Cálculo Completo

5.1 Caso: Victoria del Favorito

Setup:

  • Team A: (1700 + 1650) / 2 = 1675
  • Team B: (1450 + 1500) / 2 = 1475
  • Diferencia: 200 puntos
  • Resultado: Team A gana 6-3, 6-4

Paso 1: Score Esperado

E_A = 1 / (1 + 10^((1475 - 1675) / 400))
E_A = 1 / (1 + 10^(-0.5))
E_A = 1 / (1 + 0.316)
E_A ≈ 0.76 (76%)

Paso 2: Score Real

S_A = 1 (victoria)
S_B = 0 (derrota)

Paso 3: Modificador

Sets ganados: 2-0 → M_base = 1.2
Juegos: 12 vs 7, total = 19, ratio = 5/19 = 0.26 → M_juegos = 1.0
No fue a 3 sets → M_sets = 1.0

M = 1.2 × 1.0 × 1.0 = 1.2

Paso 4: Cambio de ELO

ΔR_A = 32 × 1.2 × (1 - 0.76) = 32 × 1.2 × 0.24 = 9.22 ≈ +9
ΔR_B = 32 × 1.2 × (0 - 0.24) = 32 × 1.2 × (-0.24) = -9.22 ≈ -9

Resultado Final:

  • Jugadores Team A: 1700 → 1709, 1650 → 1659
  • Jugadores Team B: 1450 → 1441, 1500 → 1491

5.2 Caso: Sorpresa del No Favorito

Setup:

  • Team A: (1500 + 1480) / 2 = 1490
  • Team B: (1800 + 1750) / 2 = 1775
  • Diferencia: 285 puntos
  • Resultado: Team A gana 7-6, 4-6, 7-5

Paso 1: Score Esperado

E_A = 1 / (1 + 10^((1775 - 1490) / 400))
E_A = 1 / (1 + 10^(0.7125))
E_A = 1 / (1 + 5.157)
E_A ≈ 0.162 (16.2%)

Paso 2: Score Real

S_A = 1 (victoria sorpresa)

Paso 3: Modificador

Sets ganados: 2-1 → M_base = 1.0
Juegos: 18 vs 17, total = 35, ratio = 1/35 = 0.029 < 0.15 → M_juegos = 1.1
Fue a 3 sets → M_sets = 1.05

M = 1.0 × 1.1 × 1.05 = 1.155

Paso 4: Cambio de ELO

ΔR_A = 32 × 1.155 × (1 - 0.162) = 32 × 1.155 × 0.838 = 30.98 ≈ +31
ΔR_B = -31

Resultado Final:

  • Jugadores Team A: 1500 → 1531, 1480 → 1511
  • Jugadores Team B: 1800 → 1769, 1750 → 1719

6. Parámetros Configurables

6.1 Factor K

K ∈ [16, 64]
Valor por defecto: K = 32

Efecto del Factor K:

  • K bajo (16-24): Cambios lentos, sistema más estable, necesita más partidos
  • K medio (28-36): Balance entre estabilidad y sensibilidad
  • K alto (40-64): Cambios rápidos, sistema volátil, rankings dinámicos

6.2 ELO Inicial

R_inicial ∈ [1000, 2000]
Valor por defecto: R_inicial = 1500

6.3 Límites de ELO

R_min ≥ 0 (por defecto: 100)
R_max ≤ 5000 (por defecto: 3000)

7. Propiedades del Sistema

7.1 Conservación de Puntos

El sistema es suma cero:

ΔR_A + ΔR_B = 0

Lo que un equipo gana, el otro lo pierde. El total de puntos ELO en el sistema permanece constante.

7.2 Convergencia

Con suficientes partidos (n → ∞), el ELO de cada jugador converge hacia su verdadero nivel de habilidad:

lim (n→∞) R_jugador = R_verdadero

7.3 Varianza Esperada

Para un jugador con σ partidos:

Varianza ≈ (K × σ)² / σ = K²

Después de ~30-40 partidos, el ELO se estabiliza con una desviación estándar aproximada de:

σ_ELO ≈ K / 2 ≈ 16 puntos (con K=32)

8. Algoritmo de Recálculo Global

Pseudocódigo para recalcular todo el sistema desde cero:

def recalculate_all_elos():
    # 1. Reset todos los jugadores a ELO inicial
    for player in all_players:
        player.elo = INITIAL_ELO
    
    # 2. Limpiar historial
    clear_elo_history()
    
    # 3. Obtener partidos completados ordenados cronológicamente
    matches = get_completed_matches_ordered_by_date()
    
    # 4. Procesar cada partido
    for match in matches:
        calculate_match_elo(match.id)
    
    return len(matches)

9. Validación y Testing

9.1 Test Cases

Test 1: Simetría

Si Team A (1500) vs Team B (1500) y A gana:
→ ΔR_A debe ser positivo
→ ΔR_B debe ser negativo
→ |ΔR_A| = |ΔR_B|

Test 2: Monotonía

Si E_A > E_B (A es favorito):
→ Si A gana: ΔR_A < ΔR_B_si_ganara
→ Si B gana: |ΔR_B| > |ΔR_A_si_ganara|

Test 3: Límites

Para cualquier partido:
→ 0.5 ≤ M ≤ 1.5
→ MIN_ELO ≤ R ≤ MAX_ELO

9.2 Casos Extremos

CasoVerificación
Diferencia > 500 puntosCambios grandes pero no excesivos
Victoria 6-0, 6-0, 6-0M ≈ 1.5 (máximo)
EmpateM = 0.5, cambios mínimos
Jugador en límite (100 ELO)No puede bajar más
Jugador en tope (3000 ELO)No puede subir más

10. Referencias y Bibliografía

  1. Elo, A. E. (1978). The Rating of Chessplayers, Past and Present. Arco Publishing.
  2. Glickman, M. E. (1995). “A comprehensive guide to chess ratings”. American Chess Journal.
  3. Herbrich, R., Minka, T., & Graepel, T. (2007). “TrueSkill™: A Bayesian skill rating system”. Advances in neural information processing systems.
  4. Sistema adaptado específicamente para pádel por parejas con modificadores propios basados en análisis empírico de partidos.

Apéndice A: Tablas de Referencia

A.1 Tabla de Probabilidades

Diferencia ELOProbabilidad del Favorito
050.0%
2554.0%
5057.0%
7561.0%
10064.0%
15070.0%
20076.0%
25081.0%
30085.0%
35088.0%
40091.0%
50095.0%

A.2 Tabla de Modificadores Típicos

ResultadoM
6-0, 6-0 (paliza)1.44
6-1, 6-2 (victoria cómoda)1.20
6-4, 6-3 (victoria clara)1.20
7-5, 6-4 (victoria ajustada)1.00
7-6, 7-6 (muy cerrado)1.10
7-6, 4-6, 7-5 (tres sets cerrado)1.16
6-4, 4-6 (empate)0.50

Versión del documento: 2.0 Última actualización: Noviembre 2025 Implementación: Padel League Manager Plugin