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 11:
Premier League: Week 29
Rank | Player | Team | Games | xG Prevented/90 Min |
---|---|---|---|---|
1 | Alisson | Liverpool | 20 | 0.49 |
2 | Ederson | Manchester City | 24 | 0.19 |
3 | David de Gea | Manchester United | 29 | 0.19 |
4 | Bernd Leno | Arsenal | 28 | 0.19 |
5 | Vicente Guaita | Crystal Palace | 27 | 0.16 |
6 | Kasper Schmeichel | Leicester City | 29 | 0.07 |
7 | Paulo Gazzaniga | Tottenham | 17 | 0.07 |
8 | Dean Henderson | Sheffield United | 27 | 0.06 |
9 | Lukasz Fabianski | West Ham | 16 | 0.05 |
10 | Martin Dubravka | Newcastle | 29 | 0.03 |
11 | Aaron Ramsdale | Bournemouth | 28 | 0.02 |
12 | Hugo Lloris | Tottenham | 12 | -0.02 |
13 | Nick Pope | Burnley | 29 | -0.05 |
14 | Ben Foster | Watford | 29 | -0.08 |
15 | Mathew Ryan | Brighton & Hove Albion | 29 | -0.15 |
16 | Tom Heaton | Aston Villa | 20 | -0.16 |
17 | Rui Patricio | Wolverhampton | 29 | -0.17 |
18 | Alex McCarthy | Southampton | 19 | -0.19 |
19 | Jordan Pickford | Everton | 29 | -0.19 |
20 | Tim Krul | Norwich City | 27 | -0.22 |
21 | Kepa | Chelsea | 25 | -0.27 |
Bundesliga: Week 25
Rank | Player | Team | count | xG Prevented/90 Min |
---|---|---|---|---|
1 | Peter Gulacsi | RB Leipzig | 24 | 0.34 |
2 | Yann Sommer | Monchengladbach | 24 | 0.32 |
3 | Kevin Trapp | Eintracht Frankfurt | 13 | 0.27 |
4 | Manuel Neuer | Bayern Munich | 25 | 0.24 |
5 | Alexander Nubel | Schalke 04 | 20 | 0.19 |
6 | Lukas Hradecky | Bayer Leverkusen | 25 | 0.19 |
7 | Koen Casteels | VfL Wolfsburg | 17 | 0.08 |
8 | Roman Burki | Borussia Dortmund | 22 | 0.05 |
9 | Rune Jarstein | Hertha BSC | 21 | 0.03 |
10 | Rafal Gikiewicz | Union Berlin | 25 | 0.01 |
11 | Alexander Schwolow | SC Freiburg | 16 | -0.04 |
12 | Robin Zentner | Mainz 05 | 22 | -0.11 |
13 | Oliver Baumann | 1899 Hoffenheim | 21 | -0.11 |
14 | Timo Horn | FC Koln | 24 | -0.20 |
15 | Zack Steffen | Fortuna Dusseldorf | 17 | -0.23 |
16 | Leopold Zingerle | SC Paderborn | 19 | -0.25 |
17 | Jiri Pavlenka | Werder Bremen | 23 | -0.36 |
18 | Tomas Koubek | FC Augsburg | 23 | -0.42 |
Serie A: Week 26
Rank | Player | Team | Games | xGAdded |
---|---|---|---|---|
1 | Wojciech Szczesny | Juventus | 19 | 0.36 |
2 | Thomas Strakosha | Lazio | 26 | 0.28 |
3 | Samir Handanovic | Inter Milan | 22 | 0.16 |
4 | Robin Olsen | Cagliari | 16 | 0.14 |
5 | Marco Silvestri | Verona | 25 | 0.11 |
6 | Gianluigi Donnarumma | AC Milan | 24 | 0.11 |
7 | Luigi Sepe | Parma | 21 | 0.08 |
8 | David Ospina | Napoli | 11 | 0.07 |
9 | Pau Lopez | Roma | 25 | 0.06 |
10 | Ionut Radu | Genoa | 17 | 0.05 |
11 | Jesse Joronen | Brescia | 22 | 0.02 |
12 | Bartlomiej Dragowski | Fiorentina | 26 | -0.01 |
13 | Etrit Berisha | SPAL | 26 | -0.02 |
14 | Andrea Consigli | Sassuolo | 20 | -0.03 |
15 | Salvatore Sirigu | Torino | 25 | -0.07 |
16 | Alex Meret | Napoli | 15 | -0.10 |
17 | Juan Musso | Udinese | 26 | -0.14 |
18 | Emil Audero | Sampdoria | 25 | -0.25 |
19 | Gabriel | Lecce | 22 | -0.25 |
20 | Lukasz Skorupski | Bologna | 25 | -0.25 |
21 | Pierluigi Gollini | Atalanta | 22 | -0.33 |
La Liga: Week 28
Rank | Player | Team | Games | xG Prevented/90 Min |
---|---|---|---|---|
1 | Jan Oblak | Atletico Madrid | 27 | 0.26 |
2 | Sergio Asenjo | Villareal | 24 | 0.24 |
3 | Thibaut Courtois | Real Madrid | 24 | 0.17 |
4 | Alex Remiro | Real Sociedad | 20 | 0.16 |
5 | Aitor Fernandez | Levante | 27 | 0.14 |
6 | Unai Simon | Athletic Bilbao | 24 | 0.11 |
7 | Jasper Cillessen | Valencia | 16 | 0.10 |
8 | Marc-Andre ter Stegen | Barcelona | 26 | 0.07 |
9 | Ruben Blanco | Celta Viga | 25 | 0.06 |
10 | Manuel Reina | Mallorca | 26 | 0.05 |
11 | Ruben | Osasuna | 15 | 0.02 |
12 | Juan Soriano | Leganes | 11 | 0.01 |
13 | Fernando Pacheco | Alaves | 24 | 0.01 |
14 | Tomas Vaclik | Sevilla | 26 | -0.03 |
15 | Joel Robles | Real Betis | 26 | -0.07 |
16 | Ivan Cuellar | Leganes | 16 | -0.07 |
17 | Jordi Masip | Valladolid | 27 | -0.08 |
18 | Rui Silva | Granada | 26 | -0.09 |
19 | David Soria | Getafe | 27 | -0.09 |
20 | Jaume Domenech | Valencia | 11 | -0.13 |
21 | Marko Dmitrovic | Eibar | 26 | -0.25 |
22 | Sergio Herrera | Osasuna | 11 | -0.29 |
23 | Diego Lopez | Espanyol | 27 | -0.29 |
Ligue 1: Week 28
Rank | Player | Team | Games | xG Prevented/90 Min |
---|---|---|---|---|
1 | Geronimo Rulli | Montpellier | 25 | 0.32 |
2 | Edouard Mendy | Rennes | 24 | 0.24 |
3 | Keylor Navas | PSG | 21 | 0.23 |
4 | Predrag Rajkovic | Reims | 27 | 0.21 |
5 | Walter Benitez | Nice | 26 | 0.16 |
6 | Steve Mandanda | Marseille | 27 | 0.09 |
7 | Benoit Costil | Bordeaux | 28 | 0.08 |
8 | Alexandre Oukidja | Metz | 27 | 0.08 |
9 | Mike Maignan | Lille | 28 | 0.05 |
10 | Alfred Gomis | Gijon | 19 | 0.02 |
11 | Anthony Lopes | Lyon | 26 | -0.01 |
12 | Matz Sels | Strasbourg | 27 | -0.03 |
13 | Benjamin Lecomte | Monaco | 28 | -0.04 |
14 | Gautier Larsonneur | Brest | 27 | -0.06 |
15 | Paul Bernardoni | Nimes | 25 | -0.09 |
16 | Alban Lafont | Nantes | 27 | -0.10 |
17 | Regis Gurtner | Amiens | 28 | -0.20 |
18 | Stephane Ruffier | St. Etienne | 22 | -0.22 |
19 | Ludovic Butelle | Angers | 26 | -0.26 |
20 | Baptiste Reynet | Toulouse | 22 | -0.45 |