12. Annex: Statistics model — XG / gnuBG / blunderDB alignment
This page describes how blunderDB computes PR (Performance Rate), Snowie Error Rate, and MWC loss, and how these metrics are aligned with eXtreme Gammon (XG) and gnuBG (open reference).
12.1. Formal definitions
12.1.1. PR (Performance Rate)
PR (also called “error rate per decision” in gnuBG) measures the average error in thousandths of an equity point (millipoints, mpt) per counted decision.
The numerator is the absolute sum of EMG errors (cubeful equity) over all decisions in the scope.
The denominator \(N_\text{counted}\) is the number of counted decisions (see below).
The factor 500 converts equity to millipoints (1 point = 1000 mpt, but the scale is ×500 by XG/gnuBG convention — cf.
gnubg/formatgs.c:399–409).
12.1.2. Snowie Error Rate
Snowie ER uses the same numerator as PR, but the denominator is the total number of moves of both players, forced moves included (all decisions, no filter):
Reference: gnubg/formatgs.c:415–424.
Snowie ER is more stable across tools because its denominator does not depend on the forced/trivial decision filter. It serves as a cross-check metric between XG, gnuBG, and blunderDB.
Note
A player’s Snowie ER is typically about half their PR, because the denominator includes moves from both players while PR only uses that player’s decisions.
12.1.3. MWC loss (Match Winning Chance)
MWC loss expresses in percentage points of match-winning probability the cumulative effect of a player’s errors. For each decision, the EMG error is converted to MWC using the MET (Match Equity Table) at the current score:
Reference: gnubg/analysis.c:1449–1464.
12.2. Decisions counted in the PR denominator
blunderDB follows the same exclusion rules as XG and gnuBG.
12.2.1. Checker plays — counted decisions
Only unforced moves are counted:
A move is forced if the dice offer only one legal play (
cMoves == 1ingnubg/analysis.c:458).Forced moves have zero error by definition: the player had no choice. Including them in the denominator would artificially lower PR.
12.2.2. Cube decisions — counted decisions
Only close cube decisions are counted:
A cube decision is close if it lies within the equity window
[-0.16, +0.16]around the doubling point (predicateisCloseCubedecisioningnubg/eval.c:5088–5100).A trivial No Double (very negative or very positive equity) is not a genuine strategic decision; including it would inflate the denominator and depress PR.
12.2.3. Filter summary
Decision type |
Included in \(N_\text{counted}\) (PR) |
|---|---|
Unforced move |
Yes |
Forced move |
No |
Close cube |
Yes |
Trivial No Double |
No |
Take / Pass |
Always (these are responses to a double) |
12.3. blunderDB ↔ XG ↔ gnuBG correspondence
Metrics are aligned within the following bounds (measured on 3 reference matches):
12.3.1. XG ↔ blunderDB comparison (same analysis engine)
Metric |
Typical gap |
|---|---|
Total decisions |
≤ 5 |
Unforced moves |
≤ 7 |
PR |
≤ 0.10 |
MWC loss |
≤ 1.0 pp |
Total equity (EMG) |
≤ 0.05 |
12.3.2. gnuBG ↔ blunderDB comparison (SGF import — different engines)
Metric |
Typical gap | Main cause |
|
|---|---|---|
PR (checker) |
≤ 0.20 |
cross-engine equity differences |
MWC loss |
≤ 3.5 pp |
incomplete close-cube data in SGF |
Snowie ER |
≤ 0.50 |
forced moves without analysis (SGF) |
Note
SGF files (gnuBG) do not include alternatives for forced moves, which means blunderDB cannot detect all forced moves when importing SGF. This creates a structural gap on Snowie ER (slightly different denominator).
12.4. Validating your own figures
If your PR or MWC values diverge from XG figures, check the following points:
Complete analyses — PR can only be computed on positions that have an analysis. Positions without analysis count as zero error but are not included in \(N_\text{counted}\).
XG version — XG may change its calculations between versions. blunderDB is aligned with the behaviour observed in recent versions.
Import format — gnuBG SGF files produce larger gaps on cube metrics (see table above) because the file does not include complete analyses for all cube decisions.
Database migration — After updating blunderDB, existing databases are migrated automatically. Make a backup before opening a database with a new version.
12.5. gnuBG reference
Formulas have been verified against the following source files (gnuBG repository):
gnubg/formatgs.c:399–409— PR (“Error rate per decision”).gnubg/formatgs.c:415–424— Snowie Error Rate.gnubg/analysis.c:458–462— Checker accumulation, exclusion of forced moves (cMoves > 1).gnubg/analysis.c:1430–1474— Per-decision EMG → MWC conversion.gnubg/analysis.c:1449–1464— MWC loss accumulation (eq2mwc).gnubg/eval.c:5088–5100—isCloseCubedecisionpredicate (0.16 threshold).