Le calcul Elo : l'algorithme derrière un classement qui s'auto-corrige
L'article sur les appariements suisses mentionnait le classement Elo comme critère de tri sans détailler comment ce nombre est calculé. C'est pourtant un algorithme complet en soi, avec sa propre logique et ses propres pièges : un système qui prédit un résultat avant qu'il soit joué, puis s'ajuste en fonction de l'écart entre la prédiction et la réalité.
Le principe : une probabilité de gain avant même de jouer#
Avant qu'une partie soit jouée, le système Elo calcule un score attendu à partir du seul écart de classement entre les deux joueurs :
E_A = 1 / (1 + 10^((R_B - R_A) / 400))
E_A est le score attendu du joueur A (une probabilité de gain, entre 0 et
1, où une nulle compte pour 0,5), R_A et R_B les classements Elo des
deux joueurs. Avec A à 1600 et B à 1400 :
E_A = 1 / (1 + 10^((1400 - 1600) / 400))
= 1 / (1 + 10^(-0.5))
= 1 / (1 + 0.316)
≈ 0.76
A est donné favori à 76 %, B à 24 % (E_A + E_B = 1 par construction : ce que l'un gagne en probabilité, l'autre le perd exactement).
L'ajustement : ce que le résultat réel change au classement#
Après la partie, le nouveau classement dépend de l'écart entre le résultat réel et le résultat attendu, pondéré par un facteur K :
R_A' = R_A + K × (S_A - E_A)
S_A vaut 1 pour une victoire, 0,5 pour une nulle, 0 pour une défaite. Avec
K = 20 et A qui gagne (S_A = 1) :
R_A' = 1600 + 20 × (1 - 0.76) = 1600 + 4.8 = 1604.8
Si A avait fait nulle : 1600 + 20 × (0.5 - 0.76) = 1594.8. Si A avait
perdu : 1600 + 20 × (0 - 0.76) = 1584.8. Le classement de B bouge en
miroir : B perd exactement ce qu'A gagne (avec le même K des deux côtés),
soit 1400 - 4.8 = 1395.2 dans le premier cas.
Le facteur K : la vitesse à laquelle le classement réagit#
K détermine à quel point un seul résultat pèse sur le classement. Un K élevé fait bouger le classement vite (utile pour un joueur dont le vrai niveau n'est pas encore connu), un K faible le stabilise (utile pour un joueur déjà bien classé, qu'un accident isolé ne doit pas faire dévisser).
| Profil | K typique | Pourquoi |
|---|---|---|
| Nouveau joueur, moins d'une trentaine de parties officielles | 40 | Converger vite vers le vrai niveau, encore inconnu |
| Joueur classé, cas général | 20 | Le compromis standard entre stabilité et réactivité |
| Joueur au-dessus de 2400 Elo | 10 | Un classement déjà stable, qu'un accident isolé ne doit pas faire chuter |
Pourquoi le système est auto-correcteur#
Sur une seule partie, l'écart entre score attendu et score réel peut être important. Sur des dizaines de parties, cet écart se moyenne : un joueur systématiquement sous-classé gagne plus souvent que sa probabilité attendue ne le prévoit, donc son classement grimpe partie après partie jusqu'à refléter sa vraie force. C'est cette propriété, converger vers la force réelle sans jamais la connaître à l'avance, qui rend le système utilisable pour classer des milliers de joueurs sans qu'aucun arbitre n'ait à juger leur niveau directement.
Le piège : ce n'est à somme nulle que si K est identique des deux côtés#
Le calcul précédent est exactement à somme nulle parce que A et B partageaient le même K = 20. Ce n'est plus vrai dès qu'un nouveau joueur (K = 40) affronte un joueur classé (K = 20) : chacun calcule son ajustement avec son propre K, et rien ne garantit que ce que l'un gagne corresponde exactement à ce que l'autre perd. Ce léger décalage, répété sur des millions de parties mixtes, est l'un des mécanismes régulièrement cités derrière le phénomène d'inflation Elo observé sur le long terme dans certaines fédérations.
Où ça se branche dans un vrai système de tournoi#
C'est ce nombre, recalculé après chaque partie, qui alimente le tri par classement utilisé dans les groupes de score de l'appariement suisse implémenté par kotlin-chess-tournament et exposé par EloChessPlanner. Le système d'appariement et le système de classement sont deux algorithmes distincts, mais l'un ne veut rien dire sans l'autre : apparier par Elo n'a de sens que si l'Elo utilisé reflète vraiment le niveau du joueur au moment de la ronde.

