Sistema de puntuación EGF: Cómo calcular tus puntos

[Conocimientos de matemáticas requeridos: Gaussiana]

Introducción

Después de estar en el magnífico torneo que se organizó cerca del parque natural de la Garrocha (Gerona), en catalán (la Garrotxa - Girona), quiero aprovechar para explicaros el cálculo de puntos basándome en un ejemplo práctico de mi propia situación. Toda la información sobre el cálculo de los puntos EGF se encuentra en la página Web de dicha federación, pero lo que pretendo aportar con este artículo es una explicación razonada de por qué se realiza este cálculo y en qué idea se fundamenta. (¡Ojo, el artículo es un poco largo!, asi que paciencia si lo quereis leer entero)

Lo primero es que es un sistema que ha tomado como ejemplo el sistema de puntuación que usa la Federación Internacional de Ajedrez (FIDE) para el cálculo de puntuación de sus jugadores. Este sistema se llama ELO, en honor a su inventor, Dr. Arpad Elo, un científico húngaro que elaboró este sistema de valoración (puntos), adoptado por la FIDE, a mediados de siglo pasado.

Cálculo de probabilidades

El sistema ELO, como también el de puntos EGF, lo que hace es estimar la probabilidad que tenemos de ganar o perder una partida. Para ello tiene en cuenta nuestra categoría (puntos) y la de nuestro rival. Suponemos que si jugamos con Mikami la probabilidad de ganar será muy pequeña (prácticamente nula), mientras que si lo hacemos con alguien que acaba de aprender las reglas será muy alta (prácticamente seguro que ganamos). También si jugamos con alguien de nuestro mismo nivel (mismos puntos) la probabilidad de ganar será del 50%.

El otro dato que necesitamos para saber los puntos que nos van a dar o quitar es, si al final, hemos ganado o perdido la partida. De este modo lo único que necesitamos saber para calcular la diferencia de puntos es:

  • Nuestros puntos: Rn (Rating nuestro)
  • Los puntos del adversario: Ra (Rating adversario)
  • Resultado de la partida: S (1 - ganamos / 0 - perdemos), S del inglés score.

Para hacer una estimación de la probabilidad de ganar o perder se utiliza una función de probabilidad llamada gaussiana, que es la que mejor representar los fenómenos de la naturaleza, como pueden ser las notas que vamos a sacar en un examen, o el resultado de una partida de go. El dato de entrada va a ser la diferencia de puntos entre los dos jugadores: D = Ra - Rn. Si D es negativo es porque somos más fuertes que nuestro rival y la probabilidad de ganar tiene que ser mayor del 50%. Si, por el contrario, es positiva porque nuestro rival tiene más puntos y no se espera que ganemos tanto como que lo haga él con nosotros. Por lo que si ganamos, tendrá más mérito y nos darán más puntos que con otro rival más débil. Por tanto, la probabilidad de ganar nosotros será una funcion de la diferencia de puntos con el rival. Matemáticamente: Pn = P(D), donde Pn es la probabilidad de ganar nosotros.

La función matemática que se utiliza es la gaussiana y tiene esta fórmula:

Pn = P(D) = 1 / (e ^ (D/a) - 1)

donde a es una constante.

Como podemos comprobar que si D es muy grande (Mikami):

Pn = 1 / ((e ^ grande) + 1) = 1 / (algo muy grande) = 0 aprox.

Mientras que si D es negativo y muy grande (principiante o Mikami con nosotros):

Pn = 1 / ((e ^ -grande) + 1) = 1 / (algo muy pequeño + 1) = 1 aprox. (1 = 100%)

En el caso de que juguemos con alguien de nuestros mismos puntos (D = 0):

Pn = 1 / ((e ^ 0) + 1) = 1 / (1 + 1) = 1 / 2 = 0,50 (50%)

Nótese que para calcular la probabilidad en tanto por ciento es necesario multiplicar por cien el resultado.

