Skip to content
OrdoStat — Manuel d'Utilisation

Manuel d'Utilisation Officiel

OrdoStat

v 1.0 — Interface PyQt6

Calcul des performances Elo de moteurs d'échecs
par maximum de vraisemblance

Auteur Valter Drazic
Moteurs supportés Ordo · BayesElo
Laboratoire Chroniques Software
Édition Mars 2026

Sommaire

Table des matières

01Introduction & concept
02Installation & organisation des fichiers
Structure recommandée du dossier de travail
03Interface utilisateur — Vue d'ensemble
Zones de l'interface · Sélection de langue
04Mode Ordo — Guide complet
Sélection des fichiers · Ancres · Lancement
05Mode BayesElo — Guide complet
Séquence stdin · Ancre offset · Résultats
06Interprétation des résultats
Colonnes du tableau · Erreurs ± · Score%
07Ancrage Elo — Méthodologie
Ancres simples vs multiples · Fichier CSV
08Fonctions avancées
Menu contextuel · Export · Copie commande
09Comparaison Ordo vs BayesElo
10Dépannage

Introduction & concept

OrdoStat est une interface graphique Python/PyQt6 conçue pour orchestrer deux moteurs de calcul Elo spécialisés dans l'évaluation des performances de moteurs d'échecs à partir de fichiers PGN de tournoi.

Contrairement au système Elo classique (incrémental, conçu pour les listes en cours), OrdoStat utilise des algorithmes de maximum de vraisemblance qui calculent la cohérence globale de tous les résultats d'un tournoi à la fois, produisant des classements nettement plus précis et robustes.

♟ Le problème résolu

Vous disposez d'un fichier PGN contenant les résultats d'un tournoi entre plusieurs moteurs d'échecs. Vous souhaitez connaître leur force Elo relative — et si possible absolue, calibrée sur une échelle connue.

⚙ La solution OrdoStat

OrdoStat pilote Ordo (Miguel Ballicora) ou BayesElo (Rémi Coulom), produit un classement complet avec erreurs statistiques, et l'affiche dans un tableau interactif tri-able.

Fondement mathématique

Pour deux moteurs i et j de cotes respectives Ri et Rj, la probabilité de victoire suit la fonction logistique : P(i,j) = 1 / (1 + 10−(Rᵢ−Rⱼ)/400). Les algorithmes minimisent l'écart entre résultats observés et ces probabilités théoriques.

Installation & organisation des fichiers

Prérequis système

OrdoStat fonctionne sur Windows 10/11 (et Linux/macOS sous réserve de disposer des binaires appropriés). Les composants nécessaires sont :

ComposantVersion minimaleRôle
Python3.10+Interpréteur de l'interface graphique
PyQt66.4+Bibliothèque UI (installée via pip)
ordo-win64.exe1.2.6Moteur de calcul Ordo (Miguel Ballicora)
bayeselo.exe0056Moteur de calcul BayesElo (Rémi Coulom) — optionnel
OrdoStat.exeExécutable compilé par PyInstaller (mode autonome)

Structure recommandée du dossier de travail

Tous les fichiers peuvent se trouver dans le même dossier. OrdoStat détecte automatiquement Ordo et BayesElo dès que le chemin du PGN est sélectionné, si les exécutables sont présents dans le même répertoire.

📁 MonTournoi\
    ⚙ ordo-win64.exe   ← moteur Ordo (obligatoire en mode Ordo)
    ⚙ bayeselo.exe    ← moteur BayesElo (obligatoire en mode BayesElo)
    ⚙ OrdoStat.exe    ← l'interface graphique elle-même
    📄 TotalGames.pgn  ← votre fichier de parties
    📄 anchors.csv     ← ancres Elo (optionnel)
    📄 rating.txt      ← résultats Ordo (généré automatiquement)
    📄 rating.csv      ← résultats Ordo au format CSV (généré)
    📄 rating_bayeselo.txt ← résultats BayesElo (généré automatiquement)
💡
Détection automatique des exécutables

