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
World Championship April 24, 2026, 1:30 p.m. 2025 Zhao Xintong 13 9 Ding Junhui
World Championship April 24, 2026, 1:30 p.m. 2025 Zhao Xintong 13 9 Ding Junhui
World Championship April 25, 2026, 9:11 a.m. 2025 Chris Wakelin 7 13 Neil Robertson
World Championship April 25, 2026, 1:24 p.m. 2025 Hossein Vafaei 13 12 Judd Trump
World Championship April 25, 2026, 6:01 p.m. 2025 John Higgins 13 12 Ronnie O'Sullivan
World Championship April 25, 2026, 6:01 p.m. 2025 John Higgins 13 12 Ronnie O'Sullivan
World Championship April 26, 2026, 8:59 a.m. 2025 Mark Selby 11 13 Wu Yize
World Championship April 26, 2026, 8:59 a.m. 2025 Mark Selby 11 13 Wu Yize
World Championship April 28, 2026, 8:56 a.m. 2025 Mark Allen 13 11 Barry Hawkins
World Championship April 28, 2026, 8:56 a.m. 2025 Zhao Xintong 10 13 Shaun Murphy

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 1638.41
2 Zhao Xintong 1628.19
3 Mark Selby 1592.78
4 Kyren Wilson 1574.97
5 John Higgins 1563.06
6 Shaun Murphy 1562.23
7 Wu Yize 1562.08
8 Mark Allen 1558.01
9 Mark Williams 1537.01
10 Barry Hawkins 1535.14
11 Neil Robertson 1528.88
12 Xiao Guodong 1515.76
13 Ronnie O'Sullivan 1502.38
14 Zhou Yuelong 1500.88
15 Ding Junhui 1495.58
16 Ali Carter 1487.72
17 Elliot Slessor 1473.29
18 Luca Brecel 1470.53
19 Zhang Anda 1468.26
20 Jack Lisowski 1467.20
21 Jak Jones 1461.56
22 Si Jiahui 1451.68
23 Stuart Bingham 1451.65
24 Hossein Vafaei 1449.17
25 Stephen Maguire 1437.81
26 Chris Wakelin 1430.19
27 Stan Moody 1429.23
28 Pang Junxu 1428.99
29 Yuan Sijun 1428.09
30 Anthony McGill 1425.84
31 Matthew Selt 1425.10
32 Joe O'Connor 1424.21
33 Chang Bingyu 1420.66
34 Cao Yupeng 1420.40
35 Gary Wilson 1418.37
36 David Gilbert 1417.38
37 Ricky Walden 1412.32
38 Tom Ford 1406.50
39 Jackson Page 1402.31
40 Sam Craigie 1401.58
41 Noppon Saengkham 1399.06
42 Ryan Day 1396.96
43 Thepchaiya Un-Nooh 1389.97
44 Lei Peifan 1388.80
45 Martin O'Donnell 1386.80
46 Xu Si 1384.14
47 Robbie Williams 1382.06
48 Jiang Jun 1381.63
49 Daniel Wells 1377.69
50 Zak Surety 1377.62
51 Aaron Hill 1376.19
52 Fan Zhengyi 1375.15
53 Jimmy Robertson 1373.32
54 Scott Donaldson 1369.97
55 Marco Fu 1368.04
56 Matthew Stevens 1366.57
57 Graeme Dott 1363.80
58 Ben Woollaston 1363.49
59 Liam Highfield 1360.49
60 Lyu Haotian 1359.77
61 He Guoqiang 1356.27
62 Ken Doherty 1352.54
63 Michael Holt 1349.72
64 Oliver Lines 1349.15
65 Julien Leclercq 1344.56
66 Louis Heathcote 1340.12
67 Ben Mertens 1332.25
68 Long Zehuang 1331.88
69 Liam Pullen 1327.16
70 Sunny Akani 1324.39
71 Liu Hongyu 1323.96
72 Dylan Emery 1321.30
73 Ishpreet Chadha 1320.52
74 Jamie Jones 1320.36
75 David Lilley 1318.39
76 Antoni Kowalski 1315.17
77 Gao Yang 1309.74
78 David Grace 1307.98
79 Robert Milkins 1305.93
80 Jimmy White 1302.50
81 Liam Davies 1301.80
82 Mark Davis 1296.87
83 Artemijs Zizins 1294.67
84 Ian Burns 1290.40
85 Allan Taylor 1288.61
86 Jordan Brown 1288.15
87 Iulian Boiko 1284.46
88 Steven Hallworth 1284.14
89 Bulcsu Revesz 1280.96
90 Alexander Ursenbacher 1277.88
91 Ross Muir 1269.95
92 Lan Yuhao 1268.70
93 Yao Pengcheng 1263.46
94 Michał Szubarczyk 1257.58
95 Lim Kok Leong 1252.45
96 Cheung Ka Wai 1251.32
97 Duane Jones 1249.96
98 Sanderson Lam 1249.56
99 Mitchell Mann 1247.59
100 Wang Yuchen 1240.31
101 Amir Sarkhosh 1238.91
102 Gong Chenzhi 1232.88
103 Liu Wenwei 1226.82
104 Zhao Hanyang 1224.31
105 Robbie McGuigan 1222.03
106 Xu Yichen 1220.41
107 Mateusz Baranowski 1220.21
108 Mohammed Shehab 1219.13
109 Liam Graham 1214.25
110 Huang Jiahao 1211.53
111 Florian Nüßle 1205.48
112 Haris Tahir 1205.30
113 Farakh Ajaib 1200.56
114 Connor Benzey 1198.25
115 Leone Crowley 1196.01
116 Chatchapong Nasa 1195.04
117 Bai Yulu 1191.04
118 Sahil Nayyar 1187.22
119 Oliver Brown 1176.76
120 Haydon Pinhey 1162.56
121 Fergal Quinn 1156.88
122 Chris Totten 1143.32
123 Jonas Luz 1133.22
124 Ng On Yee 1129.25
125 Kreishh Gurbaxani 1120.11
126 Hatem Yassin 1113.31
127 Reanne Evans 1073.07
128 Mink Nutcharut 1029.97

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.