A Commissioner’s Manifesto (Part 5 – In Search of the Perfect Points System)

by Johnny Fantasy

Setting up a fantasy hockey league is no easy task if you want to do things right.  While it’s impossible for fantasy to exactly track reality, I always wanted to find a league setup that did the fairest job of approximating reality and that would provide the best experience of managing a hockey team of NHL players.  To that end, there are the some basic principles I’ve settled on over the years.  In part 4, we tried to find the best balance of categories for a stat-categories league.  Here in part 5, we’ll try to figure out the best way to weight the stat categories for a Yahoo fantasy-points league.

Weighting Point Values

One of the problems with the (once) traditional Yahoo fantasy hockey format of stat-categories was that there was no way to weight one category more than another.  Shouldn’t goals be worth more than assists?  Should both be worth more than shots on goal?  Luckily, we now have the ability to choose points leagues and weight each category appropriately.  But how do we go about doing that?  We could just eyeball it – a goal seems like it should be worth a little less than double an assist; a shot should be worth maybe around a tenth of the value of a goal.  We could probably get a decent setup doing that (especially while actually fiddling with a league setup and seeing how the players would be ranked under different schemes).   After doing that for several years, I began to wonder if there were a more logical, mathematical way I could determine the fantasy point values for each category.

The basic premise that the different stats we use should be related, either directly (such as shots and goals – statistically, a goal usually arises after a certain number of shots), or by correlation (such as goals and assists – each goal will typically have a certain number of assists associated with it).  From there, we can choose one category and calculate how all of the other categories are related to it.  We can assign a point value to that initial category and then weight the other categories relative to that.

In theory, it shouldn’t matter which category you start with, but for the sake of simplicity, let’s start with goals and let’s assign an (arbitrary) value of 5 fantasy points.  To get a value for assists, let’s consider how many assists are awarded per goal, on average.[1]  This number has changed over the history of the NHL, but it’s been levelling out around 1.7 assists.  So to get our fantasy value of assists, we just divide the value for goals by the average number of assists per goal: 5/1.7 = 2.94 fantasy points per assist.[2]

Personally, I like to have Points as a category as well (since it’s easier to read stats if they are laid out in the easy G-A-P line), so I’ll give Points a value of 1 fantasy point, and subtract one from each of Goals (4) and Assists (1.94).[3]

What about +/-?  Well, as I’ve mentioned before, this can be a controversial stat, which is basically only awarded correctly 2/3 of the time.  But since we can weight the value, we can actually correct for this (somewhat) by only giving it 2/3 the value we would otherwise.  What is that value?  Under a typical 5-on-5 even-strength scenario, if a goal is scored, 5 players on the scoring team will get a plus and 5 players on the other team will get a minus.  If a goal is worth 5, then 5/5 = 1 fantasy point for a plus, and then of course -1 fantasy point for a minus (let’s call this the “full value” of a +/-, for the sake of our discussion).  To weight for the inaccuracy of +/-, 1 * 2/3 = 0.66 fantasy points.

What other scoring categories should get points?  As we discussed in part 3, there’s no reason to award extra fantasy points for scoring on the power play or game-winning goals.  Shorthanded points are certainly something special, although we should be careful not to overvalue a stat that is occurs so infrequently.  Additionally, a goal is a goal, why should it matter the circumstances under which it was scored?  That is probably the right position, and as a result perhaps shorthanded points should not be awarded any additional fantasy points.  But, given that we are awarding points for +/-, we can use shorthanded scoring as an opportunity to make a correction for our adjusted value for +/-.   If a player were to score a shorthanded goal using the values we have established so far, they would be awarded 5 + 0.66 = 5.66 fantasy points.[4]  But, if they scored that goal (or assist), then we know that the player definitely factored into the goal that was scored[5] and we shouldn’t need to discount the +/- value since the +/- stat is definitely accurate in this case (i.e., we should award them the ‘full’ value for their +/- : 1 fantasy point instead of 0.66).  If we give shorthanded points a fantasy value of 0.34, then we would effectively be giving the shorthanded goal scorer their ‘full’ +/- value: 5 + 0.66 +0.34 = 6 fantasy points, the same as if we were to award 1 full point for +/-.  This seems like a nice little something extra for a player that makes a great play by scoring shorthanded.  But wait!  Our ‘full’ value for +/- was based on the assumption that we were playing 5-on-5.  When shorthanded points are scored, we know that is not the case.  Let’s instead assume it’s 5-on-4 (since 5-on-3 shorthanded goals are much rarer[6]).  In that case,  there are 4 players on the ice, and the value of the goal should be divided among them.  Our ‘full’ value of +/- when shorthanded should be 5/4 = 1.25.  In that case, the ‘bump’ to even out a +/- score through a shorthanded point should be 1.25 – 0.66[7] = 0.59 fantasy points.

