Открыть в приложении

Индекс Морозова (MBI): методология

Индекс Морозова (MBI) отвечает на один вопрос для каждой из 960 стартовых позиций Chess960: насколько велик перевес белых на старте. На этой странице — весь метод целиком: любое число на сайте можно пересчитать по нему заново.

Автор методологии: Роман Морозов. Об авторе · Версия 1.0 · 2026-08-25

CC BY 4.0 Методология и данные: CC BY 4.0 — свободное использование со ссылкой на автора.

Что именно измеряется

В шахматах белые ходят первыми. Право первого хода чего-то стоит — и в Chess960 оно стоит по-разному в каждой из 960 расстановок. Индекс измеряет ВЕЛИЧИНУ этого стартового перевеса, а не то, кто лучше стоит. В 956 позициях из 960 движок ставит старт от равенства и выше в пользу белых; оставшиеся четыре уходят в минус на 2–7 сантипешки — это меньше, чем оценка гуляет между собственными итерациями поиска, то есть шум около нуля, а не перевес чёрных. Мера — расстояние от нуля в любую сторону, поэтому честная формулировка — «насколько велика фора здесь», а ровной называется позиция, где эта фора наименьшая.

MBI — шкала 0–100. 100 — наименьший измеренный перевес белых среди всех 960 позиций, самый ровный старт. 0 — наибольший. Индекс построен на РАНГЕ позиции, а не на абсолютной величине, поэтому он говорит, как позиция выглядит на фоне остальных 959, а не на сколько пешек кто-то впереди.

Как оценивается каждая позиция

Каждая стартовая позиция один раз анализируется Stockfish из начальной расстановки с фиксированным бюджетом УЗЛОВ, а не фиксированным временем. Это ключевое решение всего метода: бюджет узлов не зависит от машины. Бюджет времени дал бы быстрому компьютеру более глубокий поиск и, значит, другое число — и проверить результат было бы невозможно.

Однопоточный поиск с фиксированным хешем и фиксированным числом узлов детерминирован: тот же бинарник на любой машине вернёт то же значение в сантипешках, бит в бит. Именно это делает независимую проверку возможной, а не просто правдоподобной.

От сантипешек к индексу

Сантипешки — не линейная мера чего-либо человеческого, и разница между +18 и +22 сама по себе ничего не значит. Поэтому индекс использует РАНГ позиции среди всех 960, а не сырое число:

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) )
Класс Перевес белых Позиций
A — самые ровные ≤ +19 cp 240
B — ровные +20…+26 cp 240
C — заметный перевес +27…+35 cp 240
D — наибольший перевес > +35 cp 240

На всех 960 позициях оценка движка укладывается в диапазон от +-7 до +83 сантипешек, медиана +26.0.

Как распределены 960 значений

Каждая полоса — корзина шириной в пять сантипешек; число справа — сколько из 960 стартовых позиций в неё попало.

-10..-6 cp1
-5..-1 cp3
0..4 cp19
5..9 cp25
10..14 cp72
15..19 cp135
20..24 cp159
25..29 cp173
30..34 cp131
35..39 cp96
40..44 cp63
45..49 cp43
50..54 cp18
55..59 cp8
60..64 cp7
65..69 cp3
70..74 cp0
75..79 cp2
80..84 cp2

Валидация

Движковая оценка — это утверждение о позиции. Чтобы проверить, что утверждение предсказывает реальный результат, часть позиций доигрывается: движок против движка, много партий на позицию, сиды зафиксированы и опубликованы. Если позиции, которые индекс называет ровными, действительно дают счёт ближе к 50% за белых — значит, индекс измеряет то, что заявлено.

Базовый сид: 20260825. Любая партия воспроизводится точно.

