An alternative rating system for snooker players

Here, I am going to make an alternative world ranking system for snooker. Currently, the world snooker rankings are based on a two-year rolling sum of prize money won by players in ranking tournaments. However, this may be a bit distorted for example because:

To create this ranking system I am going to use match, event and player data sourced from the excellent snooker.org via their API. I have obtained historical data back to the beginning of the 2013 season and have implemented a script to add the latest matches once per day from the Snooker.org API. As an example of the match data the table below has the last ten matches included in the ranking system.

Event Datetime Season Player1 Name Player1 Score Player2 Score Player2 Name
International Championship Nov. 9, 2025, 6 a.m. 2025 John Higgins 6 10 Wu Yize
Champion of Champions Nov. 10, 2025, 12:59 p.m. 2025 Judd Trump 4 1 Bai Yulu
Champion of Champions Nov. 10, 2025, 2:43 p.m. 2025 Shaun Murphy 1 4 Lei Peifan
Champion of Champions Nov. 10, 2025, 6:47 p.m. 2025 Judd Trump 6 2 Lei Peifan
Champion of Champions Nov. 11, 2025, 12:56 p.m. 2025 Kyren Wilson 4 3 Jack Lisowski
Champion of Champions Nov. 11, 2025, 2:53 p.m. 2025 Mark Allen 0 4 Zhao Xintong
Champion of Champions Nov. 11, 2025, 7 p.m. 2025 Kyren Wilson 5 6 Zhao Xintong
Champion of Champions Nov. 12, 2025, 12:56 p.m. 2025 Mark Williams 4 0 Alfie Burden
Champion of Champions Nov. 12, 2025, 2:34 p.m. 2025 Mark Selby 4 0 Stephen Maguire
Champion of Champions Nov. 12, 2025, 6:53 p.m. 2025 Mark Williams 5 6 Mark Selby

Using the full database of snooker matches I can calculate an alternative player rating system. This rating system works by initialising all players ratings at a chosen level before their first match and then adjusting the ratings after each match based on each of the players ratings before the match and the outcome of the match. The current ratings are given in the table below:

Ranking Player Rating
1 Judd Trump 1630.88
2 Kyren Wilson 1587.75
3 Mark Williams 1578.05
4 Mark Selby 1569.50
5 Mark Allen 1554.74
6 Zhao Xintong 1544.28
7 John Higgins 1542.64
8 Shaun Murphy 1541.91
9 Xiao Guodong 1540.96
10 Neil Robertson 1539.22
11 Ronnie O'Sullivan 1522.07
12 Ding Junhui 1517.99
13 Wu Yize 1517.45
14 Barry Hawkins 1510.10
15 Ali Carter 1489.35
16 Luca Brecel 1488.58
17 Jack Lisowski 1485.19
18 Stephen Maguire 1482.46
19 Si Jiahui 1479.43
20 Joe O'Connor 1477.44
21 Elliot Slessor 1466.82
22 Jak Jones 1459.71
23 Gary Wilson 1459.40
24 Hossein Vafaei 1458.42
25 Yuan Sijun 1449.92
26 Zhou Yuelong 1444.40
27 Anthony McGill 1442.44
28 Ricky Walden 1430.83
29 Matthew Selt 1424.39
30 Zhang Anda 1421.26
31 Cao Yupeng 1420.40
32 Chris Wakelin 1419.57
33 Thepchaiya Un-Nooh 1418.43
34 Pang Junxu 1412.30
35 David Gilbert 1411.24
36 Stan Moody 1408.68
37 Ben Woollaston 1408.05
38 Stuart Bingham 1404.52
39 Aaron Hill 1404.50
40 Ryan Day 1402.16
41 Jackson Page 1395.43
42 Daniel Wells 1394.84
43 Oliver Lines 1392.21
44 Ken Doherty 1392.16
45 Tom Ford 1391.15
46 Martin O'Donnell 1389.98
47 Sam Craigie 1389.28
48 Lei Peifan 1388.73
49 Matthew Stevens 1388.48
50 He Guoqiang 1377.62
51 Zak Surety 1377.20
52 Noppon Saengkham 1374.90
53 Lyu Haotian 1373.67
54 Scott Donaldson 1366.28
55 Fan Zhengyi 1365.58
56 Graeme Dott 1363.80
57 Robbie Williams 1361.69
58 Chang Bingyu 1359.86
59 Xu Si 1357.51
60 Jimmy Robertson 1354.95
61 Louis Heathcote 1349.74
62 Jimmy White 1344.05
63 Sunny Akani 1342.16
64 Marco Fu 1340.68
65 Mark Davis 1338.70
66 Jamie Jones 1337.26
67 Robert Milkins 1336.73
68 Liu Hongyu 1332.16
69 David Lilley 1326.92
70 Michael Holt 1324.38
71 Liam Davies 1320.56
72 Ben Mertens 1314.50
73 Dylan Emery 1314.11
74 Jiang Jun 1313.71
75 Liam Highfield 1311.36
76 Long Zehuang 1311.00
77 Jordan Brown 1305.56
78 Ishpreet Chadha 1304.07
79 Steven Hallworth 1299.68
80 Antoni Kowalski 1296.49
81 David Grace 1291.99
82 Liam Pullen 1282.76
83 Ian Burns 1278.31
84 Artemijs Zizins 1275.55
85 Alexander Ursenbacher 1271.17
86 Gao Yang 1269.09
87 Julien Leclercq 1268.11
88 Lan Yuhao 1268.01
89 Yao Pengcheng 1264.79
90 Gong Chenzhi 1262.81
91 Wang Yuchen 1262.36
92 Allan Taylor 1260.51
93 Duane Jones 1259.75
94 Ross Muir 1258.13
95 Lim Kok Leong 1252.45
96 Amir Sarkhosh 1250.44
97 Sanderson Lam 1250.03
98 Cheung Ka Wai 1244.19
99 Iulian Boiko 1242.01
100 Mitchell Mann 1236.94
101 Mateusz Baranowski 1236.38
102 Bulcsu Revesz 1230.63
103 Zhao Hanyang 1230.07
104 Huang Jiahao 1226.91
105 Haris Tahir 1225.35
106 Chatchapong Nasa 1224.50
107 Michał Szubarczyk 1223.43
108 Liu Wenwei 1220.18
109 Florian Nüßle 1215.38
110 Mohammed Shehab 1214.27
111 Liam Graham 1213.60
112 Leone Crowley 1210.97
113 Xu Yichen 1207.96
114 Connor Benzey 1204.63
115 Sahil Nayyar 1201.61
116 Bai Yulu 1201.50
117 Farakh Ajaib 1198.18
118 Oliver Brown 1195.07
119 Haydon Pinhey 1190.79
120 Robbie McGuigan 1186.99
121 Fergal Quinn 1178.39
122 Jonas Luz 1162.50
123 Chris Totten 1150.34
124 Kreishh Gurbaxani 1144.37
125 Hatem Yassin 1130.76
126 Ng On Yee 1125.94
127 Reanne Evans 1081.47
128 Mink Nutcharut 1043.39

At the moment the rating system is quite simple and not optimised but I intend to do some work to calibrate the rating system to maximise some chosen evaluation metric when time allows.