Ranking the top-40 goaltenders by Goals Allowed Per Expected Goal Against

  1. TomasHertlsRooster
    RankPlayerTeamGoals Allowed Per Expected Goal (Average)
    1John GibsonANA0.85
    2Sergei BobrovskyCBJ0.88
    3Philipp GrubauerCOL/WSH0.89
    4Corey CrawfordCHI0.93
    5Ryan MillerANA/VAN0.95
    6Ben BishopDAL/T.B/L.A0.95
    7Frederik AndersenTOR0.95
    8Matt MurrayPIT0.95
    9Marc-Andre FleuryVGK/PIT0.96
    10Braden HoltbyWSH0.96
    11Pekka RinneNSH0.97
    12Jaroslav HalakBOS/NYI0.98
    13Darcy KuemperARI/L.A/MIN0.99
    14Mike SmithCGY/ARI1.00
    15Thomas GreissNYI1.00
    16Cam TalbotEDM/PHI1.00
    17Robin LehnerNYI/BUF1.00
    18Jimmy HowardDET1.00
    19Carter HuttonBUF/STL1.01
    20Roberto LuongoFLA1.01
    21Martin JonesS.J1.02
    22Henrik LundqvistNYR1.02
    23Jonathan QuickL.A1.02
    24Jacob MarkstromVAN1.02
    25James ReimerFLA1.02
    26Connor HellebuyckWPG1.03
    27Tuukka RaskBOS1.03
    28Andrei VasilevskiyT.B1.04
    29Brian ElliottPHI/CGY1.05
    30Semyon VarlamovCOL1.06
    31Jonathan BernierDET/COL/ANA1.06
    32Carey PriceMTL1.06
    33Kari LehtonenDAL1.06
    34Keith KinkaidN.J1.07
    35Cory SchneiderN.J1.08
    36Petr MrazekCAR/DET/PHI1.10
    37Craig AndersonOTT1.11
    38Devan DubnykMIN1.11
    39Jake AllenSTL1.12
    40Cam WardCHI/CAR1.12
    I initially just calculated this for my own purposes and had no interest in starting a thread about it, but after seeing the results I felt like it was worth posting. The numbers pass the smell test even more so than I thought.

    These are all the goaltenders to play at least 5,000 minutes over the past 3 seasons. This was just an arbitrary number that I picked and once I saw that exactly 40 goaltenders had played that number of minutes, I figured that number sounded about right.

    The data used to calculate these numbers is from both Natural Stat Trick and Corsica.Hockey. For each model, goals against were divided by expected goals against. In order to combine the two models, goals against and expected goals against for each data set were added together. (Corsica's data set slightly varies from Natural Stat Trick's because Corsica is missing a few games and goals.)

    The full data is here:

    PlayerTeamGA (Corsica)xGA (Corsica)Goals Allowed Per Expected Goal (Corsica)Goals Against (NST)xG Against (NST)Goals Allowed Per Expected Goal (NST)Goals Allowed Per Expected Goal (Combined)
    John GibsonANA399482.030.83401462.40.870.85
    Sergei BobrovskyCBJ437515.70.85438474.620.920.88
    Philipp GrubauerCOL/WSH203234.610.87205224.230.910.89
    Corey CrawfordCHI305341.780.89306317.630.960.93
    Ben BishopDAL/T.B/L.A301322.230.93301309.580.970.95
    Ryan MillerANA/VAN254281.60.90254252.021.010.95
    Frederik AndersenTOR513557.130.92513517.90.990.95
    Marc-Andre FleuryVGK/PIT359388.650.92359360.521.000.96
    Braden HoltbyWSH439459.80.95440453.60.970.96
    Pekka RinneNSH405434.30.93408403.981.010.97
    Jaroslav HalakBOS/NYI325352.250.92326314.771.040.98
    Matt MurrayPIT730786.550.93373364.821.020.96
    Darcy KuemperARI/L.A/MIN246257.460.96248241.791.030.99
    Mike SmithCGY/ARI406417.140.97406396.961.021.00
    Thomas GreissNYI308320.590.96308296.691.041.00
    Robin LehnerNYI/BUF388396.580.98388377.511.031.00
    Jimmy HowardDET363373.60.97365352.541.041.00
    Cam TalbotEDM/PHI466485.20.964674461.051.00
    Carter HuttonBUF/STL256264.530.97256241.991.061.01
    Roberto LuongoFLA307322.40.95307283.41.081.01
    Martin JonesS.J471479.790.98473447.661.061.02
    Henrik LundqvistNYR480492.780.97480450.131.071.02
    Jonathan QuickL.A330325.921.01331321.311.031.02
    Jacob MarkstromVAN379388.210.98382356.921.071.02
    Connor HellebuyckWPG479485.980.99481449.641.071.03
    James ReimerFLA311321.560.97311285.661.091.02
    Tuukka RaskBOS371372.041.00371348.291.071.03
    Andrei VasilevskiyT.B418419.881.00418387.741.081.04
    Brian ElliottPHI/CGY296290.461.02302280.121.081.05
    Jonathan BernierDET/COL/ANA276264.191.04276258.031.071.06
    Semyon VarlamovCOL336330.371.02340309.791.101.06
    Carey PriceMTL445437.641.02447404.151.111.06
    Kari LehtonenDAL234224.391.04234215.41.091.06
    Keith KinkaidN.J296291.311.02300263.151.141.07
    Cory SchneiderN.J347339.841.02347305.561.141.08
    Petr MrazekCAR/DET/PHI344329.621.04346299.081.161.10
    Craig AndersonOTT433411.381.05435372.481.171.11
    Devan DubnykMIN449410.681.09449396.351.131.11
    Jake AllenSTL411378.821.08411358.381.151.12
    Cam WardCHI/CAR389362.691.07389334.731.161.12

    In my opinion, this is by far the best way to statistically evaluate goaltenders since it accounts for shot quality. Other metrics like GAA, SV%, Wins, etc. don't account for shot quality. Obviously these expected goal metrics aren't perfect but they do have a strong correlation between actual goals and the methodology behind them is solid.

    In addition, I think that "goals allowed per expected goal" is the best way to describe and express this metric. Metrics like delta save percentage or GSAA are not quite as simple and do not explain themselves so clearly. "Goals allowed per expected goal" is a lot more simple IMO. For every 100 expected goals that your team allows, John Gibson allows only 85 goals, and Cam Ward allows 112. That is very easy to explain.

    Obviously, if I were ranking goaltenders, my final list would be a little different from the list we have here. For example, factors like consistent performance under a heavier workload would lead me to rank Frederik Andersen over Philipp Grubauer, factors like playoff performance would lead me to rank Braden Holtby over Frederik Andersen, and factors like recency bias would lead me to rank Andrei Vasilevskiy over Martin Jones.

    However, I still think the list is pretty damn good, and does a better job of ranking these goaltenders than most skater ranking metrics I've seen. Thoughts on the list?

    Share This Article

    innocent bystander likes this.
  1. This site uses cookies to help personalise content, tailor your experience and to keep you logged in if you register.
    By continuing to use this site, you are consenting to our use of cookies.
    Dismiss Notice
monitoring_string = "358c248ada348a047a4b9bb27a146148"