Loading…
Loading…
MarketModel
Every shot in every game gets an expected-goals (xG) value: the chance that a shot from that spot, of that type, in that situation becomes a goal. Summed over a game, xG measures how many goals a team “should” have scored — a steadier signal of team quality than goals, which bounce around with luck and goaltending.
For tonight's games, the model combines each team's xG share (5-on-5 and all situations, regressed toward league average), Elo rating, points percentage, the starting goalies' goals saved above expected, rest and back-to-backs, and home ice. It produces a win probability that includes overtime and the shootout. Projected goals are derived from the published forecast, not a separate goal model.
Current modelPony xG logistic + Elo — Regularised logistic regression on pregame features (xG-share form, Elo, goaltending, points%, rest), blended with the de-vigged betting market.
Training seasons: 2022-23, 2023-24, 2024-25, 2025-26. Every change to the model is tested walk-forward (train on the past, predict the next season) and only goes live if it beats the current model on log loss.
The market probability comes from the moneyline odds with the bookmaker's margin (the “vig”, about 4%) removed, so the two sides add up to 100%. The published forecast (the bar's fill) is the model blended with that de-vigged market: early in the season the market carries 80% of the weight and the model 20%, and the model's share grows as teams play more games. The model diamond shows the unblended model, so you can see where it disagrees. Fair odds is the moneyline that matches the published forecast exactly.
The betting market is a very good forecaster. We treat it as the benchmark to beat, not as noise — and we say so when we haven't beaten it.
Edge (EV) is the expected profit per unit staked: EV = forecast probability × decimal odds − 1, using the published, market-blended forecast. Edges are only highlighted, and units only suggested, when the model has shown over a meaningful sample that its disagreements with the market carry real information. Until that bet gate opens, new edges and stakes are hidden; the ledger on the Accuracy page still grades every stake the site ever suggested.
1 unit (1u) = 1% of bankroll. Stakes are quarter-Kelly, capped at 5u.
Gate closed
Bet sizes are hidden: the model has not yet proven an edge over the betting market.
Nothing here is betting advice. Probabilities are estimates and can be wrong. 21+, 1-800-GAMBLER.
On opening night nobody has played, so the model starts from a preseason prior: last season's ratings, regressed toward league average to account for roster changes. As games are played this season's data takes over; by roughly 20 games per team the prior matters little. The 2026-27 season is 84 games long.
League ranks (#1–#32) stay hidden until every team has played enough games to rank.
Every prediction is frozen before puck drop and graded after the final horn. We report three numbers, always next to simple baselines:
Overtime and shootout games count as wins and losses like any other.
2025-26 season, live predictions only (regular).
| Forecaster | n | Acc | Brier ↓ | Log loss ↓ |
|---|---|---|---|---|
| Previous site model (live) | 339 | 54.9% | 0.2451 | 0.6831 |
| Always home-rate | 339 | 51.0% | 0.2509 | model better0.6950 |
| Betting market (de-vigged) | 328 | 56.0% | 0.2418 | beats model0.6763 |
2026-27 so far.
| Forecaster | n | Acc | Brier ↓ | Log loss ↓ |
|---|---|---|---|---|
| Previous site model (live) | 3 | 50.0% | 0.2753 | 0.7476 |
| Always home-rate | 3 | 66.7% | 0.2392 | 0.6716 |
| Betting market (de-vigged) | 3 | 50.0% | 0.2936 | 0.7932 |
Walk-forward backtest. For each season below, the model was trained only on the seasons before it, then scored on every game of that season (regular season and playoffs), next to the model it replaced. In the first weeks of those seasons its log loss was 0.6798. Full seasons have no stored market prices; the MKT row compares the model with the de-vigged market on the games that do.
| Test season | n | Acc | Log loss ↓ | Prev. model | Home rate | Market |
|---|---|---|---|---|---|---|
| 2023-24 | 1,399 | 60.1% | 0.6591 | 0.6757 | 0.6910 | — |
| 2024-25 | 1,206 | 58.1% | 0.6654 | 0.6703 | 0.6867 | — |
| 2025-26 | 1,394 | 53.9% | 0.6793 | 0.6849 | 0.6935 | — |
| 2025-26 · MKT | 410 | — | 0.6689 | 0.6823 | — | 0.6744 |
Headline numbers use live pregame snapshots only. Retro (back-filled) rows are counted in n_retro_excluded and never mixed in. Market = de-vigged (power method).
Report 2026-09-30 21:28 UTC · Pony xG logistic + Elo
Goalie strength is measured by goals saved above expected (GSAx): expected goals against minus goals actually allowed. Starting goalies come from team and beat-reporter reports (DailyFaceoff, ESPN). The name's colour carries the status — green confirmed, faded green likely, grey projected — with no extra words on the card.
The open panel under a game adds context the model uses or that fans ask about: recent form (L7, or L1–L6 early in the season), head-to-head this season, power play and penalty kill, and rest (back-to-backs and compressed stretches). The “Why” bars show how much each factor pushes the forecast toward one team, diverging from the centre in team colours. They follow the same sample rules as above — this season first, prior-season values tagged.
Player impact is measured in standard deviations from the average player at the same position (0 = average). Each skater gets four z-scores — even-strength offence, even-strength defence, power play and penalty kill — built from on-ice and individual xG rates and a ridge-regression (RAPM-style) estimate that separates him from his linemates. Impact weights them 50/20/20/10 for forwards and 25/40/15/20 for defence. Ratings rebuild once the league has played enough games; until then last season's ratings show with a season tag, with teams updated for offseason moves.
Playoff odds come from simulating the rest of the season thousands of times with the same game model. On Standings:
The data pipeline runs hourly from late morning to late evening Eastern on game days. The dot in the top bar shows when it last finished and turns red only if a scheduled run was missed. Times show in your time zone.