Stats Splurge: Calculating Adjusted Save Percentage totals in the Canadian Premier League

With the release of the CPL Centre Circle DATA! this week, we decided to dive in and attempt to calculate adjusted save percentage numbers across the league, allowing us to get a better idea of who stood out in goal this season. 

Goalkeepers were the flavour of the day in the CPL Finals.

The brand-new Canadian Premier League recently wrapped up proceedings with their first-ever championship match, contested between Forge and Cavalry FC. After going toe-to-toe all year long, it was a fitting finale, and it finished with Forge as the inaugural champions. The two best offences and defences clashed over a two-legged final, with goalkeeping playing a big role, as only 2 goals total were scored over the 2 games. 

We’ve taken a fascination with the goalkeeping of the two finalists as of late (fitting, considering our name!), having talked to Cavalry’s Marco Carducci, Forge’s Triston Henry and Forge goalkeeper coach Johan Albert over the course of the finals. With Carducci and Henry being arguably the best two goalkeepers in the CPL, despite Henry not making the nomination list for the league’s award for the position, it was a good opportunity to get some insight into what made the two shot-stoppers tick. 

But with the CPL being a new league, there wasn’t yet a statistical database to help people confirm some of the theories that their eyes had seen, with saves really being the only goalkeeping stat readily available. 

This week, that changed, as the CPL announced that they were sharing all their OPTA data from 2019, giving people an in-depth look at many stats that usually cost a decent penny to acquire in other leagues. From stats such as Expected Goals numbers, to wacky numbers such as shots saved with a goalkeeper’s chest, it has allowed for a deeper look at what went down statistically in this first CPL season. 

It has also opened up plenty of interesting debate, with some of the best discourse surrounding the ranking of the goalkeepers in the CPL, as many people hold differing opinions on who they believe are the best shot-stoppers. While goalkeeping stats don’t often tell the whole story, as they can ignore several aspects that can make a goalkeeper so great, it can allow people to paint a clearer picture of how certain players fared in action. 

With the release of Expected goals against data for the goalkeepers, it also allowed us to calculate Adjusted Save Percentage, much like we were recently able to do with MLS goalkeepers. For those unfamiliar with the concept of adjusted save percentage, it takes the GA-xGA stat, and subtracts that number from the goalkeepers save percentage, giving a new, adjusted number that is supposed to better reflect the quality of chances against goalkeepers.

GA-xGA is a stat that takes the number of goals a keeper concedes (GA) and subtracts the number of goals they were expected to concede based on number and quality of shots (xGA), giving either a positive or negative number. A positive number indicates that they did poorly relative to the shot quality they faced, while a negative numbers means that they kept out more goals than they were expected to. 

While the new adjusted number is by no means a perfect stat, it better reflects the quality of shots received, which means we can see how they performed relative to their team. A goalkeeper with a high adjusted save % either means that they were good on a bad team, or good on a good team, while a lower number reflects the opposite. 

So without further ado, here is the adjusted save% chart for the CPL:

*GKs with at least 20 saves are included

GKsGoals AgainstSavesSave %XGAGA-xGAAdjusted Save %
Nathan Ingham (York 9)34880.7228.575.430.67
Marco Carducci (Cavalry FC) 17660.8019.1-2.10.82
Connor James (FC Edmonton)24670.7424.78-0.780.75
Triston Henry (Forge FC)17560.7721.14-4.140.81
Mark Village (Pacific FC)22470.6820.981.020.67
Tyson Farago (Valour FC)30470.6127.922.080.59
Christian Oxner (Halifax Wanderers) 16430.7317.84-1.840.75
Nolan Wirth (Pacific FC)24590.7124.71-0.710.72
Mathias Janssens (Valour FC)22430.6623.03-1.030.67
Jan-Michael Williams (Halifax Wanderers)19400.6810.918.090.60
Quillan Roberts (Forge FC)9270.759.58-0.580.76
Dylon Powley (FC Edmonton)9200.698.220.780.68
Nikolas Giantsopolous (Cavalry FC)4210.845.97-1.970.86

