Showing posts with label ratings. Show all posts
Showing posts with label ratings. Show all posts

Monday, August 19, 2019

Elo-based shot evaluation

Important ADDENDUM
The interest in this research was fueled by the presentation of Micah Blake McCurdy at SEAHAC2019, where he described evaluation of quality of goaltenders as the evaluation of the quality of the shots saved.

The author of this article is not a mathematician or a statistician, so possibly the below is an utter absurd, or heresy, however it passed a few sanity checks the author was able to establish, and therefore he likes it.

1. Why Elo?


Shot (or shot attempt, but like Micah, I will use the term shot for all three location-tracked events: GOAL, SHOT and MISS) is an essential zero-sum outcome: either the goal is scored (1) or it is not (0). That always invokes the question - can we use the Elo ratings to evaluate the expectation of a shot being stopped based on the difficulty of the shot, the shooter and the goaltender.

Thus, given the probability of the shot $P_s$ and the outcome of the shot $X (0|1)$, we can adjust the ratings of the shooter and the goalie:

$R_s=R_s_0 + (X-P_s)$ (1)
$R_g=R_s_0 + (P_s-X)$ (2)

For example, if a shot had a probability 0.06 of going in, and still the goal was scored, the rating of the shooter will increase by 0.94 and the rating of the goalie will decrease by 0.94.
But you may ask, how in the formulas above do ratings affect the probability of the shot going in?

2. The factors of the shot.


If we take the shots, for which coordinates are defined, i.e. from the 2010/11 season through 2018/19, we can observe that the average scoring rate is about 0.06% (remember, misses are included).

However as also described by Micah, not all shots are created equal. Therefore we dissect them by the following factors:
  • Location on the rink
  • Season (due to equipment changes)
  • Stage (due to playing style changes)
  • Shooter (Here comes Rs)
  • Shooting team (Team attacking style)
  • Goalie (Here comes Rg)
  • Goalie team (Team defending style)
  • Side (generalized code, see below)
  • Shot type
  • On-Ice strength
  • Score differential
  • Rebound length
  • Is it a rush?
  • Is it a giveaway in Def. zone?
  • Is it a takeaway in Off. zone?
We will discuss the factors in depth below.

Location:

For the sake of simplicity we divide the rink into the following segments:
  • All of the rink outside the offensive zone
  • All of the rink below the goal line of the offensive zone
  • The remainder of the offensive zone split into squares of three to eight feet. Some tests run provided that the optimal size of such a quadrant is five feet.
We realize that this dissection is imperfect, but for this first run it's simple enough. Later we may try to do the same process with more complicated sector shapes.

Season:

The annual changes in the rules of the NHL dictate that a given season may provide different average shot quality than other ones.

Stage:

The famous statement of playoffs being won through defense implies the chances to score are smaller in the postseason.

Shooter:

We use current $R_s$ from (1) for the shooter.

Shooting team:

The team's style of play may rely more on the quantity of shots or the quality, thus affecting the overall chances of a given shot going in.

Goalie:

We use current $R_g$ from (2) for the goalie

Goalie team:

The defending style and capability are not dissimilar to the ones of the shooting team.

Side:

We try to estimate the effect of the shooting side of the skater and the catching side of the goalie together with relative location of the shot:
  • Shot location:
    • C - center, in front of the goal
    • R - to the right of the goal, attacker wise
    • L - to the left of the goal, attacker wise
  • Shooter's side - R|L
  • Goalie's side - R|L
Altogether we have 12 values (LLL, ..., CRL, ..., CRR)

Shot type:

We use all available shot types:
  • Slap
  • Snap
  • Wrist
  • Backhand
  • Wrap-around
  • Tip-in
  • Deflection
Naturally, all unassigned shots are discarded.

Strength:

On-ice strength, from 33 to 55. Penalty shots are discarded. A future development may introduce either special cases of goalies pulled, or incorporating those into different strengths, including the new 63-65 ones.

Therefore the shots that do not have on-ice count are discarded.

Score differential:

