How well priced is the closing line?
Every other measurement here asks whether a model can beat the market. This asks the inverted question, which needs no model at all: given the closing prices and what actually happened, how well priced was the line?
On shots on goal the Pinnacle close was measurably mis-priced in two consecutive seasons, by about three points, and showed no detectable average mispricing in the third. Betting that mispricing made no money in any season measured. Three points fell just short of the margin built into each bet: the return was negative every season, and in the two mis-priced seasons it cannot be told from break-even. Both halves are the finding. Neither is usable on its own.
The model has not beaten the Pinnacle closing line: shots-on-goal ROI −0.0709 [−0.0932, −0.0467] per unit over 7,171 bets in a 2025-26 backtest of 512 games. How this was measured
Shots on goal · Pinnacle closing prices · 3 seasons
The mispricing and the return, season by season
Each dot is a season’s figure and each line its 95% interval. In the gap, a line clear of zero is a mispricing; in the return, a line would have to clear zero to beat the margin.
The gap: implied minus actual
2023-24+0.0315 [+0.0203, +0.0432]
2024-25+0.0300 [+0.0177, +0.0427]
2025-26+0.0056 [−0.0053, +0.0170]
The Under on every prop: return per unit
2023-24−0.0049 [−0.0273, +0.0181]
2024-25−0.0079 [−0.0322, +0.0165]
2025-26−0.0555 [−0.0765, −0.0335]
How these are measured — shots on goal only; the tables below give every market
Was the close calibrated?
The gap is the mean probability the closing price implied, minus what actually happened: positive means the Over was priced too dear, and an interval containing zero means no direction is detectable. These are closing prices only, one per game, player and market, so nothing here says how lines move during the day. The margin is stripped proportionally; another method would redistribute it, and part of any favourite-longshot effect would come from that choice, which is why the hold is shown beside every row.
| Market | Season | Prices | Games | Hold | Implied | Realized | Gap | 95% interval | Reading |
|---|---|---|---|---|---|---|---|---|---|
| shots on goal | 2023-24 | 6,920 | 499 | 7.12% | 0.5102 | 0.4788 | +0.0315 | [+0.0203, +0.0432] | Over priced too dear |
| shots on goal | 2024-25 | 6,920 | 498 | 7.21% | 0.5090 | 0.4790 | +0.0300 | [+0.0177, +0.0427] | Over priced too dear |
| shots on goal | 2025-26 | 8,349 | 565 | 7.03% | 0.5079 | 0.5023 | +0.0056 | [−0.0053, +0.0170] | No detectable mispricing |
| points | 2025-26 | 8,601 | 497 | 7.03% | 0.4621 | 0.4680 | −0.0058 | [−0.0194, +0.0081] | No detectable mispricing |
| assists | 2025-26 | 8,556 | 497 | 7.03% | 0.3417 | 0.3394 | +0.0023 | [−0.0097, +0.0141] | No detectable mispricing |
| anytime goal | 2025-26 | 7,821 | 597 | 7.07% | 0.2600 | 0.2590 | +0.0010 | [−0.0079, +0.0103] | No detectable mispricing |
Does the mispricing clear the hold?
A gap is not an edge. Taking the Under on every prop, with no model and no selection, is measured here as the simplest way to bet a positive gap, not offered as a strategy: a baseline, not a ceiling. Each bet pays its own side’s share of the hold, so a negative return means the error was smaller than that share.
| Market | Season | Bets | Win rate | Return / unit | 95% interval | Hold | Reading |
|---|---|---|---|---|---|---|---|
| shots on goal | 2023-24 | 6,920 | 52.12% | −0.0049 | [−0.0273, +0.0181] | 7.12% | Within noise of break-even |
| shots on goal | 2024-25 | 6,920 | 52.10% | −0.0079 | [−0.0322, +0.0165] | 7.21% | Within noise of break-even |
| shots on goal | 2025-26 | 8,349 | 49.77% | −0.0555 | [−0.0765, −0.0335] | 7.03% | Sub-vig |
| points | 2025-26 | 8,601 | 53.20% | −0.0728 | [−0.0986, −0.0465] | 7.03% | Sub-vig |
| assists | 2025-26 | 8,556 | 66.06% | −0.0604 | [−0.0789, −0.0422] | 7.03% | Sub-vig |
| anytime goal | 2025-26 | 7,821 | 74.10% | −0.0635 | [−0.0755, −0.0513] | 7.07% | Sub-vig |
Every return is negative. In the two mis-priced shots seasons the interval contains zero, so those returns are not distinguishable from break-even rather than measured losses, and a return you cannot tell from zero is not an edge either.
Right on average, wrong in the tails?
The same gap within ten equal-count bins of implied probability, against 1,000 redraws of a market that is exactly right.
| Market | Season | Bins leaning over | Worst bin | Null p95 | p | Reading |
|---|---|---|---|---|---|---|
| shots on goal | 2023-24 | 10 of 10 | 0.0593 | 0.0522 | 0.015 | Beyond its own null |
| shots on goal | 2024-25 | 9 of 10 | 0.0477 | 0.0538 | 0.105 | Consistent with noise |
| shots on goal | 2025-26 | 7 of 10 | 0.0504 | 0.0478 | 0.036 | Beyond its own null |
| points | 2025-26 | 2 of 10 | 0.0315 | 0.0472 | 0.433 | Consistent with noise |
| assists | 2025-26 | 6 of 10 | 0.0239 | 0.0452 | 0.767 | Consistent with noise |
| anytime goal | 2025-26 | 6 of 10 | 0.0326 | 0.0451 | 0.320 | Consistent with noise |
Read the two right-hand columns as the weakest numbers here. The worst bin is an extremum over ten, and its p-value flipped one published verdict when the sample grew by 5.7% while the headline gap barely moved. What replicates is the left-hand column: in the mis-priced seasons the bins lean one way almost uniformly, a level shift across the range. A favourite-longshot bias would have to sit at the same end twice, and it does not.
Where these figures come from — code version 1f7b1e5cd378
Each market and season is reported separately and never pooled: a figure blended across seasons is not a coarser answer to this question but an answer to a different one.
The figures cover the closing prices collected so far and move when the study is run again on a larger set. Every one comes from one run of the study at this code version, with its random draws fixed, so running it again at the same version gives the same numbers; none is edited by hand.