♚Open in the app

Asymmetric setups: methodology

Author of the methodology: Roman Morozov. About the author

CC BY 4.0 Methodology and data: CC BY 4.0 — free to use with attribution to the author.

Pair space

A pair (w, b) means White starts from Scharnagl setup w and Black from setup b, 0–959 each. The left–right mirror image of a pair, (mirror(w), mirror(b)), is NOT the same position: Chess960 castling always ends on the c/d or g/f files, which are not mirror images of each other, so a position and its reflection have different castling options (BBQNRKRN can castle at once, its mirror NRKRNQBB cannot). The search treated the two as one class and evaluated only the lexicographically smaller pair, so it covers 460,800 representatives, one from each mirror pair, i.e. half of the 921,600 ordered pairs. The published pairs are the ones actually evaluated; a mirror twin is listed only as a pointer, and its value is not inferred. Symmetric pairs (w = b) are the ordinary Chess960 starts covered by the Morozov Balance Index. Here they serve as the control: they run through the same stages, but they are not ranked as asymmetric pairs.

Mirror twins

How different are a position and its mirror image? All 960 symmetric Chess960 starts were evaluated individually at 400M nodes for the Morozov Balance Index, which gives 480 pairs of mirror twins measured by the same engine with the same budget. The twins differ by 9.8 cp on average; 61% differ by more than 5 cp and 37% by more than 10 cp; the correlation between twins is only r = 0.50. The classical start 518 reads +11 cp while its mirror image 534 reads +49 cp. For comparison, raising the budget from 400M to 1.2G nodes moves the evaluation of the same position by 5.3 cp on average: the twins differ about twice as much as a tripling of the budget. This is why the search's mirror classes are treated as coverage of half the space, not as equivalence, and why the mirror twins of the published pairs are being evaluated separately.

Stages and thresholds

Stage 0 screens every pair with a small budget. A pair advances to stage k+1 only if |cp| at stage k is within the stage's limit. The windows are not guesses: a control run of 147 symmetric Chess960 positions through every stage outside the windows showed that shallow searches read a position at about +18 cp for White on average with a spread of ±12 cp at 100k nodes, falling to +7 ± 7 cp at 128M; within the near-even band the shallow readings barely correlate with the deep ones, so early stages can only reject a clear edge, and only depth decides who is more even. A stage's window is therefore the 95th percentile of |cp| among control positions that are even at depth (|cp| ≤ 10 by the Morozov Balance Index at 400M nodes), so that at least 95% of truly even pairs survive each stage. The last regular stage is 128M nodes; beyond it verified pairs are deepened from 400M nodes (the Morozov Balance Index budget) by doubling. Since 26 September 2026 most of the compute goes to deepening rather than to screening new pairs; the actual share is written into the run passport. The traversal order of stage 0 is a fixed seeded shuffle (20260918). Waves are served depth-first: the deepest stage with pending candidates goes first, and within a stage the most even candidates go first.

S0: 100 000 / ≤ 50; S1: 500 000 / ≤ 40; S2: 2 000 000 / ≤ 41; S3: 8 000 000 / ≤ 32; S4: 32 000 000 / ≤ 30; S5: 128 000 000 / ≤ 35

Reproduce

Same Stockfish build (sha256 in the passport), Threads=1, hash fixed per stage, node limit, ucinewgame per position, last completed iteration. Commands:

python tools/asym/asym_search.py --status
python tools/asym/asym_search.py --run --workers 10
python tools/asym/asym_dataset.py

Limitations

  1. An engine evaluation is a claim about best play, not about human practice; the self-play published for the encyclopedia pairs tests practical play at a modest budget and does not replace the evaluation.
  2. Shallow stages are noisy: a pair screened out at 100k nodes with |cp| just above the window may be balanced in truth. The windows are deliberately wide early on.
  3. The search is ongoing: counts, ranks and stages on these pages change as it deepens; the generation timestamp is printed on the hub.
  4. «Exactly zero» is a property of the budget as much as of the position: at every doubling of the budget roughly one pair in ten leaves 0.00, while the spread of the whole set shrinks (3.6 → 2.1 → 1.7 cp from 4 to 16 billion nodes). The defensible claim is balance within a few centipawns with the residual scattered on both sides of zero. This is why the admission rule of the encyclopedia is a corridor (|cp| ≤ 5 at four budgets, no one-sided drift) confirmed by two further engines, Berserk and Lc0, each below its own median on symmetric positions.

Prior work

The 960 × 960 scheme itself is not new: it is known as Double Fischer Random Chess (DFRC, also FRD) and engines have played it at TCEC since 2022. Stockfish's book repository holds an exhaustive screen of all 921,600 DFRC starts by Stockfish 17.1 at depth 22, filtered by the model draw rate for engine testing (R. Nürnberg, 2025). Engine studies of the 960 symmetric starts exist as well (Sesse, 2018; Barthelemy, 2025). What this project adds is the search for evaluation balance on mirror classes, the staged budget ladder with calibrated windows, verification up to 16 billion nodes, the cross-engine rule and an open, reproducible set of pairs.

Morozov R. Asymmetric Chess960 balance rating. ch960.com/asym, 2026. CC BY 4.0.

All asymmetric setups