Analysis Policy v1: Engine, Budgets, and Thresholds

How does BlunderLoop analyze a chess game?

BlunderLoop analysis policy v1 runs Stockfish 18 lite, a single-threaded WebAssembly build, entirely in your browser. Each position gets a fixed time budget by device tier (400, 650, or 750 milliseconds), every evaluation is converted to a win chance with the lichess sigmoid, and each move is graded by win-chance drop: under 2 points best, 2 to under 8 inaccuracy, 8 to under 20 mistake, and 20 points or more blunder. The policy is fixed and versioned, so analyzing the same game twice under v1 produces the same report.

Engine

Reports are produced by Stockfish 18 lite (the stockfish-18-lite-single build): a single-threaded WebAssembly engine running in a Web Worker in your own browser. Nothing is sent to a server for analysis, and the single-threaded build behaves the same across devices, which keeps results reproducible.

Time budgets by device tier

Each position is searched for a fixed movetime chosen from three device tiers, so a full game (about 80 positions in a 40-move game) finishes in roughly half a minute to a minute. Devices are classified by memory and CPU cores; when in doubt, BlunderLoop assumes the low tier rather than overdriving an unknown device.

Policy v1 engine budgets (src/lib/engine/budget.ts)
TierMovetime per positionDepth cap~80 positions
Low400 ms10about 32 s
Mid650 ms14about 52 s
High750 ms18about 60 s

Win-chance conversion

Every centipawn evaluation is converted to a 0-100 win chance with the lichess-standard sigmoid: Win% = 50 + 50 x (2 / (1 + e^(-0.00368208 x cp)) - 1). Centipawns are clamped to +/-1000 first, which caps cp-based win chances at about 2.46-97.54, and forced-mate scores map to the near-extremes so every mate ranks beyond every centipawn score.

Grading thresholds

A move is graded by how many percentage points of win chance the mover gave up, using the fixed v1 thresholds.

Policy v1 thresholds by win-chance drop (percentage points)
GradeWin-chance drop
Bestunder 2 points
Inaccuracy2 to under 8 points
Mistake8 to under 20 points
Blunder20 points or more

Consistency guarantee

The policy version (v1) is recorded with every persisted analysis result. Because the engine build, time budgets, win-chance formula, and thresholds are all fixed under that version, running the same game through analysis twice yields the same grades. If a future policy changes any of these rules, it will ship as a new version, and reports produced by older policies remain detectable and can be re-run.

← All method articles