NHL Draft Simulator
If you've been following me for any length of time, you probably know that I'm a big NHL fan. As such, with the 2015 NHL draft today in Florida, I decided to try my hand at creating a draft simulator. The program simulates the first 2 rounds of the draft, but it was more complex than I thought going in. In this article, I'll discuss how it works and the challenges I faced with development, as well as ideas for improvements in future versions.
How It Works
At first glance, it may seem trivial. The NHL scout rankings put the players in order according to supposed draft position. You might think you can just go down the list in order. However, teams don't just pick the highest ranking player available. They pick players to strengthen areas of weakness on the team, but in some cases, they may pick a player even if they aren't weak in that position if he is exceptionally skilled. My first task was to devise a system that was capable of making these decisions.
To that end, I gathered several stats on each team. The stats I used are:
- Goals For
- Goals Against
- Team Record (wins, losses, ot losses)
- Shot Attempts For (Corsi Percentage)
- Unblocked Shot Attempts (Fenwick Percentage)
- Goalie Save Percentage
- Shots Allowed
These statistics were used to identify areas of strength and weakness on each team based on league averages. I assigned a forward need, defensive need and goalie need to each team according to these values. It was pretty interesting to see which teams were weak or strong in each position. The lower performing teams, such as Buffalo, had a high need rating in each category while stronger teams had lower needs. Still, every team could use improvement and these statistics helped me figure out what each team might be looking for in the draft.
Next up were the players. I had to scour for stats on each player and this took a good bit of time due to the number of players involved. I wanted to make sure I had more than enough players to simulate the first two rounds of the draft which will include 61 picks. For data purposes, I gathered 50 North American skaters, 35 European skaters and a total of 10 goalies; 5 North American and 5 European.
For players, I used numbers from only the most recent season. The statistics gathered were:
- Games Played
- Points (goals and assists)
- Points Per Game
- Penalty Minutes
- Plus/Minus Rating
- Save Percentage (goalies only)
- Scouting Rank
These values were evaluated for each player and helped assign that player an offensive value, defensive value and overall value. Note that goalies were just given an overall value. With these numbers in place, I now had a way to measure how a player might fit with a particular team by comparing the player's values to the teams needs. This is how the simulator makes its picks.
Failings and Challenges
Now that we have a rough idea of how the simulator makes its picks, lets discuss some of the program's failings and the challenges faced while developing it. First, and most obviously, I am not a professional scout. I don't get to watch all these players play, I just know the stats that are available. There are many non-measured factors to take into account, such as a player's skating ability or stick handling that I just don't get to see. And heck, even if I did, I'm not sure I can really evaluate a player's stride on the ice for weaknesses. They all look good to me! This may be why Jack Eichel, pretty much a lock for 2nd overall pick, slips to 4th in my simulator. Based on the stats and numbers alone, I couldn't get the simulator to take him in that 2nd position.
Next, although I gathered all this data, I had to figure out how to weight it on my own. As such, the ratings I handed out for players and team needs were somewhat arbitrary. Obviously, I tried to rate the stats as best as I could, but again, I'm not a professional hockey scout.
Third, this simulator does not and cannot account for team trades. I don't know what moves GM's will decide to make on the day of the draft. As such, the pick order could change quite a bit on the day of the event. This human element could throw off a good number of the simulator's picks.
One of the biggest challenges to compensate for during development is the fact that the NHL scout rankings separate North American and European skaters. This makes it difficult to really determine a player's overall rank and skill. Is the number 1 European skater as good as, or better than the highest ranked North American skater? I used the available stats to compile player scores, but the lack of direct comparison made it largely a guessing game.
And finally, for full disclosure, some European skaters have slightly boosted statistics. This is due to the fact that they play in several tournaments. Initially, I was adding the tournament statistics to the season's, but I decided to stop doing this fairly early on. So in reality, it only affects about five skaters, but I wanted to throw it out there to be completely transparent.
While this simulator was created in a few days during my spare time, I did come up with a couple of ways that I think it could be improved.
First, while I am evaluating each team for weaknesses, the evaluation is fairly vague; forward, defense or goalie. It could be worthwhile to obtain further granularity on these weaknesses and evaluate them down to each actual position (left wing, center, right wing, etc). A team with a plethora of great centers may not be so inclined to take a highly rated center if they need help on one of the wings.
The second big improvement would be league weighting. Prospects may put up some extraordinary numbers in the minors. However, it is worth noting that not all leagues are created equal. A player flourishing in the USHL may not have such an easy time in the OHL or in European leagues where they may be playing with adult veterans. I'm hoping that the scouting rankings can make up for some of this, but it could still be a useful thing to take into account.
Well, that's pretty much it. I hope you found this enjoyable to read and perhaps have your own ideas on how to make a simulator. In case you missed it at the beginning, you can check out the draft simulator right here. I'm looking forward to the draft and comparing the results to my simulator's picks!