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 Qualifiers April 6, 2026, 8:57 a.m. 2025 Huang Jiahao 5 10 Leone Crowley
World Championship Qualifiers April 6, 2026, 8:57 a.m. 2025 Gao Yang 10 9 Jimmy White
World Championship Qualifiers April 6, 2026, 8:57 a.m. 2025 Michał Szubarczyk 10 7 Ng On Yee
World Championship Qualifiers April 6, 2026, 8:57 a.m. 2025 Jonas Luz 2 10 Peter Lines
World Championship Qualifiers April 6, 2026, 1:31 p.m. 2025 Mateusz Baranowski 10 5 Florian Nüßle
World Championship Qualifiers April 6, 2026, 1:31 p.m. 2025 Haris Tahir 6 10 Connor Benzey

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 1646.77
2 Zhao Xintong 1630.05
3 Mark Selby 1596.48
4 Kyren Wilson 1578.81
5 John Higgins 1550.29
6 Wu Yize 1549.22
7 Shaun Murphy 1541.71
8 Mark Williams 1541.47
9 Mark Allen 1536.12
10 Barry Hawkins 1530.47
11 Neil Robertson 1517.49
12 Xiao Guodong 1515.42
13 Ronnie O'Sullivan 1504.29
14 Zhou Yuelong 1501.23
15 Ding Junhui 1494.37
16 Elliot Slessor 1482.97
17 Ali Carter 1482.95
18 Jack Lisowski 1474.47
19 Luca Brecel 1471.92
20 Zhang Anda 1464.82
21 Si Jiahui 1459.83
22 Stuart Bingham 1457.56
23 Jak Jones 1452.61
24 Stephen Maguire 1447.44
25 Yuan Sijun 1437.87
26 Matthew Selt 1435.03
27 Joe O'Connor 1434.48
28 Chris Wakelin 1430.40
29 Anthony McGill 1425.33
30 Chang Bingyu 1423.15
31 Pang Junxu 1422.14
32 Cao Yupeng 1420.40
33 Stan Moody 1420.28
34 Hossein Vafaei 1419.91
35 Ricky Walden 1416.53
36 Tom Ford 1416.33
37 David Gilbert 1413.20
38 Sam Craigie 1413.01
39 Gary Wilson 1409.51
40 Jackson Page 1405.80
41 Noppon Saengkham 1400.43
42 Thepchaiya Un-Nooh 1399.28
43 Ryan Day 1398.92
44 Martin O'Donnell 1389.36
45 Daniel Wells 1386.06
46 Xu Si 1384.80
47 Robbie Williams 1383.65
48 Jimmy Robertson 1381.17
49 Scott Donaldson 1380.46
50 Lei Peifan 1379.53
51 Zak Surety 1378.34
52 Aaron Hill 1377.74
53 Jiang Jun 1373.36
54 Ben Woollaston 1371.48
55 Lyu Haotian 1369.82
56 Marco Fu 1365.73
57 Graeme Dott 1363.80
58 Fan Zhengyi 1359.04
59 Matthew Stevens 1356.08
60 Ken Doherty 1352.54
61 Louis Heathcote 1349.18
62 Oliver Lines 1344.54
63 He Guoqiang 1343.31
64 Julien Leclercq 1342.68
65 Michael Holt 1341.29
66 Liam Highfield 1336.13
67 Long Zehuang 1335.27
68 David Lilley 1327.33
69 Liu Hongyu 1324.87
70 Sunny Akani 1324.39
71 Ishpreet Chadha 1322.47
72 Ben Mertens 1321.95
73 Dylan Emery 1316.28
74 David Grace 1315.94
75 Robert Milkins 1315.92
76 Jamie Jones 1312.09
77 Liam Davies 1308.02
78 Mark Davis 1304.52
79 Jimmy White 1302.50
80 Artemijs Zizins 1301.78
81 Liam Pullen 1300.06
82 Gao Yang 1297.48
83 Antoni Kowalski 1294.69
84 Iulian Boiko 1292.77
85 Ian Burns 1292.76
86 Steven Hallworth 1287.55
87 Jordan Brown 1286.08
88 Allan Taylor 1286.07
89 Alexander Ursenbacher 1277.88
90 Bulcsu Revesz 1268.78
91 Lan Yuhao 1268.34
92 Ross Muir 1268.07
93 Yao Pengcheng 1259.74
94 Duane Jones 1258.92
95 Cheung Ka Wai 1258.83
96 Sanderson Lam 1257.12
97 Michał Szubarczyk 1254.32
98 Lim Kok Leong 1252.45
99 Mitchell Mann 1247.59
100 Wang Yuchen 1245.82
101 Amir Sarkhosh 1245.07
102 Gong Chenzhi 1240.91
103 Liu Wenwei 1235.75
104 Mateusz Baranowski 1223.93
105 Zhao Hanyang 1221.71
106 Liam Graham 1221.35
107 Mohammed Shehab 1219.13
108 Xu Yichen 1217.31
109 Robbie McGuigan 1216.54
110 Huang Jiahao 1211.53
111 Farakh Ajaib 1208.17
112 Florian Nüßle 1205.48
113 Haris Tahir 1205.30
114 Connor Benzey 1203.83
115 Chatchapong Nasa 1201.11
116 Bai Yulu 1195.57
117 Sahil Nayyar 1192.61
118 Leone Crowley 1190.45
119 Oliver Brown 1181.12
120 Haydon Pinhey 1167.17
121 Fergal Quinn 1154.14
122 Chris Totten 1137.57
123 Jonas Luz 1133.22
124 Ng On Yee 1129.25
125 Kreishh Gurbaxani 1124.32
126 Hatem Yassin 1120.08
127 Reanne Evans 1077.15
128 Mink Nutcharut 1031.89

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.