What about peripherals?  In a points league, we can get into peripherals without worrying about overweighting them just.  Having more shots isn’t worth as much as having more goals, but in a points system, we can set a value for how many shots should be equal to a goal.  How many shots does it generally take before one goes in as a goal?  Well, the shooting percentage for the NHL has been hovering around 8.9% for the past few years.  Based on that, a shot on goal should be worth 5 *0.089 = 0.45 fantasy points.

If we value shots, then we can value blocks as well.  Is a block worth the same as a shot on goal?  Well, not really.  A shot on goal only counts if the puck actually makes it to the net, i.e. those that have not missed or successfully been blocked.  A blocked shot is really more the equivalent of a shot attempt.[8]  Last year, the ratio of shots on goal to shot attempts was about 53.13%.  Suppose we had 100 of these shot attempts.  Only about 53 of them would result in actual shots on goal.  If we want to value the attempts rather than the shots on goal themselves, then we need to spread the fantasy points that those 53 shots on goal would be worth over the 100 attempts.  Thus, we can take the value of a shot on goal (0.45) multiplied by the number of shots that we are talking about (53) to get the total fantasy value of those shots on goal (23.85).  We can then divide this by our 100 shot attempts to see how much each attempt is worth (0.24).  Thus an attempt is worth 0.24, then blocking such an attempt should be worth the same.  More simply, we get a value for blocks by taking the point value for shots and multiplying it by the percentage of shots on goal to total shots on goal plus blocks: 0.45 * 0.5313 = 0.24 fantasy points.

Faceoffs don’t have as clear of a correlation to goals or shots.  Lucky, some statistics students have done the heavy lifting for us and concluded that the average faceoff differential required to yield a goal differential is 76.5, meaning a player must win about 76.5 more faceoff than they lose in order to cause (or prevent) a goal.   Since our value for a goal is 5, our value for a faceoff win is 5/76.5 = 0.065 ≈ 0.07 fantasy points.  The value of a faceoff loss is of course then -0.07, and as a result if a player wins about 76 more faceoff than he loses, he will have earned about the same as a goal.[9]  Since this is so small, it’s a fairly insignificant amount, but for a top faceoff man such as Patrice Bergeron, you’d get about 28 more fantasy points per year or about 0.34 points per game.  This will probably not affect anything, but it is theoretically possible that it could change the outcome for a close matchup.

Before we go into goalie stats, the remaining (fantasy appropriate) skater category that could have a place in fantasy is hits.  While hitting is certainly a bit part of the game, there doesn’t seem to be any correlation between hitting and scoring, shooting or winning.  Hitting a lot can be a good strategy for some teams (depending on their system of play), but it can be unsuccessful for a lot of others.[10]  As a result, there doesn’t seem to be any mathematical justification for rewarding any points for hits.