Pero en realidad la fórmula no depende sólo de la diferencia de puntos D, Pn = P(D), si no también de un parámetro a, Pn = P(D/a), que divide la diferencia de puntos. Lo que hace a es amortiguar la influencia de la diferencia de puntos en la fórmula. Para un 1 Dan el valor de a = 100, lo que viene a significar que no cuentan los puntos sino más bien la categoría (ya que hay un cambio de categoría cada 100 puntos). Pero también se tiene en cuenta que los jugadores menos fuertes somos más impredecibles y somos capaces de ganar a alguien más fuerte o perder con alguien más débil con más facilidad. Por el contrario, cuanto más nivel se tiene la diferencia de puntos es más determinante a la hora de predecir quién va a ganar la partida. Esto se traduce en que los jugadores más débiles aplicamos a la fórmula un valor de a más alto y los más fuertes más bajo (en concreto para un jugador que empieza [100 puntos] tiene un valor de a [200] justo el doble que un primer Dan [2100 puntos])

La fórmula para calcular a es la siguiente:

a = 200 + ((100 - R) / 20)

donde R son los puntos del jugador de menor categoría.

El valor de a se establece en función únicamente del jugador de menor nivel, para ambos jugadores, ya que para ambos se debe aplicar la misma fórmula y se considera que el jugador que influye más en la probabilidad es éste.

Los dos jugadores deben usar la misma función para que: Pn + Pa = 1. Es decir, la probabilidad de que ganemos, o bien, de que gane mi adversario Pa debe ser 1. Quiere decir que con toda seguridad (al 100%) va a ganar uno de los dos.

Bueno, una vez que conocemos la probabilidad que tenemos de ganar Pn, ¿qué hacemos con esto?

Por fin, los puntos

El sistema consiste en que en cada partida nos jugamos unos puntos. Los puntos que hay en juego nos lo indica la constante con del inglés constant. Esta constante va a ser la misma durante todo el torneo para cada jugador, y cada jugador tiene la suya.

Por ejemplo, si nos jugamos 40 puntos (porque con = 40), lo que nos dice la probabilidad es cuántos puntos de esos 40 vamos a conseguir si ganamos o cuántos vamos a perder en caso contrario.

Si jugamos con alguien de nuestro mismo nivel (Pn = 0,5), pues ganaremos 20 con una victoria y perderemos 20 (los mismos) con una derrota. Si la probabilidad de ganar es del 75%, Pn = 0,75, pues nos darán 10 puntos si ganamos y perderemos los 30 restantes en juego en caso contrario. Si sólo tenemos un 10% de probablidades de ganar, nos darán 36 puntos si lo hacemos (el 90% de los puntos) y si perdemos, sólo perderemos 4 (el 10% de los puntos).

La fórmula será por tanto:

RNn = Rn + con (S - Pn)

donde RNn es nuestro nuevo rating y S=1 si ganamos o S=0 si perdemos.

Estos cálculos se hacen todos al final del torneo, de manera que no influyen los resultados de rondas anteriores en los cálculos de los puntos. De hecho, los puntos que tenemos publicados en la lista son los que valen para todos los torneos del mes en los que están publicados, independientemente de que hayamos jugado otros torneos durante este periodo.

Por lo tanto podemos sumar a la vez todas las modificaciones de puntos a nuestro rating antiguo. Es decir, si he ganado 20, luego he perdido 30 y más tarde he ganado 36: 20 - 30 + 36 = 26, gano en total 26 puntos.

En realidad lo podemos aplicar a la fórmula de la siguiente manera: S = suma de puntos conseguidos durante el torneo (= 1 + 0 + 1 = 2, en el ejemplo anterior), Pn = suma de probabilidades de ganar (= 0,50 + 0,75 + 0,10 = 1,35) lo que vendría a equivaler a los puntos que se espera que hagamos durante el torneo por el nivel de los rivales que hemos tenido. De esta manera, S - Pn sería los puntos que he hecho de más o de menos en el torneo, (S - Pn = 2 - 1,35 = 0,65 en el ejemplo), a lo que tendríamos que aplicar la constante con, de los puntos en juego en cada partida, con lo que quedaría: con * (S - Pn) = 40 * 0,65 = 26, justo como esperábamos.

Luego si teníamos 1675 puntos, por poner un valor, nuestros nuevos puntos son: RNn = 1675 + 26 = 1701.

Lo único que nos falta por decir es como se calcula la constante con. En primer lugar, viene determinada por los puntos del jugador y es menor cuanto más fuerte es el jugador. Esto se hace para que los jugadores con menos nivel progresen más rápidamente (se ponen en juego más puntos en cada partida) mientras que los jugadores más fuertes, que se supone que su nivel no varía tanto, se juegan menos puntos.

