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
German Masters Jan. 30, 2026, 12:55 p.m. 2025 Kyren Wilson 1 5 Shaun Murphy
German Masters Jan. 30, 2026, 7:07 p.m. 2025 Judd Trump 5 3 Xiao Guodong
German Masters Jan. 30, 2026, 7:08 p.m. 2025 Jimmy Robertson 1 5 Neil Robertson
German Masters Jan. 31, 2026, 12:53 p.m. 2025 Shaun Murphy 6 1 Neil Robertson
German Masters Jan. 31, 2026, 6:59 p.m. 2025 Judd Trump 6 2 Ali Carter
German Masters Feb. 1, 2026, 12:58 p.m. 2025 Shaun Murphy 4 10 Judd Trump
World Grand Prix Feb. 3, 2026, 5:05 a.m. 2025 Mark Selby 5 0 Aaron Hill
World Grand Prix Feb. 3, 2026, 5:05 a.m. 2025 Elliot Slessor 5 2 Stuart Bingham
World Grand Prix Feb. 3, 2026, 5:05 a.m. 2025 Xiao Guodong 5 2 Kyren Wilson
World Grand Prix Feb. 3, 2026, 5:05 a.m. 2025 Zhou Yuelong 5 2 Stephen Maguire

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 1665.07
2 Mark Selby 1609.59
3 Kyren Wilson 1579.66
4 Zhao Xintong 1561.59
5 Shaun Murphy 1557.53
6 John Higgins 1549.30
7 Mark Williams 1549.00
8 Wu Yize 1545.69
9 Mark Allen 1539.01
10 Neil Robertson 1527.19
11 Xiao Guodong 1513.65
12 Ding Junhui 1512.97
13 Ronnie O'Sullivan 1502.11
14 Barry Hawkins 1492.31
15 Ali Carter 1490.78
16 Elliot Slessor 1490.68
17 Si Jiahui 1480.10
18 Luca Brecel 1478.69
19 Zhou Yuelong 1476.64
20 Zhang Anda 1458.94
21 Joe O'Connor 1451.47
22 Jack Lisowski 1447.66
23 Yuan Sijun 1447.23
24 Stephen Maguire 1445.92
25 Jak Jones 1440.91
26 Matthew Selt 1435.78
27 Stuart Bingham 1432.85
28 Anthony McGill 1432.84
29 Tom Ford 1428.21
30 Pang Junxu 1427.87
31 Chris Wakelin 1424.64
32 Chang Bingyu 1421.28
33 Cao Yupeng 1420.40
34 Ricky Walden 1419.11
35 Gary Wilson 1415.40
36 David Gilbert 1413.36
37 Noppon Saengkham 1410.60
38 Hossein Vafaei 1409.03
39 Stan Moody 1399.41
40 Jimmy Robertson 1398.79
41 Ryan Day 1396.62
42 Thepchaiya Un-Nooh 1396.01
43 Sam Craigie 1393.28
44 Scott Donaldson 1391.62
45 Lei Peifan 1391.43
46 Jackson Page 1385.56
47 Zak Surety 1383.90
48 Ben Woollaston 1381.83
49 Xu Si 1380.96
50 Aaron Hill 1379.96
51 Martin O'Donnell 1372.01
52 Ken Doherty 1371.83
53 Daniel Wells 1371.77
54 Fan Zhengyi 1369.87
55 Lyu Haotian 1367.33
56 Graeme Dott 1363.80
57 Robbie Williams 1363.19
58 Louis Heathcote 1358.97
59 Matthew Stevens 1358.90
60 Oliver Lines 1355.12
61 Jiang Jun 1354.49
62 Marco Fu 1348.86
63 Liam Highfield 1344.73
64 Julien Leclercq 1344.44
65 He Guoqiang 1342.12
66 Michael Holt 1336.68
67 Liu Hongyu 1336.09
68 Long Zehuang 1334.07
69 David Lilley 1332.36
70 Ben Mertens 1329.36
71 Sunny Akani 1324.39
72 Robert Milkins 1324.13
73 Jamie Jones 1320.04
74 Dylan Emery 1318.88
75 Ishpreet Chadha 1316.02
76 Jimmy White 1314.32
77 Liam Davies 1313.09
78 Mark Davis 1312.62
79 Gao Yang 1300.21
80 Artemijs Zizins 1299.10
81 Liam Pullen 1296.90
82 David Grace 1294.92
83 Antoni Kowalski 1294.37
84 Jordan Brown 1291.37
85 Iulian Boiko 1290.76
86 Ian Burns 1284.66
87 Alexander Ursenbacher 1283.76
88 Steven Hallworth 1281.50
89 Lan Yuhao 1273.04
90 Ross Muir 1271.23
91 Bulcsu Revesz 1267.23
92 Mitchell Mann 1266.98
93 Allan Taylor 1265.33
94 Duane Jones 1262.07
95 Sanderson Lam 1260.97
96 Michał Szubarczyk 1256.70
97 Amir Sarkhosh 1254.93
98 Lim Kok Leong 1252.45
99 Cheung Ka Wai 1251.80
100 Wang Yuchen 1250.97
101 Gong Chenzhi 1244.59
102 Yao Pengcheng 1242.44
103 Liu Wenwei 1230.47
104 Liam Graham 1226.61
105 Huang Jiahao 1224.12
106 Mohammed Shehab 1223.29
107 Mateusz Baranowski 1219.26
108 Haris Tahir 1217.39
109 Robbie McGuigan 1216.58
110 Zhao Hanyang 1213.74
111 Farakh Ajaib 1211.81
112 Xu Yichen 1206.14
113 Florian Nüßle 1203.42
114 Chatchapong Nasa 1202.92
115 Connor Benzey 1199.34
116 Sahil Nayyar 1195.52
117 Bai Yulu 1190.53
118 Oliver Brown 1188.46
119 Leone Crowley 1185.11
120 Haydon Pinhey 1168.25
121 Fergal Quinn 1157.72
122 Jonas Luz 1141.98
123 Chris Totten 1137.57
124 Ng On Yee 1136.67
125 Kreishh Gurbaxani 1125.59
126 Hatem Yassin 1122.32
127 Reanne Evans 1079.99
128 Mink Nutcharut 1033.24

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.