Since this is a fantasy-points league however, we need not shy away from PIMs, so long as we’re not afraid to be a little bold in terms of flipping the standard of rewarding penalties.  Awarding fantasy points (or categories) for penalty minutes doesn’t make a lot of sense, since penalties are detrimental to a team – they result in power plays and ultimately goals against.  As such, penalty minutes should actually be awarded negative points.  Over the past six seasons, power plays have converted into goals at a rate of about 18%.  That means every power play against should be worth about -5 * 0.18 = -0.9 fantasy points.  Because Yahoo tracks penalty minutes rather actual penalties (i.e. power plays), we need to do some further calculations.  Additionally, a significant portion of penalty minutes awarded are done so as a result of fighting majors and misconducts.  These aren’t really detrimental to the player’s team (since fighting majors cancel each other out, and misconducts themselves don’t result in power plays) and so we can average these out.  Doing so we find that the average number of penalty minutes awarded per power play is about 2.01 minutes (since non-fighting major penalties are fairly rare).  As a result, -0.9 / 2.01 = -0.4478 fantasy points per penalty minute.  Additionally, the ratio of actual bad penalty minutes (minors and non-fighting majors) to all penalty minutes is about 72%.  So, since we are stuck (in Yahoo) with either valuing all penalty minutes a player receives or none, the best we can do is award 72% of the value, thus -0.4478 * 0.72 = 0.3224 ≈ -0.32 fantasy points per penalty minute.

Moving on to goalies, there are two main categories that are fairly easy to value.   If a goal is worth 5, then a goal against should be worth -5.  Similarly, if a shot on goal is worth 0.45, then a save should be worth 0.45.  This works to essentially replicate save percentage.  The problem with using only these two categories for goalies is that the range of fantasy point outcomes can easily sway into the negative and not rise very high into the positive.  A save percentage of even 0.925 can result in only a couple of fantasy points, making goalies generally not worth playing or owning.  This obviously can’t be the right result, so we need to find another category to bolster goaltenders’ worth.  With wins not being a good measure of an individual goaltender’s worth, and shutouts being too rare to solve our problem, we are left with games started.  With a large enough bump for a game start, we can keep goaltenders from resulting in negative points most of the time, and give them the potential to put up a lot of fantasy points if they have a good outing.  When it comes to putting a value on a start, we have to ask ourselves: what does a team need from their goalie, on average, in order to win a game?  What should be the break-even point (at which a goalie should not get any points)?  Well, the average number of goals allowed by a winning team is about 1.73.  So, we could say that if a goalie lets in only 1.73 goals in a given game, he has done his part to contribute to an average win.  On that basis, we can assign a value to a game started of 5 * 1.73 = 8.66 fantasy points.  In this scheme, if a goalie were to (theoretically) let in only 1.73 goals in a game and made no other saves, he would have earned 0 fantasy points.   The goalie essentially did nothing to elevate his team above the average goal prevention needed for a win, and therefore earned no fantasy points.   Having this bump for a game start transforms a goaltender from an extremely risky proposition into a generally solid start (only resulting in large negative numbers if pulled early in a game after letting in 3 or more goals).

After going through all of this, does this setup work?  Let’s look at a few examples to see if everything hangs together.


-2, 2 SOG, 6PIM = -2.38 fantasy points

5 SOG, 2 BL, 10 FW, FL 6 = 2.96 fantasy points

1G, +1, 3 SOG, 1BL  =  7.24 fantasy points

1G, 2A, +3, 2 SOG = 13.77 fantasy points

3G, +2, 5 SOG, 2 PIM = 17.91 fantasy points


1GS, 4 GA, 20 SV = -2.44 fantasy points

1GS, 3 GA, 27 SV = 5.67 fantasy points

1GS, 2 GA, 25 SV = 9.78 fantasy points

1GS, 0 GA, 25 SV = 19.78 fantasy points

This seems to provide a good spread of values.  Players that have bad games will have slightly negative points, but something that can be offset by a decent night by a skater (even without scoring any goals or assists).  Players with good stats earn a good amount (5-10) of fantasy points and players that have spectacular nights earn appropriately huge amounts of points (10+).

