To create the league rankings, we take all shots faced by all goalkeepers to date in their league. We learn a set of embeddings that captures the different skillsets of a goalkeeper, which we can then swap in order to simulate their performance.
This gives us the total number of goals each goalkeeper would have been expected to concede (xG) if they faced every shot. To make this more interpretable, we first standardise the xG’s from a season total to per game, and then take this from the league average.
This final value is the number of xG’s a goalkeeper would have either prevented or conceded compared to the league average. So without further ado, here are Stats Perform’s goalkeeper rankings for March 4:
Premier League: Week 28
Rank | Player | Team | Games | xG Prevented/90 Min |
---|---|---|---|---|
1 | Alisson | Liverpool | 20 | 0.49 |
2 | Ederson | Manchester City | 23 | 0.21 |
3 | David de Gea | Manchester United | 28 | 0.16 |
4 | Vicente Guaita | Crystal Palace | 26 | 0.15 |
5 | Bernd Leno | Arsenal | 27 | 0.15 |
6 | Paulo Gazzaniga | Tottenham | 17 | 0.07 |
7 | Kasper Schmeichel | Leicester City | 28 | 0.07 |
8 | Lukasz Fabianski | West Ham | 15 | 0.06 |
9 | Aaron Ramsdale | Bournemouth | 27 | 0.04 |
10 | Martin Dubravka | Newcastle | 28 | 0.01 |
11 | Dean Henderson | Sheffield United | 26 | 0.01 |
12 | Hugo Lloris | Tottenham | 11 | -0.01 |
13 | Nick Pope | Burnley | 28 | -0.06 |
14 | Ben Foster | Watford | 28 | -0.07 |
15 | Mathew Ryan | Brighton & Hove Albion | 28 | -0.14 |
16 | Tom Heaton | Aston Villa | 20 | -0.16 |
17 | Alex McCarthy | Southampton | 18 | -0.16 |
18 | Rui Patricio | Wolverhampton | 28 | -0.16 |
19 | Jordan Pickford | Everton | 28 | -0.18 |
20 | Tim Krul | Norwich City | 26 | -0.21 |
21 | Kepa | Chelsea | 24 | -0.27 |
Bundesliga: Week 24
Rank | Player | Team | Games | xG Prevented/90 Min |
---|---|---|---|---|
1 | Kevin Trapp | Eintracht Frankfurt | 12 | 0.40 |
2 | Yann Sommer | Monchengladbach | 23 | 0.36 |
3 | Peter Gulacsi | RB Leipzig | 23 | 0.30 |
4 | Manuel Neuer | Bayern Munich | 24 | 0.23 |
5 | Alexander Nubel | Schalke 04 | 20 | 0.19 |
6 | Lukas Hradecky | Bayer Leverkusen | 24 | 0.17 |
7 | Rafal Gikiewicz | Union Berlin | 24 | 0.07 |
8 | Koen Casteels | VfL Wolfsburg | 16 | 0.05 |
9 | Roman Burki | Borussia Dortmund | 21 | 0.05 |
10 | Rune Jarstein | Hertha BSC | 21 | 0.02 |
11 | Alexander Schwolow | SC Freiburg | 15 | -0.09 |
12 | Robin Zentner | Mainz 05 | 21 | -0.13 |
13 | Oliver Baumann | 1899 Hoffenheim | 20 | -0.14 |
14 | Timo Horn | FC Koln | 23 | -0.21 |
15 | Leopold Zingerle | SC Paderborn | 18 | -0.23 |
16 | Zack Steffen | Fortuna Dusseldorf | 17 | -0.24 |
17 | Jiri Pavlenka | Werder Bremen | 23 | -0.37 |
18 | Tomas Koubek | FC Augsburg | 23 | -0.43 |
Serie A: Week 26
Rank | Player | Team | Games | xG Prevented/90 Min |
---|---|---|---|---|
1 | Wojciech Szczesny | Juventus | 18 | 0.36 |
2 | Thomas Strakosha | Lazio | 26 | 0.28 |
3 | Samir Handanovic | Inter Milan | 21 | 0.20 |
4 | Robin Olsen | Cagliari | 16 | 0.14 |
5 | Gianluigi Donnarumma | AC Milan | 24 | 0.10 |
6 | Luigi Sepe | Parma | 21 | 0.08 |
7 | Marco Silvestri | Verona | 24 | 0.07 |
8 | David Ospina | Napoli | 11 | 0.07 |
9 | Jesse Joronen | Brescia | 21 | 0.06 |
10 | Pau Lopez | Roma | 25 | 0.06 |
11 | Ionut Radu | Genoa | 17 | 0.05 |
12 | Bartlomiej Dragowski | Fiorentina | 25 | -0.01 |
13 | Etrit Berisha | SPAL | 25 | -0.04 |
14 | Andrea Consigli | Sassuolo | 19 | -0.04 |
15 | Salvatore Sirigu | Torino | 25 | -0.06 |
16 | Alex Meret | Napoli | 15 | -0.10 |
17 | Juan Musso | Udinese | 25 | -0.16 |
18 | Emil Audero | Sampdoria | 24 | -0.23 |
19 | Gabriel | Lecce | 22 | -0.24 |
20 | Lukasz Skorupski | Bologna | 25 | -0.24 |
21 | Pierluigi Gollini | Atalanta | 22 | -0.33 |
La Liga: Week 26
Rank | Player | Team | Games | xG Prevented/90 Min |
---|---|---|---|---|
1 | Jan Oblak | Atletico Madrid | 26 | 0.26 |
2 | Thibaut Courtois | Real Madrid | 23 | 0.26 |
3 | Sergio Asenjo | Villareal | 23 | 0.24 |
4 | Aitor Fernandez | Levante | 26 | 0.17 |
5 | Jasper Cillessen | Valencia | 15 | 0.14 |
6 | Unai Simon | Athletic Bilbao | 23 | 0.11 |
7 | Alex Remiro | Real Sociedad | 18 | 0.11 |
8 | Marc-Andre ter Stegen | Barcelona | 25 | 0.09 |
9 | Manuel Reina | Mallorca | 25 | 0.04 |
10 | Ruben Blanco | Celta Viga | 24 | 0.03 |
11 | Fernando Pacheco | Alaves | 23 | 0.03 |
12 | Juan Soriano | Leganes | 11 | 0.01 |
13 | Tomas Vaclik | Sevilla | 25 | -0.01 |
14 | Jordi Masip | Valladolid | 26 | -0.01 |
15 | Ruben | Osasuna | 14 | -0.05 |
16 | Rui Silva | Granada | 25 | -0.07 |
17 | David Soria | Getafe | 26 | -0.11 |
18 | Joel Robles | Real Betis | 25 | -0.12 |
19 | Jaume Domenech | Valencia | 11 | -0.13 |
20 | Ivan Cuellar | Leganes | 15 | -0.13 |
21 | Marko Dmitrovic | Eibar | 24 | -0.26 |
22 | Sergio Herrera | Osasuna | 11 | -0.29 |
23 | Diego Lopez | Espanyol | 26 | -0.30 |
Ligue 1: Week 27
Rank | Player | Team | Games | xG Prevented/90 Min |
---|---|---|---|---|
1 | Geronimo Rulli | Montpellier | 24 | 0.33 |
2 | Keylor Navas | PSG | 21 | 0.23 |
3 | Edouard Mendy | Rennes | 23 | 0.22 |
4 | Predrag Rajkovic | Reims | 26 | 0.18 |
5 | Walter Benitez | Nice | 25 | 0.17 |
6 | Steve Mandanda | Marseille | 26 | 0.09 |
7 | Benoit Costil | Bordeaux | 27 | 0.07 |
8 | Alexandre Oukidja | Metz | 26 | 0.05 |
9 | Mike Maignan | Lille | 27 | 0.05 |
10 | Alfred Gomis | Gijon | 19 | 0.03 |
11 | Anthony Lopes | Lyon | 25 | 0.01 |
12 | Matz Sels | Strasbourg | 27 | -0.03 |
13 | Benjamin Lecomte | Monaco | 27 | -0.03 |
14 | Gautier Larsonneur | Brest | 26 | -0.05 |
15 | Alban Lafont | Nantes | 26 | -0.08 |
16 | Paul Bernardoni | Nimes | 24 | -0.08 |
17 | Regis Gurtner | Amiens | 27 | -0.20 |
18 | Stephane Ruffier | St. Etienne | 22 | -0.22 |
19 | Ludovic Butelle | Angers | 25 | -0.30 |
20 | Baptiste Reynet | Toulouse | 21 | -0.44 |