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
China Open Qualifiers June 13, 2026, 6:30 p.m. 2026 Chang Bingyu 6 4 Matthew Stevens
China Open Qualifiers June 13, 2026, 6:30 p.m. 2026 Jack Lisowski 6 4 Xu Yichen
China Open Qualifiers June 14, 2026, 9:16 a.m. 2026 Matthew Selt 6 5 Ali Carter
China Open Qualifiers June 14, 2026, 9:16 a.m. 2026 Anthony McGill 6 2 Joe O'Connor
China Open Qualifiers June 14, 2026, 9:16 a.m. 2026 Yuan Sijun 3 6 Jackson Page
China Open Qualifiers June 14, 2026, 9:16 a.m. 2026 Elliot Slessor 1 6 Noppon Saengkham
China Open Qualifiers June 14, 2026, 9:16 a.m. 2026 Daniel Wells 4 6 Zhang Anda
China Open Qualifiers June 14, 2026, 9:16 a.m. 2026 Tom Ford 6 5 Liam Highfield
China Open Qualifiers June 14, 2026, 9:16 a.m. 2026 Hossein Vafaei 6 1 David Lilley
China Open Qualifiers June 14, 2026, 9:16 a.m. 2026 Stuart Bingham 6 0 Luca Brecel

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 Zhou Yuelong 1503.92
14 Ronnie O'Sullivan 1502.38
15 Ding Junhui 1495.58
16 Ali Carter 1483.03
17 Zhang Anda 1477.78
18 Jack Lisowski 1470.22
19 Elliot Slessor 1467.92
20 Luca Brecel 1467.01
21 Stuart Bingham 1463.92
22 Hossein Vafaei 1455.06
23 Jak Jones 1452.44
24 Si Jiahui 1451.68
25 Matthew Selt 1441.19
26 Anthony McGill 1438.73
27 Pang Junxu 1434.36
28 Chris Wakelin 1430.19
29 Stephen Maguire 1428.76
30 Chang Bingyu 1427.11
31 Yuan Sijun 1425.83
32 Joe O'Connor 1423.80
33 Gary Wilson 1423.22
34 David Gilbert 1423.05
35 Stan Moody 1420.68
36 Tom Ford 1419.82
37 Jackson Page 1416.52
38 Noppon Saengkham 1414.64
39 Ricky Walden 1409.27
40 Sam Craigie 1398.14
41 Jiang Jun 1394.58
42 Xu Si 1390.43
43 Fan Zhengyi 1388.53
44 Ryan Day 1387.91
45 Martin O'Donnell 1384.03
46 Aaron Hill 1380.82
47 Thepchaiya Un-Nooh 1379.93
48 Daniel Wells 1379.83
49 Lei Peifan 1379.25
50 Jimmy Robertson 1379.12
51 Robbie Williams 1371.39
52 Zak Surety 1367.99
53 Liam Highfield 1367.41
54 Marco Fu 1365.96
55 Matthew Stevens 1365.31
56 He Guoqiang 1363.40
57 Lyu Haotian 1360.43
58 Scott Donaldson 1360.30
59 Ben Woollaston 1355.26
60 Michael Holt 1348.95
61 Julien Leclercq 1343.70
62 Louis Heathcote 1341.11
63 Oliver Lines 1340.79
64 Liu Hongyu 1338.08
65 Ben Mertens 1333.35
66 Long Zehuang 1331.82
67 David Lilley 1328.24
68 Liam Pullen 1325.17
69 Dylan Emery 1322.08
70 Jamie Jones 1321.36
71 Ishpreet Chadha 1319.87
72 Antoni Kowalski 1313.85
73 Jamie Clarke 1313.09
74 Gao Yang 1313.05
75 Alfie Burden 1303.25
76 Iulian Boiko 1300.89
77 Jimmy White 1299.53
78 David Grace 1299.33
79 Andrew Higginson 1297.56
80 Ian Burns 1292.11
81 Liam Davies 1292.06
82 Ashley Hugill 1289.33
83 Jordan Brown 1287.44
84 Artemijs Zizins 1285.85
85 Steven Hallworth 1285.39
86 Ross Muir 1280.27
87 Yao Pengcheng 1277.44
88 Igor Figueiredo 1273.57
89 Lan Yuhao 1272.33
90 Alexander Ursenbacher 1269.78
91 Ashley Carty 1263.08
92 Mitchell Mann 1259.98
93 Wang Xinbo 1252.35
94 Oliver Sykes 1251.47
95 Deng Haohui 1251.08
96 Michał Szubarczyk 1250.49
97 Stuart Carrington 1249.17
98 Cheung Ka Wai 1244.22
99 Craig Steadman 1242.94
100 Liu Yang 1236.75
101 Paul Norris 1235.86
102 Gong Chenzhi 1235.83
103 Michael Larkov 1234.84
104 Hammad Miah 1231.43
105 Xu Yichen 1224.97
106 Liu Wenwei 1219.85
107 Luo Zetao 1218.54
108 Zhao Hanyang 1216.73
109 Phil O'Kane 1214.29
110 Huang Jiahao 1212.64
111 Mateusz Baranowski 1212.61
112 Florian Nüßle 1210.21
113 Liam Graham 1207.47
114 Chatchapong Nasa 1201.12
115 Sahil Nayyar 1192.13
116 Connor Benzey 1191.03
117 Leone Crowley 1190.69
118 Oliver Brown 1181.93
119 Thanawat Tirapongpaiboon 1181.67
120 Mahmoud El Hareedy 1177.08
121 Fergal Quinn 1151.35
122 Sean O'Sullivan 1111.20
123 Anton Kazakov 1095.57

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.