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 |
Xi'an Grand Prix Qualifiers | Sept. 2, 2025, 6:07 p.m. | 2025 | Jordan Brown | 5 | 1 | Oliver Brown |
Xi'an Grand Prix Qualifiers | Sept. 2, 2025, 6:07 p.m. | 2025 | Luca Brecel | 0 | 5 | Sunny Akani |
Xi'an Grand Prix Qualifiers | Sept. 2, 2025, 6:07 p.m. | 2025 | Jamie Jones | 5 | 1 | Connor Benzey |
Xi'an Grand Prix Qualifiers | Sept. 3, 2025, 8:59 a.m. | 2025 | Jimmy Robertson | 5 | 2 | Cheung Ka Wai |
Xi'an Grand Prix Qualifiers | Sept. 3, 2025, 8:59 a.m. | 2025 | Aaron Hill | 5 | 2 | Liu Wenwei |
Xi'an Grand Prix Qualifiers | Sept. 3, 2025, 8:59 a.m. | 2025 | Mark Davis | 5 | 1 | Reanne Evans |
Xi'an Grand Prix Qualifiers | Sept. 3, 2025, 8:59 a.m. | 2025 | Barry Hawkins | 5 | 0 | Hatem Yassin |
Xi'an Grand Prix Qualifiers | Sept. 3, 2025, 8:59 a.m. | 2025 | Hossein Vafaei | 0 | 5 | Jiang Jun |
Xi'an Grand Prix Qualifiers | Sept. 3, 2025, 8:59 a.m. | 2025 | Pang Junxu | 3 | 5 | Wang Yuchen |
Xi'an Grand Prix Qualifiers | Sept. 3, 2025, 8:59 a.m. | 2025 | Stephen Maguire | 5 | 2 | Bai Yulu |
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 | 1649.95 |
2 | Kyren Wilson | 1619.35 |
3 | Xiao Guodong | 1559.60 |
4 | John Higgins | 1559.40 |
5 | Neil Robertson | 1558.98 |
6 | Mark Selby | 1557.92 |
7 | Ronnie O'Sullivan | 1552.23 |
8 | Mark Allen | 1551.36 |
9 | Mark Williams | 1525.88 |
10 | Zhao Xintong | 1525.77 |
11 | Joe O'Connor | 1519.28 |
12 | Barry Hawkins | 1515.15 |
13 | Ali Carter | 1496.49 |
14 | Ding Junhui | 1496.44 |
15 | Luca Brecel | 1492.23 |
16 | Hossein Vafaei | 1480.07 |
17 | Si Jiahui | 1479.22 |
18 | Shaun Murphy | 1478.44 |
19 | Stephen Maguire | 1477.90 |
20 | Matthew Selt | 1462.54 |
21 | Chris Wakelin | 1453.93 |
22 | Yuan Sijun | 1449.40 |
23 | Wu Yize | 1448.84 |
24 | Ricky Walden | 1448.73 |
25 | Elliot Slessor | 1448.60 |
26 | Jak Jones | 1443.91 |
27 | David Gilbert | 1431.74 |
28 | Zhang Anda | 1428.83 |
29 | Jack Lisowski | 1428.07 |
30 | Pang Junxu | 1425.71 |
31 | Gary Wilson | 1421.71 |
32 | Cao Yupeng | 1420.40 |
33 | Stuart Bingham | 1417.99 |
34 | Thepchaiya Un-Nooh | 1411.42 |
35 | Ben Woollaston | 1406.67 |
36 | Anthony McGill | 1401.58 |
37 | Zhou Yuelong | 1397.84 |
38 | Ryan Day | 1396.80 |
39 | Stan Moody | 1396.46 |
40 | Jackson Page | 1396.14 |
41 | Xu Si | 1392.54 |
42 | Sam Craigie | 1391.89 |
43 | Noppon Saengkham | 1390.07 |
44 | Tom Ford | 1389.36 |
45 | Graeme Dott | 1388.42 |
46 | Martin O'Donnell | 1381.87 |
47 | Aaron Hill | 1380.08 |
48 | Oliver Lines | 1377.28 |
49 | Lyu Haotian | 1376.89 |
50 | Matthew Stevens | 1376.76 |
51 | Daniel Wells | 1369.84 |
52 | Lei Peifan | 1369.65 |
53 | Sunny Akani | 1360.25 |
54 | Jamie Jones | 1359.19 |
55 | Scott Donaldson | 1359.14 |
56 | Fan Zhengyi | 1358.36 |
57 | Mark Davis | 1355.54 |
58 | Robbie Williams | 1353.83 |
59 | Jimmy Robertson | 1353.50 |
60 | Marco Fu | 1352.69 |
61 | He Guoqiang | 1348.70 |
62 | Long Zehuang | 1348.43 |
63 | Michael Holt | 1344.91 |
64 | Robert Milkins | 1343.19 |
65 | David Lilley | 1340.83 |
66 | Chang Bingyu | 1339.77 |
67 | Zak Surety | 1336.65 |
68 | Liu Hongyu | 1333.07 |
69 | Louis Heathcote | 1322.61 |
70 | Liam Davies | 1312.75 |
71 | Ishpreet Chadha | 1310.44 |
72 | Ben Mertens | 1305.62 |
73 | Dylan Emery | 1304.68 |
74 | Jimmy White | 1300.42 |
75 | Jordan Brown | 1297.65 |
76 | Antoni Kowalski | 1297.33 |
77 | Steven Hallworth | 1295.56 |
78 | Jiang Jun | 1293.68 |
79 | Liam Highfield | 1290.37 |
80 | David Grace | 1288.22 |
81 | Duane Jones | 1279.21 |
82 | Gong Chenzhi | 1274.44 |
83 | Allan Taylor | 1272.00 |
84 | Ken Doherty | 1271.27 |
85 | Artemijs Zizins | 1269.83 |
86 | Alexander Ursenbacher | 1269.68 |
87 | Gao Yang | 1268.98 |
88 | Julien Leclercq | 1268.83 |
89 | Ross Muir | 1267.32 |
90 | Yao Pengcheng | 1260.46 |
91 | Sanderson Lam | 1258.98 |
92 | Ian Burns | 1258.56 |
93 | Bulcsu Revesz | 1258.27 |
94 | Lan Yuhao | 1253.86 |
95 | Chatchapong Nasa | 1253.07 |
96 | Lim Kok Leong | 1252.45 |
97 | Wang Yuchen | 1250.71 |
98 | Michał Szubarczyk | 1243.99 |
99 | Iulian Boiko | 1239.19 |
100 | Xu Yichen | 1239.05 |
101 | Cheung Ka Wai | 1238.92 |
102 | Florian Nüßle | 1237.04 |
103 | Amir Sarkhosh | 1236.02 |
104 | Liu Wenwei | 1233.49 |
105 | Zhao Hanyang | 1233.29 |
106 | Connor Benzey | 1230.65 |
107 | Sahil Nayyar | 1228.22 |
108 | Haris Tahir | 1227.88 |
109 | Leone Crowley | 1226.07 |
110 | Mateusz Baranowski | 1225.55 |
111 | Liam Pullen | 1222.64 |
112 | Oliver Brown | 1217.77 |
113 | Huang Jiahao | 1215.69 |
114 | Mohammed Shehab | 1214.27 |
115 | Bai Yulu | 1211.85 |
116 | Farakh Ajaib | 1209.26 |
117 | Liam Graham | 1204.67 |
118 | Mitchell Mann | 1203.43 |
119 | Haydon Pinhey | 1197.33 |
120 | Fergal Quinn | 1189.18 |
121 | Robbie McGuigan | 1188.16 |
122 | Jonas Luz | 1173.40 |
123 | Chris Totten | 1171.21 |
124 | Kreishh Gurbaxani | 1166.47 |
125 | Hatem Yassin | 1146.04 |
126 | Ng On Yee | 1144.09 |
127 | Reanne Evans | 1097.58 |
128 | Mink Nutcharut | 1045.30 |
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.