We treat the score score situations differently for all well-known reasons. We define the scores differences between -2 (shooting team 2 goals behind) to 2 separately, and the larger differences fall all under -3 and 3.

Rebound:

Rebound is defined when a shot attempt (including blocked shot) happened recently prior to this shot being analyzed. Not only we test for such an event in the 3 seconds before the shot, we also catalog them separately by the time passed between the previous attempt and the rebound (0, 1, 2, 3 seconds).

Rush:

We define rush similarly to others, as a shot attempt from offensive zone which is preceded by a non-faceoff event in non-offensive zone within five seconds.

Give:

We consider a defensive zone giveaway an event seriously tilting the chances of a score due to the goaltender being caught somewhat unaware. We define a qualifying giveaway event to have occurred in the defensive zone within 6 seconds of the shot.

Take:

We consider a offensive zone takeaway an event seriously tilting the chances of a score due to the goaltender being caught somewhat unaware. We define a qualifying takeaway event to have occurred in the offensive zone within 6 seconds of the shot.

Schedule aspects, such as back-to-back games (or prolonged breaks) or Home/Away are possible factors that were not considered. Maybe, next summer.

3. The application of the factors


Now that we managed to classify all the shots by the factors described above, we can try to appraise the effect of the factors.

We begin with setting some starting/default values. We obtain these values from two first seasons of our research period, i.e. from 2010/11 and 2011/12. Later we will incorporate the remainder of the data into it.

As we said earlier, let's assume an overall probability of the shot going in is about 0.0622 (from these two seasons). That corresponds to Elo rating difference of about 471 points in favor of the goaltender. Therefore we can say that an average shooter from an average location against an average goaltender is like a match between a 2029 and a 2500 rated players.

Now the factors from the previous chapter come in handy. For each of these factors (excluding the personal ratings for now) we compute the probability of success for a shot with each value of the factor. For example, for a binary factor like takeaway we get the following table:

Takeaway
0
0.0618
1
0.1014

which means that the Elo differential of the shot which is not preceded by takeaway is lower by 0.8 points, and but higher by 92.5(!) points if there was a takeaway.

For a non-binary factor, e.g. strength (no penalty shots):

StrengthpΔelo
330.0500-40.0
340.096883.5
350.105399.7
430.1099108.1
440.06456.9
450.065610.1
530.1683193.9
540.085259.1
550.0563-18.3

Note that these numbers predate the 3on3 overtime. Also, it's tougher to score in full strength than on average.

Then to get the overall shot rating we add these differences to the original value of $R_{base}$==2029 (divided by 1.5 due to the behavior of the Elo sigmoid at low probabilities), and also add the difference between $R_s$ and 2029 (also assigned as the initial shooter rating), and subtract the difference between $R_g$ 2500 (also assigned as the initial goalie rating).

So we have

