Ranking All Formula 1 Drivers

9 June 2016

If you don't want to read my ramblings about it, Here is the full list of every driver.

A while ago I had a thought to try to calculate the iRating of every Formula 1 driver. Everyone has their own preconceived notions of who is the best driver and who is the worst, could I possibly use some formula to figure out who was Trulli the best? Would this match up with what everyone thinks? When asked who is the greatest racing driver, people will often say Juan Manuel Fangio, Jim Clark, Ayrton Senna, Michael Schumacher or any of several other drivers who are widely regarded as the best. My algorithm seems to agree and puts them near the top of the ranking. This rating points system also serves as a good way to try to compare drivers who never raced against each other.

I based it somewhat off iRating from the iRacing simulator. I looked at how iRating appears to work from the outside and then put my own spin on it. I can't seem to find an exact explanation of how iRating and strength of field is calculated so I just made it up in a way that seemed a bit consistent with how it works in the sim. I did find one reddit post that appeared to explain how it worked and someone replied thanking the guy, but the poster's account was deleted and so was that post.

How it works

Every driver starts of with 1350 rating points. A predicted finishing position for each driver is generated based on sorting all the drivers by rating and simply going down the line from first to last. Each finishing position is given an adjustment. The first place adjustment is half of the total number of drivers contributing to the rating pool. Each position after that is given an adjustment of one less than the previous position. Past the halfway mark, drivers are given a negative adjustment. This adjustment allows for drivers who are expected to finish first to still gain some rating if they still finish in the top half of the field. The positions gained calculated by taking the prediction, subtracting the finishing position and adding the adjustment.

Everyone's positions gained (or lost) are added up and each driver is given a share of the total. Then each driver's share is used to take (or lose) a portion of the total rating pool available. The rating pool is determined by the Strength of Field (SOF) which is based on the average rating in the race. Another calcuation is done on the SOF to get the pool of rating available.

The rating system is zero sum. The amount of points at the start of the race is the same as at the end of the race. The drivers who do well, take from the drivers who do poorly. The only way to add more points into the system is to add more drivers. I'll touch on this in the next section.

If a driver's rating drops below 100, he is no longer counted in the pool if he would only lose more points. I didn't do this at first because in my early testing, no one was so bad that they dropped into negatives. Once I had all the races plugged in, I learned that two recent drivers in particular were so bad that they did. I'll mention them later on.

Below is a table I grabbed from the database that shows the 2015 Abu Dhabi Grand Prix so you can get an idea how each field works.

finish_id name_id adjustment prediction pos_gain share gain old_rating new_rating
1 575 9 3 11 0.169231 71 5594 5665
2 581 8 1 7 0.107692 45 6899 6944
3 549 7 5 9 0.138462 58 4411 4469
4 585 6 2 4 0.061538 26 6617 6643
5 597 5 13 13 0.2 85 1776 1861
6 601 4 9 7 0.107692 45 2450 2495
7 592 3 10 6 0.092308 39 1868 1907
8 556 2 6 0 0 0 4133 4133
9 590 1 12 4 0.061538 26 1801 1827
10 610 0 11 1 0.015385 6 1828 1834
11 614 -1 15 3 0.046154 19 1378 1397
12 546 -2 7 -7 -0.10769 -45 3201 3156
13 605 -3 8 -8 -0.12308 -52 2524 2472
14 611 -4 17 -1 -0.01538 -6 732 726
15 613 -5 16 -4 -0.06154 -26 1261 1235
16 615 -6 14 -8 -0.12308 -52 1583 1531
17 550 -7 4 -20 -0.30769 -130 4894 4764
18 612 -8 19 -7 -0.10769 -45 391 346
19 616 -9 18 -10 -0.15385 -65 612 547

Does it work?