Note: Numbers include CPL Finals

Top 5 Adj Save %

  1. Nikolas Giantsopolous (Cavalry FC) 0.86
  2. Marco Carducci (Cavalry FC) 0.82
  3. Triston Henry (Forge FC) 0.81
  4. Quillan Roberts (Forge FC) 0.76
  5. TIED Connor James  (FC Edmonton) 0.75
  6. TIED Christian Oxner (Halifax Wanderers) 0.75

Worst 5 Adj Save %

  1. Tyson Farago (Valour) 0.59
  2. Jan Michael Williams (Halifax Wanderers) 0.60
  3. Nathan Ingham (York 9) 0.67
  4. Mark Village (Pacific FC) 0.67
  5. Mathias Janssens (Valour) 0.67


As seen with the chart and the top/worst 5 lists, there’s a lot to unpack. Here are some takeaways. 

Nathan Ingham remains a conundrum

Ingham, who played all but 2 games this year for York 9, was a bit of a surprise inclusion in the top 3 shortlist for goalkeeper of the year. Despite making the most saves in the league with 88, he also conceded a league-high 34 goals, making it a curious decision to have him in over Forge’s Triston Henry, who was solid all year long in Hamilton. While Ingham’s saves and goals against stats certainly weren’t aided by his heavy minutes, his inclusion in the shortlist sparked plenty of debate, especially when comparing exclusions such as Henry, or even Halifax’s Christian Oxner. 

Those theories are backed up by the adjusted save percentage, which has Ingham’s numbers among the worst 5 in the league, with his GA-xGA of 5.43 pushing his save percentage down. He did have the highest xGA in the league with 28, but much like the other stats, that mostly came down to his high number of minutes. York didn’t actually do that bad defensively, falling middle of the pack, conceding 37 goals, but had Ingham performed closer to what the xGA numbers suggested, that number should have been around an improved 30. 

Considering that York was actually the closest team to run-away leaders Forge and Cavalry in the fall and cumulative tables, had they received average or above-average numbers in goal, they could have made things a lot more interesting down the stretch. While that is not to say that they would have made the playoffs, they certainly could have been a lot closer, with goalkeeping and defending playing a role in their demise.  

Ultimately, this isn’t to say that Ingham is a bad goalkeeper, as he is still one of the best in the CPL, but his inclusion in the award shortlist remains a surprise. York should still be well-served by keeping him next year, but they need two improvements, the first of which coming defensively, limiting the number of shots Ingham absorbs, and the second coming with a better backup goalkeeper, someone that can limit him from having another onerous workload in 2020. 

Forge and Cavalry class of the league, again

Forge’s Triston Henry shortly after being crowned a CPL Champion (Keveren Guillou)

It seems that every stat you punch on the two finalists leaves them coming out on top, and this one is no different, with all 4 of the Forge and Cavalry goalkeepers finishing in the top 5 of adjusted save % numbers. While they were aided by having strong defensive units in front of them, they still all outperformed their xGA numbers, playing a big part in both teams’ ability to lock things down in games. 

Cavalry’s Marco Carducci understandably gets a lot of the ink in terms of goalkeeping in the league, but don’t sleep on the Forge tandem. Despite Quillan Roberts and Triston Henry having a combined xGA of around 30, 2 less than Ingham (who did play all but 2 York games), Forge had the second-best defensive record in the league. Thanks to Roberts and Henry shaving nearly 5 goals off of their xGA numbers, it gave them the comfort to push forward more, allowing them to get the goals that they needed in games. 

So in a sense, it wasn’t overly surprising to see Henry, who had the best GA-xGA numbers, to shine in the final with back-to-back clean sheets, as he had performed strongly statistically all year long. Along with Roberts, Forge is set in goal for the future, so it’s not hard to imagine them doing big things in 2020. Over in Calgary, Cavalry looks like they’re keeping Carducci and Giantsopolous in their goal as well, allowing them to keep an equally as deadly tandem, which is why games between these two teams should remain fun next season. 

