lichess.org
Donate

Average Centipawn Loss

I hit my first ever 5 average centipawn loss in the last game I played, which is the best I've ever achieved, after about an hour of painstaking chess play, eventually resulting in my win. I was wondering if this is a common accomplishment or not, as I have only really become aware of this concept very recently. Thanks!
It means you played well, sometimes we do great games. Congrats :)
I hate to break your good mood but I think the fact that the engine evaluation is -10 from move 9 and onwards very much affects the result. It won't say much about your moves since so many different moves keeps the game won, no matter how quickly. I could be wrong.
#4 and #5 already know, but i guess there are some players that always believe in the
acpl value, but you cannot always trust this value for some reasons!

"Traue keiner Statistik, die Du nicht selber gefälscht hast"
Do not trust any statistics you did not fake yourself
;-)

Of course Lichess do not fake acpl but there are some things to know about
acpl value:

1. The easy part is of course: It is just the sum of all errors divided by the number of
the moves someone played. (so it is just the mean error)

2. A error is just the difference from "bestmove evaluation" to the "evaluation of
the move" someone played. An engine evaluation can look like this example for the
starting position:

{'currline': {},
'depth': 10,
'nodes': 64793,
'nps': 601670,
'pv': {1: [Move.from_uci('e2e4'),
Move.from_uci('d7d5'),
Move.from_uci('e4d5'),
Move.from_uci('d8d5'),
Move.from_uci('b1c3'),
Move.from_uci('d5e6'),
Move.from_uci('d1e2'),
Move.from_uci('g8f6'),
Move.from_uci('d2d4'),
Move.from_uci('b8c6'),
Move.from_uci('g1f3'),
Move.from_uci('e6e2'),
Move.from_uci('f1e2')],
2: [Move.from_uci('d2d4'),
Move.from_uci('d7d5'),
Move.from_uci('c2c4'),
Move.from_uci('c8e6'),
Move.from_uci('c4d5'),
Move.from_uci('e6d5'),
Move.from_uci('e2e3'),
Move.from_uci('g8f6'),
Move.from_uci('b1c3'),
Move.from_uci('e7e6')]},
'refutation': {},
'score': {1: Score(cp=56, mate=None, lowerbound=False, upperbound=False),
2: Score(cp=19, mate=None, lowerbound=False, upperbound=False)},
'seldepth': 13,
'tbhits': 0,
'time': 102}

My computer reaches depth 10 in 102 milliseconds.
Stockfish 7 engine say: e4 is the bestmove at this depth, score is:
1: Score(cp=56, mate=None, lowerbound=False, upperbound=False)
Stockfish 7 engine say: d4 is the second bestmove at this depth, score is:
2: Score(cp=19, mate=None, lowerbound=False, upperbound=False)

Player White plays d4 and the 'error' for d4 move is just the difference of the
bestmove cp value, and the d4 cp value:
error = 56 - 19 = 37 [centipawn lost: cpl]
Thats good news for the d4 players ;-)
But the value change with another depth, maybe at depth 25 d4 is the bestmove,
and the error is 0.
But whats going on on depth 100? Nobody knows, except Bobby Fischer ;-)

Errors may vary with search depth, the used engine, and the engine settings, but
this is not so important, just because the evaluation on lichess is done at a 'high' depth,
which is mostly a very good approximation.

The crucial part of the acpl calculation:
*****************************************
cp values are only used by engines in positions without a forced mate!
If there is a forced mate in x moves, score looks like this:
Score(cp=None, mate=11, lowerbound=False, upperbound=False)
That means the player who has the next move can mate his opponent in 11 moves.
Housten we have a problem, how to convert a mate in x moves to a cp value to compute acpl?
Lichess decided to translate this mate in x moves to a maximum/minimum cp value of
+/- 1000. Thats what i call the cp limit. That is a smart approach, i do not know
it better but it has some downsides:
1. Now we have a scope of +/- 1000 cp
2. Stepping/Missing into/a mate in one move can be the same error as stepping/missing into/a mate in 17 moves!

If a game is played outside the scope of the cp limit, you can blunder everything if the blunder is not big enough
to get back into the scope! For example: You are the white player and you are a queen and two rooks and a pawn up.
Engine may say that is a advantage of 2000 cp, now you blunder your queen for nothing, but evaluation is still over 1000 cp.
That heavy blunder is no error, because it happened outside the scope and so it has no influence on the acpl value!

Example is the game of #1
game = en.lichess.org/sxItoRF7/black
This game was mostly played outside the cp limit scope.

Lets compute acpl values for different cp limits (change the scope)

cpl.acpl(game, cp_limit=1000)
acpl_white, acpl_black = (22, 5)

cpl.acpl(game, cp_limit=2000)
acpl_white, acpl_black = (116, 82)

acpl is a statistical value, it is a very good one if game was played inside the scope
and no mate sequences ocured in the game, otherwise there are some problems and in the worst case
it is just a bogo value.
@programme-zero (#4)

Read the description - it's DontKillBishop vs KingDaedalus, so KingDaedalus is Black. Click 'Open' to check - the white circle is next to the white player's username, black circle next to the black player's.

This topic has been archived and can no longer be replied to.