Calculation the playing strength of a move

Discussion of chess software programming and technical issues.

Moderators: hgm, Rebel, chrisw

Ferdy
Posts: 4833
Joined: Sun Aug 10, 2008 3:15 pm
Location: Philippines

Re: Calculation the playing strength of a move

Post by Ferdy »

Jon12345 wrote: Wed Jul 14, 2021 4:13 pm
Ferdy wrote: Wed Jul 14, 2021 3:43 pm That 3000 is only an example, it does not apply to players of around 1500 :) . The reference engine rating has to be determined wisely depending on the players rating.

Here is what I had experimented before. Player ratings as seen by the engine at fixed depth 16. The rating is based on moves's evaluation by the engine. If the player move is the same as the engine's best move at depth 16, a player will get the 2800.
That is very interesting in what you have done there. What is the rational about capping the move rating at 2800? I was going to do the same, but capping at Magnus's rating. Is it anything to do with Stockfish's rating at 16 ply, or just so that the estimated move strengths of the players doesn't look bonkers?
Most of these players are in 2700, besides what matters most are the differences in ratings.
Jon12345 wrote: Wed Jul 14, 2021 4:13 pm I see that Magnus's 7th position would suggest that he players riskier chess, although that seems counter-intuitive. Perhaps he keeps risking Harry as he sends him up the board. :D
I don't trust these rankings much because this is only from the depth 16 search results (actually 16+4 in the opening and ending positions the rest are at depth 16).
Jon12345 wrote: Wed Jul 14, 2021 4:13 pm Edit: Just to be clear, I am assuming the rating score for each player is based on an average of all that players moves in that game. Or in other words, it is the average playing strength of all their moves, yes?
Yes. And also there is a cut, if the evaluation of the position is already winning or losing +/- 1500 cp, those moves are no longer included in the calculation.
Ferdy
Posts: 4833
Joined: Sun Aug 10, 2008 3:15 pm
Location: Philippines

Re: Calculation the playing strength of a move

Post by Ferdy »

Rating calculation comparison.

case 1:
All players are assigned an initial rating of 2800. The rating reference is fixed at 2800, example calculation is:

Code: Select all

1. player move is Nf3, engine move is Nf3, elo loss is 0, perf rating is 2800
2. player move is Be2, engine move is Qb3, elo loss is 50, perf rating is 2800-50 or 2750
3. player move is h3, engine move is g3, elo loss is 30, perf rating is 2800-30 or 2770
average perf rating after 3 moves is (2800 + 2750 + 2770) / 3 or 2773
Notice the constant 2800 in 2800-50 and 2800-30.

case 2:
All players are assigned an initial rating of 2800. The rating reference is dynamic, example calculation is:

Code: Select all

1. player move is Nf3, engine move is Nf3, elo loss is 0, perf rating is 2800
2. player move is Be2, engine move is Qb3, elo loss is 50, perf rating is 2800-50 or 2750
3. player move is h3, engine move is g3, elo loss is 30, perf rating is 2750-30 or 2720
average perf rating after 3 moves is (2800 + 2750 + 2720) / 3 or 2757
Notice the reference rating, it is based on the last perf rating. The idea is to punish the perft rating for players that make suboptimal move early in the game.


Experiments on the two methods above using sf14 at depth 12 starting at 2800.

case 1:

Code: Select all

minimum move: 8, score range: +/-1500
Skilling Open 2020 rating list according to sf14 @analysis of depth 12 set at 2800
 rank                    name  games  points  rating
    1             Ding, Liren     15     7.5    2796
    2        Nakamura, Hikaru     15     9.0    2794
    3              So, Wesley     15     8.5    2794
    4 Vachier-Lagrave, Maxime     15     8.0    2794
    5 Vidit, Santosh Gujrathi     15     6.5    2793
    6          Svidler, Peter     15     6.0    2792
    7          Aronian, Levon     15     8.5    2791
    8         Carlsen, Magnus     15     9.0    2791
    9       Firouzja, Alireza     15     8.0    2791
   10             Giri, Anish     15     8.0    2791
   11          Le, Quang Liem     15     8.0    2791
   12     Nepomniachtchi, Ian     15     8.5    2791
   13       Radjabov, Teimour     15     8.0    2791
   14     Duda, Jan-Krzysztof     15     4.5    2790
   15        Karjakin, Sergey     15     5.5    2787
   16   Anton Guijarro, David     15     6.5    2786

case 2:

Code: Select all

minimum move: 8, score range: +/-1500
Skilling Open 2020 rating list according to sf14 @analysis of depth 12 set at 2800
 rank                    name  games  points  rating
    1        Nakamura, Hikaru     15     9.0    2699
    2         Carlsen, Magnus     15     9.0    2684
    3             Ding, Liren     15     7.5    2680
    4 Vachier-Lagrave, Maxime     15     8.0    2669
    5              So, Wesley     15     8.5    2666
    6          Aronian, Levon     15     8.5    2658
    7             Giri, Anish     15     8.0    2638
    8          Le, Quang Liem     15     8.0    2637
    9          Svidler, Peter     15     6.0    2636
   10       Radjabov, Teimour     15     8.0    2634
   11     Duda, Jan-Krzysztof     15     4.5    2627
   12 Vidit, Santosh Gujrathi     15     6.5    2617
   13       Firouzja, Alireza     15     8.0    2605
   14        Karjakin, Sergey     15     5.5    2592
   15     Nepomniachtchi, Ian     15     8.5    2586
   16   Anton Guijarro, David     15     6.5    2583
Looks like case 2 fits well compared to case 1 with the actual result of the tournament.


Other experiment using case 2 or dynamic perf calculation.

Code: Select all

minimum move: 8, score range: +/-1500
no-castling-match rating list according to sf14 @analysis of depth 12 set at 2800
 rank               name  games  points  rating
    1 Anand, Viswanathan      1     1.0    2795
    2  Kramnik, Vladimir      1     0.0    2794
That is only for depth 12, here is at 5s/move.

Code: Select all

minimum move: 8, score range: +/-1500
no-castling-match rating list according to sf14 @analysis of movetime 5s set at 2800
 rank               name  games  points  rating
    1 Anand, Viswanathan      1     1.0    2637
    2  Kramnik, Vladimir      1     0.0    2493