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 |
Scottish Open Qualifiers | Oct. 17, 2025, 12:02 p.m. | 2025 | David Lilley | 2 | 4 | Antoni Kowalski |
Scottish Open Qualifiers | Oct. 17, 2025, 12:02 p.m. | 2025 | Daniel Wells | 0 | 4 | Liam Pullen |
Scottish Open Qualifiers | Oct. 17, 2025, 12:02 p.m. | 2025 | Gong Chenzhi | 1 | 4 | Robbie McGuigan |
Scottish Open Qualifiers | Oct. 17, 2025, 3:02 p.m. | 2025 | Fan Zhengyi | 4 | 0 | Cheung Ka Wai |
Scottish Open Qualifiers | Oct. 17, 2025, 3:02 p.m. | 2025 | Ricky Walden | 3 | 4 | Wang Yuchen |
Scottish Open Qualifiers | Oct. 17, 2025, 3:02 p.m. | 2025 | Thepchaiya Un-Nooh | 4 | 1 | Chatchapong Nasa |
Scottish Open Qualifiers | Oct. 17, 2025, 6:03 p.m. | 2025 | Zak Surety | 4 | 1 | Duane Jones |
Scottish Open Qualifiers | Oct. 17, 2025, 6:03 p.m. | 2025 | He Guoqiang | 4 | 1 | Alexander Ursenbacher |
Scottish Open Qualifiers | Oct. 17, 2025, 6:06 p.m. | 2025 | Mark Davis | 4 | 0 | Liam Graham |
Scottish Open Qualifiers | Oct. 17, 2025, 6:32 p.m. | 2025 | Stan Moody | 4 | 1 | Ross Muir |
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 | 1617.27 |
2 | Kyren Wilson | 1598.62 |
3 | Mark Williams | 1584.18 |
4 | Mark Selby | 1567.69 |
5 | Mark Allen | 1553.73 |
6 | Xiao Guodong | 1550.53 |
7 | Shaun Murphy | 1548.74 |
8 | Neil Robertson | 1544.66 |
9 | Ronnie O'Sullivan | 1525.18 |
10 | Ding Junhui | 1514.27 |
11 | Barry Hawkins | 1513.38 |
12 | Zhao Xintong | 1511.45 |
13 | John Higgins | 1509.78 |
14 | Luca Brecel | 1496.66 |
15 | Joe O'Connor | 1486.45 |
16 | Ali Carter | 1478.17 |
17 | Si Jiahui | 1471.60 |
18 | Stephen Maguire | 1469.70 |
19 | Jak Jones | 1468.78 |
20 | Elliot Slessor | 1468.55 |
21 | Hossein Vafaei | 1466.87 |
22 | Wu Yize | 1465.36 |
23 | Gary Wilson | 1452.83 |
24 | Yuan Sijun | 1445.89 |
25 | Anthony McGill | 1445.74 |
26 | Zhou Yuelong | 1441.42 |
27 | Ricky Walden | 1438.11 |
28 | Jack Lisowski | 1434.78 |
29 | Chris Wakelin | 1434.12 |
30 | Zhang Anda | 1433.85 |
31 | Matthew Selt | 1432.50 |
32 | Stuart Bingham | 1421.63 |
33 | Pang Junxu | 1421.35 |
34 | Cao Yupeng | 1420.40 |
35 | David Gilbert | 1419.95 |
36 | Thepchaiya Un-Nooh | 1415.59 |
37 | Stan Moody | 1414.83 |
38 | Ben Woollaston | 1410.55 |
39 | Ryan Day | 1404.26 |
40 | Oliver Lines | 1400.78 |
41 | Aaron Hill | 1400.59 |
42 | Daniel Wells | 1397.85 |
43 | Martin O'Donnell | 1393.30 |
44 | Jackson Page | 1393.04 |
45 | Ken Doherty | 1392.16 |
46 | Matthew Stevens | 1391.49 |
47 | Sam Craigie | 1389.28 |
48 | Lei Peifan | 1388.77 |
49 | Tom Ford | 1387.96 |
50 | Lyu Haotian | 1379.44 |
51 | Robbie Williams | 1378.26 |
52 | Noppon Saengkham | 1377.06 |
53 | Fan Zhengyi | 1375.92 |
54 | Chang Bingyu | 1365.51 |
55 | Graeme Dott | 1363.80 |
56 | He Guoqiang | 1363.49 |
57 | Xu Si | 1362.77 |
58 | Scott Donaldson | 1361.83 |
59 | Louis Heathcote | 1359.00 |
60 | Jimmy Robertson | 1356.89 |
61 | Zak Surety | 1355.72 |
62 | Jimmy White | 1344.05 |
63 | Sunny Akani | 1342.16 |
64 | Marco Fu | 1340.68 |
65 | Robert Milkins | 1340.12 |
66 | Jamie Jones | 1337.26 |
67 | Liu Hongyu | 1335.39 |
68 | Mark Davis | 1334.92 |
69 | David Lilley | 1332.91 |
70 | Michael Holt | 1328.15 |
71 | Dylan Emery | 1321.23 |
72 | Liam Davies | 1320.56 |
73 | Ben Mertens | 1318.96 |
74 | Long Zehuang | 1315.69 |
75 | Steven Hallworth | 1305.33 |
76 | Liam Highfield | 1304.92 |
77 | Ishpreet Chadha | 1304.07 |
78 | David Grace | 1299.81 |
79 | Jiang Jun | 1298.48 |
80 | Antoni Kowalski | 1296.49 |
81 | Liam Pullen | 1282.76 |
82 | Ian Burns | 1280.72 |
83 | Jordan Brown | 1275.70 |
84 | Artemijs Zizins | 1275.55 |
85 | Lan Yuhao | 1272.25 |
86 | Alexander Ursenbacher | 1271.17 |
87 | Gao Yang | 1269.09 |
88 | Julien Leclercq | 1268.11 |
89 | Wang Yuchen | 1265.81 |
90 | Yao Pengcheng | 1264.79 |
91 | Allan Taylor | 1263.23 |
92 | Gong Chenzhi | 1262.81 |
93 | Duane Jones | 1259.75 |
94 | Ross Muir | 1258.13 |
95 | Sanderson Lam | 1252.58 |
96 | Lim Kok Leong | 1252.45 |
97 | Amir Sarkhosh | 1250.44 |
98 | Cheung Ka Wai | 1247.42 |
99 | Mitchell Mann | 1242.05 |
100 | Iulian Boiko | 1242.01 |
101 | Mateusz Baranowski | 1236.38 |
102 | Bulcsu Revesz | 1230.63 |
103 | Zhao Hanyang | 1230.07 |
104 | Huang Jiahao | 1229.39 |
105 | Haris Tahir | 1228.86 |
106 | Michał Szubarczyk | 1227.07 |
107 | Chatchapong Nasa | 1224.50 |
108 | Liu Wenwei | 1224.50 |
109 | Florian Nüßle | 1215.38 |
110 | Mohammed Shehab | 1214.27 |
111 | Liam Graham | 1213.60 |
112 | Leone Crowley | 1210.97 |
113 | Bai Yulu | 1209.44 |
114 | Xu Yichen | 1207.96 |
115 | Connor Benzey | 1204.63 |
116 | Sahil Nayyar | 1201.61 |
117 | Farakh Ajaib | 1198.18 |
118 | Oliver Brown | 1197.31 |
119 | Haydon Pinhey | 1190.79 |
120 | Robbie McGuigan | 1186.99 |
121 | Fergal Quinn | 1178.39 |
122 | Jonas Luz | 1162.50 |
123 | Chris Totten | 1150.34 |
124 | Kreishh Gurbaxani | 1144.37 |
125 | Hatem Yassin | 1130.76 |
126 | Ng On Yee | 1125.94 |
127 | Reanne Evans | 1081.47 |
128 | Mink Nutcharut | 1043.39 |
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.