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
Northern Ireland Open Oct. 22, 2026, 12:04 p.m. 2026 Matthew Selt 2 4 Sam Craigie
Northern Ireland Open Oct. 22, 2026, 12:04 p.m. 2026 Kyren Wilson 4 3 Pang Junxu
Northern Ireland Open Oct. 22, 2026, 2:27 p.m. 2026 Elliot Slessor 4 1 Ricky Walden
Northern Ireland Open Oct. 22, 2026, 2:27 p.m. 2026 Anthony McGill 4 1 Mateusz Baranowski
Northern Ireland Open Oct. 22, 2026, 5:57 p.m. 2026 Mark Williams 4 0 Martin O'Donnell
Northern Ireland Open Oct. 22, 2026, 5:57 p.m. 2026 David Gilbert 4 2 Cheung Ka Wai
Northern Ireland Open Oct. 22, 2026, 7:33 p.m. 2026 Jak Jones 4 2 Daniel Wells
Northern Ireland Open Oct. 22, 2026, 8:41 p.m. 2026 Jordan Brown 2 4 Scott Donaldson
Northern Ireland Open Oct. 23, 2026, 11:58 a.m. 2026 Sam Craigie 6 2 Elliot Slessor
Northern Ireland Open Oct. 23, 2026, 11:58 a.m. 2026 Anthony McGill 1 6 Kyren Wilson

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 1636.89
2 Mark Selby 1616.51
3 Kyren Wilson 1600.54
4 Zhao Xintong 1594.82
5 Wu Yize 1561.15
6 Shaun Murphy 1558.78
7 Mark Williams 1543.52
8 John Higgins 1539.89
9 Mark Allen 1538.52
10 Jak Jones 1525.30
11 Barry Hawkins 1516.12
12 Neil Robertson 1511.19
13 Zhou Yuelong 1503.91
14 Ali Carter 1496.06
15 Ronnie O'Sullivan 1491.19
16 Zhang Anda 1487.06
17 Xiao Guodong 1481.05
18 Ding Junhui 1472.20
19 Chang Bingyu 1467.34
20 Stuart Bingham 1464.43
21 Luca Brecel 1456.32
22 David Gilbert 1451.30
23 Pang Junxu 1449.64
24 Anthony McGill 1446.29
25 Elliot Slessor 1441.81
26 Matthew Selt 1437.78
27 Hossein Vafaei 1434.67
28 Si Jiahui 1433.87
29 Stan Moody 1432.78
30 Jack Lisowski 1432.51
31 Stephen Maguire 1431.35
32 Chris Wakelin 1431.06
33 Sam Craigie 1430.98
34 Yuan Sijun 1429.31
35 Noppon Saengkham 1429.09
36 Joe O'Connor 1420.22
37 Ryan Day 1411.28
38 Ricky Walden 1410.32
39 Daniel Wells 1406.32
40 Jackson Page 1401.01
41 Fan Zhengyi 1400.64
42 Xu Si 1398.21
43 Aaron Hill 1396.41
44 Tom Ford 1396.20
45 Jiang Jun 1395.71
46 Gary Wilson 1395.25
47 Martin O'Donnell 1392.30
48 Scott Donaldson 1391.34
49 Liam Highfield 1385.39
50 Robbie Williams 1385.09
51 Liam Davies 1382.09
52 Thepchaiya Un-Nooh 1377.14
53 Lei Peifan 1365.98
54 Dylan Emery 1359.65
55 Gao Yang 1358.08
56 Liu Hongyu 1357.36
57 Lyu Haotian 1357.05
58 Ben Woollaston 1355.03
59 He Guoqiang 1347.79
60 Marco Fu 1347.72
61 Matthew Stevens 1346.70
62 Jimmy Robertson 1342.89
63 Louis Heathcote 1342.80
64 Michael Holt 1341.90
65 Yao Pengcheng 1335.86
66 Oliver Lines 1335.79
67 Julien Leclercq 1334.35
68 Liam Pullen 1329.10
69 Zak Surety 1327.02
70 Long Zehuang 1321.64
71 Ben Mertens 1317.40
72 Jamie Clarke 1311.45
73 Ishpreet Chadha 1310.82
74 Jordan Brown 1310.77
75 David Lilley 1309.01
76 David Grace 1308.24
77 Alfie Burden 1308.24
78 Iulian Boiko 1307.52
79 Jamie Jones 1306.10
80 Jimmy White 1299.93
81 Wang Xinbo 1299.84
82 Ian Burns 1299.72
83 Antoni Kowalski 1299.57
84 Steven Hallworth 1297.73
85 Artemijs Zizins 1297.10
86 Ashley Carty 1290.59
87 Andrew Higginson 1284.72
88 Ashley Hugill 1281.82
89 Ross Muir 1277.67
90 Igor Figueiredo 1273.57
91 Mitchell Mann 1271.75
92 Cheung Ka Wai 1270.32
93 Oliver Sykes 1257.43
94 Lan Yuhao 1252.87
95 Alexander Ursenbacher 1251.92
96 Gong Chenzhi 1249.30
97 Michał Szubarczyk 1241.33
98 Mateusz Baranowski 1239.11
99 Zhao Hanyang 1236.48
100 Stuart Carrington 1233.91
101 Huang Jiahao 1232.11
102 Hammad Miah 1230.70
103 Michael Larkov 1225.07
104 Luo Zetao 1224.93
105 Craig Steadman 1222.68
106 Liu Wenwei 1221.10
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 1181.96
118 Leone Crowley 1179.01
119 Connor Benzey 1177.08
120 Mahmoud El Hareedy 1163.04
121 Fergal Quinn 1132.20
122 Anton Kazakov 1118.67
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.