Dès que vous chargez un fichier PGN, OrdoStat scanne le même dossier et remplit automatiquement les champs Ordo exe et BayesElo exe si les exécutables y sont présents. De même, le champ Résultat .txt est pré-rempli avec rating.txt dans ce dossier.

Chemins avec espaces ou caractères spéciaux

Évitez les accents et espaces dans le nom du dossier de travail. Si votre chemin PGN contient des espaces, OrdoStat gère ce cas automatiquement, mais certaines versions de bayeselo peuvent avoir des difficultés. OrdoStat crée un fichier temporaire avec un nom sûr pour contourner ce problème.

Installation via PyInstaller (mode autonome)

Pour distribuer OrdoStat sans exiger Python sur la machine cible, utilisez le script compiler.bat fourni :

compiler.bat

Ce script installe les dépendances, compile ordo_gui.py en dist\OrdoStat.exe via PyInstaller, et propose une compression UPX optionnelle. L'exécutable généré est autonome — aucune installation Python n'est requise sur la machine de l'utilisateur final.

Interface utilisateur — Vue d'ensemble

L'interface est organisée en cinq zones verticales, empilées de haut en bas :

OrdoStat — Vue générale schématique
FR
EN
ES
NL
DE
♟ Calculer les performances Elo
📂 Charger résultat existant
✕ Effacer
Fichiers
PGN :C:\Tournoi\TotalGames.pgn
Ordo exe :C:\Tournoi\ordo-win64.exe
Résultat .txt :C:\Tournoi\rating.txt
Avantage trait blanc (-W) 76 moteur(s) disponible(s)
Ancres Elo (moteurs de référence)
[☑] Junior 7  → 1914  |  [☑] Fritz 6  → 1824  |  [☑] Rybka 2.4  → 2352  |  …
Résultats — Classement Elo
76 moteurs classés · erreurs ± calculées
#MoteurElo±PointsParties% 1Dragon by Komodo Chess 64-bit3121.2±8.242.04593% 2Rebel-16.3 8CPU3065.5±8.941.04493%
ResultSet> 1697 game(s) loaded... ✓  Calcul terminé — 76 moteur(s) classé(s).

Barre de langues

Cinq langues sont disponibles via les boutons drapeaux en haut à droite : FR, EN, ES, NL, DE. Le changement est instantané et s'applique à l'ensemble de l'interface. La langue active est mémorisée entre sessions.

Boutons principaux

BoutonAction
♟ Calculer les performances EloLance le moteur sélectionné (Ordo ou BayesElo) sur le PGN chargé
📂 Charger résultat existantCharge et affiche un fichier rating.txt existant sans relancer le calcul
✕ EffacerVide le tableau de résultats et la console

Mode Ordo — Guide complet

● ORDO

Ordo (Miguel Ballicora, v1.2.6) est le moteur principal d'OrdoStat. Il utilise un algorithme d'escalade de colline (hill climbing) convergent pour estimer les forces relatives de manière cohérente sur l'ensemble du pool de parties.

4.1 Champs de fichiers

ChampObligatoireDescriptionExemple
PGN OUI Fichier de parties au format PGN standard. Peut contenir des milliers de parties. Les tags [White] et [Black] servent à identifier les moteurs. TotalGames.pgn
Ordo exe OUI Exécutable Ordo. Noms acceptés : ordo-win64.exe, ordo-win32.exe, ordo.exe, ou ordo (Linux). ordo-win64.exe
Résultat .txt OUI Fichier de sortie texte. Créé ou écrasé à chaque calcul. Un fichier .csv homonyme est également généré automatiquement. rating.txt

4.2 Option Avantage trait blanc (-W)

Lorsque cette case est cochée (par défaut), Ordo calcule et corrige automatiquement l'avantage lié au trait blanc. Cette option est fortement recommandée pour tout tournoi à cadence normale. Elle ajoute le switch -W à la commande Ordo.

💡
Résultat de la correction blanc

OrdoStat affiche en bas du fichier rating.txt la valeur calculée, par exemple White advantage = 58.12 et Draw rate (equal opponents) = 50.00%. Ces informations ne sont pas affichées dans le tableau mais restent dans le fichier.