El cálculo se realiza a través de una tabla que está en la página de la EGF.

GoR con a SE(100) GoR con a SE(100)
100 116 200 37.8 1500 47 130 31.7
200 110 195 37.5 1600 43 125 31.0
300 105 190 37.1 1700 39 120 30.3
400 100 185 36.8 1800 35 115 29.5
500 95 180 36.5 1900 31 110 28.7
600 90 175 36.1 2000 27 105 27.8
700 85 170 35.7 2100 24 100 26.9
800 80 165 35.3 2200 21 95 25.9
900 75 160 34.9 2300 18 90 24.8
1000 70 155 34.4 2400 15 85 23.6
1100 65 150 33.9 2500 13 80 22.3
1200 60 145 33.4 2600 11 75 20.9
1300 55 140 32.9 2700 10 70 19.3
1400 51 135 32.3

Donde GoR (Go Rating) es lo que hemos llamado Rn (nuestro rating) y SE(100) es lo que llamamos P(D=100) probabilidad de ganar a alguien con 100 puntos más que nosotros. Como el jugador más débil somos nosotros (justo por cien puntos) se aplica la a de la tabla.

Por la tanto si tenemos 1600 puntos, a = 125, D/a = 100/125 = 0,800, P(0,800) = 31.0%; pero si tenemos 1700 puntos, a = 120, D/a = 100/120 = 0,833, P(0,833) = 30.3%.

Para un valor que no está en la tabla. Si, por ejemplo, tenemos 1675 puntos:

  • a = 200+((100-1675)/20) = 200-1575/20 = 200 - 78.75 = 121,25 = 121 aprox.
  • D/a = 100/121 = 0,826
  • P(D/a) = P(0,826) = 1/((e^0,826)+1) = 1/(2,285+1) = 1/3,285 = 0,304 = 30,4%.

Es decir, que si jugamos con alguien de 1775 puntos, la probabilidad que tenemos de ganar según el sistema es de un 30,4%.

El valor de con para 1675 puntos lo calculamos mediante una interpolación. Si con 1600 tenemos 43, y con 1700 tenemos 39, pues con 1675 deberíamos tener 40.

Si usamos una fórmula de interpolación:

(con(1700)-con(1600)) / (1700 - 1600) = (con(1675)-con(1600)) / (1675 - 1600)

con(1675) = con(1600) + (con(1700) - con(1600)) * ((1675 - 1600) / (1700 - 1600))

= 43 + (39 - 43) * (75) / (100) = 43 + (39 - 43) * (75/100) = 43 - 4 * 0,75 = 43 - 3 = 40

Ejemplo práctico

Lo primero que tenemos que saber son nuestros puntos (en mi caso Rn = 1721 (4k)). Después, los de los rivales y los resultados:

  • Monique: Ra = 2073 (1d), última participación: 1d. (derrota, S=0)
  • Philippe: Ra = 1724 (1k!!), última participación: 2k. (victoria, S=1)
  • Óscar: Ra = 1533 (5k), última participación: 7k. (derrota, S=0)
  • Carles: Ra = 1617 (5k), última participación: 6k. (victoria, S=1)

Con mis puntos, tengo una con = 39 - 4 (21/100) = 38 aprox. por lo que cada vez que juego una partida me juego 38 puntos.

La fórmula sale de: con de referencia = con(1700) = 39, puntos que paso de 1700 = 21 (ya que tengo 1721), salto entre "cones" = con(1800) - con(1700) = 35 - 39 = -4.

Luego quiero saber mi valor de a, que es: a = 200 - (100 - 1721)/20 = 200 - 1621/20 = 200 - 81 = 119.

Tambien la a de mis rivales de inferior categoría: a(1617) = 124; a(1533) = 128.

Diferencias de puntos: (D = Ra - Rn)

  • Monique: 2073 - 1721 = 352
  • Philippe: 1724 - 1721= 3
  • Óscar: 1533 - 1721= -188
  • Carles: 1617 - 1721= -104

Cálculo de probabilidades: (Pn = 1/((e ^ (D/a)) + 1))

  • Monique: Pn = 1/((e^(352/119))+1) = ... = 1/20,26 = 0,049 (4,9%)
  • Philippe: Pn = 1/((e^(3/119))+1) = ... = 1/2,025 = 0,494 (49,4%)
  • Óscar: Pn = 1/((e^(-188/128))+1) = ... = 1/1,230 = 0,813 (81,3%)
  • Carles: Pn = 1/((e^(-104/124))+1) = ... = 1/1,432 = 0,698 (69,8%)

