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
Welsh Open Feb. 26, 2026, 7:01 p.m. 2025 Zhang Anda 2 4 John Higgins
Welsh Open Feb. 26, 2026, 8:45 p.m. 2025 Stuart Bingham 4 2 Zhao Xintong
Welsh Open Feb. 26, 2026, 9:27 p.m. 2025 Zhou Yuelong 4 1 Sam Craigie
Welsh Open Feb. 27, 2026, 11:56 a.m. 2025 Barry Hawkins 5 3 Neil Robertson
Welsh Open Feb. 27, 2026, 3:59 p.m. 2025 Jack Lisowski 5 2 Stuart Bingham
Welsh Open Feb. 27, 2026, 7:04 p.m. 2025 Zhou Yuelong 0 5 John Higgins
Welsh Open Feb. 27, 2026, 7:04 p.m. 2025 Jiang Jun 4 5 Wu Yize
Welsh Open Feb. 28, 2026, 1:15 p.m. 2025 Wu Yize 4 6 Barry Hawkins
Welsh Open Feb. 28, 2026, 6:45 p.m. 2025 John Higgins 5 6 Jack Lisowski
Welsh Open March 1, 2026, 1:11 p.m. 2025 Barry Hawkins 9 5 Jack Lisowski

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 1653.01
2 Zhao Xintong 1613.98
3 Mark Selby 1596.48
4 Kyren Wilson 1575.24
5 John Higgins 1563.99
6 Wu Yize 1544.13
7 Mark Williams 1541.47
8 Shaun Murphy 1538.22
9 Mark Allen 1533.04
10 Barry Hawkins 1530.47
11 Neil Robertson 1517.49
12 Xiao Guodong 1507.32
13 Ronnie O'Sullivan 1501.14
14 Zhou Yuelong 1496.76
15 Ding Junhui 1494.37
16 Elliot Slessor 1492.90
17 Ali Carter 1492.81
18 Luca Brecel 1471.92
19 Jack Lisowski 1471.00
20 Si Jiahui 1459.83
21 Zhang Anda 1457.27
22 Jak Jones 1452.61
23 Stuart Bingham 1450.44
24 Stephen Maguire 1447.44
25 Yuan Sijun 1437.87
26 Matthew Selt 1435.03
27 Joe O'Connor 1434.48
28 Anthony McGill 1432.44
29 Chris Wakelin 1430.40
30 Chang Bingyu 1428.24
31 Pang Junxu 1422.14
32 Cao Yupeng 1420.40
33 Tom Ford 1416.33
34 Hossein Vafaei 1413.50
35 David Gilbert 1413.20
36 Sam Craigie 1413.01
37 Ricky Walden 1412.27
38 Stan Moody 1409.59
39 Gary Wilson 1409.51
40 Noppon Saengkham 1400.43
41 Jackson Page 1397.06
42 Thepchaiya Un-Nooh 1393.30
43 Ryan Day 1391.52
44 Zak Surety 1388.17
45 Lei Peifan 1386.93
46 Xu Si 1384.80
47 Jimmy Robertson 1381.17
48 Scott Donaldson 1380.46
49 Martin O'Donnell 1379.50
50 Robbie Williams 1379.26
51 Aaron Hill 1377.74
52 Daniel Wells 1376.13
53 Lyu Haotian 1373.40
54 Jiang Jun 1373.36
55 Ben Woollaston 1371.48
56 Graeme Dott 1363.80
57 Ken Doherty 1363.58
58 Matthew Stevens 1362.49
59 Marco Fu 1359.52
60 Fan Zhengyi 1359.04
61 Louis Heathcote 1349.18
62 He Guoqiang 1347.78
63 Julien Leclercq 1346.87
64 Oliver Lines 1344.54
65 Michael Holt 1341.29
66 Liam Highfield 1339.36
67 Long Zehuang 1335.27
68 David Lilley 1330.82
69 Ben Mertens 1325.86
70 Liu Hongyu 1324.87
71 Sunny Akani 1324.39
72 Ishpreet Chadha 1322.47
73 David Grace 1321.92
74 Dylan Emery 1316.28
75 Robert Milkins 1315.92
76 Jamie Jones 1312.09
77 Jimmy White 1310.45
78 Liam Davies 1308.02
79 Mark Davis 1304.52
80 Artemijs Zizins 1301.78
81 Liam Pullen 1300.06
82 Iulian Boiko 1298.97
83 Antoni Kowalski 1297.77
84 Ian Burns 1292.76
85 Steven Hallworth 1291.66
86 Gao Yang 1289.53
87 Jordan Brown 1286.08
88 Alexander Ursenbacher 1277.88
89 Allan Taylor 1276.24
90 Ross Muir 1271.23
91 Bulcsu Revesz 1268.78
92 Lan Yuhao 1268.34
93 Mitchell Mann 1263.17
94 Cheung Ka Wai 1262.30
95 Duane Jones 1258.92
96 Sanderson Lam 1257.12
97 Yao Pengcheng 1252.80
98 Lim Kok Leong 1252.45
99 Michał Szubarczyk 1249.21
100 Wang Yuchen 1245.82
101 Amir Sarkhosh 1245.07
102 Gong Chenzhi 1240.91
103 Liu Wenwei 1240.00
104 Zhao Hanyang 1226.10
105 Liam Graham 1221.35
106 Huang Jiahao 1219.84
107 Mohammed Shehab 1219.13
108 Xu Yichen 1217.31
109 Mateusz Baranowski 1216.51
110 Florian Nüßle 1214.01
111 Haris Tahir 1213.17
112 Robbie McGuigan 1208.69
113 Farakh Ajaib 1208.17
114 Chatchapong Nasa 1201.11
115 Connor Benzey 1195.96
116 Sahil Nayyar 1192.61
117 Bai Yulu 1188.43
118 Leone Crowley 1182.13
119 Oliver Brown 1181.12
120 Haydon Pinhey 1167.17
121 Fergal Quinn 1154.14
122 Jonas Luz 1138.83
123 Chris Totten 1137.57
124 Ng On Yee 1134.36
125 Kreishh Gurbaxani 1124.32
126 Hatem Yassin 1120.08
127 Reanne Evans 1077.15
128 Mink Nutcharut 1031.89

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.