4.3 Section Ancres Elo

Sans ancre, Ordo produit un classement relatif dont la moyenne interne est fixée à 0. Pour obtenir des valeurs absolues comparables à SSDF, CCRL ou votre propre référence, il faut ancrer le classement.

La section ancres est composée de 10 lignes, chacune comprenant :

  • Case à cocher — active/désactive cette ligne d'ancre
  • Menu déroulant — sélectionne le moteur de référence (peuplé depuis le PGN)
  • Champ Elo — valeur Elo à assigner à ce moteur
Minimum requis : 2 ancres actives

Ordo exige au moins 2 ancres actives pour calibrer l'échelle Elo. Avec une seule ancre, le calcul est rejeté et un avertissement s'affiche. Avec de nombreuses ancres bien réparties dans la hiérarchie, le calibrage est plus précis.

Charger un fichier anchors.csv

Le bouton 📂 Charger anchors.csv permet d'importer directement une liste d'ancres depuis un fichier CSV au format :

"Junior 7", 1914
"Fritz 6", 1824
"Deep Junior 7", 1823
"Rybka 2.4 mp 32-bit 8CPU", 2352
"Glaurung 2.2 JA 8CPU", 2158
"Wasp 2.00 8CPU", 2315

Les moteurs présents dans le CSV mais absents du PGN sont ajoutés à la liste sans provoquer d'erreur — Ordo les ignorera silencieusement.

Sauvegarder les ancres

Le bouton 💾 Sauver anchors.csv exporte les ancres actives vers un nouveau fichier CSV, réutilisable dans de futurs tournois.

4.4 Charger les moteurs depuis le PGN

Le bouton ⚙ Charger moteurs du PGN parse les tags [White] et [Black] du PGN et peuple les menus déroulants des ancres. Cette opération est également effectuée automatiquement dès que le chemin du PGN est sélectionné.

4.5 Lancement du calcul

1

Vérification automatique

OrdoStat vérifie que les trois fichiers obligatoires sont définis et existent sur disque. Un avertissement est affiché si l'un est manquant.

2

Écriture du fichier d'ancres temporaire

Si des ancres sont actives, un fichier _anchors_tmp.csv est créé dans le dossier de sortie, passé à Ordo via le switch -m, puis supprimé à la fin du calcul.

3

Exécution asynchrone

Ordo tourne dans un thread séparé. La sortie console est diffusée en temps réel dans la zone Console. L'interface reste réactive pendant le calcul.

4

Affichage des résultats

À la fin du calcul, le tableau est peuplé automatiquement depuis le fichier rating.txt généré. Les moteurs sont triés par Elo décroissant.

4.6 Commande générée

OrdoStat assemble la commande suivante (exemple avec ancres et avantage blanc) :

ordo-win64.exe -W -m anchors_tmp.csv -p TotalGames.pgn -o rating.txt -c rating.csv

Le bouton 📋 Copier commande place cette commande exacte dans le presse-papier, permettant une exécution manuelle en ligne de commande.

Mode BayesElo — Guide complet

● BAYESELO

BayesElo (Rémi Coulom, v0056) est un programme de calcul Elo bayésien qui utilise un modèle d'estimation différent d'Ordo. Il produit des intervalles de confiance asymétriques et gère les taux de nulle de manière rigoureuse.

5.1 Activation du mode BayesElo

Dans la section Fichiers, sélectionnez le bouton radio BayesElo. L'interface se modifie immédiatement :

  • Le champ BayesElo exe apparaît (le champ Ordo reste disponible mais non utilisé)
  • Le panneau Options BayesElo devient visible
  • La section Ancres Elo est grisée (BayesElo gère son ancrage différemment)
  • Le badge ● BAYESELO confirme le mode actif
Badge de mode toujours visible

Le badge coloré (vert ● ORDO ou bleu ● BAYESELO) indique en permanence quel moteur de calcul sera utilisé lors du prochain clic sur Calculer.

5.2 Champs spécifiques à BayesElo

