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 Sets | M_base | Caso |
|---|---|---|
| 0 sets | 0.5 | Empate o partido incompleto |
| 1 set | 1.0 | Victoria ajustada (2-1) |
| 2 sets | 1.2 | Victoria cómoda (2-0) |
| 3 sets | 1.3 | Victoria 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
| Caso | Verificación |
|---|---|
| Diferencia > 500 puntos | Cambios grandes pero no excesivos |
| Victoria 6-0, 6-0, 6-0 | M ≈ 1.5 (máximo) |
| Empate | M = 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
- Elo, A. E. (1978). The Rating of Chessplayers, Past and Present. Arco Publishing.
- Glickman, M. E. (1995). “A comprehensive guide to chess ratings”. American Chess Journal.
- Herbrich, R., Minka, T., & Graepel, T. (2007). “TrueSkill™: A Bayesian skill rating system”. Advances in neural information processing systems.
- 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 ELO | Probabilidad del Favorito |
|---|---|
| 0 | 50.0% |
| 25 | 54.0% |
| 50 | 57.0% |
| 75 | 61.0% |
| 100 | 64.0% |
| 150 | 70.0% |
| 200 | 76.0% |
| 250 | 81.0% |
| 300 | 85.0% |
| 350 | 88.0% |
| 400 | 91.0% |
| 500 | 95.0% |
A.2 Tabla de Modificadores Típicos
| Resultado | M |
|---|---|
| 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