Indice de Morozov (MBI) : méthodologie
L'indice de Morozov (MBI) répond à une seule question pour chacune des 960 positions initiales du Chess960 : quelle est l'ampleur de l'avantage des Blancs au départ ? Cette page contient la méthode entière — chaque chiffre du site peut être recalculé à partir d'elle.
Auteur de la méthodologie : Roman Morozov. À propos de l'auteur · Version 2.0 · 2026-09-18
CC BY 4.0 Méthodologie et données : CC BY 4.0 — libre d'usage avec attribution à l'auteur.
Ce que mesure l'indice
Aux échecs, les Blancs jouent en premier. Ce premier coup vaut quelque chose, et au Chess960 il vaut une valeur différente dans chacune des 960 dispositions. L'indice mesure l'AMPLEUR de cet avantage initial, et non qui est mieux placé. Dans 956 des 960 positions, l'évaluation du moteur pour la position de départ est à l'égalité ou au-dessus en faveur des Blancs ; les quatre autres ressortent entre 2 et 7 centipions du côté des Noirs, moins que ce dont la recherche bouge entre ses propres itérations : du bruit autour de zéro, et non un avantage noir. La mesure est la distance à zéro dans un sens comme dans l'autre, la formulation honnête est donc « quelle est l'avance ici », et une position équilibrée est celle où cette avance est la plus faible.
Le MBI est une échelle de 0 à 100. 100 correspond au plus faible avantage mesuré des Blancs parmi les 960 positions — le départ le plus équilibré. 0 au plus fort. L'indice est une transformation fondée sur le RANG d'une seule grandeur mesurée : il dit comment une position se situe par rapport aux 959 autres, pas de combien de pions quelqu'un mène.
Comment chaque position est évaluée
Chaque position initiale est analysée une fois par Stockfish depuis la disposition de départ, avec un budget fixe de NŒUDS de recherche plutôt qu'un temps fixe. C'est la décision clé de toute la méthode : un budget de nœuds ne dépend pas de la machine. Un budget de temps donnerait à un ordinateur rapide une recherche plus profonde, donc un autre chiffre, et personne ne pourrait vérifier le résultat.
- Moteur : Stockfish 17.1, compilation officielle, évaluation NNUE intégrée au binaire.
- SHA-256 du binaire :
5f95eaea0d4eb697381989187ce6eb4d6ad59283c34421765ecc73cdb09ba766 - Réseaux NNUE : nn-1c0000000000.nnue, nn-37f18f62d772.nnue
- Limite de recherche : 400 000 000 nœuds par position (`go nodes`).
- Options UCI : Threads = 1, Hash = 256 Mo, UCI_Chess960 = true.
- `ucinewgame` avant chaque position : la table de hachage est vidée, les positions n'influencent pas les autres et l'ordre du calcul n'a aucune importance.
- Le score est toujours pris du point de vue des Blancs, en centipions (100 cp = un pion).
- La valeur et la variante proviennent de la dernière itération TERMINÉE de la recherche — une ligne sans borne inférieure ni supérieure. Une itération interrompue par la limite de nœuds annonce une borne, pas une évaluation stabilisée, et sa variante fait un ou deux coups ; la retenir reviendrait à publier du bruit.
Une recherche mono-thread avec un hachage fixe et un nombre de nœuds fixe est déterministe : le même binaire sur n'importe quelle machine renvoie la même valeur en centipions, bit pour bit. C'est ce qui rend une vérification indépendante possible, et pas seulement plausible.
Des centipions à l'indice
Les centipions ne mesurent linéairement rien d'humain, et l'écart entre +18 et +22 ne signifie rien en soi. L'indice utilise donc le RANG de la position parmi les 960, pas le chiffre brut :
rank(sp) = position of eval_cp(sp) in the sorted list of all 960 values
(ascending: smallest White edge first, ties share the mean rank)
MBI(sp) = round( 100 * (960 - rank(sp)) / (960 - 1) )
| Classe | Avantage des Blancs | Positions |
|---|---|---|
| A — les plus équilibrées | ≤ +19 cp | 240 |
| B — équilibrées | +20…+26 cp | 240 |
| C — avantage sensible | +27…+35 cp | 240 |
| D — avantage le plus fort | > +35 cp | 240 |
Sur les 960 positions, la valeur du moteur va de -7 à +83 centipions, médiane +26.0.
Comment se répartissent les 960 valeurs
Chaque barre est un intervalle de cinq centipions ; le nombre à droite indique combien des 960 positions y tombent.
Validation
Une évaluation de moteur est une affirmation sur une position. Pour vérifier qu'elle prédit des résultats réels, une partie des positions est jouée jusqu'au bout : moteur contre moteur, de nombreuses parties par position, graines fixées et publiées. Si les positions que l'indice qualifie d'équilibrées marquent effectivement plus près de 50 % pour les Blancs, l'indice mesure bien ce qu'il annonce.
- 60 positions × 50 parties = 3000 parties, cadence 300,000 nodes/move.
- Corrélation de Spearman entre l’évaluation initiale et le score des Blancs : 0.76 (IC 95 % 0.63…0.85, 10000 rééchantillonnages bootstrap). Le MBI est une transformation monotone de cette évaluation, le même nombre le décrit donc.
- Conclusion : validé — le classement prédit les résultats des parties automatiques ; l’indice est publié tel que mesuré.
Graine de base : 20260825. Chaque partie est rejouable à l’identique.
| Position | Groupe | Moteur, cp | Parties | V/N/D | Score des Blancs |
|---|---|---|---|---|---|
| 42 | aléatoires | +23 | 50 | 6/44/0 | 56.0% (42.3–68.8%) |
| 52 | aléatoires | +18 | 50 | 5/45/0 | 55.0% (41.3–67.9%) |
| 80 | les plus déséquilibrées | +83 | 50 | 7/42/1 | 56.0% (42.3–68.8%) |
| 86 | aléatoires | +34 | 50 | 1/48/1 | 50.0% (36.6–63.4%) |
| 102 | les plus équilibrées | 0 | 50 | 3/47/0 | 53.0% (39.5–66.1%) |
| 131 | les plus équilibrées | 0 | 50 | 0/50/0 | 50.0% (36.6–63.4%) |
| 204 | les plus équilibrées | 0 | 50 | 0/46/4 | 46.0% (33.0–59.6%) |
| 217 | les plus équilibrées | +3 | 50 | 0/50/0 | 50.0% (36.6–63.4%) |
| 259 | les plus équilibrées | +3 | 50 | 2/43/5 | 47.0% (33.9–60.6%) |
| 262 | aléatoires | +43 | 50 | 6/44/0 | 56.0% (42.3–68.8%) |
| 266 | aléatoires | +26 | 50 | 3/47/0 | 53.0% (39.5–66.1%) |
| 268 | les plus déséquilibrées | +58 | 50 | 8/42/0 | 58.0% (44.2–70.6%) |
| 269 | les plus équilibrées | 0 | 50 | 1/46/3 | 48.0% (34.8–61.5%) |
| 272 | les plus déséquilibrées | +58 | 50 | 13/36/1 | 62.0% (48.2–74.1%) |
| 292 | aléatoires | +49 | 50 | 1/49/0 | 51.0% (37.6–64.3%) |
| 300 | les plus équilibrées | 0 | 50 | 3/47/0 | 53.0% (39.5–66.1%) |
| 332 | les plus déséquilibrées | +59 | 50 | 10/40/0 | 60.0% (46.2–72.4%) |
| 348 | les plus déséquilibrées | +62 | 50 | 6/44/0 | 56.0% (42.3–68.8%) |
| 399 | les plus déséquilibrées | +65 | 50 | 7/38/5 | 52.0% (38.5–65.2%) |
| 401 | les plus équilibrées | -7 | 50 | 0/49/1 | 49.0% (35.7–62.4%) |
| 418 | les plus équilibrées | -2 | 50 | 1/49/0 | 51.0% (37.6–64.3%) |
| 424 | aléatoires | +23 | 50 | 6/44/0 | 56.0% (42.3–68.8%) |
| 429 | les plus équilibrées | 0 | 50 | 0/50/0 | 50.0% (36.6–63.4%) |
| 432 | les plus équilibrées | +3 | 50 | 5/44/1 | 54.0% (40.4–67.0%) |
| 433 | les plus équilibrées | -4 | 50 | 4/45/1 | 53.0% (39.5–66.1%) |
| 467 | les plus équilibrées | +2 | 50 | 2/47/1 | 51.0% (37.6–64.3%) |
| 471 | les plus équilibrées | 0 | 50 | 0/50/0 | 50.0% (36.6–63.4%) |
| 481 | aléatoires | +5 | 50 | 1/49/0 | 51.0% (37.6–64.3%) |
| 485 | les plus équilibrées | +3 | 50 | 1/49/0 | 51.0% (37.6–64.3%) |
| 497 | les plus équilibrées | 0 | 50 | 0/48/2 | 48.0% (34.8–61.5%) |
| 499 | aléatoires | +18 | 50 | 4/46/0 | 54.0% (40.4–67.0%) |
| 531 | aléatoires | +13 | 50 | 4/46/0 | 54.0% (40.4–67.0%) |
| 556 | aléatoires | +21 | 50 | 2/48/0 | 52.0% (38.5–65.2%) |
| 557 | les plus déséquilibrées | +63 | 50 | 15/35/0 | 65.0% (51.1–76.7%) |
| 565 | les plus déséquilibrées | +60 | 50 | 4/44/2 | 52.0% (38.5–65.2%) |
| 576 | les plus équilibrées | 0 | 50 | 1/48/1 | 50.0% (36.6–63.4%) |
| 578 | les plus déséquilibrées | +56 | 50 | 12/38/0 | 62.0% (48.2–74.1%) |
| 593 | les plus équilibrées | +2 | 50 | 0/49/1 | 49.0% (35.7–62.4%) |
| 604 | les plus déséquilibrées | +81 | 50 | 13/37/0 | 63.0% (49.1–75.0%) |
| 620 | les plus déséquilibrées | +63 | 50 | 12/38/0 | 62.0% (48.2–74.1%) |
| 637 | aléatoires | +21 | 50 | 7/43/0 | 57.0% (43.3–69.7%) |
| 654 | aléatoires | +34 | 50 | 4/45/1 | 53.0% (39.5–66.1%) |
| 665 | aléatoires | +22 | 50 | 6/44/0 | 56.0% (42.3–68.8%) |
| 745 | aléatoires | +13 | 50 | 3/46/1 | 52.0% (38.5–65.2%) |
| 748 | aléatoires | +42 | 50 | 6/43/1 | 55.0% (41.3–67.9%) |
| 760 | les plus déséquilibrées | +61 | 50 | 8/40/2 | 56.0% (42.3–68.8%) |
| 784 | les plus déséquilibrées | +58 | 50 | 10/38/2 | 58.0% (44.2–70.6%) |
| 786 | les plus équilibrées | +2 | 50 | 4/45/1 | 53.0% (39.5–66.1%) |
| 794 | les plus déséquilibrées | +67 | 50 | 12/38/0 | 62.0% (48.2–74.1%) |
| 801 | aléatoires | +11 | 50 | 1/49/0 | 51.0% (37.6–64.3%) |
| 814 | aléatoires | +32 | 50 | 5/45/0 | 55.0% (41.3–67.9%) |
| 823 | les plus équilibrées | -5 | 50 | 2/48/0 | 52.0% (38.5–65.2%) |
| 868 | les plus déséquilibrées | +75 | 50 | 9/41/0 | 59.0% (45.2–71.5%) |
| 870 | aléatoires | +44 | 50 | 5/45/0 | 55.0% (41.3–67.9%) |
| 879 | les plus déséquilibrées | +66 | 50 | 11/38/1 | 60.0% (46.2–72.4%) |
| 880 | les plus déséquilibrées | +63 | 50 | 7/42/1 | 56.0% (42.3–68.8%) |
| 885 | aléatoires | +14 | 50 | 1/49/0 | 51.0% (37.6–64.3%) |
| 886 | les plus déséquilibrées | +58 | 50 | 5/45/0 | 55.0% (41.3–67.9%) |
| 902 | les plus déséquilibrées | +62 | 50 | 5/44/1 | 54.0% (40.4–67.0%) |
| 935 | les plus déséquilibrées | +78 | 50 | 11/38/1 | 60.0% (46.2–72.4%) |
Vérification approfondie et classification v2
La version 2.0 ajoute une seconde couche à l'indice. Chaque position a été jouée le long de la ligne principale du moteur sur 30 coups (35 pour l'ensemble prioritaire), les positions les plus équilibrées et toutes celles nulles ou négatives ont été recalculées avec un budget de nœuds 3 à 10 fois plus grand, et les nulles/négatives ont reçu en plus une recherche MultiPV à trois lignes et une seconde série de self-play.
Bande d'équilibre (selon l'évaluation de base)
Seuils absolus en centipions au lieu de quartiles : E — égale, |cp| ≤ 10 ; S — léger, 11–25 ; M — modéré, 26–40 ; L — grand, ≥ 41. Les quartiles garantissaient 240 positions « équilibrées » quelles que soient les données ; une bande ne contient que celles qui existent vraiment. Le calcul de base (400 000 000 nœuds, même profondeur pour les 960) fixe la bande ; la recherche plus profonde la vérifie.
| Bande | Positions |
|---|---|
| E — égale | 64 |
| S — léger avantage | 386 |
| M — avantage modéré | 377 |
| L — grand avantage | 133 |
Dynamique (le long de la partie jouée)
Le même moteur joue les deux camps avec un budget fixe de 5 000 000 nœuds par coup et l'évaluation est enregistrée avant chaque demi-coup. volatile — l'évaluation a oscillé de ≥ 60 cp ou a changé de signe au moins 2 fois (seules les valeurs au-delà de ±15 cp comptent) ; égalisante — l'avantage final est inférieur d'au moins 10 cp à celui du départ ; aiguisante — supérieur d'au moins 15 cp ; stable — tout le reste.
Les évaluations à ce budget par coup surestiment l'avantage blanc en début de partie et convergent vers zéro à mesure que la position se simplifie, si bien que la trajectoire brute de presque toute position « s'égalise ». Avant l'étiquetage, on soustrait à chaque partie jouée la trajectoire médiane des 960 positions (par demi-coup) : la dérive commune s'annule et il reste ce qui distingue cette position d'une position typique. Les points bruts à 10, 20 et 30 coups sont publiés tels quels.
| Dynamique | Positions |
|---|---|
| stable | 542 |
| égalisante | 285 |
| aiguisante | 25 |
| volatile | 108 |
Bandes × dynamique
| Bande | stable | égalisante | aiguisante | volatile |
|---|---|---|---|---|
| E | 28 | 33 | 1 | 2 |
| S | 234 | 120 | 6 | 26 |
| M | 240 | 81 | 14 | 42 |
| L | 40 | 51 | 4 | 38 |
Recalcul plus profond
Les positions avec |cp| ≤ 25 ont été recalculées avec 1 200 000 000 nœuds, les nulles et négatives avec 4 000 000 000 nœuds — un thread, hash fixe, chaque nombre est reproductible bit à bit. Une position est dite vérifiée quand la valeur profonde reste à 10 cp du calcul de base (le double du bruit entre itérations de la recherche de base) : 123 sur 147 vérifiées. La recherche plus profonde décale ces positions systématiquement vers le haut — médiane +3 cp à ×3 et +9 cp à ×10 — et aucune n'est ressortie négative ; la bande selon la valeur profonde est publiée à côté de la bande de base, le lecteur voit les deux.
Les treize contestées
Treize positions sont ressorties nulles ou légèrement négatives au calcul de base. La recherche profonde décide du signe ; la recherche MultiPV à trois lignes (800 000 000 nœuds) et une seconde série de self-play (100 parties par position à 1 000 000 nœuds par coup) sont des contrôles indépendants, pas un veto.
| Position | Moteur, cp | Profond, cp | Verdict | Self-play v2 |
|---|---|---|---|---|
| 102 | 0 | +20 | avantage blanc — le moins était du bruit | 54.5% (44.8–63.9%) |
| 131 | 0 | +5 | égale — dans le bruit du moteur | 50.5% (40.9–60.1%) |
| 204 | 0 | +9 | égale — dans le bruit du moteur | 47.5% (38.0–57.2%) |
| 269 | 0 | +15 | avantage blanc — le moins était du bruit | 48.5% (38.9–58.2%) |
| 300 | 0 | +12 | avantage blanc — le moins était du bruit | 51.5% (41.8–61.1%) |
| 401 | -7 | 0 | égale — dans le bruit du moteur | 49.0% (39.4–58.7%) |
| 418 | -2 | +5 | égale — dans le bruit du moteur | 50.5% (40.9–60.1%) |
| 429 | 0 | +10 | égale — dans le bruit du moteur | 51.0% (41.3–60.6%) |
| 433 | -4 | +3 | égale — dans le bruit du moteur | 51.5% (41.8–61.1%) |
| 471 | 0 | +15 | avantage blanc — le moins était du bruit | 50.0% (40.4–59.6%) |
| 497 | 0 | +6 | égale — dans le bruit du moteur | 49.0% (39.4–58.7%) |
| 576 | 0 | +13 | avantage blanc — le moins était du bruit | 50.0% (40.4–59.6%) |
| 823 | -5 | 0 | égale — dans le bruit du moteur | 51.5% (41.8–61.1%) |
Bandes par famille de positions
| Nomenclature | E | S | M | L |
|---|---|---|---|---|
| BastionGuard | 14 | 69 | 58 | 27 |
| BastionScout | 14 | 61 | 70 | 23 |
| RampartGuard | 11 | 53 | 67 | 13 |
| RampartScout | 2 | 30 | 30 | 10 |
| ThroneGuard | 16 | 98 | 65 | 25 |
| ThroneScout | 7 | 75 | 87 | 35 |
Limites — à lire avant de citer les chiffres
- Une évaluation de moteur n'est pas la pratique humaine. Une position que le moteur juge équilibrée peut rester inconfortable, tranchante ou déroutante pour un humain, et cela n'est pas mesuré ici.
- Un moteur, une fonction d'évaluation. Un autre moteur donnerait un ordre légèrement différent. La méthode est figée et publiée précisément pour que chacun puisse la refaire avec un autre moteur et comparer.
- Un budget de nœuds fixe est un instantané à une profondeur de recherche. Une analyse plus profonde déplace des valeurs individuelles ; le classement est bien plus stable qu'un chiffre isolé — d'où un indice fondé sur le rang.
- Le Chess960 n'a presque pas de théorie d'ouverture. Aux échecs classiques, l'avantage des Blancs tient en partie à une bibliothèque de lignes préparées ; ici, il ne tient qu'au travail des pièces. La mesure en est plus propre, mais ces chiffres ne disent rien du départ classique.
- Des parties automatiques en cadence très rapide sont une approximation bon marché du « jeu réel ». Elles valident l'ordre, elles ne certifient aucune position isolée.
- L'indice est une propriété de la SEULE position de départ. Il ne dit rien de qui est mieux après le premier coup.
- La partie jouée est une seule ligne du moteur avec un budget modeste par coup : elle montre comment l'équilibre se comporte en jeu rapide, pas la valeur théorique de la position.
Vérifier soi-même
Tout ce qu'il faut pour recalculer le jeu de données est public : la compilation exacte du moteur, le budget, les scripts et la sortie brute. Recalculer une position prend quelques minutes sur un seul cœur ; l'ensemble, une nuit.
- Téléchargez les données brutes et les scripts depuis la page des données ouvertes. Données ouvertes
- Vérifiez une position contre le jeu de données publié — la commande la recalcule entièrement et compare :
python tools/balance/verify_reproduce.py --sp 518 - Ou recalculez l'ensemble (reprise possible : après une interruption, l'exécution complète le même fichier) :
python tools/balance/eval_all.py --nodes 400000000 --workers 20
Si votre valeur diffère, c'est là le résultat intéressant : la compilation du moteur, le budget de nœuds ou les options ne correspondront pas. Les trois sont imprimés ci-dessus.
Citation et licence
La méthodologie et le jeu de données sont publiés sous CC BY 4.0 : utilisez-les pour tout usage, y compris commercial, avec attribution à l'auteur.
Morozov R. Chess960 Balance Index (MBI). ch960.com/balance, 2026. CC BY 4.0.
Équilibre des 960 positions · Jeu de données et sortie brute du moteur