ChampObligatoireDescription
BayesElo exe OUI Exécutable BayesElo. Noms acceptés : bayeselo.exe ou bayeselo. Détecté automatiquement si présent dans le dossier du PGN.
Ancre (moteur) NON Menu déroulant peuplé depuis le PGN. Sélectionnez le moteur dont vous connaissez l'Elo et souhaitez utiliser comme référence d'échelle.
Elo ancre SI ANCRE Valeur Elo à assigner au moteur d'ancre. BayesElo décale l'ensemble de l'échelle de sorte que ce moteur soit positionné à cette valeur.

5.3 Séquence de calcul BayesElo

OrdoStat pilote BayesElo de manière interactive via stdin. La séquence exacte envoyée est :

readpgn be_tmp_XXXXXX.pgn    ← copie temporaire avec nom ASCII sûr
elo                              ← entre dans le sous-système EloRating
mm                               ← algorithme Minorization-Maximization
exactdist                        ← distribution exacte (plus précis)
offset 2352 Rybka 2.4 mp 32-bit 8CPU  ← ancre (si définie)
ratings                          ← extrait le classement
x                                ← quitte EloRating
x                                ← quitte BayesElo
💡
Pourquoi mm puis exactdist ?

mm (Minorization-Maximization) effectue une pré-convergence rapide. exactdist affine ensuite les résultats en calculant la distribution de probabilité exacte. Les deux étapes ensemble donnent le résultat le plus précis.

Fichier temporaire et chemin

BayesElo v0056 ne gère pas les guillemets ni les chemins absolus Windows dans la commande readpgn. OrdoStat contourne ce problème en copiant le PGN sous un nom temporaire sans espaces (be_tmp_XXXXXX.pgn) dans le même dossier, puis en lançant BayesElo depuis ce dossier (cwd). Le fichier temporaire est supprimé automatiquement après le calcul.

5.4 Résultat de sortie

BayesElo produit une sortie de type :

Rank Name                            Elo    +    - games score oppo. draws
   1 Dragon by Komodo Chess 64-bit  3825  152  127    45   93%  3269   13%
   2 Caissa 1.24 POPCNT 8CPU        3788  144  123    45   92%  3254   16%
   ...

OrdoStat parse cette sortie et la reformate au format Ordo standard, permettant l'affichage dans le tableau de résultats habituel. Le résultat est également sauvegardé dans le fichier Résultat .txt défini.

Interprétation des résultats

6.1 Colonnes du tableau

#

Rang dans le classement par ordre décroissant d'Elo. Les 3 premiers rangs sont mis en évidence en or.

Moteur

Nom exact du moteur tel qu'il apparaît dans les tags [White]/[Black] du PGN.

Elo

Force calculée par maximum de vraisemblance. Valeur absolue si des ancres sont définies, relative sinon.

± (Erreur)

Erreur standard calculée par la formule σ = 400 · √(p·(1−p)/n), où p est le score et n le nombre de parties.

Points

Total de points marqués (victoire = 1, nulle = 0.5, défaite = 0).

Parties

Nombre total de parties jouées par ce moteur dans le tournoi.

%

Score en pourcentage : (Points / Parties) × 100. Indicateur direct de la performance globale.

6.2 Tri du tableau

Par défaut, le tableau est trié par Elo décroissant. Vous pouvez cliquer sur n'importe quel en-tête de colonne pour trier selon cette valeur (croissant/décroissant). Le tri numérique fonctionne correctement pour toutes les colonnes, y compris l'erreur ±.

6.3 Lecture de l'erreur ±

La colonne ± donne une idée de la précision du classement. Pour un moteur avec ± 15, il faudrait une différence Elo d'au moins 30 points pour que la supériorité soit statistiquement significative à 95% de confiance.

Erreur standard vs. Ordo -s (simulations)

L'erreur ± affichée par OrdoStat est calculée analytiquement. Pour des erreurs plus précises (surtout avec des ancres multiples), utilisez l'option Ordo -s 1000 en ligne de commande ou via "Copier commande" pour ajouter le paramètre manuellement.

6.4 Exemple de lecture

