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
UK Championship Qualifiers Nov. 19, 2024, 7:22 p.m. 2024 Lyu Haotian 3 6 Liu Hongyu
UK Championship Qualifiers Nov. 19, 2024, 7:22 p.m. 2024 Anthony McGill 5 6 He Guoqiang
UK Championship Qualifiers Nov. 19, 2024, 7:22 p.m. 2024 Pang Junxu 2 6 Stan Moody
UK Championship Qualifiers Nov. 19, 2024, 7:22 p.m. 2024 Xu Si 6 5 Chris Totten
UK Championship Qualifiers Nov. 19, 2024, 7:22 p.m. 2024 Robert Milkins 6 3 Ross Muir
UK Championship Qualifiers Nov. 19, 2024, 7:22 p.m. 2024 Hossein Vafaei 6 3 Ma Hailong
UK Championship Qualifiers Nov. 20, 2024, 1:01 p.m. 2024 Jackson Page 6 2 Hossein Vafaei
UK Championship Qualifiers Nov. 20, 2024, 1:01 p.m. 2024 Jimmy Robertson 0 6 Stuart Bingham
UK Championship Qualifiers Nov. 20, 2024, 1:01 p.m. 2024 Elliot Slessor 5 6 Stephen Maguire
UK Championship Qualifiers Nov. 20, 2024, 1:01 p.m. 2024 Jak Jones 6 3 Fan Zhengyi

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 1689.94
2 Kyren Wilson 1592.17
3 Ronnie O'Sullivan 1573.58
4 Mark Allen 1572.09
5 Mark Williams 1562.51
6 John Higgins 1562.39
7 Mark Selby 1535.26
8 Neil Robertson 1533.06
9 Ding Junhui 1518.92
10 Shaun Murphy 1513.86
11 Barry Hawkins 1510.06
12 Xiao Guodong 1506.95
13 Si Jiahui 1502.69
14 Chris Wakelin 1490.47
15 Pang Junxu 1479.90
16 Ali Carter 1476.45
17 David Gilbert 1474.78
18 Hossein Vafaei 1469.44
19 Jack Lisowski 1464.69
20 Stuart Bingham 1464.13
21 Zhang Anda 1458.72
22 Jak Jones 1457.08
23 Luca Brecel 1448.16
24 Gary Wilson 1445.80
25 Matthew Selt 1444.53
26 Lyu Haotian 1427.57
27 Anthony McGill 1424.89
28 Cao Yupeng 1420.40
29 Yuan Sijun 1419.40
30 Jackson Page 1418.76
31 Elliot Slessor 1415.96
32 Ben Woollaston 1415.19
33 Ryan Day 1414.80
34 Thepchaiya Un-Nooh 1413.42
35 Wu Yize 1409.55
36 Stephen Maguire 1407.19
37 Zhou Yuelong 1406.81
38 Joe O'Connor 1404.06
39 Xu Si 1401.12
40 Jimmy Robertson 1399.95
41 Graeme Dott 1399.52
42 Martin O'Donnell 1394.72
43 Noppon Saengkham 1394.46
44 Ricky Walden 1394.17
45 Fan Zhengyi 1390.94
46 Sam Craigie 1383.42
47 Scott Donaldson 1381.25
48 Daniel Wells 1379.05
49 Marco Fu 1376.55
50 Oliver Lines 1372.89
51 Robbie Williams 1365.55
52 Stan Moody 1360.77
53 Martin Gould 1359.24
54 Mark Davis 1358.57
55 He Guoqiang 1355.82
56 Michael White 1350.98
57 Tom Ford 1348.68
58 Jimmy White 1346.73
59 Matthew Stevens 1344.12
60 Sunny Akani 1343.94
61 Robert Milkins 1342.40
62 Tian Pengfei 1337.00
63 Jamie Jones 1334.65
64 Long Zehuang 1334.57
65 Liu Hongyu 1334.32
66 Jordan Brown 1329.22
67 Michael Holt 1328.81
68 David Lilley 1324.48
69 Dominic Dale 1321.52
70 Lei Peifan 1320.90
71 Ishpreet Chadha 1318.29
72 Jamie Clarke 1317.67
73 Louis Heathcote 1306.59
74 Anthony Hamilton 1306.43
75 Aaron Hill 1305.99
76 Jiang Jun 1299.26
77 Julien Leclercq 1294.07
78 Ma Hailong 1289.74
79 Ashley Carty 1289.66
80 Ben Mertens 1287.99
81 Antoni Kowalski 1287.32
82 Joe Perry 1286.40
83 Ian Burns 1282.57
84 Zak Surety 1281.32
85 Stuart Carrington 1281.30
86 David Grace 1279.69
87 Alexander Ursenbacher 1278.56
88 Gong Chenzhi 1270.96
89 Xing Zihao 1270.55
90 Bulcsu Revesz 1267.51
91 Andrew Higginson 1261.42
92 Sanderson Lam 1259.75
93 Alfie Burden 1255.51
94 Cheung Ka Wai 1254.81
95 Artemijs Zizins 1254.75
96 Liam Davies 1253.17
97 Lim Kok Leong 1252.45
98 Haris Tahir 1251.80
99 Ross Muir 1251.15
100 Duane Jones 1250.25
101 Amir Sarkhosh 1236.09
102 Jonas Luz 1227.61
103 Mitchell Mann 1220.35
104 Mohammed Shehab 1217.40
105 Allan Taylor 1216.17
106 Wang Yuchen 1213.78
107 Bai Yulu 1212.97
108 Hammad Miah 1211.53
109 Chris Totten 1208.84
110 Rory Thor 1205.78
111 Kreishh Gurbaxani 1204.41
112 Liam Pullen 1201.85
113 Mostafa Dorgham 1199.03
114 Andrew Pagett 1191.54
115 Robbie McGuigan 1184.93
116 Huang Jiahao 1181.42
117 Dean Young 1177.67
118 Haydon Pinhey 1177.01
119 Farakh Ajaib 1169.64
120 Liam Graham 1141.25
121 Manasawin Phetmalaikul 1140.59
122 Baipat Siripaporn 1117.66
123 Ahmed Elsayed 1112.05
124 Mink Nutcharut 1084.36
125 Reanne Evans 1055.78

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.