Overall I think it works. At least it does for the drivers people care about. There are some things I would like to note about it though. It doesn't count people who didn't finish the race, switched cars, or were just not classified. While iRating definitely counts if you crash out of the race, I didn't include it here. It's not easy to tell if someone DNF'd by their own doing or if they just happened to have a mechanical fault with the car. I don't think it's fair to penalize a driver's rating for something that is out of his control. Because of that, I only count drivers when they actually finish their race.

I wrote this in hopes of being able to compare drivers from different eras. Though this isn't really posisble due to a variety of factors. One of those factors is number of races per season. The 1950 F1 season had 7 races. The 2015 F1 season had 19 races. If there are more races in a season, a driver has more chances to gain rating. Drivers also didn't always go to every race in the early years. One big example is the Indianapolis 500. It counted as an F1 race for 10 years yet only 1 F1 driver ever participated. This lead to some pretty funny situations where someone could win the Indy 500 and not even realize he's going to place pretty highly in the F1 WDC just for that one race. I originally planned on leaving it out because no F1 drivers raced in it, but kept it in because these guys were still technically F1 drivers according to the season and they deserve to be ranked too.

I think this number of races is what contributes to modern drivers having such high ratings compared to earlier ones. I don't think it's just simply the pool getting larger as time goes on as a lot of drivers seem to get out while they are on top and take their rating with them. I think pay drivers also play a part as well. A driver may not be particularly good but he's paying the bills for the team so he keeps them going while sitting in the back. As pay drivers come and go, they donate their 1350 points to the drivers who are doing well. That pumps more points into the system.

This system also rewards drivers who consistently do well, even if they aren't winning. While all your favorite champions make it to the top, there's also a lot of drivers who aren't championship winners but they drive consistently and keep their rating up. I think this is the most important part of this rating system. So many other rankings just seem to go off who got the most points over the years or who won the most championships. This system will let a driver shine who might not always get big points but always finishes well.

The ranking

I guess it's time to get to the actual ranking of drivers. I've included below a table of the top 25 drivers. It's got everyone's favorites as well as a couple you might not expect. While I think he's a great driver, I didn't expect Valtteri Bottas to be in the top 25. I'm not entirely sure that Fangio's rating is correct. Due to how I'm collecting the info, there are times where his results might not have been counted. In his era, there was a lot of time where drivers would switch cars. For instance, one Grand Prix where Stirling Moss' car broke down so he switched with his teammate. His teammate was a few laps back but Moss ended up driving the hell out of it and won the race. With how I collect information, some of these instances aren't counted. Fangio's rating should probably be a bit higher. Earlier tests I did with other methods of collection had him as the number 1 driver up into the 80s. So I still have some tweaking I need to do in regards to race info collection.

Ranking First Name Last Name Rating
001 Michael Schumacher 8036
002 Lewis Hamilton 7145
003 Sebastian Vettel 6775
004 Ayrton Senna 6188
005 Alain Prost 6147
006 Nico Rosberg 5918
007 Nigel Mansell 5416
008 Mark Webber 4995
009 Fernando Alonso 4758
010 Kimi Räikkönen 4657
011 Felipe Massa 4103
012 Mika Hakkinen 4061
013 Juan Pablo Montoya 3811
014 Jackie Stewart 3269
015 Niki Lauda 3181
016 Gerhard Berger 3063
017 Juan Manuel Fangio 2991
018 Jenson Button 2899
019 Jim Clark 2839
020 Riccardo Patrese 2816
021 Nelson Piquet 2812
022 Daniel Ricciardo 2767
023 Robert Kubica 2666
024 Damon Hill 2514
025 Valtteri Bottas 2474

This was just the top 25, Here is the full list of every driver. On that page are also some links to various years so you can see how the top drivers stacked up in each year. There's a page for every year so you can just click a year and then change the number in the address bar to find a specific year you want. Each year is counted at the end of the season. I also have the script on github if you're interested in checking it out. It's not the greatest example of python as It was mostly just thrown together for a fun project

Main Page