Manuel d'Utilisation Officiel
OrdoStat
v 1.0 — Interface PyQt6
Calcul des performances Elo de moteurs d'échecs
par maximum de vraisemblance
Sommaire
Table des matières
Section 01
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.
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.
Section 02
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 :
| Composant | Version minimale | Rôle |
|---|---|---|
| Python | 3.10+ | Interpréteur de l'interface graphique |
| PyQt6 | 6.4+ | Bibliothèque UI (installée via pip) |
| ordo-win64.exe | 1.2.6 | Moteur de calcul Ordo (Miguel Ballicora) |
| bayeselo.exe | 0056 | Moteur de calcul BayesElo (Rémi Coulom) — optionnel |
| OrdoStat.exe | — | Exé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.
⚙ 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è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.
É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.
Section 03
Interface utilisateur — Vue d'ensemble
L'interface est organisée en cinq zones verticales, empilées de haut en bas :
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
| Bouton | Action |
|---|---|
| ♟ Calculer les performances Elo | Lance le moteur sélectionné (Ordo ou BayesElo) sur le PGN chargé |
| 📂 Charger résultat existant | Charge et affiche un fichier rating.txt existant sans relancer le calcul |
| ✕ Effacer | Vide le tableau de résultats et la console |
Section 04
Mode Ordo — Guide complet
● ORDOOrdo (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
| Champ | Obligatoire | Description | Exemple |
|---|---|---|---|
| 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.
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
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
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.
É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.
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.
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.
Section 05
Mode BayesElo — Guide complet
● BAYESELOBayesElo (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
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
| Champ | Obligatoire | Description |
|---|---|---|
| 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
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.
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.
Section 06
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.
Nom exact du moteur tel qu'il apparaît dans les tags [White]/[Black] du PGN.
Force calculée par maximum de vraisemblance. Valeur absolue si des ancres sont définies, relative sinon.
Erreur standard calculée par la formule σ = 400 · √(p·(1−p)/n), où p est le score et n le nombre de parties.
Total de points marqués (victoire = 1, nulle = 0.5, défaite = 0).
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.
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
| # | Moteur | Elo | ± | Points | Parties | % |
|---|---|---|---|---|---|---|
| 1 | Dragon by Komodo Chess 64-bit | 3121.2 | ±8.2 | 42.0 | 45 | 93% |
| 57 | Junior 7 | 1914.1 | ±12.7 | 10.0 | 45 | 22% |
| 67 | Fritz 6 | 1824.3 | ±13.1 | 7.5 | 45 | 17% |
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.
Section 07
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
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.
Section 08
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ètre | Sauvegardé |
|---|---|
| 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 |
Section 09
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é pour | Calibrage absolu précis | Distribution statistique bayésienne |
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é.
Section 10
Dépannage
| Symptôme | Cause probable | Solution |
|---|---|---|
| "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. |
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.
Chroniques Software · Laboratoire Maison · Valter Drazic · Mars 2026
Ordo v1.2.6 © Miguel A. Ballicora (GPL) · BayesElo v0056 © Rémi Coulom (GPL)
