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 Dec. 19, 2025, 11:57 a.m. 2025 Chang Bingyu 5 3 Mark Selby
Scottish Open Dec. 19, 2025, 3:38 p.m. 2025 Chris Wakelin 5 3 Zhou Yuelong
Scottish Open Dec. 19, 2025, 7:03 p.m. 2025 Jiang Jun 2 5 Matthew Selt
Scottish Open Dec. 19, 2025, 7:04 p.m. 2025 Mark Allen 5 2 Joe O'Connor
Scottish Open Dec. 20, 2025, 12:54 p.m. 2025 Chris Wakelin 6 4 Matthew Selt
Scottish Open Dec. 20, 2025, 7:08 p.m. 2025 Chang Bingyu 6 1 Mark Allen
Scottish Open Dec. 21, 2025, 1:06 p.m. 2025 Chris Wakelin 9 2 Chang Bingyu
Championship League - Group 1 Jan. 2, 2026, 11:01 a.m. 2025 Joe O'Connor 3 1 Hossein Vafaei
Championship League - Group 1 Jan. 2, 2026, 11:01 a.m. 2025 Chris Wakelin 0 3 Elliot Slessor
Championship League - Group 1 Jan. 2, 2026, 12:06 p.m. 2025 Chris Wakelin 1 3 Tom Ford

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 1641.50
2 Mark Selby 1612.31
3 Mark Williams 1565.79
4 Kyren Wilson 1565.41
5 Neil Robertson 1561.40
6 Shaun Murphy 1539.60
7 Mark Allen 1536.99
8 John Higgins 1532.04
9 Zhao Xintong 1529.90
10 Xiao Guodong 1518.73
11 Ding Junhui 1517.91
12 Ronnie O'Sullivan 1506.25
13 Wu Yize 1504.93
14 Barry Hawkins 1503.76
15 Joe O'Connor 1482.96
16 Luca Brecel 1480.83
17 Elliot Slessor 1479.88
18 Zhou Yuelong 1469.58
19 Ali Carter 1468.25
20 Si Jiahui 1464.30
21 Stephen Maguire 1464.22
22 Jack Lisowski 1463.19
23 Yuan Sijun 1453.45
24 Jak Jones 1448.56
25 Zhang Anda 1441.89
26 Pang Junxu 1441.69
27 Chris Wakelin 1438.56
28 Hossein Vafaei 1437.75
29 Gary Wilson 1434.84
30 Stuart Bingham 1431.63
31 Matthew Selt 1427.30
32 Anthony McGill 1422.61
33 David Gilbert 1421.63
34 Cao Yupeng 1420.40
35 Ricky Walden 1415.29
36 Noppon Saengkham 1409.88
37 Thepchaiya Un-Nooh 1409.63
38 Chang Bingyu 1406.75
39 Tom Ford 1402.98
40 Ben Woollaston 1401.51
41 Stan Moody 1401.40
42 Ryan Day 1398.89
43 Jackson Page 1398.22
44 Lei Peifan 1395.86
45 Scott Donaldson 1394.55
46 Zak Surety 1391.46
47 Aaron Hill 1386.91
48 Sam Craigie 1384.59
49 Daniel Wells 1383.16
50 Lyu Haotian 1382.12
51 Ken Doherty 1375.46
52 Martin O'Donnell 1374.88
53 Oliver Lines 1374.86
54 Matthew Stevens 1370.62
55 Fan Zhengyi 1366.70
56 Graeme Dott 1363.80
57 Xu Si 1360.85
58 He Guoqiang 1360.32
59 Jimmy Robertson 1355.60
60 Robbie Williams 1355.06
61 Louis Heathcote 1350.96
62 Marco Fu 1344.32
63 Michael Holt 1338.84
64 David Lilley 1334.38
65 Sunny Akani 1333.89
66 Jiang Jun 1332.71
67 Robert Milkins 1328.28
68 Jamie Jones 1327.75
69 Long Zehuang 1326.66
70 Liam Highfield 1326.45
71 Liu Hongyu 1326.42
72 Jimmy White 1323.53
73 Ben Mertens 1321.98
74 Mark Davis 1320.48
75 Liam Davies 1312.55
76 Dylan Emery 1305.22
77 Julien Leclercq 1305.09
78 Steven Hallworth 1297.81
79 Ishpreet Chadha 1297.18
80 Jordan Brown 1296.88
81 Iulian Boiko 1293.27
82 Ian Burns 1290.23
83 Artemijs Zizins 1282.85
84 David Grace 1280.53
85 Antoni Kowalski 1278.73
86 Liam Pullen 1278.67
87 Ross Muir 1276.68
88 Alexander Ursenbacher 1271.17
89 Duane Jones 1270.81
90 Lan Yuhao 1270.80
91 Allan Taylor 1264.45
92 Sanderson Lam 1262.53
93 Gao Yang 1261.64
94 Mitchell Mann 1259.99
95 Wang Yuchen 1257.86
96 Yao Pengcheng 1257.45
97 Gong Chenzhi 1252.56
98 Lim Kok Leong 1252.45
99 Bulcsu Revesz 1251.84
100 Amir Sarkhosh 1245.45
101 Michał Szubarczyk 1240.99
102 Cheung Ka Wai 1236.25
103 Mateusz Baranowski 1233.04
104 Liam Graham 1230.32
105 Haris Tahir 1221.26
106 Huang Jiahao 1219.74
107 Liu Wenwei 1218.52
108 Zhao Hanyang 1215.66
109 Xu Yichen 1215.60
110 Mohammed Shehab 1214.27
111 Florian Nüßle 1213.68
112 Chatchapong Nasa 1213.33
113 Connor Benzey 1209.30
114 Robbie McGuigan 1205.54
115 Bai Yulu 1204.15
116 Farakh Ajaib 1202.31
117 Oliver Brown 1197.91
118 Sahil Nayyar 1197.84
119 Leone Crowley 1197.39
120 Haydon Pinhey 1180.61
121 Fergal Quinn 1167.65
122 Jonas Luz 1150.41
123 Chris Totten 1148.99
124 Ng On Yee 1145.95
125 Kreishh Gurbaxani 1135.64
126 Hatem Yassin 1131.67
127 Reanne Evans 1084.13
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.