How it works
What the model does
For every game the model estimates each team's regulation goals from recent form: goals for and against, shots for and against, power play and penalty kill, weighted toward the last ~20 games and carried over from last season early on, plus rest and back-to-backs. Two Poisson regressions turn that into expected goals per side.
Hockey is not two independent Poissons, so the score grid is reshaped to match how games really end. A team down one goal late pulls its goalie and either ties the game or concedes an empty-netter, so one-goal regulation results happen far less often than a Poisson model predicts (about 18% of games, not 30%). A tie after regulation becomes a one-goal win for one side, as books grade overtime and shootouts. That is what decides the puck line (a one-goal win never covers -1.5) and the total (a tie adds exactly one goal). Walk-forward from 2013-14 on, the model's probabilities track outcomes to within about a point for the moneyline and puck line. Totals run about two points light on the over in the highest-scoring recent seasons, because the model learns each season's scoring level with a lag.
Why there are no NHL picks
Before launch we tested for an edge against closing moneylines from the Sportsbook Review archive, which runs through part of 2022-23. Each season was predicted only from earlier seasons. The closing line beat the published model in 9 of 10 held-out seasons (11,058 games):
| Season | Games | Market log loss | Model log loss |
|---|---|---|---|
| 2013-14 | 1229 | 0.6749 | 0.6780 |
| 2014-15 | 1230 | 0.6649 | 0.6704 |
| 2015-16 | 1230 | 0.6774 | 0.6801 |
| 2016-17 | 1230 | 0.6672 | 0.6730 |
| 2017-18 | 1269 | 0.6679 | 0.6747 |
| 2018-19 | 1271 | 0.6726 | 0.6783 |
| 2019-20 | 1081 | 0.6794 | 0.6775 |
| 2020-21 | 868 | 0.6535 | 0.6593 |
| 2021-22 | 1311 | 0.6423 | 0.6472 |
| 2022-23 (partial) | 339 | 0.6709 | 0.6801 |
- Overall: market 0.6669, model 0.6714. Lower is better.
- Betting every game where the model is at least 2, 4 or 6 points above the no-vig price returns -3.4%, -3.0% and -1.3%. At 8 points it is +0.4% on 1,256 bets, which is noise (t = 0.1).
- A separate study back to 2007-08 added the starting goalie with perfect hindsight about who started, plus each starter's prior saves above average. It improved log loss by 0.0003. The market already prices the starter.
So every NHL lean is published as a reference forecast and graded in public on the Scorecard at the price it was locked, a flat one unit per game per market. It is not a recommendation to bet.
Schedule and grading
The board publishes at 11am CT on game days, using the consensus price across US books from The Odds API, and adds any game not yet priced at 4:30pm CT. A lean is locked the first time it is published. Games are graded at 6am CT the next morning from the NHL's official final score, with the shootout winner credited one goal. Postponed or cancelled games grade as a push.
The board launched the evening of Fri Oct 2, after that day's 11am run would have fired. Those five games were logged afterwards exactly as that run would have priced them: consensus odds from The Odds API's historical snapshot at 11am CT, and a model trained only on games played before Oct 2. They grade and count like every other row.