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
British Open Qualifiers June 27, 2025, 12:03 p.m. 2025 Stan Moody 4 2 Zhou Yuelong
British Open Qualifiers June 27, 2025, 2:58 p.m. 2025 Ricky Walden 2 4 Joe O'Connor
British Open Qualifiers June 27, 2025, 2:58 p.m. 2025 Oliver Lines 4 1 Stuart Carrington
British Open Qualifiers June 27, 2025, 2:58 p.m. 2025 Martin O'Donnell 4 1 Sahil Nayyar
British Open Qualifiers June 27, 2025, 5:51 p.m. 2025 Connor Benzey 2 4 Iulian Boiko
British Open Qualifiers June 27, 2025, 5:51 p.m. 2025 Matthew Selt 4 0 David Gilbert
British Open Qualifiers June 27, 2025, 5:51 p.m. 2025 Leone Crowley 4 0 Hatem Yassin
British Open Qualifiers June 28, 2025, 9:01 a.m. 2025 Mink Nutcharut 1 4 Amir Sarkhosh
British Open Qualifiers June 28, 2025, 9:01 a.m. 2025 Long Zehuang 4 3 Thepchaiya Un-Nooh
British Open Qualifiers June 28, 2025, 9:01 a.m. 2025 Lei Peifan 4 0 Mateusz Baranowski

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 1674.03
2 Kyren Wilson 1614.91
3 John Higgins 1591.61
4 Mark Selby 1553.39
5 Mark Allen 1548.22
6 Ronnie O'Sullivan 1532.49
7 Zhao Xintong 1527.06
8 Xiao Guodong 1525.13
9 Neil Robertson 1523.45
10 Shaun Murphy 1522.12
11 Barry Hawkins 1521.36
12 Mark Williams 1510.73
13 Ding Junhui 1505.29
14 Luca Brecel 1502.84
15 Hossein Vafaei 1497.94
16 Joe O'Connor 1493.93
17 Ali Carter 1481.49
18 Si Jiahui 1469.32
19 Pang Junxu 1464.17
20 Jak Jones 1454.06
21 Jack Lisowski 1451.45
22 Matthew Selt 1448.79
23 Wu Yize 1446.58
24 Chris Wakelin 1441.87
25 Yuan Sijun 1438.33
26 Zhang Anda 1433.99
27 David Gilbert 1432.17
28 Ricky Walden 1427.93
29 Stephen Maguire 1426.73
30 Cao Yupeng 1420.40
31 Elliot Slessor 1417.36
32 Zhou Yuelong 1412.30
33 Ben Woollaston 1411.90
34 Stuart Bingham 1409.74
35 Jackson Page 1408.83
36 Ryan Day 1405.74
37 Tom Ford 1400.88
38 Anthony McGill 1400.42
39 Noppon Saengkham 1395.69
40 Xu Si 1394.65
41 Lyu Haotian 1392.81
42 Thepchaiya Un-Nooh 1392.49
43 Lei Peifan 1390.68
44 Graeme Dott 1388.42
45 Martin O'Donnell 1380.85
46 Sam Craigie 1380.04
47 Fan Zhengyi 1376.44
48 Daniel Wells 1371.46
49 Scott Donaldson 1370.40
50 Gary Wilson 1367.46
51 Jimmy Robertson 1366.51
52 Stan Moody 1365.34
53 Robbie Williams 1363.00
54 Michael Holt 1362.03
55 Marco Fu 1360.33
56 Jamie Jones 1359.24
57 Sunny Akani 1358.16
58 Aaron Hill 1355.65
59 Mark Davis 1354.41
60 He Guoqiang 1352.05
61 Zak Surety 1351.51
62 Matthew Stevens 1349.86
63 Robert Milkins 1345.72
64 Oliver Lines 1341.62
65 Liu Hongyu 1330.64
66 David Lilley 1326.82
67 Long Zehuang 1324.42
68 Ishpreet Chadha 1317.97
69 Jimmy White 1315.43
70 Louis Heathcote 1311.74
71 Jordan Brown 1309.30
72 Dylan Emery 1300.90
73 Chang Bingyu 1297.20
74 Ben Mertens 1296.14
75 Antoni Kowalski 1294.16
76 Liam Davies 1293.80
77 Liam Highfield 1291.09
78 Jiang Jun 1289.67
79 Alexander Ursenbacher 1286.23
80 David Grace 1278.83
81 Steven Hallworth 1277.10
82 Ross Muir 1270.65
83 Ken Doherty 1270.35
84 Gao Yang 1269.84
85 Julien Leclercq 1267.78
86 Duane Jones 1267.56
87 Gong Chenzhi 1266.10
88 Allan Taylor 1264.31
89 Ian Burns 1261.37
90 Sanderson Lam 1258.24
91 Artemijs Zizins 1258.16
92 Cheung Ka Wai 1252.90
93 Lim Kok Leong 1252.45
94 Bulcsu Revesz 1252.00
95 Zhao Hanyang 1250.51
96 Florian Nüßle 1249.41
97 Chatchapong Nasa 1247.23
98 Connor Benzey 1245.54
99 Wang Yuchen 1244.21
100 Yao Pengcheng 1244.04
101 Xu Yichen 1242.16
102 Lan Yuhao 1240.89
103 Liu Wenwei 1240.29
104 Sahil Nayyar 1239.60
105 Leone Crowley 1237.82
106 Haris Tahir 1235.98
107 Michał Szubarczyk 1231.06
108 Amir Sarkhosh 1225.14
109 Oliver Brown 1224.24
110 Mateusz Baranowski 1223.52
111 Mitchell Mann 1220.67
112 Haydon Pinhey 1215.29
113 Bai Yulu 1214.59
114 Iulian Boiko 1213.92
115 Mohammed Shehab 1212.52
116 Liam Graham 1208.64
117 Liam Pullen 1205.54
118 Huang Jiahao 1204.72
119 Fergal Quinn 1202.49
120 Kreishh Gurbaxani 1195.53
121 Jonas Luz 1189.41
122 Chris Totten 1185.47
123 Robbie McGuigan 1177.61
124 Farakh Ajaib 1156.19
125 Hatem Yassin 1143.06
126 Ng On Yee 1137.24
127 Reanne Evans 1080.81
128 Mink Nutcharut 1058.33

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.