Позиция Группа Движок, cp Партий +/=/− Счёт белых
42 случайные +23 50 6/44/0 56.0% (42.3–68.8%)
52 случайные +18 50 5/45/0 55.0% (41.3–67.9%)
80 самые перекошенные +83 50 7/42/1 56.0% (42.3–68.8%)
86 случайные +34 50 1/48/1 50.0% (36.6–63.4%)
102 самые ровные 0 50 3/47/0 53.0% (39.5–66.1%)
131 самые ровные 0 50 0/50/0 50.0% (36.6–63.4%)
204 самые ровные 0 50 0/46/4 46.0% (33.0–59.6%)
217 самые ровные +3 50 0/50/0 50.0% (36.6–63.4%)
259 самые ровные +3 50 2/43/5 47.0% (33.9–60.6%)
262 случайные +43 50 6/44/0 56.0% (42.3–68.8%)
266 случайные +26 50 3/47/0 53.0% (39.5–66.1%)
268 самые перекошенные +58 50 8/42/0 58.0% (44.2–70.6%)
269 самые ровные 0 50 1/46/3 48.0% (34.8–61.5%)
272 самые перекошенные +58 50 13/36/1 62.0% (48.2–74.1%)
292 случайные +49 50 1/49/0 51.0% (37.6–64.3%)
300 самые ровные 0 50 3/47/0 53.0% (39.5–66.1%)
332 самые перекошенные +59 50 10/40/0 60.0% (46.2–72.4%)
348 самые перекошенные +62 50 6/44/0 56.0% (42.3–68.8%)
399 самые перекошенные +65 50 7/38/5 52.0% (38.5–65.2%)
401 самые ровные -7 50 0/49/1 49.0% (35.7–62.4%)
418 самые ровные -2 50 1/49/0 51.0% (37.6–64.3%)
424 случайные +23 50 6/44/0 56.0% (42.3–68.8%)
429 самые ровные 0 50 0/50/0 50.0% (36.6–63.4%)
432 самые ровные +3 50 5/44/1 54.0% (40.4–67.0%)
433 самые ровные -4 50 4/45/1 53.0% (39.5–66.1%)
467 самые ровные +2 50 2/47/1 51.0% (37.6–64.3%)
471 самые ровные 0 50 0/50/0 50.0% (36.6–63.4%)
481 случайные +5 50 1/49/0 51.0% (37.6–64.3%)
485 самые ровные +3 50 1/49/0 51.0% (37.6–64.3%)
497 самые ровные 0 50 0/48/2 48.0% (34.8–61.5%)
499 случайные +18 50 4/46/0 54.0% (40.4–67.0%)
531 случайные +13 50 4/46/0 54.0% (40.4–67.0%)
556 случайные +21 50 2/48/0 52.0% (38.5–65.2%)
557 самые перекошенные +63 50 15/35/0 65.0% (51.1–76.7%)
565 самые перекошенные +60 50 4/44/2 52.0% (38.5–65.2%)
576 самые ровные 0 50 1/48/1 50.0% (36.6–63.4%)
578 самые перекошенные +56 50 12/38/0 62.0% (48.2–74.1%)
593 самые ровные +2 50 0/49/1 49.0% (35.7–62.4%)
604 самые перекошенные +81 50 13/37/0 63.0% (49.1–75.0%)
620 самые перекошенные +63 50 12/38/0 62.0% (48.2–74.1%)
637 случайные +21 50 7/43/0 57.0% (43.3–69.7%)
654 случайные +34 50 4/45/1 53.0% (39.5–66.1%)
665 случайные +22 50 6/44/0 56.0% (42.3–68.8%)
745 случайные +13 50 3/46/1 52.0% (38.5–65.2%)
748 случайные +42 50 6/43/1 55.0% (41.3–67.9%)
760 самые перекошенные +61 50 8/40/2 56.0% (42.3–68.8%)
784 самые перекошенные +58 50 10/38/2 58.0% (44.2–70.6%)
786 самые ровные +2 50 4/45/1 53.0% (39.5–66.1%)
794 самые перекошенные +67 50 12/38/0 62.0% (48.2–74.1%)
801 случайные +11 50 1/49/0 51.0% (37.6–64.3%)
814 случайные +32 50 5/45/0 55.0% (41.3–67.9%)
823 самые ровные -5 50 2/48/0 52.0% (38.5–65.2%)
868 самые перекошенные +75 50 9/41/0 59.0% (45.2–71.5%)
870 случайные +44 50 5/45/0 55.0% (41.3–67.9%)
879 самые перекошенные +66 50 11/38/1 60.0% (46.2–72.4%)
880 самые перекошенные +63 50 7/42/1 56.0% (42.3–68.8%)
885 случайные +14 50 1/49/0 51.0% (37.6–64.3%)
886 самые перекошенные +58 50 5/45/0 55.0% (41.3–67.9%)
902 самые перекошенные +62 50 5/44/1 54.0% (40.4–67.0%)
935 самые перекошенные +78 50 11/38/1 60.0% (46.2–72.4%)

Ограничения — прочтите до того, как цитировать числа

Как перепроверить самому

Всё, что нужно для пересчёта датасета, открыто: точная сборка движка, бюджет, скрипты и сырой вывод. Пересчёт одной позиции занимает несколько минут на одном ядре, весь набор — одну ночь.

  1. Скачайте сырые данные и скрипты со страницы открытых данных. Открытые данные
  2. Проверьте одну позицию против опубликованного датасета — команда считает её заново и сверяет:
    python tools/balance/verify_reproduce.py --sp 518
  3. Или пересчитайте весь набор (прогон возобновляемый: после обрыва дописывается в тот же файл):
    python tools/balance/eval_all.py --nodes 400000000 --workers 20

Если ваше значение отличается — это и есть находка: не совпадут либо сборка движка, либо бюджет узлов, либо опции. Все три напечатаны выше.

Цитирование и лицензия

Методология и датасет опубликованы под CC BY 4.0: используйте как угодно, в том числе коммерчески, со ссылкой на автора.

Морозов Р. Индекс баланса Chess960 (MBI). ch960.com/balance, 2026. CC BY 4.0.

Баланс всех 960 позиций · Датасет и сырой вывод движка