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
English Open Sept. 10, 2026, 2:48 p.m. 2026 Joe O'Connor 1 4 Ding Junhui
English Open Sept. 10, 2026, 2:57 p.m. 2026 Liam Davies 4 1 Wu Yize
English Open Sept. 10, 2026, 6:01 p.m. 2026 Judd Trump 4 3 Anthony McGill
English Open Sept. 10, 2026, 6:01 p.m. 2026 Ali Carter 4 2 Gong Chenzhi
English Open Sept. 10, 2026, 9:02 p.m. 2026 Pang Junxu 3 4 Shaun Murphy
English Open Sept. 10, 2026, 9:43 p.m. 2026 Mark Williams 4 1 Barry Hawkins
English Open Sept. 11, 2026, 11:49 a.m. 2026 Zhou Yuelong 5 6 Ali Carter
English Open Sept. 11, 2026, 11:49 a.m. 2026 Ding Junhui 6 2 Kyren Wilson
English Open Sept. 11, 2026, 5:59 p.m. 2026 Mark Williams 6 3 Liam Davies
English Open Sept. 11, 2026, 5:59 p.m. 2026 Judd Trump 5 6 Shaun Murphy

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 1648.04
2 Mark Selby 1625.91
3 Zhao Xintong 1619.32
4 Kyren Wilson 1575.02
5 Shaun Murphy 1567.90
6 Wu Yize 1558.20
7 John Higgins 1553.97
8 Mark Allen 1550.71
9 Mark Williams 1535.11
10 Barry Hawkins 1518.64
11 Ronnie O'Sullivan 1513.31
12 Xiao Guodong 1512.48
13 Zhou Yuelong 1511.61
14 Neil Robertson 1509.35
15 Ali Carter 1504.19
16 Jak Jones 1502.42
17 Ding Junhui 1488.81
18 Zhang Anda 1485.52
19 Chang Bingyu 1474.36
20 Stuart Bingham 1466.61
21 David Gilbert 1452.90
22 Pang Junxu 1452.60
23 Elliot Slessor 1448.30
24 Luca Brecel 1447.97
25 Jack Lisowski 1447.28
26 Hossein Vafaei 1443.52
27 Noppon Saengkham 1443.05
28 Stan Moody 1435.65
29 Matthew Selt 1435.58
30 Si Jiahui 1435.47
31 Yuan Sijun 1435.26
32 Anthony McGill 1432.78
33 Chris Wakelin 1431.35
34 Stephen Maguire 1430.76
35 Joe O'Connor 1419.23
36 Jackson Page 1412.49
37 Tom Ford 1406.22
38 Gary Wilson 1403.91
39 Ryan Day 1397.10
40 Jiang Jun 1394.78
41 Fan Zhengyi 1392.62
42 Ricky Walden 1391.99
43 Sam Craigie 1390.27
44 Aaron Hill 1388.29
45 Liam Highfield 1385.72
46 Xu Si 1383.46
47 Daniel Wells 1377.95
48 Robbie Williams 1376.03
49 Martin O'Donnell 1374.76
50 Lei Peifan 1370.23
51 Thepchaiya Un-Nooh 1368.52
52 He Guoqiang 1361.09
53 Liu Hongyu 1360.10
54 Lyu Haotian 1356.99
55 Ben Woollaston 1354.57
56 Marco Fu 1353.58
57 Scott Donaldson 1350.67
58 Matthew Stevens 1348.99
59 Liam Davies 1347.34
60 Jimmy Robertson 1346.42
61 Zak Surety 1344.57
62 Michael Holt 1340.83
63 Oliver Lines 1339.43
64 Julien Leclercq 1335.85
65 Dylan Emery 1335.50
66 Ben Mertens 1335.10
67 Long Zehuang 1330.64
68 Louis Heathcote 1329.11
69 Gao Yang 1318.38
70 Ishpreet Chadha 1317.60
71 Liam Pullen 1316.95
72 Alfie Burden 1313.49
73 Jamie Jones 1313.03
74 Artemijs Zizins 1310.88
75 David Lilley 1308.22
76 Jamie Clarke 1307.06
77 Steven Hallworth 1306.47
78 Iulian Boiko 1301.09
79 Yao Pengcheng 1300.74
80 Antoni Kowalski 1300.13
81 Andrew Higginson 1299.82
82 Jimmy White 1294.18
83 David Grace 1292.08
84 Ashley Hugill 1289.78
85 Ashley Carty 1289.57
86 Jordan Brown 1287.87
87 Ian Burns 1283.98
88 Igor Figueiredo 1273.57
89 Ross Muir 1272.91
90 Wang Xinbo 1272.41
91 Lan Yuhao 1265.38
92 Alexander Ursenbacher 1261.06
93 Mitchell Mann 1259.32
94 Gong Chenzhi 1251.43
95 Oliver Sykes 1248.53
96 Cheung Ka Wai 1244.22
97 Michał Szubarczyk 1243.19
98 Hammad Miah 1241.60
99 Deng Haohui 1241.13
100 Luo Zetao 1238.59
101 Stuart Carrington 1236.97
102 Craig Steadman 1236.26
103 Michael Larkov 1235.19
104 Florian Nüßle 1228.77
105 Liu Wenwei 1224.73
106 Liu Yang 1221.49
107 Zhao Hanyang 1220.11
108 Huang Jiahao 1217.98
109 Paul Norris 1213.77
110 Phil O'Kane 1211.68
111 Xu Yichen 1210.43
112 Oliver Brown 1204.44
113 Liam Graham 1198.15
114 Thanawat Tirapongpaiboon 1197.08
115 Mateusz Baranowski 1195.19
116 Sahil Nayyar 1194.84
117 Connor Benzey 1185.87
118 Chatchapong Nasa 1182.69
119 Leone Crowley 1179.97
120 Mahmoud El Hareedy 1178.50
121 Fergal Quinn 1142.46
122 Sean O'Sullivan 1116.01
123 Anton Kazakov 1113.95

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.