Anchored Ordo STC rating for SHAYVERI NNUE Evaluation
Anchored Ordo LTC rating for SHAYVERI NNUE Evaluation
Elo gained at STC compared to SHAYVERI v2.9.0
Elo gained at LTC compared to SHAYVERI v2.9.0
01 / Engine
Overview
Protocol
Implements UCI for command-line use and integration with chess GUIs, tournament managers, and bot frameworks.
Configuration
Exposes runtime controls for hash memory, threads, evaluation path and network, opening-book use, pondering, and time allocation.
Search
Combines iterative deepening, Principal Variation Search, transposition-table reuse, selective pruning, extensions, and history-based move ordering.
Evaluation
Provides an embedded KB16x512 NNUE evaluation and an independently tuned HCE evaluation path.
Time And Parallelism
Supports deterministic single-thread search and timed Lazy SMP with adaptive soft and hard time limits.
Opening Book
The self-built embedded book uses standard-chess games from TWIC where both players are rated at least 2600. Its reproducible pipeline keeps the first 30 plies, aggregates observed moves for positions with at least five weighted plays, and compiles the majority move without evaluator-specific metadata.
Platform
Targets modern x86-64 CPUs with BMI/BMI2, LZCNT, and POPCNT support, with build targets for Linux, Windows, and Intel macOS.
02 / Performance
Elo Results
The public rating numbers come from controlled multi-engine round-robin gauntlets analyzed with Ordo. They are pool-relative, anchored to fixed-strength SF2850 and SF3000, and should not be read as universal CCRL ratings.
| Engine | Evaluation | Time Control | Rating | Error |
|---|---|---|---|---|
| SHAYVERI v2.10.0 | HCE | STC 10+0.1 | 2674.8 | ±18.1 |
| SHAYVERI v2.10.0 | HCE | LTC 90+0.5 | 2794.1 | ±30.9 |
| SHAYVERI v2.10.0 | NNUE | STC 10+0.1 | 3261.4 | ±16.0 |
| SHAYVERI v2.10.0 | NNUE | LTC 90+0.5 | 3320.6 | ±30.3 |
SHAYVERI v2.10.0 / NNUE leads HCE by about +586.6 Elo at STC and +526.5 Elo at LTC in this anchored pool. Against v2.9.0 on the same anchored scale, it gained +67.0 Elo at STC and +50.3 Elo at LTC. It is above SF3000 at both time controls.
03 / Search
Search Stack
Core
- Iterative-deepening negamax with alpha-beta pruning, Principal Variation Search, and aspiration windows.
- Transposition-table cutoffs, mate-distance pruning, check extensions, and internal iterative reductions.
- Quiescence search with stand pat, legal check evasions at the depth floor, and TT reuse.
- Terminal, repetition, fifty-move, and insufficient-material handling inside search.
Pruning
- Verified null-move pruning, reverse futility pruning, futility pruning, LMP, and history pruning.
- Capture-only ProbCut searches test likely fail-highs before the full move loop.
- Late move reductions adapt to PV status, cut nodes, improving positions, move count, and history quality.
- Singular extensions, double/triple extensions, multi-cut pruning, and reduced TT-move handling use excluded-move verification.
- SEE, delta, futility, and promotion-aware gates constrain main search and quiescence pruning.
Ordering And State
- Staged TT, capture, promotion, killer, countermove, quiet, and losing-capture phases drive move ordering.
- Gravity-based main, continuation, follow-up, and capture histories reward cutoffs and penalize failed moves.
- Pawn-keyed correction history adjusts static evaluation and persists between searches.
- A race-safe four-way cache-line transposition table stores bounds, moves, and reusable static evaluations.
Time Management
- Soft and hard limits account for the remaining clock, increment, moves to go, and move overhead.
- The soft limit adapts to best-move stability, score drops, root node share, and multi-depth evaluation stability.
- A hard timer enforces the absolute clock ceiling while low-clock sudden-death controls use an emergency survival cap.
- Fixed move time, minimum thinking time, pondering,
ponderhit, and timed Lazy SMP share the same stop policy.
04 / Evaluation
Evaluation Paths
To select between the HCE and NNUE evaluation paths, use the UCI option UseNNUE.
Handcrafted Evaluation
- Tapered middlegame/endgame material, piece-square tables, bishop-pair scoring, development, and tempo.
- Pawn-hash evaluation of passed, isolated, doubled, backward, chained, storming, weak, and islanded pawns.
- King safety from pawn shields, open files, king-zone pressure, coordinated attackers, and escape squares.
- Safe mobility with file-openness scaling, piece coordination, batteries, and mutual support.
- Pins, overloads, undefended pieces, pawn and minor-piece threats, and supported outposts.
- Evaluation and search parameters refined through Texel tuning and SPSA.
NNUE Evaluation
- The embedded default is
SHAYVERI2_10_4.nnue, a KB16x512 network using SCReLU. - Side-relative Chess768 features are split across 16 mirrored king buckets and a 512-unit hidden layer.
- Two perspective accumulators are refreshed or incrementally updated through make/unmake search.
- Scalar and AVX2 inference paths evaluate the same network format.
- The UCI option
EvalFileaccepts compatible Chess768, KB8, and KB16 networks with 256 or 512 hidden units. - The promoted network followed a two-stage continuation: Net1 was warm-started from
SHAYVERI2_5_0.nnueon external RobotMoon/Stockfish data, then Net4 was warm-started from Net1 using 45% corrected SHAYVERI self-play data and 55% frozen Net1 external data. The training data are not included in the repository.
05 / Configuration
UCI Options
Resources
- Hash
- Sets the transposition-table allocation, in MB.
- ClearHash
- Clears the transposition table and all persistent search histories.
- Threads
- Sets the requested search-thread count, bounded by detected hardware capacity.
Evaluation
- UseNNUE
- Toggles between the NNUE and HCE evaluation paths without changing the configured network path.
- EvalFile
- Specifies the path to a compatible external NNUE network. The embedded default is used when left unchanged.
Opening Book
- OwnBook
- Toggles use of SHAYVERI's built-in opening book.
- BookInfoDepth
- Sets the search depth used to report SHAYVERI's own book-move information. A value of
0disables the search.
Search Timing
- Ponder
- Toggles ponder-move output so a chess GUI can start a
go pondersearch during the opponent's turn. - MinimumThinkingTime
- Sets the minimum time, in milliseconds, allocated to dynamically timed moves.
- MoveOverhead
- Reserves time for chess GUI and network delay, in milliseconds, before calculating the search limits.
06 / Usage
Build And Use
Builds require C++20 and a modern x86-64 CPU with BMI/BMI2, LZCNT, and POPCNT. Keep SHAYVERI2_10_4.nnue at the repository root so it can be embedded during compilation. At runtime, the UCI option EvalFile can select a compatible external network instead.
$ make
$ make windows
$ make macos
$ make pgo
$ make clean
On Linux, the PGO target builds the profile-guided SHAYVERI_pgo binary. It trains the engine on representative fixed and timed single-thread and Lazy SMP searches, then rebuilds it using the collected profile. This machine-native build takes longer but provides the best local performance. Release binaries remain portable non-PGO builds.
› uci
› isready
› position startpos moves e2e4 e7e5
› go movetime 1000
07 / Quality
Verification
- Rules and state: perft, FEN validation, make/unmake roundtrips, en-passant, SEE, evaluation symmetry, and draw handling.
- Search: checked quiescence, node and move restrictions, transposition-table safety, time-manager policy, and tactical regressions.
- Protocol and concurrency: UCI handshake, opening-book behavior, deterministic single-thread search, timed Lazy SMP, and pondering.
- Tooling: strict warning-clean compilation, focused clang-tidy checks, bench-signature validation, and datagen output checks.
$ make test