Edmonton, Halifax and Pacific set for future

Elsewhere, the performance of Christian Oxner for Halifax, Connor James for Edmonton and Nolan Wirth for Pacific should give optimism for each of those respective fanbases. Edmonton and Halifax’s struggles this season were mostly on the offensive end, while Pacific just never seemed to find consistency anywhere, so with calculated improvements, these 3 teams could easily get back into contention next year (along with York!). 

With all 3 keepers returning next year, they should once again bring quality goalkeeping to their respective teams. For Edmonton, James was a revelation as a draft pick, deservedly earning recognition on the goalkeeper of the year shortlist, and it reflects with his adjusted save % numbers (0.75). 

Over at Halifax, Oxner was a similar standout draft pick, putting up the exact same adjusted save % numbers as James, while helping marshall a solid Halifax defensive line. On the Island, Wirth lagged a bit behind his colleagues in adjusted save % with 0.72, but his playing time was split with Mark Village, before Wirth started to become the main man towards the end of the year. Expect him to help Pacific tidy up their backline with a heavier workload looming next season. 

If those 3 teams, along with the 4th in York, tidy things up next year, things should be a lot more exciting up in the table next year. 

Valour remains in the hunt

That leaves just one team, Valour, who probably has the most work to do of any before heading into next season. After what can be best described as a tumultuous campaign, they have to shore up a lot of their roster, starting from back-to-front. Mathias Janssens was a good piece for them, despite his 0.67 adjusted save%, as he actually outperformed his xGA. 

So if they can keep him, sort out their uneasy defensive situation, while improving their offence, there’s no reason that they can join the other teams in the hunt. After a rough debut campaign, things can only go up from here, so don’t be surprised to see improvement in Winnipeg next season. 

Looking Forward:

Marco Carducci has already earned a call to the Canadian National Team, boosting the CPL’s profile massively (Keveren Guillou)

While these stats don’t tell the whole story, they can definitely help to be a guide to give a better idea of what went down this year. Goalkeepers remain as volatile of a position as any, so things may flip on their head next season, completely throwing some of these numbers and projections out the window. With stats being hard enough to track for the position, it’s hard to predict exactly what can happen, even if we can get a good idea by analyzing them. 

Either way, this exercise did reveal a couple of things. Despite only having 7 teams in the league, the goalkeeping talent was relatively solid across the board, with the main focus for teams now being improving defensive structure and scoring more goals. Wirth, James, Carducci, Janssens, Henry, Ingham and Oxner give each team a reliable goalkeeper, while several others have more than capable backups to compliment them. 

With all of those names, bar Janssens, being Canadians, it reflects well on the future of the position in the country. Ensuring that the CPL provides minutes to goalkeepers will be paramount for the future, and we’re starting to see that now already. It can be easy to stall on the route towards being a regular goalkeeper in the pro game, so the more opportunities there are, the better, as shown by this season. 

As Canada looks to improve its depth at positions like this across the board, providing more opportunities like this will go a long way for goalkeepers in this country. 

2 thoughts on “Stats Splurge: Calculating Adjusted Save Percentage totals in the Canadian Premier League

  1. Great article. Something that was never really talked about is that M. Janssens also played at least 3 games (including that 0-8 home defeat) with an injury that looked like a thigh (hamstring?) as could be seen every time he had to go sprint the ball he had trouble running after that. Most of the goals he got against him was in that time. I’m not sure why this was never really mentioned by anyone…, or I must have missed that.

    1. Thanks for reading! That’s a good pick up actually, he had 11 goals against in the 2 games before he was officially announced as injured, and he did seem quite off in the Cavalry massacre (who didn’t, to be fair)
      Considering that he was the GK who took that drubbing, and his stats still fared impressively, suggests that if Valour is still wanting to eat an international spot on him, he’s a good piece to do that with

Join the Conversation!