#MoteurElo±PointsParties%
1Dragon by Komodo Chess 64-bit3121.2±8.242.04593%
57Junior 71914.1±12.710.04522%
67Fritz 61824.3±13.17.54517%

Lecture : Dragon (rang 1, 3121 Elo) a marqué 42 points sur 45 parties (93%). Son erreur ±8 signifie que sa vraie force est vraisemblablement entre 3113 et 3129 Elo. Junior 7 (rang 57) et Fritz 6 (rang 67) sont les ancres basses du classement.

Ancrage Elo — Méthodologie

L'ancrage est le processus par lequel un classement relatif est converti en classement absolu, comparable à des listes de référence comme le SSDF, le CCRL ou votre propre base de données.

7.1 Ancre simple vs. ancres multiples

Ancre unique

Une seule ancre translate l'ensemble du classement de sorte que ce moteur soit à la valeur spécifiée. Tous les autres Elos sont décalés du même delta. Simple mais sensible à la qualité de l'ancre.

Ancres multiples (recommandé)

Ordo effectue une régression sur plusieurs points de référence, distribuant les décalages de manière optimale. Avec 7 ancres bien choisies, l'échelle est robuste même si une ancre est légèrement imprécise.

7.2 Choix des ancres — Bonnes pratiques

  • Distribuez les ancres sur toute la plage Elo du tournoi (faibles, moyens, forts)
  • Utilisez des moteurs dont les valeurs SSDF/CCRL sont bien établies sur plusieurs milliers de parties
  • Évitez les moteurs dont le comportement varie selon le matériel (certains moteurs NPS-dépendants)
  • Minimum recommandé : 5-7 ancres réparties uniformément
  • Les ancres dont les valeurs officielles datent de plus de 5 ans méritent une vérification
Exemple d'ancres — Tournoi Valter Drazic (Ryzen 9 7950X3D)

Junior 7 (1914) · Fritz 6 (1824) · Deep Junior 7 (1823) · Shredder 10 (1940) · Glaurung 2.2 (2158) · Rybka 2.4 (2352) · Wasp 2.00 (2315). Ces 7 ancres couvrent la plage 1824–2352, suffisante pour calibrer un tournoi allant de Fritz 5.32 (~1636) à Dragon (~3121).

7.3 Ancrage BayesElo : la commande offset

BayesElo n'accepte pas un fichier CSV d'ancres multiples. L'ancrage se fait par la commande offset qui déplace l'échelle entière d'un décalage (offset) pour placer le moteur sélectionné à l'Elo désiré :

offset 2352 Rybka 2.4 mp 32-bit 8CPU

Cette commande est automatiquement insérée par OrdoStat dans la séquence stdin lorsqu'une ancre est sélectionnée dans le panneau Options BayesElo.

Fonctions avancées

8.1 Menu contextuel (clic droit sur le tableau)

Un clic droit sur n'importe quelle ligne du tableau de résultats affiche un menu avec deux actions :

Ajouter « NomMoteur » comme ancre

Crée automatiquement une nouvelle ancre avec le moteur de la ligne sélectionnée et son Elo calculé comme valeur de référence. Pratique pour ajuster l'ancrage après un premier calcul.

📋

Copier le nom

Copie le nom exact du moteur dans le presse-papier. Utile pour le coller dans le champ ancre BayesElo ou dans un script externe.

8.2 Copier la commande

Le bouton 📋 Copier commande place dans le presse-papier :

  • En mode Ordo : la commande complète avec tous les arguments, exécutable en ligne de commande
  • En mode BayesElo : le script stdin exact envoyé à bayeselo, reproductible manuellement

8.3 Charger un résultat existant

Le bouton 📂 Charger résultat existant permet d'afficher un fichier rating.txt précédemment généré sans relancer le calcul. OrdoStat parse le fichier et affiche le tableau complet. Si un fichier .csv homonyme existe, il est chargé également.

8.4 Enregistrer les résultats

Le bouton 💾 Enregistrer résultats exporte le tableau affiché vers :

  • Format CSV : toutes les colonnes séparées par des virgules, importable dans Excel
  • Format TXT : tableau formaté en colonnes alignées, lisible directement

