October 31 performance report
6 archived forecasts graded · 10 NHL games final · goalie-v2-unified
Coverage limitation: All 10 games are final, but only 6 had archived pregame probabilities. The 4 missing games are not scored or reconstructed. These are conditional results for the available forecasts—not an accuracy claim for the full slate. November 1 games are not included.
Half-goal probability accuracy
Lower Brier and log-loss are better. A fixed 50% Over forecast scores 0.2500 binary Brier and 0.6931 log-loss. This is an uninformative reference, not a closing-market benchmark.
| Threshold | Average P(Over) | Observed Over | Brier | Log-loss | Direction correct |
|---|---|---|---|---|---|
| Over 5.5 | 59.6% | 4/6 (66.7%) | 0.2068 | 0.6043 | 4/6 |
| Over 6.5 | 43.7% | 2/6 (33.3%) | 0.2330 | 0.6588 | 3/6 |
Both half-goal scores beat the fixed 50/50 reference on the evaluated subset. Over 5.5 was forecast at 59.6% on average versus 66.7% observed; Over 6.5 at 43.7% versus 33.3% observed. The model selected Over 5.5 in every graded game, so its 4/6 direction result also equals an always-Over rule. Over 6.5 direction was 3/6. Direction counts are not probability scores or sportsbook ROI.
Integer thresholds and pushes
Under/Push/Over are separate classes. Multiclass Brier is the sum across three classes (range 0–2), so do not compare its numeric scale directly with binary Brier. Pushes are not counted as losses.
| Line | Actual U / P / O | Mean P(U) | Mean P(P) | Mean P(O) | 3-class Brier | Log-loss |
|---|---|---|---|---|---|---|
| 6 goals | 2 / 2 / 2 | 40.4% | 15.9% | 43.7% | 0.6935 | 1.1680 |
| 7 goals | 4 / 1 / 1 | 56.3% | 14.2% | 29.5% | 0.5183 | 0.8970 |
Graded game probabilities
Saved pregame predictions only; first/latest snapshots are identical for all six. Target is the official final score including overtime and any shootout winner bonus.
| Game | Predicted A / H | Predicted total | Final A–H | Actual total | P(O 5.5) | P(O 6.5) |
|---|---|---|---|---|---|---|
| BUF @ LAK | 2.99 / 3.14 | 6.13 | 3–2 | 5 | 57.5% | 41.4% |
| OTT @ SJS | 3.34 / 2.93 | 6.27 | 5–1 | 6 | 59.7% | 43.8% |
| PIT @ MTL | 3.13 / 3.40 | 6.53 | 4–5 | 9 | 63.5% | 47.8% |
| TOR @ VAN | 3.55 / 3.13 | 6.68 | 4–2 | 6 | 65.6% | 50.1% |
| CBJ @ DAL | 2.69 / 3.30 | 5.99 | 1–3 | 4 | 55.3% | 39.2% |
| CGY @ COL | 2.18 / 3.88 | 6.05 | 2–5 | 7 | 56.3% | 40.2% |
Full slate coverage
The earliest saved forecast was 2026-10-31T19:21:29.863997+00:00. The four unforecasted games started at 17:00 or 18:00 UTC, before that snapshot. Their missingness is not random, so the six-game metrics must not be generalized to all ten games. Missing-forecast CSV.
| Game | Start UTC | Final A–H | Total | Evaluation |
|---|---|---|---|---|
| CHI @ BOS | 2026-10-31T17:00:00Z | 4–5 | 9 | not graded: no archived pregame forecast |
| STL @ DET | 2026-10-31T17:00:00Z | 5–4 | 9 | not graded: no archived pregame forecast |
| TBL @ NSH | 2026-10-31T18:00:00Z | 4–5 | 9 | not graded: no archived pregame forecast |
| EDM @ NYI | 2026-10-31T18:00:00Z | 4–0 | 4 | not graded: no archived pregame forecast |
| BUF @ LAK | 2026-10-31T20:00:00Z | 3–2 | 5 | graded |
| OTT @ SJS | 2026-10-31T20:00:00Z | 5–1 | 6 | graded |
| PIT @ MTL | 2026-10-31T23:00:00Z | 4–5 | 9 | graded |
| TOR @ VAN | 2026-10-31T23:00:00Z | 4–2 | 6 | graded |
| CBJ @ DAL | 2026-11-01T00:00:00Z | 1–3 | 4 | graded |
| CGY @ COL | 2026-11-01T02:00:00Z | 2–5 | 7 | graded |
Calibration diagnostics
Five fixed bins; empty bins omitted. Wilson intervals for observed frequencies are very wide with six observations.
| Line | Forecast bin | N | Mean prediction | Observed | Observed 95% interval |
|---|---|---|---|---|---|
| Over 5.5 | 40%–60% | 4 | 57.2% | 50.0% | 15.0%–85.0% |
| Over 5.5 | 60%–80% | 2 | 64.5% | 100.0% | 34.2%–100.0% |
| Over 6.5 | 20%–40% | 1 | 39.2% | 0.0% | 0.0%–79.3% |
| Over 6.5 | 40%–60% | 5 | 44.6% | 40.0% | 11.8%–76.9% |
Goal-mean accuracy
Mean prediction 6.27 vs actual 6.17; total MAE 1.25, RMSE 1.46, mean bias (prediction − actual) +0.11, and team MAE 1.01.
All 12 goalie inputs were estimated. Six games and 60% coverage cannot establish stable calibration or betting value. Do not tune model parameters to this subset or infer improvement from comparison with a different date/model cohort.