# How is average centipawn loss calculated when a mate is missed?

As far as I know, to calculate the average centipawn loss, we calculate S1 - S0 for every move, where S1 is the evaluation (in centipawns) of the position before the move and S0 is the evaluation (in centipawns) of the position after the move.

Let's take this position as an example:

``````[Site "https://lichess.org/kuvnBssO"]
[Date "2018.07.20"]
[Round "-"]
[White "Kulkid"]
[Black "WaisKamal"]
[Result "0-1"]
[WhiteElo "2016"]
[BlackElo "2107"]
[Variant "Standard"]
[TimeControl "30+0"]
[ECO "D44"]
[Termination "Normal"]
[FEN "rnbqkbnr/pppppppp/8/8/8/8/PPPPPPPP/RNBQKBNR w KQkq - 0 1"]
[SeUp "1"]
[StartPly "67"]

1. d4 d5 2. c4 Nf6 3. Nc3 e6 4. Nf3 dxc4 5. e3 { D44 Queen's Gambit Declined: Vienna Variation, Quiet Variation } Be7 6. Bxc4 O-O 7. Bd3 Nbd7 8. O-O b6 9. Re1 Bb7 10. a3 Bxf3 11. b4 Bxd1 12. Rxd1 c5 13. Bb2 cxd4 14. exd4 Qc7 15. Ne2 Rac8 16. Rac1 Qb7 17. Rb1 Rc7 18. f3 Rfc8 19. Ng3 h6 20. Ne4 Nxe4 21. Bxe4 Qb8 22. Bd3 Bf6 23. Ba6 Rd8 24. Be2 b5 25. Kf2 a6 26. Bc1 Nf8 27. Be3 Rdd7 28. Rdc1 Rxc1 29. Rxc1 Qd8 30. Rd1 Bxd4 31. Bxd4 Rxd4 32. Rc1 Rd2 33. Re1 Ng6 34. Ke3 f5 35. Kf2 Nf4 36. Kg3 Nxe2+ 37. Kf2 Qd4+ 38. Kf1 Qg1# { Black wins by checkmate. } 0-1
``````

The given position is a mate-in-one (Qd4#). I missed this mate, and instead played f5, resulting in a position with an evaluation of mate-in-6. How will my centipawn loss be calculated for this move?

• Since there still is mate possible, I don't know that there really is a centipawn loss. Engines still evaluate it as mate. Commented Jul 20, 2018 at 22:02

I cannot vouch for every engine available, but the general approach is, the mate is evaluated to something close to 15-bit integer, 32765 centipawns, and you get minus 1000 centipawns for every move-to-mate (to make it reasonable for the engine to sacrifice the queen (~900 cp) to delay the mate).

In your particular case, the original evaluation was `327.65` pawns, the mate-in-6 became something like `327.65 - 10.00 * 6 = 267.65` -- the numbers are not exact, and different engines may use slightly different approaches, but this one is the most common, I believe.

• So what happens if there's a mate in 33? 32765 - 33000 = -235?
– D M
Commented Jul 21, 2018 at 17:02
• @DM most engines stop analyzing at around 20 moves ahead, which is -20000, so the evaluation will be around 12700, or 127 pawns or 12 queens -- quite rare situation on the board, most games fall well within a few thousands of centipawns. But yes, you have raised a reasonable question, and from my experience most engines keep 2 evaluation metrics at the same time, centipawn evaluation value and `mate-in` number, using the former only if the latter is not available. Commented Jul 22, 2018 at 1:00
• There's no particular reason why the engine has to evaluate a mate 1 move slower as being worth 1000 centipawns less to make it worthwhile to delay it with a queen - the engine can see all the way to the mate. 1 centipawn would be sufficient for that purpose.
– D M
Commented Jul 22, 2018 at 2:37
• But perhaps more importantly, I don't think that a checkmate is actually considered to be worth 32765 centipawns for this purpose. If it was, that would mean allowing (or missing) a mate in 1 in an otherwise perfect 32 move game would result in an average centipawn loss of 1023 (which is over a queen per move!) Programs that calculate average centipawn losses simply don't penalize missing allowing or missing a checkmate that harshly.
– D M
Commented Jul 22, 2018 at 2:43
• @DM start `crafty` and get it to mate-in-1 position, you'll get evaluation of about 327.5 pawns. think 5 minutes, why this number, why not 425.8 or something else. if you come with a different explanation -- please, do tell =) Commented Jul 22, 2018 at 2:44

When calculating average centipawn losses for a game, a program does not necessarily need to directly use the centipawn output from the engine. If it did, then if the engine evaluates mate as 32765 centipawns, missing a single mate in 1 could incur about the same centipawn penalty as losing a queen every move for the entire game. That's just too harsh, even for a game-losing mistake.

The engine itself will report how many moves until mate along with any evaluation score, and any program or website that calculates average centipawn loss can interpret this output as it likes.

Chess.com's computer analysis gives an "Avg. Diff" stat, which is the average pawn loss for the game - multiply this by 100 and you get average centipawn loss. I experimented with it a bit, and it appears that they've implemented a limit of 1000 centipawns as the most you can be considered to have lost in a single move for the purposes of calculating this stat. It will use this 1000 centipawn value in missed mate situations, including in your situation where you played a move that mates in 6 moves instead of 1.

In my opinion, 1000 centipawns is a good limit to prevent the average from being skewed too much by one move, although personally I still wouldn't give such a harsh penalty to imprecisions in a game that remains won or lost for the same side. A move that allows you to mate your opponent in 6 moves instead of 5 should not be the same as a move that misses the win altogether. If I were writing the program, such inaccuracies would be maybe 100 centipawns instead of 1000.