Usando PageRank para medir la fuerza de un jugador de ajedrez
Para la gente que me conoce, no es un misterio que me gusta jugar al ajedrez. Es un juego hermoso, con mucha historia, y además, ofrece retos técnicos díficiles de dejar pasar.
Hoy te contaré uno de esos retos que me rondaba la cabeza: como saber la fuerza “real” de un jugador. Pero antes, un poco de contexto.
¿Cómo sabemos “quién es quién” en el ajedrez?
Normalmente, entre los ajedrecistas, no es raro escuchar cosas como ¡aquel es muy fuerte, tiene 2300 Elo FIDE!. Pero, la FIDE y las plataformas como Lichess o Chess.com usan ese “número” para medir el rendimiento. Somos nosotros los jugadores los que hemos transformado esa estadística como sinónimo de “fuerza de juego”. Pero, ¿realmente la miden? Veamos para que sirven estos sistemas de puntuación:
- Elo: Simplificando mucho: es una fórmula de intercambio. Si le ganas a alguien, le robas puntos. Si pierdes, se los das.
- Glicko-2: Añade la Incertidumbre (RD). Si dejas de jugar, el sistema “confía menos” en tu rating y tus puntos fluctúan más. Es más preciso que el Elo, pero sigue siendo una medida de rendimiento, no de fuerza absoluta.
Ahora, un par de preguntas:
-
¿Son suficientes para saber si alguien es fuerte? Sí. Tarde o temprano el jugador más fuerte tendrá el mejor rating (rendimiento). Un buen ejemplo es Magnus Carlsen.
-
¿Son suficientes para saber las dinámicas de fuerza entre un grupo establecido de jugadores? Para nada. Imagina lo siguiente:
Dos jugadores (A y B) podrían tener un rendimiento similar (digamos +2600 en Lichess) pero jugar dentro de grupos diferentes. Tal vez A está peleando con el grupo top y está perdiendo. Mientras tanto, B podría estar “farmeando” puntos contra un grupo menos fuerte.
Por lo tanto, necesitamos mirar el contexto completo: quién juega contra quién , qué tan fuertes eran los oponentes y cómo se compara su desempeño en diferentes niveles.
¿Y cómo analizamos ese “contexto”?
¡La respuesta está en los grafos! El ajedrez es un sistema de interacciones entre múltiples jugadores y con resultados claros. En un grafo, ¡los jugadores son los nodos, las partidas las aristas y los resultados los pesos!.
De hecho, en varios recursos (te los dejo en las referencias) se plantea que
El éxito en una disciplina deportiva no sólo depende de ganar, sino la calidad de la red en la que compites.
Y tiene sentido. No es lo mismo estar en la Champions y ganarle al Manchester United que ganarle a la Jaiba Brava del Tampico-Madero cualquier lunes por la noche. Sabemos que el primero es más fuerte, pero ¿como lo demostramos de forma matemática?
PageRank para calcular la fuerza de un jugador de ajedrez
De forma muy simplificada, PageRank calcula la importancia de cada nodo basándose en la estructura completa de un grafo. En el caso del ajedrez, un jugador es fuerte si:
- Gana muchas partidas
- Esas victorias son contra jugadores fuertes
- Esos jugadores fuertes también ganan contra otros fuertes
La parte técnica
Me encantaría mostrarte el código en python que utilicé para hacer todos los cálculos, pero el artículo me quedaría mucho más denso. Te tendrás que conformar con saber que partí de la base de datos de partidas (enero 2026) que ofrece Lichess de forma gratuita. Que recorrí las 94 millones de partidas solo para filtrar partidas bliz entre humanos con un rating mayor de 2600 que tuvieran suficiente actividad.
Para hacer los cálculos usé los siguientes criterios:
- Se usó la librería
networkxy el algoritmo PageRank. - El grafo es dirigido: la arista va del perdedor al ganador.
- Utilicé un factor de amortiguación
α = 0.85. - El peso de cada arista depende del impacto real de la victoria, no es binario.
Este último cálculo tiene un peso proporcional al cambio del rating del ganador que tuvo la partida. Formalmente se hace uso de:
- El peso base es
|Δrating|del ganador. - Se aplica un multiplicador según el tipo de finalización:
- Victoria normal:
1.0 - Por tiempo:
0.7 - Material insuficiente:
0.5 - Abandono temprano:
0.3
- Victoria normal:
Esto penaliza partidas de baja calidad competitiva y premia victorias “limpias” contra oponentes relevantes. Dicho sencillamente: el resultado es un grafo donde no todas las victorias valen lo mismo.
Además de todo lo anterior, quería saber si la gente “farmea”. Por lo tanto, usé los siguientes parámetros:
1. Elo Diferencial: El Elo promedio - Elo promedio de los oponentes
- Si es positivo (ej: 150), el usuario jugó contra gente más débil que él. Potencial farmeo.
- Si es negativo, el usuario jugó contra gente más fuerte. Verdadera competencia.
2. Elite Gap: Diferencia entre el ranking global vs un ranking entre los top 10%
- Si es cercano a 0: se es fuerte en ambos contextos. Verdadera fortaleza.
- Si es alto (positivo): es mejor contra débiles. Farmeo.
- Si es negativo: eres mejor contra élite. Fortaleza pura.
Los resultados
Después de una intensa batalla entre mi computadora de hace 14 años, la base de datos y mi paciencia algunos de los resultados fueron los siguientes:
Los 4 Arquetipos de Jugadores Élite
| Arquetipo | Características | Ejemplo | Elo | PageRank_Elite | Elo_Diff | Implicación |
|---|---|---|---|---|---|---|
| La crema y nata | Bajo Elo_Diff + Alto PageRank_Elite | kuhjft | 2777 | 0.0167 | +77 | Domina élite a pesar de jugar vs débiles |
| El farmer que si la despioja | Alto Elo_Diff + Alto PageRank_Elite | cutemouse83 | 2963 | 0.0176 | +209 | Elo inflado pero sigue siendo fuerte |
| El farmer que no la despioja | Alto Elo_Diff + Bajo PageRank_Elite | athena-pallada | 2901 | 0.0049 | +199 | Elo muy inflado, no puede contra élite |
| El jugador nivelado | Elo_Diff ≈ 0 + Medio PageRank | overvalue | 2687 | N/A | +0.05 | Juega su nivel, no hay distorsión |
Correlación Elo vs PageRank (Top 20 Global)
| Player | Elo | PageRank_Global | Rank_por_Elo | Rank_por_PR | Diferencia | Conclusión |
|---|---|---|---|---|---|---|
| switzerlandchair | 2796 | 0.00817 | 6 | 1 | +5 ↑ | PageRank lo ve más fuerte que Elo |
| fabsid | 2751 | 0.00600 | 9 | 2 | +7 ↑ | PageRank lo valúa mejor |
| italiangangster | 2682 | 0.00568 | 18 | 3 | +15 ↑ | PageRank lo valúa MUCHO mejor |
| massterofmayhem | 2639 | 0.00498 | 20 | 4 | +16 ↑ | Ranking de PageRank es diferente |
| tjychess | 2817 | 0.00379 | 1 | 10 | -9 ↓ | Elo lo sobrevúa, PageRank lo infravalúa |
| wonderland305 | 2880 | 0.00320 | 2 | 18 | -16 ↓ | Mucha discrepancia |
Correlación observada: Débil. Elo y PageRank producen rankings muy diferentes.
Paradojas - Casos donde Elo miente
| Caso | Player | Elo | PageRank_Elite | Elo_Diff | ¿Qué pasó? |
|---|---|---|---|---|---|
| Elo muy alto, PageRank bajo | cutemouse83 | 2963 ⭐ | 0.0176 | +209 | Farmeo extremo. Elo inflado. |
| Elo bajo, PageRank alto | switzerlandchair | 2796 | 0.0439 ⭐ | +104 | Tan fuerte que domina incluso vs débiles. |
| Elo alto, pero inconsistente | wonderland305 | 2880 ⭐ | 0.0182 | +168 | Farmea pero sigue siendo competitivo. |
| Elite_Gap extremo | invisibleguest2023 | 2852 | 0.0077 | +94.7 | 166 partidas. Datos ruido estadístico. |
| Verdadero equilibrio | overvalue | 2687 | N/A | +0.05 | No farmea. Juega su nivel. |
La crema y nata
Criterios: Total_Games > 400 AND Elite_Gap < 15 AND PageRank_Elite > 0.015
| Player | Elo | Total_Games | Elite_Gap | PageRank_Elite |
|---|---|---|---|---|
| switzerlandchair | 2796 | 970 | 0.0 | 0.0439 |
| kuhjft | 2777 | 406 | -3.0 | 0.0167 |
| tjychess | 2817 | 534 | 2.0 | 0.0182 |
| vistagausta | 2856 | 761 | 2.0 | 0.0127 |
| emremecitintikam1 | 2813 | 170 | 9.0 | 0.0191 |
Conclusión: Estos 5 son genuinamente fuertes. No discrepancia Elo/PageRank.
Los farmers que si la despiojan
Criterios: Elo_Differential > 150 AND PageRank_Elite > 0.015 AND Elite_Gap < 100
| Player | Elo | Elo_Diff | PageRank_Elite | Elite_Gap |
|---|---|---|---|---|
| calisthenicsboy | 2930 | +177.5 | 0.0193 | 55.0 |
| winx_m | 2898 | +172.4 | 0.0187 | 61.0 |
| cutemouse83 | 2963 | +208.9 | 0.0176 | 50.0 |
| wonderland305 | 2880 | +168.1 | 0.0182 | 9.0 |
| tigersiberian | 2876 | +136.9 | 0.0190 | 59.0 |
Conclusión: Elo inflado pero PageRank confirma que sí son fuertes. El farmeo no explica todo su poder.
Los farmers que no la despiojan
Criterios: Elo_Differential > 150 AND PageRank_Elite < 0.010 AND Total_Games < 300
| Player | Elo | Elo_Diff | PageRank_Elite | Total_Games |
|---|---|---|---|---|
| athena-pallada | 2901 | +199.5 | 0.0049 | 208 |
| trainiing123 | 2838 | +112.3 | 0.0052 | 167 |
| invisibleguest2023 | 2852 | +94.7 | 0.0077 | 166 |
| liamputnam2008 | 2828 | +119.7 | 0.0077 | 152 |
Conclusión: Elo muy inflado, PageRank bajo, pocas partidas. Son farmeros reales. ¡No pueden contra élite!.
Conclusión
Después de todo este análisis, podemos deducir la Jaiba Brava no la despioja y que PageRank es teóricamente superior a Elo y Glicko-2 para medir la fuerza “real” de un jugador de ajedrez. Se ha demostrado que jugadores con rendimiento similar no siempre tienen la misma fuerza.
Sin embargo, hay algo que tenemos que tener en cuenta:
- El dato es frío y la fuerza de un jugador de ajedrez tiene muchas variables que no estamos considerando. Si bien escogimos todo el mes ¿realmente esas partidas revelan fuerza real?
- El ranking con Elo y Glicko es adictivo. Ese número que sube y baja después de cada partida te mantiene motivado a seguir jugando, a seguir mejorando. Es gamificación pura.
- El cálculo de Elo y Glicko es computacionalmente trivial. Y PageRank requiere: iterar sobre millones de nodos, recalcular constantemente la estructura del grafo, almacenar la red completa en memoria, etc. Seguramente las plataformas no quieren (y no deberían) recalcular todo cada que alguien termina una partida.
- Simplicidad. Un jugador entiende Elo en 10 segundos: te suman puntos al ganar, te restan al perder. Si usaramos PageRank ¿Cómo le explico que a pesar de jugar como un mago frente a la élite, sigue estando dentro del grupo menos top?
Después de todo este análisis ahora tengo más preguntas que respuestas
- Las estructuras de peones son condicionales debido a las aperturas que se juegan. ¿Son los jugadores más o menos fuertes de acuerdo a ciertas posiciones? Si analizó ciertas posiciones ¿podría detectar comprensión o fuerza “estrátegica”? ¿Cómo se programa esto?
- El ajedrez es psicológico, ¿un jugador sería menos fuerte después de perder 1,2 o 3 partidas? ¿Se puede calcular o predecir?
Ahí me las dejo, preguntas más filosóficas que técnicas.