← Blog
2026-08-01

Measuring chess performance with ChessDS XPA (Expectation Points Added)

With the launch of the new site version in August 2026, ChessDS introduces a new metric for player performance: Expectation Points Added, hereafter XPA. In my opinion this metric is strictly superior to the commonly cited “accuracy” delivered by other leading chess websites.

The central idea of XPA is to leverage our machine learning predictions of moves and results to compare player performance with what would be “expected” from a ~2600 GM in a classical game. And the reliance on game expectation (the result probabilities) instead of raw engine evals helps a lot. No longer do we penalize errors that have no effect on the outcome of the game.

Measuring “expected loss”

XPA computes the “expected loss” of an average GM through the game, then computes the “actual loss” the player made and compares them. “Loss” in this context means a drop in expectation (the expected result of the game from the player’s perspective, integrating over the win, draw, and loss probabilities). We consider each move with its predicted move probability, the loss of each move, and take a weighted sum across these moves to measure expected loss. Consider the two examples below, both from Kasparov vs The World, 1999; one move which beats expectation, and one which does not.

For this calculation we only consider moves with ≥ 1% move probability. Although if the player selects a different move, we will include its actual loss in the actual loss computation (but not the expected one).

Turning that into a score

To produce the game-level score then, we just add these differences up across the whole game. They are multiplied by 100, so the interpretation is something like this: XPA is the total percentage points of expectation gained or lost through the game compared with that expected of an average GM — hence the name, Expectation Points Added. Therefore a number above zero is good, a number around 0 is average, and a number below 0 is worse play than expected from an average modern GM.

XPA is much more predictive than accuracy

How well does XPA predict game results? Very well, much better than accuracy. Here I compare with Lichess accuracy which is published. Chesscom accuracy is a secret, but I doubt would tell a different story:

And the greater the delta is between players the stronger the likelihood of a result:

Another advantage I think compared with accuracy is the greater dynamic range of our measure. Accuracy tends to cluster in the high 90s for our elite GM games, while XPA has a more normal distribution, meaning very high quality games stand out properly. Accuracy offers little insight into truly well-played games, as short trivial draws can obtain near 100% scores.

Testing on real data: World Chess Championships

XPA gives us a way of comparing across generations that has face validity. Consider World Chess Championship matches. We see the level improving over time clearly:

Testing on real data: all games

Average XPA per move is another interesting comparison, although we should be aware of different event types. Here I filter out open events which are more prominent in recent years, to make it more comparable. We again see a clear signal of play improving over the years:

Top players and games by XPA:

Another key point of validation is to look across players’ entire careers, who has the highest average XPA per move? The two greatest players of all time are right at the top (filtered to players with at least 100 games):

And the top games, by total and average XPA:

Stay tuned

I’m excited at the analytical possibilities here! Look out for more blogs coming soon that will leverage XPA to produce insights for chess fans (like me!).