@B_Marsh92's Minnesota Wild Player Cards & PCS Model Explained
Hey there! I’m assuming if you’re here, you’re wanting to learn more about how to read and interpret my nightly Minnesota Wild Player Cards and PCS Model. Congrats — you’re in the right place. The following article will break down my cards box-by-box showing what each statistic is and why I chose to include it as well as a full breakdown on PCS, how it came to be, what goes into it, and how it’s all calculated.
BUT! Before you continue…if hockey analytics are foreign to you, I’d recommend taking 20 minutes or so to read through this introduction article that I put together that hits on all the key advanced stats used in hockey today: Hockey Analytics for Beginners. Without further ado, let’s get to it!
Box 1: Individual Contributions
Box 1 outlines stats and contributions that the player was responsible for all by himself with no help from his teammates. They’re counted in all situations from the game.
- Goals: Goals scored
- 1A: Primary Assists
- 2A: Secondary Assists
- iCF (Individual Corsi For): How many individual shot attempts the player accounted for
- iHDCF (Individual High Danger Chances For): How many individual high danger chances the player accounted for
- ixG( Individual Expected Goals): How many individual expected goals the player accounted for
Box 2: Gameflow Contributions
Box 2 shows a player’s non-advanced stats that affected the flow of the game.
- TOI: Time on ice — how much total time the player was on the ice (due to how Natural Stat Trick tracks this, it’s displayed as decimal. In this case, 16.87 would translate to 16:52).
- Shots: How many shots on goal the player had
- +/-: The differential of goals for and goals against for that player at even strength
- Hits: The amount of hits the player dished out in the game
- Blocks: The amount of blocked shots the player had in the game
- Pen Diff: Penalty Differential shows the difference between the number of MINOR penalties a player drew and the number he took.
Box 3: Special Teams
Box 3 looks at how the player was or wasn’t involved in special teams. For both the Power Play (PP) and Penalty Kill (PK), I used the time on ice as I feel it’s a key indicator of the following two stats for each metric, which I’ll explain more below.
- PP TOI: Power Play Time On Ice
- PP Points: Power Play Points — I figured the goal of the PP is to score goals, so showing points (both goals and assists) was the best way to do this
- PP xGF: Power Play Expected Goals — I felt this was the best way to show the quality of chances the PP generated with a player on the ice, even if they don’t score, a high PP xGF could show it wasn’t from lack of trying
- PK TOI: Penalty Time On Ice
- PK GA: How many goals were scored while the player was on the ice during the PK
- PK xGA: Penalty Kill Expected Goals Against — PK is new to PCS this year and there’s not a ton of ways to quantify outside of the penalty being killed or not, but showing how many expected goals against compared to actual GA and TOI should show how effective the PKer was
Box 4 & Box 5: 5v5 Shot Attempts (Corsi) & Expected Goals (xG)
Boxes 4 & 5 are relatively self-explanatory as they show the shot attempts for and against (CF & CA) and expected goals for against (xGF & xGA) respectively at 5v5. The percentage share of these stats is shown in the third column as well as where that player ranked relative to the other 11 eleven forwards (for defense it’s the other 5 defenseman).
Color Coding: For these stats, color codes are used to show visually how good or bad that player performed in those stats relative to a set of league-wide sample data from 2019–2022. This was done by taking the sample data and dividing the results into percentiles. In simpler terms, for example, a 95th percentile metric/performance, means just 5% of players regularly hit or averaged that mark in a game. It’s a 95th percentile performance.
The darker the blue the better the player performed and was nearer to the 95th percentile, the darker the red the worse the player performed and was nearer the 10th percentile. Lighter shades of each indicate relatively average performance. Generally speaking, performances above the 50th percentile are considered good. Think of taking every game played by a forward all year and taking every forward’s 5v5 CF, or CA, or xGF, or xGA in those games and plotting it from smallest to largest. The 50th percentile would be the dead middle of that data set (median) or 50% mark and then the percentiles move in either direction accordingly. It’s hard to explain, but just remember Blue=Good, Red=Bad. The charts below show the benchmarks for each percentile and the corresponding color.
Box 6: Player Contribution Score
Box 6 shows Player Contribution Score or PCS. This is an all-inclusive metric I developed that scores a players game based on their total contributions to the game. It’s built off of, and inspired by, Dom Luszczyszyn’s Game Score. While that score is cool, it didn’t account enough for little pieces of the game like hits, blocks, special teams, etc. so I added more components to it.
Unlike WAR or GSVA, PCS is NOT a projection model. What I mean by that is I don’t have any sort of way to project or predict what a player will do on a given night or in a given season like those models attempt to do. PCS just focuses on actual results from a game. PCS is NOT uniform across forwards, defenseman, and goalies because of the nuances and trackable data for each position. However, for forwards and defense, much of the stats are the same. the ones that are different will be noted and explained.
Below is outline of all the metrics that go into calculating PCS, their weights, and explanations of the weights. A weight is how much that particular stat factors in to the total score. A higher weight means it has more impact, a lower weight means it has less impact.
PCS Model
- Goal: 0.800
- Primary Assist: 0.750
- Secondary Assist: 0.600
These three metrics are the most heavily weighted metrics for forwards. Goals win games and goals come (usually) from good passing plays. These baselines are similar to what Dom uses in his game score model and how I established the baseline.
- Shots on Goal: 0.072
11 shots on goal in a game would be the equivalent to a goal, generally speaking the average player’s shooting percentage is around 9%, which is 1 out of every 11 shots…0.072*11=roughly 0.800.
- Forwards 5v5 On-Ice Goals For: 0.500
- Defense 5v5 On-Ice Goals For: 0.450
- Forwards 5v5 On-Ice Expected Goals For: 0.650
- Defense 5v5 On-Ice Expected Goals For: 1.768
This may look weird as generating an expected goal is worth more than an actual goal, but the reasoning is the players are already rewarded for goals by way of goals and assists, so I didn’t want to continue to compound that with more weight for a goal for. Additionally, I wanted to reward play-driving: the more xG a player accrues throughout a game, the higher likelihood that he was a part of sustained offensive pressure. Sometimes you get bad luck with posts, a hot goaltender, bad finishers, etc., so this helps to account for those things. Much of this also can be offset by a heavier weight for expected goals against and actual goals against. For defenseman, the explanation below will explain why their values carry a bit more weight.
- Forwards 5v5 On-Ice Goals Against: -0.463
- Defense 5v5 On-Ice Goals Against: -0.600
- Forwards 5v5 On-Ice Expected Goals Against: -1.350
- Defense 5v5 On-Ice Expected Goals Against: -2.380
Expected goals against has the heaviest negative weight as is it’s one of the few ways to measure defense. Because virtually every other metric adds points to PCS, xGA needs a heavier negative weight to offset all those positive additions. You’ll notice that xGA is weighted heavily for defenseman. Ultimately this is because there’s not a ton of metrics we have to track defense. Goals against is too volatile with goaltending and teammates, so xGA is all we have. Defenders can still earn high scores through high volumes of shots/scoring chances and spending more time in the offensive zone.
This remains probably the biggest flaw in my model in that a true defensive defenseman like a Jonas Brodin often won’t churn out as high as results as someone like Matt Dumba or Jared Spurgeon because he doesn’t produce as much offensively as they do. It’s an area I’m looking to improve, but it is the way it is for now.
- On-Ice Corsi For: 0.036
- On-Ice Corsi Against: -0.036
Shot attempts can lead to goals, but ones that hit the net are more important. So it takes twice as many attempts as shots to get real value, but sending the puck to the net is still valuable, so players are given a slight bump for that. This is on on-ice stat, which means a player is rewarded or punished for all attempts his team makes or has against them while he’s on the ice.
- Individual Expected Goals: 0.500
It’s hard to rack up ixG, a player needs quality shots, so he’s rewarded accordingly for his high volume and/or high quality of scoring chances, with 1/2 of an expected goal holding the same weight as a secondary assist. This is a metric that helps to reward players who are really driving the bus on offense.
- Individual Corsi For: 0.040
- Individual High Danger Chances: 0.200
- Hits: 0.050
- Blocked Shots: 0.080
- Faceoffs Won: 0.010
- Faceoffs Lost: -0.010
These are just simple stats that help to contribute to PCS. They reward players who are more engaged in shooting, playing physical, and helping on defense.
- Penalties Drawn: 0.200
- Penalties Taken: -0.200
Penalties can change the game. If a player draws four penalties in one game, that is equivalent to 1 goal as a team should be expected to be able to get a PPG every 4 power plays or so. On the flip side, taking a penalty can hurt the team in the same way and is punished accordingly.
There are some slight nuances to power play points, shot attempts, and goals. Because it’s generally easier to score on the power play than at 5v5, goals, shots, and assists carry slightly less weight than their 5v5 counterparts. A goal against carries harsher punishment as well.
- Power Play Goal: 0.700
- Power Play Primary Assist: 0.650
- Power Play Secondary Assist: 0.500
- Power Play Corsi For: 0.026
- Power Play Goals For: 0.500
- Power Play Expected Goals For: 0.500
- Power Play Goal Against: -0.650
Penalty Kill is a new addition to PCS this year and it was extremely difficult to find a way to make it work. I ultimately settled on a formula.
- Penalty Kill Time On Ice: Total TOI/6 (example: 2:18 of PK time would be worth 0.38 of PCS)
- PK Goal Against: -0.600
PCS value for PK = (PK TOI/6)*PK GA. This probably looks confusing and easier explained through an example. Say over the course of a few games a player racks up 8 minutes of penalty kill time. In those 8 minutes, he’s on the ice for 1 goal against. His total PCS in that time would be (8/6)+(-0.600) or 1.33–0.6, which comes out to 0.73 of total PCS value. Essentially, I assume a good penalty kill will kill about 80 to 85 percent of penalties, so players are rewarded for doing their job with PCS value just shy of the value of a goal. But because most players won’t kill close to 8 minutes per game, these values are typically more in the 0.00 to 0.40 for good killers. Penalty killers who give up lots of goals will be punished pretty severely.
That’s all there is for forwards and defenseman! At the end of each game, I consolidate data for all these statistics, run them through a series of formulas in Google Sheets and the resulting values are the PCS for that game. Below are the baseline charts for each percentile derived from a sample from 2019–2022 of both forwards and defenseman.
The average PCS score among forwards in the sample was around 0.93, with the vast majority of games falling in a range from 0.33 to 1.53. The median is where the 0.82 score comes from. All of this same logic applies to the defense as well.
Last but not least, is PCS for Goalies. I am quite proud of this as it’s a metric I developed completely from scratch with no inspiration or parts from other comprehensive metrics like WAR or GSVA. The breakdown is rather simple using just a handful of stats. Basically, my goal was to reward goalies for making difficult saves while also just stopping the pucks they’re supposed to. Additionally, the goalies are rewarded for winning games or getting into OT and the rare assist.
- Wins: 0.500
- OT/Shootout Loss: 0.250
- Goals Saved Above Expected: Exact Value
- High Danger Saves: 0.050
- Assists: 0.750
It’s simple and straightforward, but after running it through testing, it seems to work in finding Vezina winners, consensus analytical darling goalies, and pulling attention away from GAA and Sv% and putting more focus on GSAx and making difficult saves. Below is the chart for the baselines.
And that’s all there is to it! If you’re still confused or have questions about how this all works, please Tweet me or DM me on Twitter and I’ll do my best to answer your question (it’s likely others have the same one).
Be sure to follow me on Twitter @B_Marsh92 and to tune into Sound the Foghorn every Thursday on your favorite podcast app! Thanks for reading and cheers to what should be a great a Minnesota Wild season!