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
World Open Qualifiers Dec. 20, 2024, 10:01 a.m. 2024 Long Zehuang 5 2 Mitchell Mann
Snooker Championship Dec. 20, 2024, 2:12 p.m. 2024 Mark Williams 2 4 Luca Brecel
World Open Qualifiers Dec. 20, 2024, 2:33 p.m. 2024 Gary Wilson 5 1 Gong Chenzhi
World Open Qualifiers Dec. 20, 2024, 2:33 p.m. 2024 Tom Ford 5 1 Ahmed Elsayed
World Open Qualifiers Dec. 20, 2024, 2:33 p.m. 2024 Jordan Brown 5 1 Liam Graham
World Open Qualifiers Dec. 20, 2024, 2:33 p.m. 2024 Joe Perry 5 0 Kreishh Gurbaxani
World Open Qualifiers Dec. 20, 2024, 2:33 p.m. 2024 Hossein Vafaei 5 3 Ben Mertens
World Open Qualifiers Dec. 20, 2024, 2:33 p.m. 2024 Joe O'Connor 5 3 Alexander Ursenbacher
World Open Qualifiers Dec. 20, 2024, 2:33 p.m. 2024 Stephen Maguire 4 5 Alfie Burden
Snooker Championship Dec. 20, 2024, 4:51 p.m. 2024 Ronnie O'Sullivan 2 4 Mark Allen

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 1701.30
2 Mark Allen 1589.71
3 Kyren Wilson 1579.60
4 Ronnie O'Sullivan 1564.17
5 John Higgins 1555.63
6 Mark Williams 1554.23
7 Barry Hawkins 1543.29
8 Neil Robertson 1521.12
9 Ding Junhui 1519.04
10 Mark Selby 1515.27
11 Xiao Guodong 1508.32
12 Shaun Murphy 1499.70
13 Chris Wakelin 1491.03
14 Luca Brecel 1481.81
15 Si Jiahui 1481.10
16 David Gilbert 1479.31
17 Ali Carter 1478.38
18 Jack Lisowski 1473.39
19 Wu Yize 1464.51
20 Zhang Anda 1458.27
21 Stuart Bingham 1456.71
22 Pang Junxu 1455.82
23 Hossein Vafaei 1455.38
24 Jak Jones 1449.89
25 Elliot Slessor 1424.81
26 Lyu Haotian 1423.11
27 Gary Wilson 1421.48
28 Noppon Saengkham 1421.36
29 Cao Yupeng 1420.40
30 Jackson Page 1418.99
31 Thepchaiya Un-Nooh 1418.91
32 Matthew Selt 1417.30
33 Ryan Day 1413.80
34 Anthony McGill 1413.73
35 Yuan Sijun 1409.86
36 Stephen Maguire 1406.64
37 Joe O'Connor 1403.77
38 Tom Ford 1403.71
39 Martin O'Donnell 1403.02
40 Zhou Yuelong 1399.22
41 Ben Woollaston 1399.11
42 Graeme Dott 1395.35
43 Fan Zhengyi 1392.27
44 Xu Si 1386.69
45 Jimmy Robertson 1385.99
46 Ricky Walden 1384.78
47 Sam Craigie 1383.42
48 Daniel Wells 1369.84
49 Lei Peifan 1367.53
50 Marco Fu 1366.39
51 Scott Donaldson 1366.33
52 Robbie Williams 1359.82
53 Martin Gould 1359.24
54 He Guoqiang 1358.93
55 Oliver Lines 1353.43
56 Robert Milkins 1352.53
57 Michael White 1350.98
58 Mark Davis 1349.34
59 Sunny Akani 1341.85
60 Long Zehuang 1338.28
61 Michael Holt 1335.42
62 Matthew Stevens 1333.37
63 Stan Moody 1333.17
64 Jimmy White 1331.89
65 Jamie Jones 1328.61
66 Dominic Dale 1328.34
67 Liu Hongyu 1325.11
68 Aaron Hill 1323.21
69 Tian Pengfei 1323.19
70 David Lilley 1321.11
71 Jordan Brown 1318.31
72 Antoni Kowalski 1310.49
73 Jiang Jun 1305.67
74 Ishpreet Chadha 1303.53
75 Jamie Clarke 1299.88
76 Louis Heathcote 1296.61
77 Zak Surety 1294.37
78 Anthony Hamilton 1294.23
79 David Grace 1287.21
80 Alfie Burden 1286.30
81 Julien Leclercq 1285.02
82 Ashley Carty 1283.49
83 Ma Hailong 1282.37
84 Alexander Ursenbacher 1281.61
85 Joe Perry 1277.04
86 Andrew Higginson 1276.34
87 Liam Davies 1271.22
88 Artemijs Zizins 1270.63
89 Stuart Carrington 1269.71
90 Ben Mertens 1268.89
91 Xing Zihao 1268.52
92 Bulcsu Revesz 1267.88
93 Ian Burns 1265.75
94 Gong Chenzhi 1263.56
95 Cheung Ka Wai 1263.53
96 Ross Muir 1263.17
97 Allan Taylor 1260.88
98 Duane Jones 1253.20
99 Lim Kok Leong 1252.45
100 Sanderson Lam 1242.65
101 Haris Tahir 1237.27
102 Liam Pullen 1225.23
103 Hammad Miah 1221.09
104 Bai Yulu 1220.88
105 Amir Sarkhosh 1219.33
106 Liam Graham 1217.46
107 Mohammed Shehab 1217.40
108 Kreishh Gurbaxani 1216.41
109 Jonas Luz 1214.30
110 Wang Yuchen 1212.83
111 Huang Jiahao 1212.16
112 Rory Thor 1204.86
113 Mitchell Mann 1200.75
114 Chris Totten 1194.75
115 Haydon Pinhey 1192.10
116 Mostafa Dorgham 1189.58
117 Andrew Pagett 1188.07
118 Dean Young 1182.24
119 Robbie McGuigan 1170.06
120 Farakh Ajaib 1167.37
121 Manasawin Phetmalaikul 1133.25
122 Baipat Siripaporn 1111.94
123 Ahmed Elsayed 1102.90
124 Mink Nutcharut 1071.40
125 Reanne Evans 1063.34

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.