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
Scottish Open Qualifiers Oct. 17, 2025, 12:02 p.m. 2025 David Lilley 2 4 Antoni Kowalski
Scottish Open Qualifiers Oct. 17, 2025, 12:02 p.m. 2025 Daniel Wells 0 4 Liam Pullen
Scottish Open Qualifiers Oct. 17, 2025, 12:02 p.m. 2025 Gong Chenzhi 1 4 Robbie McGuigan
Scottish Open Qualifiers Oct. 17, 2025, 3:02 p.m. 2025 Fan Zhengyi 4 0 Cheung Ka Wai
Scottish Open Qualifiers Oct. 17, 2025, 3:02 p.m. 2025 Ricky Walden 3 4 Wang Yuchen
Scottish Open Qualifiers Oct. 17, 2025, 3:02 p.m. 2025 Thepchaiya Un-Nooh 4 1 Chatchapong Nasa
Scottish Open Qualifiers Oct. 17, 2025, 6:03 p.m. 2025 Zak Surety 4 1 Duane Jones
Scottish Open Qualifiers Oct. 17, 2025, 6:03 p.m. 2025 He Guoqiang 4 1 Alexander Ursenbacher
Scottish Open Qualifiers Oct. 17, 2025, 6:06 p.m. 2025 Mark Davis 4 0 Liam Graham
Scottish Open Qualifiers Oct. 17, 2025, 6:32 p.m. 2025 Stan Moody 4 1 Ross Muir

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 1617.27
2 Kyren Wilson 1598.62
3 Mark Williams 1584.18
4 Mark Selby 1567.69
5 Mark Allen 1553.73
6 Xiao Guodong 1550.53
7 Shaun Murphy 1548.74
8 Neil Robertson 1544.66
9 Ronnie O'Sullivan 1525.18
10 Ding Junhui 1514.27
11 Barry Hawkins 1513.38
12 Zhao Xintong 1511.45
13 John Higgins 1509.78
14 Luca Brecel 1496.66
15 Joe O'Connor 1486.45
16 Ali Carter 1478.17
17 Si Jiahui 1471.60
18 Stephen Maguire 1469.70
19 Jak Jones 1468.78
20 Elliot Slessor 1468.55
21 Hossein Vafaei 1466.87
22 Wu Yize 1465.36
23 Gary Wilson 1452.83
24 Yuan Sijun 1445.89
25 Anthony McGill 1445.74
26 Zhou Yuelong 1441.42
27 Ricky Walden 1438.11
28 Jack Lisowski 1434.78
29 Chris Wakelin 1434.12
30 Zhang Anda 1433.85
31 Matthew Selt 1432.50
32 Stuart Bingham 1421.63
33 Pang Junxu 1421.35
34 Cao Yupeng 1420.40
35 David Gilbert 1419.95
36 Thepchaiya Un-Nooh 1415.59
37 Stan Moody 1414.83
38 Ben Woollaston 1410.55
39 Ryan Day 1404.26
40 Oliver Lines 1400.78
41 Aaron Hill 1400.59
42 Daniel Wells 1397.85
43 Martin O'Donnell 1393.30
44 Jackson Page 1393.04
45 Ken Doherty 1392.16
46 Matthew Stevens 1391.49
47 Sam Craigie 1389.28
48 Lei Peifan 1388.77
49 Tom Ford 1387.96
50 Lyu Haotian 1379.44
51 Robbie Williams 1378.26
52 Noppon Saengkham 1377.06
53 Fan Zhengyi 1375.92
54 Chang Bingyu 1365.51
55 Graeme Dott 1363.80
56 He Guoqiang 1363.49
57 Xu Si 1362.77
58 Scott Donaldson 1361.83
59 Louis Heathcote 1359.00
60 Jimmy Robertson 1356.89
61 Zak Surety 1355.72
62 Jimmy White 1344.05
63 Sunny Akani 1342.16
64 Marco Fu 1340.68
65 Robert Milkins 1340.12
66 Jamie Jones 1337.26
67 Liu Hongyu 1335.39
68 Mark Davis 1334.92
69 David Lilley 1332.91
70 Michael Holt 1328.15
71 Dylan Emery 1321.23
72 Liam Davies 1320.56
73 Ben Mertens 1318.96
74 Long Zehuang 1315.69
75 Steven Hallworth 1305.33
76 Liam Highfield 1304.92
77 Ishpreet Chadha 1304.07
78 David Grace 1299.81
79 Jiang Jun 1298.48
80 Antoni Kowalski 1296.49
81 Liam Pullen 1282.76
82 Ian Burns 1280.72
83 Jordan Brown 1275.70
84 Artemijs Zizins 1275.55
85 Lan Yuhao 1272.25
86 Alexander Ursenbacher 1271.17
87 Gao Yang 1269.09
88 Julien Leclercq 1268.11
89 Wang Yuchen 1265.81
90 Yao Pengcheng 1264.79
91 Allan Taylor 1263.23
92 Gong Chenzhi 1262.81
93 Duane Jones 1259.75
94 Ross Muir 1258.13
95 Sanderson Lam 1252.58
96 Lim Kok Leong 1252.45
97 Amir Sarkhosh 1250.44
98 Cheung Ka Wai 1247.42
99 Mitchell Mann 1242.05
100 Iulian Boiko 1242.01
101 Mateusz Baranowski 1236.38
102 Bulcsu Revesz 1230.63
103 Zhao Hanyang 1230.07
104 Huang Jiahao 1229.39
105 Haris Tahir 1228.86
106 Michał Szubarczyk 1227.07
107 Chatchapong Nasa 1224.50
108 Liu Wenwei 1224.50
109 Florian Nüßle 1215.38
110 Mohammed Shehab 1214.27
111 Liam Graham 1213.60
112 Leone Crowley 1210.97
113 Bai Yulu 1209.44
114 Xu Yichen 1207.96
115 Connor Benzey 1204.63
116 Sahil Nayyar 1201.61
117 Farakh Ajaib 1198.18
118 Oliver Brown 1197.31
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.