Stat Guy
Registered User
- Aug 30, 2014
- 96
- 1
Hey all, I recently created a macro discussed in a previous thread about determining a players ELO rating taking faceoffs.
I figured I could easily adapt it to develop a ELO rating using Corsi.
First...
For those who don't know ELO, check out here for an indepth and confusing explaination.
For the borderline imbeciles like myself, in a nut shell this is ELO.
It is a ranking system that takes away points from the loser and gives them to the winner. All players start with a 1200 ELO rating. Higher than 1200 is good....lower is bad. How many points to change hands is determined by their ranking going into the matchup.
If a higher ranked player wins, he gains fewer points from the lower ranked player because he was "suppose" to win. The opposite is true. If the lesser ranked player wins, he will gain greater points.
ELO was created in a 1 vs 1 matchup. Since hockey is a team sport, I use the average ELO of a line, versus the average ELO of an opposing line.
This is an effort to weigh the "Level of competition" versus the "Level of Teammate" in combination with Corsi.
If you don't believe in "Corsi", you might as well not read any further as this stat isn't for you as that is what my ELO rating is based on.
I match a line versus another line in a 5 vs 5 battle.
For every shot, missed shot, blocked shot and goal based off of the NHL realtime stats, I do a ELO calculation.
The line that has the scoring chance gets credited with a win, and steals some of the losers points.
How many points is determined by both lines average ELO rating.
Also...for the ELO experts, I have issued a different "K Factor" for the different events. K Factor is a weighting of importance, and is basically the "maximum ELO Points" available.
Goal= K factor of 5
Shot= K factor of 3
Miss&block= K factor of 2
This is to give greater emphasis to a goal, over a blocked shot.
Ok...an example
Here is a line matchup for a specific event in a game between Tampa and Florida in 2009
Initial ELO
Player|Initial ELO Corsi
Road | 1207.75
STEVEN STAMKOS | 1154.83
TEDDY PURCELL | 1211.96
MARTIN ST LOUIS | 1246.66
KURTIS FOSTER | 1214.04
ANDREJ MESZAROS | 1211.29
Home | 1174.18
STEPHEN WEISS | 1223.28
NATHAN HORTON | 1157.30
MICHAEL FROLIK | 1261.88
KEITH BALLARD | 1061.31
JASON GARRISON | 1167.16
So this event, or play, pits Tampa's line with an average of 1207.75 versus Florida's line rated at 1174.18
On this play Florida's Nathan Horton took a shot on goal, but missed the net. (giving a K factor of 2 for this play)
So despite Horton's poor marksmanship, this does count as a win for Florida in the ELO Corsi department.
So I do a ELO calculation,
Florida will steal 1.10 ELO points from Tampa.
Since Florida was a slight underdog, they will take more points then Tampa would have had they registered the scoring chance.
Had Tampa had a missed shot on net, they would have taken .90 points from Florida.
These lines were pretty evenly matched so the variance was little.
Had Tampa had a line worth 1300 and Florida 1100, and Florida won the event, Florida would have swiped 1.5pts and if Tampa had won with the same ratings, they would only steal .5pts.
That is where the K factor come in. For a goal (with a k factor of 5) the same 1300 vs 1100 match up would see Florida steal 3.8 ELO points while Tampa would steal only 1.2 if there heavily favoured line scored.
So back to our initial example, the NEW ELO Corsi rating for the lines after Horton's missed shot on goal are
Player|NEW ELO Corsi
Road | 1206.66
STEVEN STAMKOS | 1153.73
TEDDY PURCELL | 1210.86
MARTIN ST LOUIS | 1245.57
KURTIS FOSTER | 1212.94
ANDREJ MESZAROS | 1210.19
Home | 1175.28
STEPHEN WEISS | 1224.37
NATHAN HORTON | 1158.39
MICHAEL FROLIK | 1262.97
KEITH BALLARD | 1062.41
JASON GARRISON | 1168.26
Anyways, that is how I work the calculations.
I have so far run every 5 vs 5 event from 2007 until today with the ELO Corsi Rating carried over from one year to the next, and here are the how the Oilers look.
Keep in mind, this is a CAREER stat (or at least from 2007 until today), not a stat for last season. 1200 is the starting point for each player, and is therefor also the league average.
#|Player|Team|ELO Corsi
4 | TAYLOR HALL | EDMONTON OILERS (EDM) | 1345
14 | JORDAN EBERLE | EDMONTON OILERS (EDM) | 1280
83 | ALES HEMSKY | EDMONTON OILERS (EDM) | 1268
94 | RYAN SMYTH | EDMONTON OILERS (EDM) | 1222
23 | LINUS OMARK | EDMONTON OILERS (EDM) | 1222
93 | RYAN NUGENT-HOPKINS | EDMONTON OILERS (EDM) | 1221
57 | DAVID PERRON | EDMONTON OILERS (EDM) | 1213
59 | BRAD HUNT | EDMONTON OILERS (EDM) | 1200
81 | TAYLOR FEDUN | EDMONTON OILERS (EDM) | 1200
6 | JESSE JOENSUU | EDMONTON OILERS (EDM) | 1199
84 | OSCAR KLEFBOM | EDMONTON OILERS (EDM) | 1195
51 | ANTON LANDER | EDMONTON OILERS (EDM) | 1192
26 | MARK ARCOBELLO | EDMONTON OILERS (EDM) | 1191
68 | TYLER PITLICK | EDMONTON OILERS (EDM) | 1190
41 | WILL ACTON | EDMONTON OILERS (EDM) | 1190
44 | COREY POTTER | EDMONTON OILERS (EDM) | 1184
23 | MATT HENDRICKS | EDMONTON OILERS (EDM) | 1183
28 | RYAN JONES | EDMONTON OILERS (EDM) | 1177
48 | RYAN HAMILTON | EDMONTON OILERS (EDM) | 1173
27 | BOYD GORDON | EDMONTON OILERS (EDM) | 1171
85 | MARTIN MARINCIN | EDMONTON OILERS (EDM) | 1170
77 | ANTON BELOV | EDMONTON OILERS (EDM) | 1169
2 | JEFF PETRY | EDMONTON OILERS (EDM) | 1166
13 | STEVEN PINIZZOTTO | EDMONTON OILERS (EDM) | 1159
37 | DENIS GREBESHKOV | EDMONTON OILERS (EDM) | 1157
89 | SAM GAGNER | EDMONTON OILERS (EDM) | 1149
64 | NAIL YAKUPOV | EDMONTON OILERS (EDM) | 1145
12 | ROMAN HORAK | EDMONTON OILERS (EDM) | 1130
55 | BEN EAGER | EDMONTON OILERS (EDM) | 1129
5 | MARK FRASER | EDMONTON OILERS (EDM) | 1123
20 | LUKE GAZDIC | EDMONTON OILERS (EDM) | 1116
36 | PHILIP LARSEN | EDMONTON OILERS (EDM) | 1115
13 | MIKE BROWN | EDMONTON OILERS (EDM) | 1110
21 | ANDREW FERENCE | EDMONTON OILERS (EDM) | 1098
15 | NICK SCHULTZ | EDMONTON OILERS (EDM) | 1088
19 | JUSTIN SCHULTZ | EDMONTON OILERS (EDM) | 1088
5 | LADISLAV SMID | EDMONTON OILERS (EDM) | 1082
Here are the Top 25 players in the league
#|Pos|Player|Team|ELO Corsi
22 | L | DANIEL SEDIN | VANCOUVER CANUCKS (VAN) | 1528
37 | C | PATRICE BERGERON | BOSTON BRUINS (BOS) | 1476
11 | L | ZACH PARISE | MINNESOTA WILD (MIN) | 1463
13 | C | PAVEL DATSYUK | DETROIT RED WINGS (DET) | 1455
14 | R | JUSTIN WILLIAMS | LOS ANGELES KINGS (L.A) | 1436
20 | C | ALEXANDER STEEN | ST. LOUIS BLUES (STL) | 1433
27 | R | PATRIC HORNQVIST | NASHVILLE PREDATORS (NSH) | 1431
19 | C | JONATHAN TOEWS | CHICAGO BLACKHAWKS (CHI) | 1422
67 | R | MICHAEL FROLIK | WINNIPEG JETS (WPG) | 1421
87 | C | SIDNEY CROSBY | PITTSBURGH PENGUINS (PIT) | 1418
15 | R | BRAD RICHARDSON | VANCOUVER CANUCKS (VAN) | 1415
18 | L | JAMES NEAL | PITTSBURGH PENGUINS (PIT) | 1410
40 | L | HENRIK ZETTERBERG | DETROIT RED WINGS (DET) | 1403
93 | R | JAKUB VORACEK | PHILADELPHIA FLYERS (PHI) | 1399
11 | C | ANZE KOPITAR | LOS ANGELES KINGS (L.A) | 1397
27 | D | ALEX PIETRANGELO | ST. LOUIS BLUES (STL) | 1396
62 | L | CARL HAGELIN | NEW YORK RANGERS (NYR) | 1394
9 | C | MIKKO KOIVU | MINNESOTA WILD (MIN) | 1392
68 | R | JAROMIR JAGR | NEW JERSEY DEVILS (N.J) | 1388
7 | L | DAVID BOOTH | VANCOUVER CANUCKS (VAN) | 1387
12 | C | DEREK ROY | ST. LOUIS BLUES (STL) | 1385
65 | D | ERIK KARLSSON | OTTAWA SENATORS (OTT) | 1385
11 | C | MIKAEL BACKLUND | CALGARY FLAMES (CGY) | 1384
71 | L | NICK FOLIGNO | COLUMBUS BLUE JACKETS (CBJ) | 1383
11|C|JORDAN STAAL|CAROLINA HURRICANES(CAR)|1381
I'm interested in hearing feedback and suggestions for tightening it up.
Every argument against Corsi is valid!
So is the ignoring of Zone Starts which is huge.
But I think this does a decent job of relating Corsi, to the level of competition and level of teammate.
Thanks for reading!
I figured I could easily adapt it to develop a ELO rating using Corsi.
First...
For those who don't know ELO, check out here for an indepth and confusing explaination.
For the borderline imbeciles like myself, in a nut shell this is ELO.
It is a ranking system that takes away points from the loser and gives them to the winner. All players start with a 1200 ELO rating. Higher than 1200 is good....lower is bad. How many points to change hands is determined by their ranking going into the matchup.
If a higher ranked player wins, he gains fewer points from the lower ranked player because he was "suppose" to win. The opposite is true. If the lesser ranked player wins, he will gain greater points.
ELO was created in a 1 vs 1 matchup. Since hockey is a team sport, I use the average ELO of a line, versus the average ELO of an opposing line.
This is an effort to weigh the "Level of competition" versus the "Level of Teammate" in combination with Corsi.
If you don't believe in "Corsi", you might as well not read any further as this stat isn't for you as that is what my ELO rating is based on.
I match a line versus another line in a 5 vs 5 battle.
For every shot, missed shot, blocked shot and goal based off of the NHL realtime stats, I do a ELO calculation.
The line that has the scoring chance gets credited with a win, and steals some of the losers points.
How many points is determined by both lines average ELO rating.
Also...for the ELO experts, I have issued a different "K Factor" for the different events. K Factor is a weighting of importance, and is basically the "maximum ELO Points" available.
Goal= K factor of 5
Shot= K factor of 3
Miss&block= K factor of 2
This is to give greater emphasis to a goal, over a blocked shot.
Ok...an example
Here is a line matchup for a specific event in a game between Tampa and Florida in 2009
Initial ELO
Road | 1207.75
STEVEN STAMKOS | 1154.83
TEDDY PURCELL | 1211.96
MARTIN ST LOUIS | 1246.66
KURTIS FOSTER | 1214.04
ANDREJ MESZAROS | 1211.29
Home | 1174.18
STEPHEN WEISS | 1223.28
NATHAN HORTON | 1157.30
MICHAEL FROLIK | 1261.88
KEITH BALLARD | 1061.31
JASON GARRISON | 1167.16
On this play Florida's Nathan Horton took a shot on goal, but missed the net. (giving a K factor of 2 for this play)
So despite Horton's poor marksmanship, this does count as a win for Florida in the ELO Corsi department.
So I do a ELO calculation,
Florida will steal 1.10 ELO points from Tampa.
Since Florida was a slight underdog, they will take more points then Tampa would have had they registered the scoring chance.
Had Tampa had a missed shot on net, they would have taken .90 points from Florida.
These lines were pretty evenly matched so the variance was little.
Had Tampa had a line worth 1300 and Florida 1100, and Florida won the event, Florida would have swiped 1.5pts and if Tampa had won with the same ratings, they would only steal .5pts.
That is where the K factor come in. For a goal (with a k factor of 5) the same 1300 vs 1100 match up would see Florida steal 3.8 ELO points while Tampa would steal only 1.2 if there heavily favoured line scored.
So back to our initial example, the NEW ELO Corsi rating for the lines after Horton's missed shot on goal are
Road | 1206.66
STEVEN STAMKOS | 1153.73
TEDDY PURCELL | 1210.86
MARTIN ST LOUIS | 1245.57
KURTIS FOSTER | 1212.94
ANDREJ MESZAROS | 1210.19
Home | 1175.28
STEPHEN WEISS | 1224.37
NATHAN HORTON | 1158.39
MICHAEL FROLIK | 1262.97
KEITH BALLARD | 1062.41
JASON GARRISON | 1168.26
Anyways, that is how I work the calculations.
I have so far run every 5 vs 5 event from 2007 until today with the ELO Corsi Rating carried over from one year to the next, and here are the how the Oilers look.
Keep in mind, this is a CAREER stat (or at least from 2007 until today), not a stat for last season. 1200 is the starting point for each player, and is therefor also the league average.
4 | TAYLOR HALL | EDMONTON OILERS (EDM) | 1345
14 | JORDAN EBERLE | EDMONTON OILERS (EDM) | 1280
83 | ALES HEMSKY | EDMONTON OILERS (EDM) | 1268
94 | RYAN SMYTH | EDMONTON OILERS (EDM) | 1222
23 | LINUS OMARK | EDMONTON OILERS (EDM) | 1222
93 | RYAN NUGENT-HOPKINS | EDMONTON OILERS (EDM) | 1221
57 | DAVID PERRON | EDMONTON OILERS (EDM) | 1213
59 | BRAD HUNT | EDMONTON OILERS (EDM) | 1200
81 | TAYLOR FEDUN | EDMONTON OILERS (EDM) | 1200
6 | JESSE JOENSUU | EDMONTON OILERS (EDM) | 1199
84 | OSCAR KLEFBOM | EDMONTON OILERS (EDM) | 1195
51 | ANTON LANDER | EDMONTON OILERS (EDM) | 1192
26 | MARK ARCOBELLO | EDMONTON OILERS (EDM) | 1191
68 | TYLER PITLICK | EDMONTON OILERS (EDM) | 1190
41 | WILL ACTON | EDMONTON OILERS (EDM) | 1190
44 | COREY POTTER | EDMONTON OILERS (EDM) | 1184
23 | MATT HENDRICKS | EDMONTON OILERS (EDM) | 1183
28 | RYAN JONES | EDMONTON OILERS (EDM) | 1177
48 | RYAN HAMILTON | EDMONTON OILERS (EDM) | 1173
27 | BOYD GORDON | EDMONTON OILERS (EDM) | 1171
85 | MARTIN MARINCIN | EDMONTON OILERS (EDM) | 1170
77 | ANTON BELOV | EDMONTON OILERS (EDM) | 1169
2 | JEFF PETRY | EDMONTON OILERS (EDM) | 1166
13 | STEVEN PINIZZOTTO | EDMONTON OILERS (EDM) | 1159
37 | DENIS GREBESHKOV | EDMONTON OILERS (EDM) | 1157
89 | SAM GAGNER | EDMONTON OILERS (EDM) | 1149
64 | NAIL YAKUPOV | EDMONTON OILERS (EDM) | 1145
12 | ROMAN HORAK | EDMONTON OILERS (EDM) | 1130
55 | BEN EAGER | EDMONTON OILERS (EDM) | 1129
5 | MARK FRASER | EDMONTON OILERS (EDM) | 1123
20 | LUKE GAZDIC | EDMONTON OILERS (EDM) | 1116
36 | PHILIP LARSEN | EDMONTON OILERS (EDM) | 1115
13 | MIKE BROWN | EDMONTON OILERS (EDM) | 1110
21 | ANDREW FERENCE | EDMONTON OILERS (EDM) | 1098
15 | NICK SCHULTZ | EDMONTON OILERS (EDM) | 1088
19 | JUSTIN SCHULTZ | EDMONTON OILERS (EDM) | 1088
5 | LADISLAV SMID | EDMONTON OILERS (EDM) | 1082
Here are the Top 25 players in the league
22 | L | DANIEL SEDIN | VANCOUVER CANUCKS (VAN) | 1528
37 | C | PATRICE BERGERON | BOSTON BRUINS (BOS) | 1476
11 | L | ZACH PARISE | MINNESOTA WILD (MIN) | 1463
13 | C | PAVEL DATSYUK | DETROIT RED WINGS (DET) | 1455
14 | R | JUSTIN WILLIAMS | LOS ANGELES KINGS (L.A) | 1436
20 | C | ALEXANDER STEEN | ST. LOUIS BLUES (STL) | 1433
27 | R | PATRIC HORNQVIST | NASHVILLE PREDATORS (NSH) | 1431
19 | C | JONATHAN TOEWS | CHICAGO BLACKHAWKS (CHI) | 1422
67 | R | MICHAEL FROLIK | WINNIPEG JETS (WPG) | 1421
87 | C | SIDNEY CROSBY | PITTSBURGH PENGUINS (PIT) | 1418
15 | R | BRAD RICHARDSON | VANCOUVER CANUCKS (VAN) | 1415
18 | L | JAMES NEAL | PITTSBURGH PENGUINS (PIT) | 1410
40 | L | HENRIK ZETTERBERG | DETROIT RED WINGS (DET) | 1403
93 | R | JAKUB VORACEK | PHILADELPHIA FLYERS (PHI) | 1399
11 | C | ANZE KOPITAR | LOS ANGELES KINGS (L.A) | 1397
27 | D | ALEX PIETRANGELO | ST. LOUIS BLUES (STL) | 1396
62 | L | CARL HAGELIN | NEW YORK RANGERS (NYR) | 1394
9 | C | MIKKO KOIVU | MINNESOTA WILD (MIN) | 1392
68 | R | JAROMIR JAGR | NEW JERSEY DEVILS (N.J) | 1388
7 | L | DAVID BOOTH | VANCOUVER CANUCKS (VAN) | 1387
12 | C | DEREK ROY | ST. LOUIS BLUES (STL) | 1385
65 | D | ERIK KARLSSON | OTTAWA SENATORS (OTT) | 1385
11 | C | MIKAEL BACKLUND | CALGARY FLAMES (CGY) | 1384
71 | L | NICK FOLIGNO | COLUMBUS BLUE JACKETS (CBJ) | 1383
11|C|JORDAN STAAL|CAROLINA HURRICANES(CAR)|1381
I'm interested in hearing feedback and suggestions for tightening it up.
Every argument against Corsi is valid!
So is the ignoring of Zone Starts which is huge.
But I think this does a decent job of relating Corsi, to the level of competition and level of teammate.
Thanks for reading!