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
UK Championship Qualifiers Nov. 26, 2025, 7:04 p.m. 2025 Joe O'Connor 5 6 Ben Woollaston
UK Championship Qualifiers Nov. 26, 2025, 7:04 p.m. 2025 Elliot Slessor 6 4 Zak Surety
UK Championship Qualifiers Nov. 27, 2025, 1:05 p.m. 2025 Long Zehuang 6 5 Louis Heathcote
UK Championship Qualifiers Nov. 27, 2025, 1:05 p.m. 2025 Ryan Day 6 5 Hossein Vafaei
UK Championship Qualifiers Nov. 27, 2025, 1:05 p.m. 2025 Pang Junxu 6 2 Noppon Saengkham
UK Championship Qualifiers Nov. 27, 2025, 1:05 p.m. 2025 Artemijs Zizins 5 6 David Lilley
UK Championship Qualifiers Nov. 27, 2025, 7:07 p.m. 2025 He Guoqiang 4 6 Julien Leclercq
UK Championship Qualifiers Nov. 27, 2025, 7:07 p.m. 2025 Jimmy Robertson 5 6 Lei Peifan
UK Championship Qualifiers Nov. 27, 2025, 7:07 p.m. 2025 Tom Ford 3 6 Xu Si
UK Championship Qualifiers Nov. 27, 2025, 7:07 p.m. 2025 Zhang Anda 6 4 Thepchaiya Un-Nooh

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 1629.85
2 Mark Selby 1585.50
3 Kyren Wilson 1579.32
4 Mark Williams 1571.73
5 Zhao Xintong 1558.33
6 Mark Allen 1554.42
7 Neil Robertson 1552.66
8 Shaun Murphy 1543.17
9 John Higgins 1542.10
10 Xiao Guodong 1533.49
11 Wu Yize 1517.45
12 Ronnie O'Sullivan 1515.04
13 Ding Junhui 1513.33
14 Barry Hawkins 1510.10
15 Stephen Maguire 1491.42
16 Si Jiahui 1479.43
17 Ali Carter 1477.85
18 Luca Brecel 1477.26
19 Elliot Slessor 1475.88
20 Jack Lisowski 1474.98
21 Joe O'Connor 1472.72
22 Gary Wilson 1459.40
23 Zhou Yuelong 1454.60
24 Hossein Vafaei 1453.47
25 Jak Jones 1448.56
26 Yuan Sijun 1444.57
27 Anthony McGill 1433.43
28 Zhang Anda 1433.11
29 Pang Junxu 1424.49
30 Ben Woollaston 1422.98
31 David Gilbert 1422.82
32 Ricky Walden 1421.25
33 Cao Yupeng 1420.40
34 Thepchaiya Un-Nooh 1417.35
35 Ryan Day 1414.96
36 Matthew Selt 1414.37
37 Chris Wakelin 1408.58
38 Stan Moody 1404.63
39 Stuart Bingham 1401.60
40 Lei Peifan 1401.60
41 Aaron Hill 1395.15
42 Daniel Wells 1394.03
43 Sam Craigie 1390.69
44 Scott Donaldson 1388.76
45 Jackson Page 1386.48
46 Lyu Haotian 1386.45
47 Tom Ford 1386.28
48 Matthew Stevens 1383.48
49 Zak Surety 1383.27
50 Martin O'Donnell 1382.29
51 Oliver Lines 1381.30
52 Ken Doherty 1381.05
53 He Guoqiang 1376.28
54 Noppon Saengkham 1372.99
55 Xu Si 1372.87
56 Graeme Dott 1363.80
57 Chang Bingyu 1361.43
58 Robbie Williams 1360.87
59 Fan Zhengyi 1356.36
60 Louis Heathcote 1355.91
61 Jimmy Robertson 1353.63
62 David Lilley 1348.16
63 Michael Holt 1346.40
64 Marco Fu 1344.32
65 Jamie Jones 1337.34
66 Robert Milkins 1335.88
67 Long Zehuang 1334.42
68 Jimmy White 1334.04
69 Sunny Akani 1333.89
70 Liu Hongyu 1331.11
71 Mark Davis 1330.25
72 Jiang Jun 1317.67
73 Dylan Emery 1314.08
74 Liam Highfield 1312.31
75 Liam Davies 1311.53
76 Steven Hallworth 1310.32
77 Ben Mertens 1307.04
78 Ishpreet Chadha 1304.02
79 Ian Burns 1300.86
80 Jordan Brown 1296.52
81 Julien Leclercq 1295.56
82 Antoni Kowalski 1291.02
83 Liam Pullen 1289.77
84 Artemijs Zizins 1287.55
85 David Grace 1284.09
86 Alexander Ursenbacher 1271.17
87 Yao Pengcheng 1265.45
88 Duane Jones 1263.97
89 Gao Yang 1262.73
90 Allan Taylor 1262.27
91 Lan Yuhao 1260.93
92 Ross Muir 1258.59
93 Wang Yuchen 1256.59
94 Gong Chenzhi 1256.36
95 Iulian Boiko 1253.60
96 Lim Kok Leong 1252.45
97 Sanderson Lam 1251.47
98 Mitchell Mann 1250.50
99 Cheung Ka Wai 1244.09
100 Amir Sarkhosh 1242.67
101 Bulcsu Revesz 1242.49
102 Michał Szubarczyk 1237.69
103 Mateusz Baranowski 1237.61
104 Liam Graham 1228.27
105 Huang Jiahao 1227.45
106 Haris Tahir 1224.43
107 Liu Wenwei 1222.57
108 Zhao Hanyang 1222.21
109 Chatchapong Nasa 1217.14
110 Mohammed Shehab 1214.27
111 Xu Yichen 1210.82
112 Florian Nüßle 1208.50
113 Connor Benzey 1207.05
114 Leone Crowley 1204.06
115 Bai Yulu 1203.48
116 Sahil Nayyar 1194.85
117 Farakh Ajaib 1192.61
118 Robbie McGuigan 1189.68
119 Haydon Pinhey 1186.50
120 Oliver Brown 1186.20
121 Fergal Quinn 1172.58
122 Jonas Luz 1155.90
123 Chris Totten 1155.38
124 Kreishh Gurbaxani 1138.59
125 Hatem Yassin 1136.74
126 Ng On Yee 1122.56
127 Reanne Evans 1089.03
128 Mink Nutcharut 1040.78

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.