Puntos que pierdo o gano: (con * (S - Pn)) y lo que hubiese pasado con el resultado contrario

  • Monique: 38 * (0 - 0,049) = 38 * (-0,049) = -1,862 = -2 aprox. (si hubiese ganado: +36)
  • Philippe: 38 * (1 - 0,494) = 38 * (0,506) = 19,228 = +19 aprox. (si hubiese perdido: -19)
  • Óscar: 38 * (0 - 0,813) = 38 * (-0,813) = -30,862 = -31 aprox. (si hubiese ganado: +7)
  • Carles: 38 * (1 - 0,698) = 38 * (0,302) = 11,476 = +11 aprox. (si hubiese perdido: -27)

En total harían: - 2 + 19 - 31 + 11 = -3, pero ... ¡subí un punto! ¿cómo es posible?

En realidad tenemos que fijarnos que Óscar ha subido dos niveles desde su última participación, aunque la diferencia de puntos tampoco es tanta, de 1533 a 1600. Esto ha sucedido porque este jugador tiene mucha progresión, de hecho ganó el torneo venciendo a dos 4k (a Pablo y a mi), a un 2d francés, y en la última ronda con un 3k catalán (Jordi) jugándose el primer puesto. Aún no he visto publicado el cuadro del torneo y no puedo dar más datos sobre los rivales de otros jugadores, pero esta visto que nadie quiere enfrentarse en torneo con este chaval, que gana a quien se le ponga por delante.

Si corregimos los cálculos con ³car la cosa queda de la siguiente manera:

  • Diferencias de puntos: D = Ra - Rn = 1600 - 1721 = -121; a = 125 según la tabla
  • Cálculo de probabilidades: Pn = 1/((e ^ (D/a)) + 1) = 1/((e^(-121/125))+1) = ... = 1/1,380 = 0,725 (72,5%)
  • Puntos que pierdo o gano: con * (S - Pn) = 38 * (0 - 0,725) = 38 * (-0,725) = -27,550 = -28 (aprox.)
  • Si hubiese ganado: 38 - 28 = +10 puntos
  • En total: - 2 + 19 - 28 + 11 = 0 ¡¡¿Por qué no +1?!!

El redondeo en el cálculo me ha desfavorecido claramente en los casos de Óscar y Carles, pero si lo sumamos todo junto estos errores de redondeo se minimizan. De esta manera sale:

  • Puntos conseguidos: S = 2 (dos victorias)
  • Suma de probabilidades: Pn = 0,049 + 0,494 + 0,725 + 0,698 = 1,966
  • Puntos que pierdo o gano: con * (S - Pn) = 38 * (2 - 1,966) = 38 * (0,034) = 1,292 = +1 (aprox.) ¡Por fin!

Si se hubiese puesto otro ranking a Óscar

Si en lugar de apuntar a Óscar como 5k se hubiese apuntado como 4k, ¿qué hubiese pasado?

Vamos a verlo en términos numéricos:

  • Diferencias de puntos: D = Ra - Rn = 1700 - 1721 = -21; a = 120 según la tabla
  • Cálculo de probabilidades: Pn = 1/((e ^ (D/a)) + 1) = 1/((e^(-21/120))+1) = ... = 1/1,839 = 0,544 (54,4%)
  • Puntos que pierdo o gano: con * (S - Pn) = 38 * (0 - 0,544) = 38 * (-0,544) = -20,672 = -21 (aprox.)
  • Si hubiese ganado: 38 - 21 = +17 puntos
  • En total: - 2 + 19 - 21 + 11 = +7 (Probablemente +8, por el tema del redondeo)

La diferencia de puntuación en un jugador no es tan apreciable (¡o sí!), pero sí lo es a la larga una política u otra en las subidas de nivel. Lo que está claro es que es más probable que Óscar me gane a mí, que no al revés. Por lo que subir el ranking de la gente que se lo merece hace que los demás obtengamos subidas más acordes al nivel de juego demostrado en los torneos. Supongo que no es muy ético intervenir cuando uno está directamente afectado y es miembro de la comisión de categorías, pero espero que se ponga remedio en los próximos torneos.