If we look at our player rankings for such a league (based on 2014-15 stats), we’ve got the usual suspects on top.  Alex Ovechkin is far ahead from the rest of the pack, but Ovechkin is off the boards in leagues because he is a ridiculous player.  How many other players can contend for (and win) top ranking in multiple categories each year like he does with Goals, Shots, Hits (and even Points).  He’s always a fantasy game-breaker.  One thing that is a bit more concerning is that goaltenders are some of the highest point earners (due to the weight we give to starts), making up 15 of the top 16 players.  But, goalies are risky because much more than skaters they carry the risk of big negative points if they get pulled midway through a game.  The elite goalies earn a lot of points from getting a lot of starts and from excellent play (i.e. save percentage).  Admittedly, this scheme risks having the league be too goalie-focused.  However, a way to mitigate this effect would be to reduce the number of active goalie roster spots to one from the usual two.  This leaves you with essentially one ‘starter’ with any other goalies on your roster being backups who can slot in when the starter isn’t playing, making it good to have two solid goaltending options, but probably not worth it to hoard 3 or 4 goalies (and thus reduce those available for the rest of the league).  The goalies also have fewer opportunities to actually earn points (capped at 7 per week, if you can even fill every daily spot), so goaltending doesn’t become a game-breaker.  You could even argue that this is a closer experience to real hockey.  Teams will often rely on one starter and have another goalie start only a minority of the games.

This seems like a pretty good system (and in fact it has been working out so far this season in one league I run).  Of course it’s not perfect, but fantasy hockey is itself imperfect and is always gaining new features to improve.  Unfortunately, we don’t have a basis for valuing the physical aspect of the game (i.e. hitting), and so that is something missing.  That can always be added in for the fun of it, but I submit that default league settings should be closer to the scheme we’ve discussed here than what Yahoo and other sites currently use.  Leaving fantasy tradition and inertia aside, does anyone have a reason why not?

[1] Obviously, any one goal can only have 2, 1 or zero assists associated with it, but the average will tell us how often assists are awarded in general,

[2] In all cases in this discussion we will be rounding to 2 decimal places.

[3] So whenever a goal is scored, the team will be awarded 4 (for the goal) + 1 (for the point) = 5 fantasy points, and when an assist is scored, the team will be awarded 1.94 (for the assist) + 1 (for the point) = 2.94 fantasy points, thus getting us to our chosen values.

[4] Assists work the same way, only for 2.94 points instead of 5.

[5] The inaccuracy of +/- being that the stat is often awarded to players that have nothing to do with whether the goal was scored.

[6] Apparently, Mike Richards is the all-time leading career  5-on-3 shorthanded scoring leader with 3.  Yes, that Mike Richards.

[7] What a player gets awarded via +/-, because they are still awarded the plus when they score shorthanded.

[8] Indeed, shot attempts = shots on goal + blocked shots + missed shots.

[9] At 0.07 per faceoff, this actually results in 5.32 fantasy points.  0.06 per faceoff results in 4.56 points, so to be more precise, you’d have to go with the 0.065 points.  I don’t think Yahoo allows 3 decimal places, so you’ll have to live with the approximation or multiply all of your point values by two.

[10] There is even a slight correlation between hitting a lot and allowing a lot of shots on goal.


5 thoughts on “A Commissioner’s Manifesto (Part 5 – In Search of the Perfect Points System)

  1. Hey Johnny Fantasy,

    I really enjoyed your blog on the search for a perfect points system for fantasy hockey. Your reasoning and explanation of each statistic and weighting of each point value is very impressive. Having said that, I realize that the date of the article is in 2015 and could potentially be outdated. I am looking to setup a Yahoo fantasy league for 2021 and was wondering if your assumptions and statistics still hold true? For example, is the NHL average shooting percentage still hovering around 8.9%? Is the average number of goals allowed by a winning team still about 1.73?

    Just wondering if you have updated your statistics and assumptions throughout the years.

    Thanks so much!



Leave a Reply

Fill in your details below or click an icon to log in:

WordPress.com Logo

You are commenting using your WordPress.com account. Log Out /  Change )

Facebook photo

You are commenting using your Facebook account. Log Out /  Change )

Connecting to %s