Calculate a player's Elo performance rating and Elo rating change based from the given pgn file.
It is a command line program that takes the player name and pgn file as input. The games in the pgn file must have a WhiteElo and BlackElo tags. There are 2 sample pgn files under the pgn folder in this repository.
-
Install python version >= 3.7 from python site.
-
Install
player-performance
package from pypi with the following command from command line.
pip install -U player-performance
This package is dependent on python chess and pandas libraries. These libararies are automatically installed when player-performance
is installed.
Command line:
performance --help
usage: performance [-h] --player-name PLAYER_NAME [--input-pgnfile INPUT_PGNFILE] [--dev-coefficient DEV_COEFFICIENT] [-v]
Get player performance.
options:
-h, --help show this help message and exit
--player-name PLAYER_NAME
input player name, example: --player-name "So , Wesley"
--input-pgnfile INPUT_PGNFILE
input pgn file, example: --input-pgnfile "olym22.pgn"
--dev-coefficient DEV_COEFFICIENT
the K or development coefficent to use, default=10, example: --dev-coefficient 10
-v, --version show program's version number and exit
performance --player-name "Abdusattorov, Nodirbek" --input-pgnfile "olym22.pgn"
Event : 44th Olympiad 2022
Date : 2022.08.09
MyName MyRating OppName OppRating MyScore MyRChange
0 Abdusattorov, Nodirbek 2688 Chaulagain, Purushottam 1975 1.0 0.16
1 Abdusattorov, Nodirbek 2688 Ziska, Helgi Dam 2549 1.0 3.10
2 Abdusattorov, Nodirbek 2688 Sebenik, Matej 2512 1.0 2.66
3 Abdusattorov, Nodirbek 2688 Caruana, Fabiano 2783 1.0 6.33
4 Abdusattorov, Nodirbek 2688 Pechac, Jergus 2594 1.0 3.68
5 Abdusattorov, Nodirbek 2688 Harikrishna, Pentala 2720 0.0 -4.54
6 Abdusattorov, Nodirbek 2688 Cordova, Emilio 2549 1.0 3.10
7 Abdusattorov, Nodirbek 2688 Keymer, Vincent 2686 0.5 -0.03
8 Abdusattorov, Nodirbek 2688 Sargissian, Gabriel 2698 0.5 0.14
9 Abdusattorov, Nodirbek 2688 Gukesh, D 2684 1.0 4.94
10 Abdusattorov, Nodirbek 2688 Giri, Anish 2760 0.5 1.02
My name : Abdusattorov, Nodirbek
My Score : 0.77 in 8.5 / 11 games
My Opponent Average Rating : 2592
My Rating Change : 20.56
My Performance Rating by logistic function : 2804
My Performance Rating by FIDE table : 2803
performance --player-name "Carlsen, Magnus" --input-pgnfile ./pgn/olym22.pgn
MyName MyRating OppName OppRating MyScore MyRChange
0 Carlsen, Magnus 2864 Meier, Georg 2613 1.0 1.91
1 Carlsen, Magnus 2864 Vocaturo, Daniele 2616 0.5 -3.07
2 Carlsen, Magnus 2864 Batsuren, Dambasuren 2518 1.0 1.20
3 Carlsen, Magnus 2864 Bwalya, Gillan 2396 1.0 0.63
4 Carlsen, Magnus 2864 Smirnov, Anton 2600 1.0 1.80
5 Carlsen, Magnus 2864 Stanojoski, Zvonko 2412 1.0 0.69
6 Carlsen, Magnus 2864 Pechac, Jergus 2594 0.5 -3.26
7 Carlsen, Magnus 2864 Megaranto, Susanto 2529 1.0 1.27
8 Carlsen, Magnus 2864 Schitco, Ivan 2490 0.5 -3.96
My name: Carlsen, Magnus
My Score: 0.83 in 7.5 / 9 games
My Opponent Average Rating: 2530
My Rating Change: -2.79
My Performance Rating by logistic function : 2809
My Performance Rating by FIDE table : 2803
performance --player-name "So, Wesley" --input-pgnfile ./pgn/olym22.pgn
MyName MyRating OppName OppRating MyScore MyRChange
0 So, Wesley 2773 Miguel, Sergio 2274 1.0 0.54
1 So, Wesley 2773 Delgado Ramirez, Neuris 2614 0.5 -2.14
2 So, Wesley 2773 Sindarov, Javokhir 2629 1.0 3.04
3 So, Wesley 2773 Smirin, Ilia 2601 0.5 -2.29
4 So, Wesley 2773 Idani, Pouya 2641 0.5 -1.81
5 So, Wesley 2773 Melkumyan, Hrant 2634 1.0 3.10
6 So, Wesley 2773 Praggnanandhaa, R 2648 0.5 -1.73
7 So, Wesley 2773 Mastrovasilis, Athanasios 2527 1.0 1.95
8 So, Wesley 2773 Can, Emre 2606 0.5 -2.23
9 So, Wesley 2773 Vidit, Santosh Gujrathi 2714 0.5 -0.84
My name: So, Wesley
My Score: 0.7 in 7.0 / 10 games
My Opponent Average Rating: 2589
My Rating Change: -2.41
My Performance Rating by logistic function : 2736
My Performance Rating by FIDE table : 2738
performance --player-name "Barcenilla, Rogelio" --input-pgnfile ./pgn/olym22.pgn
MyName MyRating OppName OppRating MyScore MyRChange
0 Barcenilla, Rogelio 2463 Guseinov, Gadir 2668 0.0 -2.35
1 Barcenilla, Rogelio 2463 Isaakidis, Alexandros 2165 1.0 1.52
2 Barcenilla, Rogelio 2463 Dornbusch, Tatiana 2247 0.5 -2.76
3 Barcenilla, Rogelio 2463 Nabaty, Tamir 2631 1.0 7.25
4 Barcenilla, Rogelio 2463 Piorun, Kacper 2636 0.5 2.30
5 Barcenilla, Rogelio 2463 Theodorou, Nikolas 2575 0.0 -3.44
6 Barcenilla, Rogelio 2463 Lorenzana, Wilson Estuardo 2182 1.0 1.66
My name: Barcenilla, Rogelio
My Score: 0.57 in 4.0 / 7 games
My Opponent Average Rating: 2443
My Rating Change: 4.18
My Performance Rating by logistic function : 2493
My Performance Rating by FIDE table : 2493
performance --player-name "Gukesh, D" --input-pgnfile ./pgn/olym22.pgn
MyName MyRating OppName OppRating MyScore MyRChange
0 Gukesh, D 2684 Al Hosani, Omran 2215 1.0 0.63
1 Gukesh, D 2684 Kiik, Kalle 2365 1.0 1.37
2 Gukesh, D 2684 Georgiadis, Nico 2578 1.0 3.52
3 Gukesh, D 2684 Vocaturo, Daniele 2616 1.0 4.03
4 Gukesh, D 2684 Shirov, Alexei 2704 1.0 5.29
5 Gukesh, D 2684 Sargissian, Gabriel 2698 1.0 5.20
6 Gukesh, D 2684 Albornoz Cabrera, Carlos Daniel 2566 1.0 3.36
7 Gukesh, D 2684 Caruana, Fabiano 2783 1.0 6.39
8 Gukesh, D 2684 Mamedyarov, Shakhriyar 2759 0.5 1.06
9 Gukesh, D 2684 Abdusattorov, Nodirbek 2688 0.0 -4.94
10 Gukesh, D 2684 Keymer, Vincent 2686 0.5 0.03
My name: Gukesh, D
My Score: 0.82 in 9.0 / 11 games
My Opponent Average Rating: 2605
My Rating Change: 25.94
My Performance Rating by logistic function : 2867
My Performance Rating by FIDE table : 2867
performance --player-name "Vachier-Lagrave, Maxime" --input-pgnfile ./pgn/stlrap22.pgn
Event : Saint Louis Rapid 2022
Date : 2022.08.28
MyName MyRating OppName OppRating MyScore MyRChange
0 Vachier-Lagrave, Maxime 2757 Aronian, Levon 2775 0.5 0.26
1 Vachier-Lagrave, Maxime 2757 Nepomniachtchi, Ian 2792 0.5 0.50
2 Vachier-Lagrave, Maxime 2757 Mamedyarov, Shakhriyar 2758 1.0 5.01
3 Vachier-Lagrave, Maxime 2757 Nakamura, Hikaru 2768 0.5 0.16
4 Vachier-Lagrave, Maxime 2757 Shankland, Sam 2720 0.5 -0.53
5 Vachier-Lagrave, Maxime 2757 Xiong, Jeffery 2690 0.5 -0.95
6 Vachier-Lagrave, Maxime 2757 Caruana, Fabiano 2776 1.0 5.27
7 Vachier-Lagrave, Maxime 2757 Dominguez Perez, Leinier 2754 0.5 -0.04
8 Vachier-Lagrave, Maxime 2757 Firouzja, Alireza 2778 0.5 0.30
My name : Vachier-Lagrave, Maxime
My Score : 0.61 in 5.5 / 9 games
My Opponent Average Rating : 2757
My Rating Change : 9.98
My Performance Rating by logistic function : 2835
My Performance Rating by FIDE table : 2837
You can download all files in this repository that includes the pgn files under the pgn folder.
Command line:
git clone https://github.com/fsmosca/player-performance.git
- Add event and date info in the output.
- Add performance rating using FIDE table in the console output.
- Add
--dev-coefficient
option as K
- Implement the Elo performance rating calculation
- Implement the Elo rating change calculation