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
Wuhan Open Qualifiers June 18, 2026, 8:58 a.m. 2026 Zhang Anda 4 5 Steven Hallworth
Wuhan Open Qualifiers June 18, 2026, 8:58 a.m. 2026 Lei Peifan 3 5 Jackson Page
Wuhan Open Qualifiers June 18, 2026, 3:05 p.m. 2026 Stephen Maguire 5 2 Stan Moody
Wuhan Open Qualifiers June 18, 2026, 3:05 p.m. 2026 Zhou Yuelong 2 5 He Guoqiang
Wuhan Open Qualifiers June 18, 2026, 3:05 p.m. 2026 Pang Junxu 5 3 Oliver Sykes
Wuhan Open Qualifiers June 18, 2026, 3:05 p.m. 2026 Joe O'Connor 2 5 Chang Bingyu
Wuhan Open Qualifiers June 18, 2026, 3:05 p.m. 2026 Ali Carter 5 3 Tom Ford
Wuhan Open Qualifiers June 18, 2026, 3:05 p.m. 2026 Thepchaiya Un-Nooh 3 5 Dylan Emery
Wuhan Open Qualifiers June 18, 2026, 3:05 p.m. 2026 Yuan Sijun 5 1 Louis Heathcote
Wuhan Open Qualifiers June 18, 2026, 3:05 p.m. 2026 Hossein Vafaei 5 1 Ben Woollaston

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 Wu Yize 1581.93
5 Kyren Wilson 1574.97
6 Shaun Murphy 1562.49
7 John Higgins 1562.16
8 Mark Allen 1550.71
9 Mark Williams 1537.01
10 Barry Hawkins 1535.14
11 Neil Robertson 1522.12
12 Xiao Guodong 1515.76
13 Ronnie O'Sullivan 1502.38
14 Zhou Yuelong 1496.69
15 Ding Junhui 1495.58
16 Ali Carter 1489.33
17 Zhang Anda 1466.80
18 Hossein Vafaei 1460.56
19 Jak Jones 1459.80
20 Elliot Slessor 1458.82
21 Luca Brecel 1456.03
22 Stuart Bingham 1454.72
23 Si Jiahui 1451.68
24 Jack Lisowski 1451.06
25 Chang Bingyu 1446.09
26 Pang Junxu 1444.95
27 Matthew Selt 1438.52
28 David Gilbert 1437.12
29 Stephen Maguire 1436.15
30 Yuan Sijun 1431.84
31 Chris Wakelin 1430.19
32 Anthony McGill 1429.28
33 Jackson Page 1427.22
34 Gary Wilson 1421.85
35 Tom Ford 1420.69
36 Joe O'Connor 1416.63
37 Stan Moody 1416.36
38 Noppon Saengkham 1411.86
39 Jiang Jun 1407.11
40 Ryan Day 1402.02
41 Ricky Walden 1398.04
42 Sam Craigie 1397.31
43 Daniel Wells 1392.94
44 Aaron Hill 1386.44
45 Fan Zhengyi 1384.58
46 Robbie Williams 1375.99
47 Xu Si 1374.89
48 Martin O'Donnell 1374.76
49 Lei Peifan 1372.64
50 Thepchaiya Un-Nooh 1371.46
51 He Guoqiang 1367.74
52 Jimmy Robertson 1362.76
53 Zak Surety 1358.22
54 Liam Highfield 1357.19
55 Matthew Stevens 1355.83
56 Ben Woollaston 1354.57
57 Marco Fu 1353.58
58 Michael Holt 1353.40
59 Scott Donaldson 1350.67
60 Lyu Haotian 1350.27
61 Louis Heathcote 1349.85
62 Liu Hongyu 1349.73
63 Dylan Emery 1342.89
64 Ben Mertens 1339.91
65 Julien Leclercq 1337.37
66 Oliver Lines 1332.29
67 Long Zehuang 1323.82
68 David Lilley 1319.90
69 Gao Yang 1317.89
70 Liam Pullen 1316.95
71 Alfie Burden 1316.41
72 Steven Hallworth 1313.95
73 Yao Pengcheng 1311.99
74 Jamie Jones 1311.70
75 Ishpreet Chadha 1309.71
76 Liam Davies 1309.55
77 Antoni Kowalski 1304.67
78 Jamie Clarke 1303.62
79 Jordan Brown 1302.49
80 Andrew Higginson 1299.82
81 Artemijs Zizins 1297.70
82 Jimmy White 1294.18
83 David Grace 1289.95
84 Iulian Boiko 1285.96
85 Ian Burns 1283.98
86 Ashley Hugill 1282.78
87 Ashley Carty 1280.69
88 Igor Figueiredo 1273.57
89 Ross Muir 1272.15
90 Wang Xinbo 1268.51
91 Lan Yuhao 1265.38
92 Oliver Sykes 1265.28
93 Mitchell Mann 1263.20
94 Alexander Ursenbacher 1261.06
95 Cheung Ka Wai 1244.22
96 Deng Haohui 1243.59
97 Michał Szubarczyk 1243.19
98 Gong Chenzhi 1241.95
99 Hammad Miah 1241.60
100 Stuart Carrington 1240.97
101 Craig Steadman 1236.39
102 Michael Larkov 1235.19
103 Florian Nüßle 1230.83
104 Paul Norris 1230.57
105 Liu Yang 1228.26
106 Liu Wenwei 1224.73
107 Luo Zetao 1223.94
108 Zhao Hanyang 1220.11
109 Huang Jiahao 1217.98
110 Phil O'Kane 1216.56
111 Xu Yichen 1216.45
112 Mateusz Baranowski 1202.98
113 Liam Graham 1200.93
114 Oliver Brown 1200.92
115 Sahil Nayyar 1194.84
116 Leone Crowley 1194.72
117 Chatchapong Nasa 1193.90
118 Connor Benzey 1185.87
119 Mahmoud El Hareedy 1182.52
120 Thanawat Tirapongpaiboon 1176.37
121 Fergal Quinn 1144.73
122 Sean O'Sullivan 1117.73
123 Anton Kazakov 1105.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.