8.5 Persistance des paramètres

OrdoStat mémorise automatiquement entre sessions :

ParamètreSauvegardé
Chemins des fichiers (PGN, Ordo exe, BayesElo exe, Résultat)✓ Oui
Mode calculateur (Ordo ou BayesElo)✓ Oui
Ancre BayesElo (nom + Elo)✓ Oui
Langue de l'interface✓ Oui
Taille et position de la fenêtre✓ Oui
Ancres Ordo (lignes actives)✗ Non — à recharger via le fichier CSV

Comparaison Ordo vs BayesElo

Les deux moteurs produisent des classements Elo par maximum de vraisemblance, mais avec des philosophies et des capacités différentes. Le choix dépend de votre objectif.

Critère Ordo v1.2.6 BayesElo v0056
Ancres multiples (fichier CSV) Oui, régression Non — offset unique
Correction avantage blanc Automatique (-W) Intégrée
Calcul du taux de nulle Automatique (-D) Intégré
Intervalles d'erreur Via simulations (-s) Asymétriques natifs
Plusieurs fichiers PGN Oui (switch --) Un seul fichier
Ancres "flottantes" (bayésiennes) Oui (-y) Concept natif
Moteurs sans victoire/défaite Géré (floor/ceiling) Géré
Rapidité (76 moteurs, 1697 parties) < 1 seconde ~2 secondes
Recommandé pourCalibrage absolu précisDistribution statistique bayésienne
💡
Recommandation pratique

Pour un tournoi de calibration avec ancres multiples et référence à une liste externe (SSDF, CCRL), utilisez Ordo. Pour une analyse statistique approfondie avec intervalles de confiance asymétriques, ou comme vérification indépendante des résultats Ordo, utilisez BayesElo. Les deux résultats devraient être très proches si le tournoi est bien connecté.

Dépannage

SymptômeCause probableSolution
"0 game(s) loaded" dans la console BayesElo Chemin PGN avec caractères spéciaux ou fichier illisible OrdoStat crée un fichier temporaire ASCII automatiquement. Vérifiez les permissions du dossier.
Tableau vide après calcul Ordo Fichier rating.txt non généré, ou Ordo a retourné une erreur Vérifiez la console pour le code d'erreur. Vérifiez que le PGN contient des résultats valides (pas de * uniquement).
"Ordo exige au minimum 2 ancres" Une seule ancre active cochée Cochez au moins deux lignes d'ancres, ou utilisez un fichier anchors.csv avec plusieurs moteurs.
Les menus déroulants d'ancres sont vides PGN pas encore chargé, ou PGN sans tags White/Black valides Cliquez sur "⚙ Charger moteurs du PGN" après avoir sélectionné votre PGN.
BayesElo : "Unknown command: offset" Mauvais nom de moteur dans le champ ancre Le nom doit être identique à ce que bayeselo a chargé (case-sensitive). Copiez le nom depuis le tableau de résultats via clic droit → "Copier le nom".
L'Elo calculé semble irréaliste Ancres mal choisies ou PGN mal connecté (groupes isolés) Vérifiez que tous les moteurs ont joué contre des moteurs communs. Ordo affiche "WARNING" pour les groupes isolés dans la console.
L'interface est lente pendant le calcul Calcul en cours sur un gros PGN Normal. Le calcul tourne dans un thread séparé ; l'interface reste réactive. Attendez la fin (barre de statut affiche "Calcul en cours…").
Exécutable non détecté automatiquement Nom non standard de l'exécutable Utilisez le bouton "…" pour naviguer manuellement vers l'exécutable. Noms détectés automatiquement : ordo-win64.exe, ordo-win32.exe, ordo.exe, bayeselo.exe.
PGN avec des résultats « * »

Les parties sans résultat (*) sont ignorées par Ordo et BayesElo. Si votre PGN contient uniquement des parties en cours, le calcul ne produira aucun résultat. Assurez-vous que les tags de résultat [Result "1-0"], [Result "0-1"] ou [Result "1/2-1/2"] sont présents.