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
Champion of Champions Nov. 9, 2026, 6:46 p.m. 2026 Mark Selby 2 6 Chris Wakelin
Champion of Champions Nov. 9, 2026, 6:46 p.m. 2026 Mark Selby 2 6 Chris Wakelin
Champion of Champions Nov. 10, 2026, 3:21 p.m. 2026 Judd Trump 3 4 Jak Jones
Champion of Champions Nov. 10, 2026, 6:47 p.m. 2026 Neil Robertson 6 3 Jak Jones
Champion of Champions Nov. 11, 2026, 1:02 p.m. 2026 Shaun Murphy 4 0 Ronnie O'Sullivan
Champion of Champions Nov. 11, 2026, 3:12 p.m. 2026 Wu Yize 3 4 Chang Bingyu
Champion of Champions Nov. 11, 2026, 6:59 p.m. 2026 Shaun Murphy 6 0 Chang Bingyu
Champion of Champions Nov. 12, 2026, 12:58 p.m. 2026 Zhao Xintong 4 0 Thepchaiya Un-Nooh
Champion of Champions Nov. 12, 2026, 2:37 p.m. 2026 Kyren Wilson 4 2 Ali Carter

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 Kyren Wilson 1639.82
2 Judd Trump 1616.60
3 Zhao Xintong 1600.56
4 Mark Selby 1598.87
5 Shaun Murphy 1570.90
6 John Higgins 1559.75
7 Wu Yize 1547.95
8 Mark Williams 1540.95
9 Mark Allen 1538.52
10 Jak Jones 1521.74
11 Neil Robertson 1515.23
12 Barry Hawkins 1506.79
13 Zhou Yuelong 1493.88
14 Ali Carter 1491.41
15 Chang Bingyu 1491.40
16 Ding Junhui 1489.15
17 Ronnie O'Sullivan 1485.13
18 Zhang Anda 1482.15
19 Xiao Guodong 1481.05
20 Luca Brecel 1456.32
21 Stuart Bingham 1454.51
22 Chris Wakelin 1449.77
23 Hossein Vafaei 1448.73
24 Pang Junxu 1448.33
25 Anthony McGill 1446.29
26 David Gilbert 1445.74
27 Elliot Slessor 1441.81
28 Stephen Maguire 1441.79
29 Matthew Selt 1437.78
30 Fan Zhengyi 1437.39
31 Si Jiahui 1437.30
32 Yuan Sijun 1434.10
33 Jack Lisowski 1432.51
34 Sam Craigie 1430.32
35 Noppon Saengkham 1429.09
36 Stan Moody 1425.15
37 Ryan Day 1414.14
38 Joe O'Connor 1412.92
39 Daniel Wells 1403.26
40 Aaron Hill 1403.04
41 Ricky Walden 1402.43
42 Xu Si 1400.98
43 Jackson Page 1398.48
44 Tom Ford 1396.20
45 Liam Davies 1393.08
46 Martin O'Donnell 1392.30
47 Jiang Jun 1390.62
48 Gary Wilson 1387.81
49 Scott Donaldson 1386.60
50 Liam Highfield 1382.17
51 Robbie Williams 1381.12
52 Thepchaiya Un-Nooh 1369.76
53 Marco Fu 1367.54
54 Lei Peifan 1359.46
55 Liu Hongyu 1358.62
56 Ben Woollaston 1354.22
57 Lyu Haotian 1353.17
58 Gao Yang 1353.01
59 Dylan Emery 1351.64
60 Oliver Lines 1349.03
61 He Guoqiang 1347.79
62 Matthew Stevens 1346.70
63 Jimmy Robertson 1342.89
64 Michael Holt 1341.90
65 Louis Heathcote 1335.61
66 Julien Leclercq 1333.78
67 Liam Pullen 1329.10
68 Yao Pengcheng 1328.77
69 Zak Surety 1327.02
70 Ben Mertens 1317.40
71 Wang Xinbo 1316.58
72 Long Zehuang 1316.43
73 Jamie Clarke 1311.45
74 Jordan Brown 1310.77
75 Ishpreet Chadha 1307.67
76 Iulian Boiko 1307.52
77 David Lilley 1306.62
78 Jamie Jones 1306.10
79 Alfie Burden 1305.96
80 David Grace 1303.34
81 Antoni Kowalski 1299.57
82 Steven Hallworth 1298.73
83 Jimmy White 1297.84
84 Ian Burns 1297.40
85 Artemijs Zizins 1297.10
86 Andrew Higginson 1284.72
87 Ashley Carty 1284.03
88 Ashley Hugill 1281.82
89 Ross Muir 1273.90
90 Igor Figueiredo 1273.57
91 Cheung Ka Wai 1270.32
92 Mitchell Mann 1267.56
93 Oliver Sykes 1257.43
94 Lan Yuhao 1252.87
95 Alexander Ursenbacher 1251.92
96 Gong Chenzhi 1249.30
97 Michał Szubarczyk 1244.40
98 Mateusz Baranowski 1239.11
99 Zhao Hanyang 1236.48
100 Stuart Carrington 1230.32
101 Huang Jiahao 1229.30
102 Hammad Miah 1228.76
103 Liu Wenwei 1227.73
104 Michael Larkov 1225.07
105 Luo Zetao 1224.93
106 Craig Steadman 1222.68
107 Deng Haohui 1221.05
108 Florian Nüßle 1217.68
109 Liu Yang 1215.12
110 Thanawat Tirapongpaiboon 1211.70
111 Chatchapong Nasa 1203.95
112 Xu Yichen 1202.30
113 Oliver Brown 1199.65
114 Paul Norris 1197.31
115 Phil O'Kane 1195.43
116 Liam Graham 1192.70
117 Sahil Nayyar 1179.58
118 Leone Crowley 1179.01
119 Connor Benzey 1177.08
120 Mahmoud El Hareedy 1163.04
121 Fergal Quinn 1132.20
122 Anton Kazakov 1116.15
123 Sean O'Sullivan 1105.26

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.