Para crear las clasificaciones de las ligas, tomamos todos los disparos a los que se han enfrentado todos los porteros hasta la fecha en su liga. Aprendemos un conjunto de incrustaciones que capturan las diferentes habilidades de un portero, que luego podemos intercambiar para simular su rendimiento.
Esto nos da el número total de goles que cada portero habría encajado (xG) si se hubiera enfrentado a todos los disparos. Para hacerlo más interpretable, primero normalizamos los xG de un total de temporada a por partido, y luego lo tomamos de la media de la liga.
Este valor final es el número de xG que un portero habría evitado o concedido en comparación con la media de la liga. Sin más preámbulos, aquí está la clasificación de porteros de Stats PerformPerform para el 4 de marzo:

Alisson, portero del Liverpool, realiza una parada ante Ismaila Sarr, del Watford (izquierda), en Watford, Inglaterra, el sábado 29 de febrero de 2020.
Premier League: Semana 28
| Rango | Jugador | Equipo | Juegos | xG Evitado/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 | Palacio de Cristal | 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 y 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 |

El portero del Frankfurt Kevin Trapp da instrucciones a sus compañeros el viernes 28 de febrero de 2020.
Bundesliga: Semana 24
| Rango | Jugador | Equipo | Juegos | xG Evitado/90 Min |
|---|---|---|---|---|
| 1 | Kevin Trapp | Eintracht de Fráncfort | 12 | 0.40 |
| 2 | Yann Sommer | Mönchengladbach | 23 | 0.36 |
| 3 | Peter Gulacsi | RB Leipzig | 23 | 0.30 |
| 4 | Manuel Neuer | Bayern de Múnich | 24 | 0.23 |
| 5 | Alexander Nubel | Schalke 04 | 20 | 0.19 |
| 6 | Lukas Hradecky | Bayer Leverkusen | 24 | 0.17 |
| 7 | Rafal Gikiewicz | Unión Berlín | 24 | 0.07 |
| 8 | Koen Casteels | VfL Wolfsburgo | 16 | 0.05 |
| 9 | Roman Burki | Borussia Dortmund | 21 | 0.05 |
| 10 | Rune Jarstein | Hertha BSC | 21 | 0.02 |
| 11 | Alexander Schwolow | SC Friburgo | 15 | -0.09 |
| 12 | Robin Zentner | Maguncia 05 | 21 | -0.13 |
| 13 | Oliver Baumann | 1899 Hoffenheim | 20 | -0.14 |
| 14 | Timo Horn | FC Colonia | 23 | -0.21 |
| 15 | Leopold Zingerle | SC Paderborn | 18 | -0.23 |
| 16 | Zack Steffen | Fortuna Düsseldorf | 17 | -0.24 |
| 17 | Jiri Pavlenka | Werder Bremen | 23 | -0.37 |
| 18 | Tomas Koubek | FC Augsburgo | 23 | -0.43 |

El guardameta del Juventus Wojciech Szczesny, a la derecha, intenta realizar una parada contra el Ajax.
Serie A: Semana 26
| Rango | Jugador | Equipo | Juegos | xG Evitado/90 Min |
|---|---|---|---|---|
| 1 | Wojciech Szczesny | Juventus | 18 | 0.36 |
| 2 | Thomas Strakosha | Lazio | 26 | 0.28 |
| 3 | Samir Handanovic | Inter de Milán | 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 | Nápoles | 11 | 0.07 |
| 9 | Jesse Joronen | Brescia | 21 | 0.06 |
| 10 | Pau López | Roma | 25 | 0.06 |
| 11 | Ionut Radu | Génova | 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 | Turín | 25 | -0.06 |
| 16 | Alex Meret | Nápoles | 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 | Bolonia | 25 | -0.24 |
| 21 | Pierluigi Gollini | Atalanta | 22 | -0.33 |

El portero del Atlético de Madrid Jan Oblak, izquierda, realiza una parada mientras Joe Gómez, centro, y Virgil van Dijk, del Liverpool, saltan a por el balón.
La Liga: Semana 26
| Rango | Jugador | Equipo | Juegos | xG Evitado/90 Min |
|---|---|---|---|---|
| 1 | Jan Oblak | Atlético de Madrid | 26 | 0.26 |
| 2 | Thibaut Courtois | Real Madrid | 23 | 0.26 |
| 3 | Sergio Asenjo | Villareal | 23 | 0.24 |
| 4 | Aitor Fernández | Levante | 26 | 0.17 |
| 5 | Jasper Cillessen | Valencia | 15 | 0.14 |
| 6 | Unai Simon | Athletic de 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 | Rubén Blanco | Celta Viga | 24 | 0.03 |
| 11 | Fernando Pacheco | Alavés | 23 | 0.03 |
| 12 | Juan Soriano | Leganés | 11 | 0.01 |
| 13 | Tomas Vaclik | Sevilla | 25 | -0.01 |
| 14 | Jordi Masip | Valladolid | 26 | -0.01 |
| 15 | Rubén | 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 | Iván Cuéllar | Leganés | 15 | -0.13 |
| 21 | Marko Dmitrovic | Eibar | 24 | -0.26 |
| 22 | Sergio Herrera | Osasuna | 11 | -0.29 |
| 23 | Diego López | Espanyol | 26 | -0.30 |

Victor Osimhen (izquierda), del Lille, disputa el balón con Geronimo Rulli, guardameta del Montpellier.
Ligue 1: Semana 27
| Rango | Jugador | Equipo | Juegos | xG Evitado/90 Min |
|---|---|---|---|---|
| 1 | Gerónimo 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 Benítez | Bonito | 25 | 0.17 |
| 6 | Steve Mandanda | Marsella | 26 | 0.09 |
| 7 | Benoit Costil | Burdeos | 27 | 0.07 |
| 8 | Alexandre Oukidja | Metz | 26 | 0.05 |
| 9 | Mike Maignan | Lille | 27 | 0.05 |
| 10 | Alfred Gomis | Gijón | 19 | 0.03 |
| 11 | Anthony Lopes | Lyon | 25 | 0.01 |
| 12 | Matz Sels | Estrasburgo | 27 | -0.03 |
| 13 | Benjamin Lecomte | Mónaco | 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 | Stéphane Ruffier | Saint Etienne | 22 | -0.22 |
| 19 | Ludovic Butelle | Angers | 25 | -0.30 |
| 20 | Baptiste Reynet | Toulouse | 21 | -0.44 |