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 |
Championship League - Group 5 | Jan. 21, 2025, 1:46 p.m. | 2024 | Judd Trump | 3 | 2 | Joe O'Connor |
Championship League - Group 5 | Jan. 21, 2025, 3:03 p.m. | 2024 | Jak Jones | 3 | 0 | Matthew Selt |
Championship League - Group 5 | Jan. 21, 2025, 4:44 p.m. | 2024 | Jak Jones | 3 | 1 | Tom Ford |
Championship League - Group 5 | Jan. 21, 2025, 4:44 p.m. | 2024 | Neil Robertson | 3 | 1 | Stuart Bingham |
Championship League - Group 5 | Jan. 21, 2025, 5:37 p.m. | 2024 | Jak Jones | 1 | 3 | Matthew Selt |
Championship League - Group 5 | Jan. 21, 2025, 5:58 p.m. | 2024 | Judd Trump | 3 | 2 | Joe O'Connor |
Championship League - Group 5 | Jan. 21, 2025, 7:31 p.m. | 2024 | Judd Trump | 0 | 3 | Matthew Selt |
Championship League - Group 6 | Jan. 22, 2025, 10:58 a.m. | 2024 | Judd Trump | 3 | 2 | Jack Lisowski |
Championship League - Group 6 | Jan. 22, 2025, 10:58 a.m. | 2024 | David Gilbert | 1 | 3 | Noppon Saengkham |
Championship League - Group 6 | Jan. 22, 2025, noon | 2024 | Tom Ford | 1 | 3 | Joe O'Connor |
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 | 1695.06 |
2 | Kyren Wilson | 1614.77 |
3 | Mark Allen | 1599.40 |
4 | Mark Selby | 1554.96 |
5 | John Higgins | 1549.18 |
6 | Barry Hawkins | 1538.99 |
7 | Mark Williams | 1534.63 |
8 | Ronnie O'Sullivan | 1534.25 |
9 | Shaun Murphy | 1534.19 |
10 | Ding Junhui | 1523.10 |
11 | Si Jiahui | 1513.47 |
12 | Xiao Guodong | 1511.66 |
13 | Neil Robertson | 1501.47 |
14 | Hossein Vafaei | 1482.07 |
15 | Luca Brecel | 1481.27 |
16 | Jak Jones | 1476.34 |
17 | Jack Lisowski | 1473.80 |
18 | Wu Yize | 1464.51 |
19 | David Gilbert | 1458.64 |
20 | Zhang Anda | 1453.77 |
21 | Chris Wakelin | 1453.67 |
22 | Ali Carter | 1452.06 |
23 | Stuart Bingham | 1451.45 |
24 | Pang Junxu | 1448.42 |
25 | Matthew Selt | 1441.40 |
26 | Noppon Saengkham | 1432.80 |
27 | Lyu Haotian | 1429.13 |
28 | Cao Yupeng | 1420.40 |
29 | Thepchaiya Un-Nooh | 1418.91 |
30 | Ryan Day | 1418.62 |
31 | Elliot Slessor | 1417.98 |
32 | Anthony McGill | 1415.49 |
33 | Joe O'Connor | 1415.02 |
34 | Yuan Sijun | 1409.86 |
35 | Martin O'Donnell | 1407.74 |
36 | Stephen Maguire | 1406.64 |
37 | Zhou Yuelong | 1404.29 |
38 | Ben Woollaston | 1402.93 |
39 | Graeme Dott | 1401.50 |
40 | Jackson Page | 1397.98 |
41 | Tom Ford | 1391.68 |
42 | Gary Wilson | 1390.66 |
43 | Ricky Walden | 1388.10 |
44 | Xu Si | 1386.69 |
45 | Sam Craigie | 1383.42 |
46 | Fan Zhengyi | 1381.92 |
47 | Daniel Wells | 1375.11 |
48 | Lei Peifan | 1373.47 |
49 | Robert Milkins | 1371.60 |
50 | Jimmy Robertson | 1367.79 |
51 | Scott Donaldson | 1366.33 |
52 | Robbie Williams | 1365.33 |
53 | He Guoqiang | 1363.44 |
54 | Marco Fu | 1359.90 |
55 | Martin Gould | 1359.24 |
56 | Mark Davis | 1355.18 |
57 | Sunny Akani | 1353.44 |
58 | Michael White | 1350.98 |
59 | Oliver Lines | 1347.42 |
60 | Matthew Stevens | 1339.88 |
61 | Long Zehuang | 1338.28 |
62 | Michael Holt | 1335.42 |
63 | Jamie Jones | 1333.94 |
64 | Stan Moody | 1333.17 |
65 | Tian Pengfei | 1328.54 |
66 | Liu Hongyu | 1328.51 |
67 | Jimmy White | 1325.75 |
68 | Aaron Hill | 1323.21 |
69 | David Lilley | 1321.11 |
70 | Dominic Dale | 1320.30 |
71 | Jordan Brown | 1318.31 |
72 | Antoni Kowalski | 1316.76 |
73 | Ishpreet Chadha | 1311.56 |
74 | Jiang Jun | 1305.67 |
75 | Louis Heathcote | 1304.18 |
76 | Zak Surety | 1294.37 |
77 | Jamie Clarke | 1292.31 |
78 | Anthony Hamilton | 1288.29 |
79 | Alfie Burden | 1286.30 |
80 | Alexander Ursenbacher | 1281.61 |
81 | Julien Leclercq | 1281.23 |
82 | David Grace | 1280.70 |
83 | Ashley Carty | 1278.78 |
84 | Ma Hailong | 1277.30 |
85 | Joe Perry | 1277.04 |
86 | Andrew Higginson | 1276.34 |
87 | Stuart Carrington | 1269.71 |
88 | Ben Mertens | 1268.89 |
89 | Xing Zihao | 1268.52 |
90 | Artemijs Zizins | 1267.69 |
91 | Liam Davies | 1265.38 |
92 | Gong Chenzhi | 1263.56 |
93 | Duane Jones | 1263.55 |
94 | Cheung Ka Wai | 1263.53 |
95 | Bulcsu Revesz | 1263.16 |
96 | Ian Burns | 1260.23 |
97 | Ross Muir | 1257.90 |
98 | Allan Taylor | 1257.10 |
99 | Lim Kok Leong | 1252.45 |
100 | Sanderson Lam | 1242.65 |
101 | Haris Tahir | 1232.80 |
102 | Amir Sarkhosh | 1231.58 |
103 | Hammad Miah | 1221.09 |
104 | Liam Pullen | 1219.90 |
105 | Liam Graham | 1217.46 |
106 | Mohammed Shehab | 1217.40 |
107 | Kreishh Gurbaxani | 1216.41 |
108 | Bai Yulu | 1215.53 |
109 | Wang Yuchen | 1211.00 |
110 | Jonas Luz | 1210.86 |
111 | Huang Jiahao | 1207.65 |
112 | Chris Totten | 1207.03 |
113 | Rory Thor | 1203.43 |
114 | Mitchell Mann | 1200.75 |
115 | Haydon Pinhey | 1192.10 |
116 | Andrew Pagett | 1188.07 |
117 | Mostafa Dorgham | 1187.42 |
118 | Dean Young | 1179.21 |
119 | Robbie McGuigan | 1170.06 |
120 | Farakh Ajaib | 1163.53 |
121 | Manasawin Phetmalaikul | 1145.80 |
122 | Baipat Siripaporn | 1108.54 |
123 | Ahmed Elsayed | 1102.90 |
124 | Mink Nutcharut | 1071.40 |
125 | Reanne Evans | 1061.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.