$$R_{shot} = R_{base} + 3/2∑Δ_f +(R_s - R_{base} + (2500-R_g)$$

or, effectively

$R_{shot} = R_s +3/2∑Δ_f + (2500 - R_g)$ (3)

Then we can estimate the chances of the goal going in by the Elo formula:

 $$P_s = 1 / ( 1 + 10 ^ (( 2500 - R_{shot} ) / 400))$$ 

 or, effectively

$P_s = 1 / ( 1 + 10 ^ ((R_g - R_s - 3/2∑Δ_f)/400))$ (4)

Note that we never do an explicit match of shooter vs goalie. We could do that instead of including $R_s$ and $R_g$ in the formula, but that way proved to be more complicated and provided less consistent results.

Looks straightforward? Unfortunately, it isn't.

4. Confounders


If the factors were completely independent, our job would be done. Alas, they are not, they are implicitly confounding each other, i.e. there might be more deflecting shots resulting in goal on a powerplay, or more rebounds in quadrants close to the goal, and so on. Therefore we try to mitigate these dependencies in the following way:

I. As a base line we calculate the probabilities of success for shots in each quadrant we defined.

II. Then we compute the probability of success for shots with each separate factor value in the given quadrant.

III. We calculate the ratio the freshly computed probability to the general probability of success in this quadrant.

IV. The resulting confounding effect is then calculated according to the following formula:

$C_f = 1 / (|log(ratio)| + 1)$

Thus, when the probabilities are the same in the quadrant with or without the factor set ($ratio == 1$), we get $C = 1$.

V. We multiply each $Δ$ factor$ by the corresponding $C$, thus formulas (3) and (4) become:

$R_{shot} = R_s + 3/2∑Δ_fC_f/1.5 + (2500 - R_g)$ (5)

and

$P_s = 1 / ( 1 + 10 ^ ((R_g - R_s - 3/2∑Δ_fC_f) /400))$ (6)


Obviously, for the quadrant factor $C_f == 1$.

To test the validity of the math above, we tested log loss of betting each shot not being a goal. By just using the base probability of 0.0622 the log loss was about 0.240. By using the probabilities computed through (5) and (6) the log loss was reduced to 0.210 with each factor contributing to the reduction.

5. The eXpected goal value and the save above expectation


Now by using (5) we can calculate the number of expected goals against each goalie in a game:

$xG = ∑↙{goalie}(P_s)$ in a given game.

We know how many goals were scored against the goalie and we can easily apply (2). The new rating of the goalie will be used in the calculations for the next game he participates in. Same applies for the shooters, only the sum is of the shots taken by the shooter. Empty Net shots are not accounted for.

We calculate the $xG$ and $G$ for games on each date starting with the 2012/13 season onward. After all games for a given date had been processed, we feed them back into the probabilities of the modifiers to keep them current, and in a way that gives the data from the current season double weight compared to the past data, whereas data from the earliest available date is tossed out.

Here is the sample of best and worst performances in $xG-G$ for goalies and skaters, single game, and season (playoffs excluded):

Goals saved above expectation (game)
PlayerDateDelta
ALEXANDAR GEORGIEV201902106.034
EVGENI NABOKOV201403235.787
LAURENT BROSSOIT201504095.245
MIKE CONDON201701195.178
RYAN MILLER201601175.153

Goals saved below expectation (game)
PlayerDateDelta
AL MONTOYA201611046.152
SERGEI BOBROVSKY201812045.706
ROBIN LEHNER201402275.313
SERGEI BOBROVSKY201810135.279
JOEY MACDONALD201304035.251

Goals scored above expectation (game)
PlayerDateDelta
PATRIK LAINE201811244.436
CHRIS KUNITZ201302033.646
ALEX OVECHKIN201312103.582
AUSTON MATTHEWS201610123.531
BRAD RICHARDSON201902283.525

Goals scored below expectation (game)
PlayerDateDelta
NAZEM KADRI201902102.355
BROCK NELSON201412131.873
GABRIEL LANDESKOG201901091.868
LOGAN COUTURE201502171.827
RYAN O'REILLY201903291.693

Goals saved above expectation (season)
PlayerDateDelta
SERGEI BOBROVSKY201635.787
CAREY PRICE201332.607
JOHN GIBSON201626.296
CAREY PRICE201424.424
THOMAS GREISS201524.153

Goals saved below expectation (season)
PlayerSeasonDelta
JONATHAN QUICK201842.428
CAREY PRICE201733.573
CRAIG ANDERSON201728.724
THOMAS GREISS201725.168
SCOTT DARLING201724.161

Goals scored above expectation (season)
PlayerSeasonDelta
LEON DRAISAITL201823.047
PATRIK LAINE201722.6
ALEX DEBRINCAT201820.249
STEVEN STAMKOS201819.833
ALEX OVECHKIN201319.052

Goals scored below expectation (season)
PlayerSeasonDelta
ALEX CHIASSON201312.174
MIKE RICHARDS201311.016
ERIC STAAL201510.476
TYLER TOFFOLI201810.319
BRAYDEN SCHENN20149.894


As another validity check, we checked for inflation of ratings over time. We found that the goalie ratings inflated by the total of just 318 points for 186 goaltenders, and, correspondingly, deflated by the same amount for 1683 skaters. These values are pretty admissible for inflation.

6. Predictive aspects

Shooter

If a shooter has the rating $R_s$ above base shot rating $R_{base}$, then he increases the probability of a goal (and vice versa). The difference should be computed for each separate case, but on average, given a nearly linear behavior of the Elo function at low probabilities, each extra 10 points would account for 0.0035 difference in the probability of the shot. We can do a more particular job by surveying which factors dominate the shots of the player, and what's their probability altogether, excluding the shooter and thus compute the difference more precisely.

Goalie

If a goalie has the rating $R_g$ above 2500 (base goaltender rating) then he decreases the probability of a goal (and vice versa) in exactly reverse way that the shooter does. However, the goaltenders face the shots from all possible factor values, therefore we must adjust the probability from the base probability (e.g. 0.0622). The only factor that possibly should be taken into account is the goalie's team.

Team

We can approach the $xG$ (or rather $pG$ (projected goals)) of a team by two ways: iterating over the projected or published roster, or by blanket-weighted-averaging the shots the team takes per game and their probabilities. The first way is more complex, but supposedly more precise.

Season

We do not see any particular implications of a season-wide projection at any level, team, skater or goaltender. For the first two we just multiple a single game projection by the number of games in a season. For the latter one, an estimate of the number of games would be necessary.

Playoffs

In the playoffs we can hone our predictions to the given shooter and goalie's team. Maybe, that when home/away factors will also become more prominent.

Here's current (EOS 2018/19) top 5 goalie and skater rankings:

Top 5 Goalies after 18/19
PlayerRating
ANTTI RAANTA2535.5
BEN BISHOP2534.8
JOHN GIBSON2533.9
ROBIN LEHNER2524.7
JUUSE SAROS2523.1

Top 5 Colanders after 18/19
PlayerRating
KEITH KINKAID2480.6
MAXIME LAGACE2482.7
GARRET SPARKS2485.4
CRAIG ANDERSON2485.9
CHAD JOHNSON2487.7

Top 5 Scorers after 18/19
PlayerRating
ALEX OVECHKIN2104.4
STEVEN STAMKOS2097.2
NIKITA KUCHEROV2079.8
PATRICK KANE2077.3
PATRIK LAINE2076.0

Top 5 Whiffers after 18/19
PlayerRating
JORDAN STAAL2002.8
MATT MOULSON2002.9
JUSTIN ABDELKADER2004.8
PATRIC HORNQVIST2004.9
KYLE CLIFFORD2005.1

Concluding, the author wants to underline once again, that he realizes the insufficient theoretical background for the task undertaken, and that many assumptions that are made smell of ad hoc approach. However, we hope that the model finds its usefulness among the hockey fans, and that this research attracts people of better qualification that would be interested to polish and improve it.

Wednesday, January 11, 2017

On Players Evaluation - Part VI (Skater's [and Goaltender non-SVP] Elo)



The most important conclusion of the last chapter that dealt with goalies' Elos is that it is defined by actual performance of a goaltender versus the expected performance of the team he is facing. That is the approach we are going to inherit for evaluating skaters.

For the start we compute the average stats of a league for each season. We do that for most of the stats that are measured, from goals and assists to faceoffs taken, up to the time on ice for the goaltenders. This is a trivial calculation. Thus we obtain season stat averages Savg.

Now we can begin to work with the skaters. We assign them a rating of 2000 in each stat. The first and the most difficult step is to coerce the actual performance of a skater in each stat to a chess-like result, on the scale from 0 to 1. This is a real problem, since the result distribution for the number of players looks something like one of these chi-squares:


Therefore we need to rebalance it somehow while preserving the following rules:
  • They should be more or less distributive, i.e. scoring 1 goal thrice in a row in a game should produce approximately the same performance as scoring a hat trick in one game and going scoreless in the other two.
  • They should still have the same shape as the original one.
  • The average rating of the league in each stat should remain 2000 at the end of the season.

So first, we do not apply rating changes after a single game. We take a committing period, for example, five games, and average players' performance in every rated stat over that period. Second, we apply the following transformation to the performance:

P'player = (Pplayer - Savg) / Savg

where Savg is the season average on that stat. It could be more precise to compute against the averages against of the teams played (see the first paragraph), but we decided to go via a simpler route at this stage.

Then we scale the performance by the Adjustment Factor A:

P'playeradj = P'player / A

The adjustment factor sets the result between -0.5 and 0.5. More or less. There still are outliers, but they are very infrequently beyond 0.5 . The A factor depends on the rarity of the scoring in the stat and varies from 6 (Shot on Goal) to 90 (Shorthanded goal). The adjustment for goals, is, for example, 9. The adjustment for faceoffs won is 20. The latter one might look a bit surprising, but remember that many players do not ever take faceoffs, e.g. defensemen. Naturally, only skaters stats are computed for skaters, only goalie stats for goaltenders.

The final Result Rplayer is then:
Rplayer = P'playeradj + 0.5

So for the rare events we have a lot of results in the 0.48-0.5 area and a few going to 1. For the frequent events (shots, blocks, hits), the distribution is more even.

Now that we got the player's "result" R, we can compute the elo change through the familiar formula:

ΔElo = K * (R - (1/(1+10(2000 - Eloplayer)/400)))

where K is the volatility coefficient which we define as:

16 * √(A) * √(4 / (C + 1))

A is the aforementioned Adjustment Factor and C is the Career Year for the rookies (1) and the sophomores (2), and 3 for all other players.

'What is 2000', an attentive reader would ask? 2000 is the average rating of the league in each stat. We use, because the "result" of the player was "against" the league average. If we used team averages, we would put the average "Elo against" of the teams faced instead.

After we have the ΔElo, the new Elo' of a player in a specific stat becomes:

Elo' = Elo + ΔElo

And from that we can derive the expected average performance of a player in each stat, per game:

Rexp = 1/(1+10(2000-Elo')/400)
Pexp = (Rexp - 0.5) * A * Savg + Savg

which is an "unwinding" of the calculations that brought us from the actual performance to the new rating.

The calculation differs for the three following stats:

  1. SVP - processed as described in Part V.
  2. Win/Loss - processed as a chess game against a 2000 opponent, where the result is:
Rw = Pw/(Pw+Pl), Rl = Pl(Pw+Pl)
over the committing period.
The only subtlety here is that sometimes a hockey game may result in goalie win without a goalie loss.
  1. PlusMinus -
R+/- = 0.5 * (P+/- - Savg+/-) / 10 (10 skaters on ice on average)

Then, via the regular route we get the Elo' and the expected "result" Rexp, and the expected performance is:
Pexp+/- = (Rexp+/- - 0.5) * 10 + Savg+/-

Please note that we do not compute "derived" stats, i.e. the number of points (or SHP, or PPP), or the GAA, given the GA and TOI, or GA, given SA and SV.

An example of the computed expected performances that lists expectations of top 30 Centers in Assists (Adjustment Factor 9) can be seen below:

# Player Pos Team Games A a/g Avg. g. Avg.a  E a/g  E a/fs
1 CONNOR MCDAVID C EDM 43 34 0.791 44.00 33.00 0.706 61.54
2 JOE THORNTON C SJS 41 24 0.585 74.11 52.00 0.665 51.27
3 NICKLAS BACKSTROM C WSH 40 24 0.600 69.20 50.10 0.663 51.85
4 EVGENI MALKIN C PIT 39 27 0.692 62.09 44.73 0.659 55.33
5 SIDNEY CROSBY C PIT 33 18 0.545 61.67 51.50 0.655 46.15
6 RYAN GETZLAF C ANA 36 25 0.694 68.58 45.42 0.648 50.26
7 EVGENY KUZNETSOV C WSH 40 22 0.550 54.75 27.75 0.605 47.43
8 ANZE KOPITAR C LAK 36 16 0.444 72.73 41.55 0.594 40.33
9 ALEXANDER WENNBERG C CBJ 40 28 0.700 59.00 25.67 0.583 52.50
10 CLAUDE GIROUX C PHI 43 25 0.581 61.70 37.60 0.579 47.56
11 TYLER SEGUIN C DAL 42 26 0.619 66.86 31.14 0.566 48.65
12 RYAN O'REILLY C BUF 30 16 0.533 66.00 26.38 0.553 39.23
13 DAVID KREJCI C BOS 44 18 0.409 60.64 32.36 0.528 38.05
14 RYAN JOHANSEN C NSH 41 22 0.537 65.33 27.00 0.523 43.43
15 JOE PAVELSKI C SJS 41 23 0.561 69.64 29.09 0.517 44.21
16 HENRIK SEDIN C VAN 43 17 0.395 75.56 47.81 0.517 37.17
17 DEREK STEPAN C NYR 42 22 0.524 68.00 30.86 0.508 42.31
18 VICTOR RASK C CAR 41 19 0.463 67.00 22.67 0.497 39.37
19 MARK SCHEIFELE C WPG 40 20 0.500 44.50 17.83 0.493 39.23
20 JASON SPEZZA C DAL 35 18 0.514 62.71 37.79 0.490 37.60
21 JOHN TAVARES C NYI 38 16 0.421 68.50 35.00 0.488 37.46
22 MITCHELL MARNER C TOR 39 21 0.538 39.00 21.00 0.484 41.82
23 STEVEN STAMKOS C TBL 17 11 0.647 65.11 29.00 0.474 29.97
24 ALEKSANDER BARKOV C FLA 36 18 0.500 56.75 21.00 0.463 36.51
25 MIKAEL GRANLUND C MIN 39 21 0.538 55.80 24.40 0.460 40.80
26 PAUL STASTNY C STL 40 13 0.325 65.09 34.55 0.457 31.74
27 JEFF CARTER C LAK 41 15 0.366 69.67 24.33 0.448 33.35
28 MIKE RIBEIRO C NSH 41 18 0.439 62.88 33.06 0.447 36.32
29 MIKKO KOIVU C MIN 39 16 0.410 66.83 34.25 0.445 35.14
30 ERIC STAAL C MIN 39 22 0.564 74.46 36.77 0.442 40.99

You can see more of such expectation evaluations on our website, http://morehockeystats.com/fantasy/evaluation .

Now, we ask ourselves, how can we use these stats evaluations to produce an overall evaluation of a player?


To be concluded...

Saturday, January 7, 2017

On Players Evaluation - Part V (Goaltender's Elo)


Part I
Part II
Part III
Part IV

The goalkeeper is half of the whole team

Soviet proverb from Lev Yashin's times.

After a foray into the calmer lands of teams' evaluation using the Elo rating, it's time to turn our attention to the really juicy stuff - the evaluation of a single player. And we'll start with the most important one - the goaltender. DISCLAIMER: this evaluation concept is still a work in progress and one of several possible implementations of the idea.

By coincidence, it's also the simplest evaluation to make. While many stats describe the performance of a skater (goals, assists, shots, hits, blocks, faceoff wins, etc. - and even one that is accounted usually for goaltenders) only one stat truly describe the goalie's performance: the saves percentage. Usually, whole four stats are used to compare the goalies: wins (W), saves percentage (SVP), goals against average (GAA) and shutouts (SHO), but will show you first, why three of them are mostly unnecessary. Also, the name saves percentage is a bit of a misnomer, since the values of svp are usually not multiplied by 100 to look like real percent, but are shown more frequently between 0 and 1, and therefore would be more properly named as 'Saves Ratio', or 'Saves Share'.

Wins are truly results of team efforts. I always cringe when I read that a goaltender "outdueled" his opponent, when the both barely got see each other. The GAA is much more of an indication of how well the defense operates in front of the goalie. Shootouts are first, and foremost, a very rare thing, and secondly a 15-save shootout should not be the same as 40-save shootout, although for any of the four stats listed above they create two identical entry.

Therefore we feel ourselves on a firm ground evaluating goalie's performance through SVP only (with a slight input from shootouts, as described below) - and the Elo function, of course. For the start, each goaltender is assigned an Elo rating of 2000 for his first career appearance. We discard performances in which goalies faced less than four shots, because these usually are late relief appearances in the garbage time, not really an evidence of goaltending in a true hockey game. We only account for them to display the real SVP accrued in the season so far, and we consider dropping these appearances completely.

After the game we get the pure SVP from the real time stats. We adjust it in two ways:
  1. If, in the very rare case, the performance is below 0.7, we set it to 0.7 .
  2. If there was a shootout (not the shootout as defined by the NHL, but a performance where a goaltender was on the ice for at least 3420 seconds and did not let a single goal in during that time), we add a shootout bonus for the performance:

Bonus = (Saves - 10) / 200

If there were less than fifteen saves in the shootout, the bonus is assigned the minimum value of 0.025. We consider adding this bonus necessary, because the opposing team is usually gives an extra effort to avoid being shut out even during the garbage time.

Then, given the actual performance we can calculate the "Elo performance rating":

Rperf = 2000 + (SVP - SVPvsopp) * 5000

Where SVPvsopp is the SVP against the opponent the goalie is facing - effectively the shooting % of that team minus the shots resulting in empty-net goals, sort of "Expected SVP against that opponent". That means that for every thousandth of the SVP above the expectation, the performance is five points above 2000 (the absolute average).

Wait, there seems to be an inconsistency. Don't we need ratings of opponents for Elo changes calculation? Actually, no. Given an Elo performance of a player, we can calculate the rating change as a "draw" against a virtual opponent with that Elo performance, i.e.


ΔR = K * (0.5 - 1 / ( 1 + 10 ** (( Rperf - Rg)/ 400)) ) )

Where K is the volatility factor mentioned in the earlier posts. Right now we are using the volatility factor of 32, but that may change - including introducing a dependency of this factor on goaltender's experience.

And the new rating, is naturally,

Rg' = Rg + ΔR

Now we can calculate the expected remaining svp:

SVPrem = SVPavg + (Rg' - 2000) / 5000

Where SVPavg is the league average SVP. It would be more correct to substitute that value with the weighted averages of the remaining teams to face (with accordance to the matches remaining), and we'll be switching to this index soon.

We can also calculate the SVP expected from the goalie at the start of the season:

SVPexp = SVPavg0 + (Rg0 - 2000) / 5000

where SVPavg0is the average SVP of the league during the previous season and the Rg0 is the rating of the goalie at the conclusion of the previous season (including playoffs), or the initial rating of 2000.

We post a weekly update on our Elo ratings for goaltenders, and their actual and expected SVPs on our Twitter feed. You can also access our daily stats on our website page.

It looks like we're ready to try to take on the skaters' performances. But I'm not sure it's going to fit into one posting.

To be continued...

Monday, January 2, 2017

On Players Evaluation - Part IV (Teams Elo Projections)

On Players Evaluation - Part IV (Teams Elo Projections)

Part I
Part II
Part III

We left our reader at the point where we demonstrated how to produce Elo ratings for hockey teams over season (and over postseason too, if anyone wondered) and how to apply it to the up and coming next games of the rated teams.

However, in its main eparchy, chess, Elo is rarely used to produce single match outcome projections. It's much more popular when used to create a long-term projection, such as the whole tournament, which in chess lasts between five to thirteen rounds, usually.

Therefore, the question arises, shouldn't we try to use our newborn Elo ratings to long-term projections? And the answer is an unambiguous 'Yes!' We can and should create the projections for the team over longer spans such as a seven days ahead, thirty, or even through the end of the season!

How do we do it? Since we computed the Elo ratings for all teams, and we know the schedule ahead of all teams, we can run the Elo expectation on all matchups during the requested span and sum them. And since we assume that each team performs according the expectation, their Elo ratings do not change during the evaluation span.

Eteam = Σ(Ematch1, Ematch2, ... , Ematchn)

All good? No. There is one more finesse to add. The produced expectations will all be calculated in 2-0 span per game, assuming only 2 points are in play in each matchup. However, due to the loser's point it's not so. Therefore on average there are 2 + NOT/SO / Ntotal points are handed out during the season in every match (where NOT/SO is the number of games that get decided in OT or SO). So we need to compute the NOT/SO value, divide it by two (because there are two teams in each match) and multiply the expectation of each team by this factor. By doing so we receive the reliable Elo expectation, such as one in the table below, as of Jan 2nd, 2017. Spans of 7 days, 30 days and through the end of the season are displayed (games, expected points and total).

Elo ratings for season 2016
# Team Div Elo Pts Gin7 Pin7 Tin7 Gin30 Pin30 Tin30 GinS PinS TinS
1 Columbus Blue Jackets MET 2265.22 56 4 6 62 14 23 79 47 79 135
2 Pittsburgh Penguins MET 2186.57 55 1 2 57 11 16 71 44 65 120
3 Minnesota Wild CEN 2180.88 50 3 4 54 14 21 71 46 68 118
4 San Jose Sharks PAC 2137.87 47 3 4 51 14 20 67 45 62 109
5 Washington Capitals MET 2135.54 49 4 4 53 15 18 67 46 59 108
6 Montreal Canadiens ATL 2117.99 50 4 5 55 14 18 68 45 58 108
7 New York Rangers MET 2135.43 53 3 4 57 11 14 67 43 54 107
8 Chicago Blackhawks CEN 2103.27 51 3 4 55 12 15 66 42 52 103
9 Anaheim Ducks PAC 2105.41 46 3 4 50 13 18 64 43 55 101
10 Edmonton Oilers PAC 2092.89 45 4 4 49 14 16 61 44 53 98
11 Ottawa Senators ATL 2088.34 44 2 2 46 11 11 55 45 52 96
12 Toronto Maple Leafs ATL 2097.27 41 3 4 45 12 14 55 46 54 95
13 St. Louis Blues CEN 2066.58 43 2 2 45 12 12 55 44 51 94
14 Boston Bruins ATL 2079.41 44 4 5 49 15 17 61 43 49 93
15 Carolina Hurricanes MET 2093.06 39 4 5 44 13 13 52 46 53 92
16 Los Angeles Kings PAC 2066.68 40 4 4 44 14 16 56 45 52 92
17 Philadelphia Flyers MET 2079.35 45 3 3 48 12 13 58 43 46 91
18 Calgary Flames PAC 2076.79 42 4 5 47 14 16 58 43 49 91
19 Tampa Bay Lightning ATL 2068.90 42 4 4 46 13 14 56 44 48 90
20 New York Islanders MET 2070.87 36 2 3 39 12 14 50 46 51 87
21 Florida Panthers ATL 2059.66 40 4 5 45 13 14 54 44 46 86
22 Nashville Predators CEN 2055.15 38 4 4 42 14 14 52 46 48 86
23 Dallas Stars CEN 2052.77 39 3 3 42 13 13 52 44 46 85
24 Vancouver Canucks PAC 2049.05 37 4 5 42 12 15 52 44 46 83
25 Detroit Red Wings ATL 2033.62 37 3 3 40 13 12 49 45 43 80
26 Winnipeg Jets CEN 2017.50 37 4 4 41 14 14 51 43 40 77
27 Buffalo Sabres ATL 2009.45 34 3 3 37 13 12 46 46 41 75
28 New Jersey Devils MET 1994.66 35 5 4 39 14 12 47 45 37 72
29 Arizona Coyotes PAC 1921.41 27 3 2 29 12 8 35 45 30 57
30 Colorado Avalanche CEN 1910.42 25 3 2 27 12 7 32 46 29 54

The NOT/SO value right now is about 1.124 (i.e. about quarter of all games are decided past the regulation).

So you know what's good for the people?
But the people consists of men...

The team projection leaves us wanting more. After all, don't we want to be able to evaluate individual players and factor it somehow in the projection to reflect the injuries and other reasons that force top players out of the lineups? Stay tuned.

To be continued...