Current MLB model: mlb-elo-mc-v3
PaceToWin shows two kinds of numbers. Win pace is our own arithmetic on a team's record. Playoff odds come from a different source in each league, and we name the source beside every figure:
- MLB: our own model (Elo ratings and a simulation of the remaining schedule), built on MLB's Stats API.
- NFL: ESPN's Football Power Index (FPI).
- NBA: ESPN's Basketball Power Index (BPI).
- NHL: MoneyPuck's simulations.
Records, standings and schedules on every page come from ESPN's public feeds. Before we store or show a set of standings we check it: the league's full team count (30 MLB, 32 NFL, 30 NBA, 32 NHL) and a well-formed record for every team. A set that fails is neither cached nor kept as a fallback.
MLB
These odds are ours. We pull the full schedule and standings from MLB's Stats API and rate all 30 teams with an Elo system that starts every team level each season and updates only on results (K = 4, home edge 24 Elo points). Early in the season each rating is blended with a run-differential estimate: the Elo share is games played ÷ (games played + 30), so the two count equally at 30 games and results dominate by late season. Then we play out every remaining game 20,000 times, seeding each simulated season by MLB's rules (three division winners take seeds 1–3, three wild cards seeds 4–6, the top two seeds get a bye) and breaking ties as MLB does: head-to-head, then division record, then league record. Ties among three or more clubs are compared pair by pair, and anything still level is broken at random.
The simulation is seeded from the season, the number of finals played, the next scheduled game and the model version, so the same standings always produce the same odds. The odds are recomputed after every final; a copy older than six hours is refreshed on the next request. No calibration stretch is applied (stretch 1.00).
We publish how often each team makes it as a whole number (“<1%” and “>99%” at the extremes), because a 20,000-run simulation has a noise floor of about 0.3 points. Our API keeps one decimal and adds the standard error (se) so anyone using it can see that floor. Our game forecasts are scored all season; the current Brier score per model version is shown below against a baseline.
Magic and elimination numbers use wins and losses and MLB's tiebreak order. When the head-to-head and division records we hold already settle a tie at the cut line whatever happens in the remaining games, the number reflects it and the page names the tiebreak. Otherwise (including any tie that could involve three clubs) the number assumes the worst case. A team is called clinched or eliminated only when it is mathematically certain, and there is one definition of eliminated: the model uses the standings' own.
NFL
We don't model the NFL. Percentages are ESPN's Football Power Index, shown as published and rounded to whole numbers. FPI updates about once a day, so during Sunday's games you are seeing that morning's numbers; the timestamp beside them is the data's own, not the time you loaded the page. Clinched and eliminated are the NFL's own designations as ESPN publishes them. The seven-day movement is our own record of how FPI changed.
NBA
Percentages are ESPN's Basketball Power Index, shown as published and rounded to whole numbers. There have been no division berths since 2015-16: in each conference the top six qualify and seeds 7–10 play in. A team that has clinched a play-in berth has not clinched a playoff spot, and we say which: a top-six team in that position shows “In position” with “Clinched play-in berth” beside it, never “Clinched playoff spot”. In the offseason we show how last season finished.
NHL
Percentages are MoneyPuck's simulations, credited wherever they appear (“Data: MoneyPuck.com”). MoneyPuck's file carries no date of its own, so the time beside NHL odds is when we last fetched it, and we show the numbers only once they pass the same checks as every other source. Hockey races on points (2 for a win, 1 for an overtime or shootout loss); the field is the top three in each division plus two wild cards per conference. Clinched and eliminated are the NHL's designations via ESPN.
Win pace
Win pace is a straight line: a team's current win rate extended over its full schedule (17 NFL games, 82 NBA and NHL games, 162 MLB games). It is not a probability, and we label it that way. Where shown, expected wins use points (or runs) scored and allowed, a Pythagorean estimate; NHL pages also project points.
How old a number can be
Every number carries its own source's time: standings show when the standings were fetched, and odds show the odds' own time. When a source fails we keep showing the last copy that passed our checks, marked as delayed (“showing last good update”, “last known”), and only up to a limit. Past that limit we show nothing rather than an old number.
- Standings: refreshed from ESPN at most once a minute during a season. If ESPN fails, the last good copy is served for up to 24 hours, then a durable last-known-good copy (saved only after validation) for up to 72 hours.
- Playoff picture pages: rebuilt at most every five minutes; if a rebuild fails, the last one stays up for up to 24 hours with “showing last good update”.
- MLB odds (our model): recomputed after every final and at least every six hours on demand; if a recompute fails, the last result is served for up to 72 hours, marked “last known”.
- NFL, NBA and NHL odds: re-checked hourly; if the provider fails or its numbers fail validation, the last good copy is served for up to 48 hours, marked “last known”. Our health check raises an alarm once a league's odds are more than 30 hours old.
- Offseason: a finished season's final standings are re-checked daily.
Calibration scorecard
Every MLB game forecast the model makes is logged and scored once the game is final. The Brier score is the average squared gap between the forecast and what happened: 0 is perfect, lower is better. The baseline gives every home team the same chance (the home teams' actual win rate over those games). Skill is how far our score beats the baseline. Each model version is scored only on its own forecasts, so one version's record never mixes with another's. The current version is scored over the current season; earlier versions over their whole record (the Period column says which).
Scorecard unavailable right now. It loads live from our public health check (/api/health.php).
| Model version | Games scored | Brier | Baseline | Skill | Period |
|---|
MLB model changelog
The MLB playoff odds are PaceToWin's own model: Elo ratings plus a Monte Carlo simulation of the remaining schedule. Every change to the model gets a new version (MLB_MODEL_VERSION in api/lib/mlb_model.php) and an entry here. Game forecasts are scored per version, so one version's record never mixes with another's.
mlb-elo-mc-v3 (2026-09-27)
- Calibration stretch reverted from 1.10 to 1.00 (no stretch). The v2 fit improved the holdout Brier score from 0.2430 to 0.2428 on 218 games, a difference well inside its own noise. A stretch other than 1.00 comes back only from a fit on one season and one model version whose holdout gain is larger than its standard error, recorded here with the numbers.
- Seeded simulation at N = 20,000. The seed comes from the season, the number of finals played, the next scheduled game and the model version, so the same schedule state always gives the same odds. Standard error at 78%: about 0.3 points (it was 0.6 at 5,000).
- Magic and elimination numbers account for MLB's tiebreak order (head-to-head, then division record, then league record) where we hold the records.
- One elimination definition: the model uses the standings' clinch and elimination logic instead of its own flag.
mlb-elo-mc-v2 (2026-09-12)
- Logit-space recalibration of each game's win probability with a stretch of 1.10, fitted on 726 resolved v1 forecasts (70/30 chronological holdout).
mlb-elo-mc-v1 (2026-07-19)
- First version: Elo ratings (K = 4, home edge 24 points, blended early with a run-differential estimate) and 5,000 simulated seasons per update, unseeded, seeding and tiebreaks by MLB's rules. No calibration stretch.
Affiliation
Not affiliated with or endorsed by ESPN, MoneyPuck, MLB, NFL, NBA or NHL. Team names, logos and league marks belong to their owners and are used only to identify the teams. Data is read from public sources and credited to them; we never send those sources anything about you.
← Back to PaceToWin · Compare two teams · How our numbers work · Privacy