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 Aug. 27, 2025, 11:31 a.m. 2025 Thepchaiya Un-Nooh 1 5 Mark Allen
Wuhan Open Aug. 27, 2025, 11:31 a.m. 2025 Tom Ford 1 5 John Higgins
Wuhan Open Aug. 27, 2025, 11:31 a.m. 2025 Judd Trump 4 5 Gary Wilson
Wuhan Open Aug. 28, 2025, 6:01 a.m. 2025 Mark Williams 5 1 Zhang Anda
Wuhan Open Aug. 28, 2025, 6:01 a.m. 2025 Xiao Guodong 5 2 Stan Moody
Wuhan Open Aug. 28, 2025, 11:33 a.m. 2025 Mark Allen 5 4 Si Jiahui
Wuhan Open Aug. 28, 2025, 11:33 a.m. 2025 Gary Wilson 5 3 John Higgins
Wuhan Open Aug. 29, 2025, 5:36 a.m. 2025 Xiao Guodong 6 3 Mark Williams
Wuhan Open Aug. 29, 2025, 11:24 a.m. 2025 Gary Wilson 6 2 Mark Allen
Wuhan Open Aug. 30, 2025, 5:57 a.m. 2025 Xiao Guodong 10 9 Gary Wilson

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 1649.95
2 Kyren Wilson 1619.35
3 John Higgins 1572.75
4 Xiao Guodong 1559.60
5 Neil Robertson 1558.98
6 Mark Selby 1555.40
7 Ronnie O'Sullivan 1552.23
8 Mark Allen 1549.55
9 Mark Williams 1525.88
10 Zhao Xintong 1525.77
11 Joe O'Connor 1516.54
12 Barry Hawkins 1513.53
13 Luca Brecel 1502.84
14 Ding Junhui 1496.44
15 Ali Carter 1493.16
16 Hossein Vafaei 1491.62
17 Stephen Maguire 1475.17
18 Shaun Murphy 1474.52
19 Si Jiahui 1474.39
20 Matthew Selt 1458.21
21 Chris Wakelin 1453.93
22 Yuan Sijun 1446.05
23 Elliot Slessor 1445.56
24 Wu Yize 1445.32
25 Ricky Walden 1443.84
26 Jak Jones 1440.91
27 Zhang Anda 1440.87
28 Jack Lisowski 1439.66
29 Pang Junxu 1437.07
30 David Gilbert 1428.93
31 Gary Wilson 1421.71
32 Cao Yupeng 1420.40
33 Stuart Bingham 1417.99
34 Ben Woollaston 1416.70
35 Anthony McGill 1411.84
36 Thepchaiya Un-Nooh 1407.78
37 Tom Ford 1400.69
38 Ryan Day 1396.80
39 Jackson Page 1396.14
40 Zhou Yuelong 1392.82
41 Martin O'Donnell 1392.59
42 Stan Moody 1392.04
43 Sam Craigie 1391.89
44 Graeme Dott 1388.42
45 Xu Si 1387.62
46 Noppon Saengkham 1384.87
47 Lei Peifan 1378.53
48 Aaron Hill 1375.40
49 Oliver Lines 1371.83
50 Matthew Stevens 1371.51
51 Lyu Haotian 1370.87
52 Daniel Wells 1369.84
53 Scott Donaldson 1359.14
54 Jamie Jones 1354.16
55 Marco Fu 1352.69
56 Mark Davis 1352.69
57 Fan Zhengyi 1351.70
58 Sunny Akani 1349.64
59 Robbie Williams 1349.49
60 Jimmy Robertson 1348.18
61 Zak Surety 1346.16
62 Chang Bingyu 1344.60
63 He Guoqiang 1343.40
64 Liu Hongyu 1343.21
65 Long Zehuang 1342.35
66 Robert Milkins 1340.85
67 Michael Holt 1339.35
68 David Lilley 1336.67
69 Liam Davies 1317.64
70 Louis Heathcote 1313.72
71 Ben Mertens 1312.27
72 Ishpreet Chadha 1305.57
73 Antoni Kowalski 1301.66
74 Steven Hallworth 1301.59
75 Jimmy White 1300.42
76 Dylan Emery 1294.65
77 Liam Highfield 1294.30
78 Jordan Brown 1291.60
79 Jiang Jun 1282.14
80 Duane Jones 1279.21
81 David Grace 1277.97
82 Gong Chenzhi 1276.95
83 Artemijs Zizins 1275.91
84 Allan Taylor 1275.33
85 Alexander Ursenbacher 1274.88
86 Gao Yang 1274.43
87 Julien Leclercq 1273.85
88 Ken Doherty 1271.27
89 Ross Muir 1267.32
90 Ian Burns 1263.81
91 Bulcsu Revesz 1263.19
92 Sanderson Lam 1258.98
93 Lan Yuhao 1256.61
94 Chatchapong Nasa 1253.07
95 Lim Kok Leong 1252.45
96 Yao Pengcheng 1250.96
97 Cheung Ka Wai 1244.24
98 Florian Nüßle 1240.57
99 Amir Sarkhosh 1240.44
100 Wang Yuchen 1239.35
101 Iulian Boiko 1239.19
102 Zhao Hanyang 1238.59
103 Liu Wenwei 1238.17
104 Connor Benzey 1235.68
105 Michał Szubarczyk 1233.27
106 Sahil Nayyar 1228.22
107 Haris Tahir 1227.88
108 Xu Yichen 1227.47
109 Leone Crowley 1226.07
110 Oliver Brown 1223.82
111 Mateusz Baranowski 1215.41
112 Bai Yulu 1214.59
113 Mohammed Shehab 1214.27
114 Liam Pullen 1209.29
115 Liam Graham 1207.71
116 Mitchell Mann 1205.25
117 Huang Jiahao 1204.35
118 Haydon Pinhey 1200.34
119 Farakh Ajaib 1197.22
120 Fergal Quinn 1193.52
121 Robbie McGuigan 1188.16
122 Jonas Luz 1178.27
123 Chris Totten 1174.02
124 Kreishh Gurbaxani 1170.63
125 Hatem Yassin 1147.67
126 Ng On Yee 1144.09
127 Reanne Evans 1100.43
128 Mink Nutcharut 1047.65

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.