Introducing the ForeStat and OIC: How I Created a New Stat

This past week, I tried to create a new statistic that could evaluate how much a player contributes to their team’s successes and failures on the ice on the offensive side of the game. I believe that I succeeded in achieving my goal, and I also believe this has the power to be used throughout the hockey statistics world.

Let’s start off with a simple question. Do you know what Corsi is? How about Fenwick? Yes, well then you can skip the glossary. No? Well, I’d suggest you read it. This is going to get heavy.


Corsi is the comparison of a team’s amount of shots on goal, shots missed, and shots blocked while a player is on the ice compared to the other team. For example, if Sidney Crosby was on the ice while his team got off 15 total shots attempts compared to the Flyers’ 10, he would end the game with a +5 Corsi, or 60%.

Fenwick is the same thing, expect blocked shots are taken out of the equation.

Great, now you are caught up.

The Issue with Corsi and Fenwick

While these two advanced hockey statistics are very helpful in determining a player’s effectiveness while out on the ice, it has some major issues. The most glaring one would be the fact that you could play terrible while your linemates play amazing and you would still get a great Corsi or Fenwick percentage. If you had zero shots on goal, shots missed, and shots blocked in total, while your teammates had ten total, you’d reap their rewards.

This shows how the team plays while you are on the ice but not how a specific player plays. But how do you fix it?

The Forechecking Stat

I hadn’t originally considered making a forechecking stat. But once I realized how complicated this process was going to be, I figured that I would need to first start with a smaller stat and then work my way up to the more complicated formula.

“Is there a stat for calculating how effective a player is at forechecking?” That’s what I’d asked myself. Well, it turns out the answer was no. I decided to change that…

Forechecking is one of the most important things in hockey. Forechecking occurs when a puck is in the possession of the opposing team in their defensive zone, and while attempting to form a breakout, the offensive player closes in to try and take possession of the puck. Even though it is important, no one tracks player’s forechecks. 

Yes, it can be difficult to track, but we need to try. This stat is strictly personal; if you have a part in the forecheck, you’ll get scored for how successful you are.

Thus, ForeStat % is born. This is the number of successful forechecks divided by the number of total forechecks. It gives you a success percentage for forechecking.


The Big Formula: On-Ice Contribution (OIC) Rating

Here’s the big formula I mentioned earlier. My goal was to calculate how much a player contributed to his team. Using the Forestat along with other advanced stats, we will determine exactly that.

Math is welcome in this section. Let’s give each stat being used in this formula a variable.

A = Corsi % (Adjusted for score and venue. Players play differently when down or up in a game, and this adjustments averages out the changes in game situation.)

B = Fenwick % (Adjusted for score and venue. Players play differently when down or up in a game, and this adjustments averages out the changes in game situation.)

C = Opponent Corsi % (Entire opposing team’s Corsi)

D = Opponent Fenwick % (Entire opposing team’s Fenwick)

E = ForeStat % (Successful forechecks / total forechecks)

F = 5v5 Time on Ice for Player (How much total time the player plays 5v5)

G = Total Possible 5v5 Time on Ice for Player (Due to penalties, the maximum number of time a player can play 5v5 goes down. If a player were to play the entire amount of possible 5v5 time, this would be the number.)

Goal of the stat: The goal of the On-Ice Contribution (OIC) rating is to find how much a specific player contributes to the success/failures of his team on a specific night or over a season. 

The formula for this is actually very complex. I will go into detail about what each part means. Without further ado, here it is:


Take a deep breath. It makes sense. It’s OK. I’ll help you through this. But, before I do, know that this will give you a percentage, and every part of the equation will give you an answer between 0 and 1 before being multiplied by the coefficients in front.

Part 1



Weight: 40% of the final value.

Why: This takes the average of the Corsi and Fenwick of the player along with the Corsi and Fenwick of the opposing team over the entire game.

Imagine: Say you play for the LA Kings against the Dallas Stars. Your Corsi and Fenwick % is amazing; around 90% for each. However, the Stars played a terrible game and their Corsi and Fenwick % both equal around 20%. Well, the final value of this part will go down because you played great against a team that played terrible. If the Stars also had a Corsi and Fenwick % of around  90%, the final value of this part will be very high due to the fact that you played amazing against a team that played very well.

Part 2


Weight: 40% of the final value.

Why: This takes your ForeStat % to see how much you personally contributed to your team’s attack.

Imagine: You have 8 total forechecks during a game. You are successful 4 times. You have a ForeStat % of 50%.

Part 3


NOTE: I originally left the Time on Ice part out of the equation.

Weight: 20% of the final value.

Why: This part attempts to award players who play more – and subsequently contribute more – than players who play less. This is a a big value, and it needs explaining.

What the 5G/18 Part Does: This gives you the average expected ice time a player can have over the course of a game. Remember, G = the max amount of 5v5 Time on Ice available to each player. Because 5 players are out on the ice at all times during the value G, you can multiply G by 5 to get the total 5v5 ice time played by all the players. Then, you divide it by the number of players who are on the game roster, 18, to get the amount of time that would be played by each player if all of them played an equal amount of time.

What the |F – 5G/18| Part Does: This gives you the difference between the average expected ice time each player should get and the actual amount of ice time that the player gets. The absolute value makes this part positive.

Basically, if your 5v5 Time on Ice is equal or greater than the average expected 5v5 Time on Ice, you get a perfect score of 1. If it is lower, than the value becomes less than 1. Here is a graph that shows what this part of the equation would be if G (Total Possible 5v5 Time On Ice) = 60:

NOTE: Graph is before the equation is multiplied by .2.


The X-value is the value you will get between 0 and 1, and the Y-value is the amount of ice time if there were 60 total minutes of 5v5 Time on Ice.

Basically, if you play less time than the expected average playing time, your value will be less than 1 and will rapidly go down with the less amount of playing time.

This part gives a meaning to playing more. If you had good Corsi, Fenwick, and ForeStat values but only had 5 minutes of 5v5 Time on Ice, you won’t get as good of an OIC % as a player who had similar values with 15 minutes of ice time.

Real World Examples

I wanted to test out how this would look in actual games. I decided to look at Claude Giroux and Nick Cousin’s stats from the Philadelphia Flyers’ game vs the Ottawa Senators on December 1, 2016.

Claude Giroux


Nick Cousins



Claude Giroux had an OIC % of 60.34%, while Nick Cousins had an OIC of 55.33%.

But, Nick Cousins had a much better Corsi, Fenwick, and ForeStat. What gives?

Nick Cousins played around 6 minutes of 5v5 Time on Ice compared to Claude Giroux’s 15. There was a much bigger sample to choose from on Claude Giroux’s side than Nick Cousins’.

Ottawa also had a poor game, which played into both Cousins’ and Giroux’s final On-Ice Contribution rating.

Both players contributed a lot to their team’s success, but Giroux did better with more time to play.

Final Thoughts

  • Forechecking stats, such as ForeStat %, need to start being tracked to better evaluate a player’s effectiveness on the ice.
  • The OIC helps teams decide who they want to play in certain roles.
  • Corsi and Fenwick are poor ways to evaluate a player based on the stat alone.


I’d love to hear some feedback about this stat. Personally, I believe that if forechecks begin to be calculated, the On-Ice Contribution % can be the best statistic possible to evaluate how much a player contributes to a team’s successes or failures.

I’ll take your check as you exit.


Dylan is the Global Puck columnist for Good Night, Good Hockey. You can follow Dylan on Twitter @10phillyphan.

Sources for Stats

Corsica Hockey

Natural Stat Trick