Why Simple Averages Bleed
Everyone starts with plain GAA or points per game, then wonders why the model stalls. A raw average treats a rookie’s breakout week like a seasoned veteran’s slump. That’s a recipe for disaster. Look: hockey is a chaotic symphony, not a metronome.
Crafting the Weight Matrix
First, identify the variables that actually move the needle – Corsi, zone starts, goalie quality, even home‑ice travel fatigue. Assign each metric a base weight. Then, layer a decay factor: recent games get 1.5× the weight of older ones, but don’t over‑inflate the last three nights. Here is the deal: use a Gaussian curve to smooth the decay, not a linear drop. That way, you avoid the “spike” effect that makes the model jump like a startled puck.
Contextual Multipliers
Not all games are created equal. A matchup on a back‑to‑back night for the away team deserves a 0.8 multiplier on their offensive stats. A rest day? Boost the home team’s defensive rating by 1.1. It’s a mental model you can almost see on a chalkboard, but it translates directly into crisp numbers.
Testing the Blend
Run a rolling window regression. If the weighted average outperforms a plain regression by more than two points on the log‑loss scale, you’ve got a win. Don’t be shy about chopping out outliers – a goalie injury can skew the data like a bad line change. Also, cross‑validate against past seasons; the 2014‑15 slump taught me that over‑fitting is a silent killer.
Calibration on the Fly
Adjust weights weekly. The market reacts faster than your spreadsheet, so if you see the betting line moving 1.5 % after a big trade, crank the weight for the traded player up by 10 %. In practice, I keep a “heat map” of weight shifts in a spreadsheet, then copy‑paste the numbers into the model before the next day’s batch.
Deploying to the Real World
When the model spits a projected margin, convert it to a probability using the logistic function, then overlay the odds from hockey-bets.com. If your implied probability exceeds the bookmaker’s by 3 % or more, lay the bet. Simple. No fluff.
Final Edge
Never let a single variable dominate. Cap any weight at 20 % of the total sum, and you’ll keep the model from tipping over. That’s the last piece – lock in those caps, run the script, and watch the edge materialize.