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 |
British Open Qualifiers | June 27, 2025, 12:03 p.m. | 2025 | Stan Moody | 4 | 2 | Zhou Yuelong |
British Open Qualifiers | June 27, 2025, 2:58 p.m. | 2025 | Ricky Walden | 2 | 4 | Joe O'Connor |
British Open Qualifiers | June 27, 2025, 2:58 p.m. | 2025 | Oliver Lines | 4 | 1 | Stuart Carrington |
British Open Qualifiers | June 27, 2025, 2:58 p.m. | 2025 | Martin O'Donnell | 4 | 1 | Sahil Nayyar |
British Open Qualifiers | June 27, 2025, 5:51 p.m. | 2025 | Connor Benzey | 2 | 4 | Iulian Boiko |
British Open Qualifiers | June 27, 2025, 5:51 p.m. | 2025 | Matthew Selt | 4 | 0 | David Gilbert |
British Open Qualifiers | June 27, 2025, 5:51 p.m. | 2025 | Leone Crowley | 4 | 0 | Hatem Yassin |
British Open Qualifiers | June 28, 2025, 9:01 a.m. | 2025 | Mink Nutcharut | 1 | 4 | Amir Sarkhosh |
British Open Qualifiers | June 28, 2025, 9:01 a.m. | 2025 | Long Zehuang | 4 | 3 | Thepchaiya Un-Nooh |
British Open Qualifiers | June 28, 2025, 9:01 a.m. | 2025 | Lei Peifan | 4 | 0 | Mateusz Baranowski |
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 | 1674.03 |
2 | Kyren Wilson | 1614.91 |
3 | John Higgins | 1591.61 |
4 | Mark Selby | 1553.39 |
5 | Mark Allen | 1548.22 |
6 | Ronnie O'Sullivan | 1532.49 |
7 | Zhao Xintong | 1527.06 |
8 | Xiao Guodong | 1525.13 |
9 | Neil Robertson | 1523.45 |
10 | Shaun Murphy | 1522.12 |
11 | Barry Hawkins | 1521.36 |
12 | Mark Williams | 1510.73 |
13 | Ding Junhui | 1505.29 |
14 | Luca Brecel | 1502.84 |
15 | Hossein Vafaei | 1497.94 |
16 | Joe O'Connor | 1493.93 |
17 | Ali Carter | 1481.49 |
18 | Si Jiahui | 1469.32 |
19 | Pang Junxu | 1464.17 |
20 | Jak Jones | 1454.06 |
21 | Jack Lisowski | 1451.45 |
22 | Matthew Selt | 1448.79 |
23 | Wu Yize | 1446.58 |
24 | Chris Wakelin | 1441.87 |
25 | Yuan Sijun | 1438.33 |
26 | Zhang Anda | 1433.99 |
27 | David Gilbert | 1432.17 |
28 | Ricky Walden | 1427.93 |
29 | Stephen Maguire | 1426.73 |
30 | Cao Yupeng | 1420.40 |
31 | Elliot Slessor | 1417.36 |
32 | Zhou Yuelong | 1412.30 |
33 | Ben Woollaston | 1411.90 |
34 | Stuart Bingham | 1409.74 |
35 | Jackson Page | 1408.83 |
36 | Ryan Day | 1405.74 |
37 | Tom Ford | 1400.88 |
38 | Anthony McGill | 1400.42 |
39 | Noppon Saengkham | 1395.69 |
40 | Xu Si | 1394.65 |
41 | Lyu Haotian | 1392.81 |
42 | Thepchaiya Un-Nooh | 1392.49 |
43 | Lei Peifan | 1390.68 |
44 | Graeme Dott | 1388.42 |
45 | Martin O'Donnell | 1380.85 |
46 | Sam Craigie | 1380.04 |
47 | Fan Zhengyi | 1376.44 |
48 | Daniel Wells | 1371.46 |
49 | Scott Donaldson | 1370.40 |
50 | Gary Wilson | 1367.46 |
51 | Jimmy Robertson | 1366.51 |
52 | Stan Moody | 1365.34 |
53 | Robbie Williams | 1363.00 |
54 | Michael Holt | 1362.03 |
55 | Marco Fu | 1360.33 |
56 | Jamie Jones | 1359.24 |
57 | Sunny Akani | 1358.16 |
58 | Aaron Hill | 1355.65 |
59 | Mark Davis | 1354.41 |
60 | He Guoqiang | 1352.05 |
61 | Zak Surety | 1351.51 |
62 | Matthew Stevens | 1349.86 |
63 | Robert Milkins | 1345.72 |
64 | Oliver Lines | 1341.62 |
65 | Liu Hongyu | 1330.64 |
66 | David Lilley | 1326.82 |
67 | Long Zehuang | 1324.42 |
68 | Ishpreet Chadha | 1317.97 |
69 | Jimmy White | 1315.43 |
70 | Louis Heathcote | 1311.74 |
71 | Jordan Brown | 1309.30 |
72 | Dylan Emery | 1300.90 |
73 | Chang Bingyu | 1297.20 |
74 | Ben Mertens | 1296.14 |
75 | Antoni Kowalski | 1294.16 |
76 | Liam Davies | 1293.80 |
77 | Liam Highfield | 1291.09 |
78 | Jiang Jun | 1289.67 |
79 | Alexander Ursenbacher | 1286.23 |
80 | David Grace | 1278.83 |
81 | Steven Hallworth | 1277.10 |
82 | Ross Muir | 1270.65 |
83 | Ken Doherty | 1270.35 |
84 | Gao Yang | 1269.84 |
85 | Julien Leclercq | 1267.78 |
86 | Duane Jones | 1267.56 |
87 | Gong Chenzhi | 1266.10 |
88 | Allan Taylor | 1264.31 |
89 | Ian Burns | 1261.37 |
90 | Sanderson Lam | 1258.24 |
91 | Artemijs Zizins | 1258.16 |
92 | Cheung Ka Wai | 1252.90 |
93 | Lim Kok Leong | 1252.45 |
94 | Bulcsu Revesz | 1252.00 |
95 | Zhao Hanyang | 1250.51 |
96 | Florian Nüßle | 1249.41 |
97 | Chatchapong Nasa | 1247.23 |
98 | Connor Benzey | 1245.54 |
99 | Wang Yuchen | 1244.21 |
100 | Yao Pengcheng | 1244.04 |
101 | Xu Yichen | 1242.16 |
102 | Lan Yuhao | 1240.89 |
103 | Liu Wenwei | 1240.29 |
104 | Sahil Nayyar | 1239.60 |
105 | Leone Crowley | 1237.82 |
106 | Haris Tahir | 1235.98 |
107 | Michał Szubarczyk | 1231.06 |
108 | Amir Sarkhosh | 1225.14 |
109 | Oliver Brown | 1224.24 |
110 | Mateusz Baranowski | 1223.52 |
111 | Mitchell Mann | 1220.67 |
112 | Haydon Pinhey | 1215.29 |
113 | Bai Yulu | 1214.59 |
114 | Iulian Boiko | 1213.92 |
115 | Mohammed Shehab | 1212.52 |
116 | Liam Graham | 1208.64 |
117 | Liam Pullen | 1205.54 |
118 | Huang Jiahao | 1204.72 |
119 | Fergal Quinn | 1202.49 |
120 | Kreishh Gurbaxani | 1195.53 |
121 | Jonas Luz | 1189.41 |
122 | Chris Totten | 1185.47 |
123 | Robbie McGuigan | 1177.61 |
124 | Farakh Ajaib | 1156.19 |
125 | Hatem Yassin | 1143.06 |
126 | Ng On Yee | 1137.24 |
127 | Reanne Evans | 1080.81 |
128 | Mink Nutcharut | 1058.33 |
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.