๐Ÿ“Š How BaseChaser Works

The math and logic behind MLB playoff probability simulations

100,000
Simulations per update
2,077
Remaining games modeled
85% / 15%
WAR / Game Elo blend
162
Games in full season

The Simulation Engine

BaseChaser runs 100,000 independent Monte Carlo simulations every time new data is fetched. Each simulation plays out the remainder of the season game-by-game, applying win probabilities derived from team strength ratings. At the end of each simulated season, the playoff field is determined and recorded.

After all 100,000 simulations complete, the playoff probability for any team is simply the fraction of simulations in which that team earned a playoff berth โ€” e.g., a team makes the playoffs in 67,400 of 100,000 sims โ†’ 67.4% playoff odds.

Every update runs fresh simulations from scratch. No historical trails or momentum are baked in โ€” each simulation is an independent roll of the dice given current standings and remaining schedule.

Team Strength: Elo + WAR

Each team's win probability for any given game is derived from a blended Elo rating that combines two sources of signal:

Game Elo (15% weight)

Computed from actual MLB game results this season. After each completed game, the winning team's Elo goes up and the losing team goes down. The K-factor (volatility) is set to 2, meaning individual games cause modest Elo swings โ€” a team's rating reflects sustained performance, not hot streaks.

WAR Elo (85% weight early season)

FanGraphs bWAR is converted into an Elo-equivalent using a linear mapping:

โš ๏ธ Early season: Game Elo is compressed near 1500 for all teams (minimal signal from 20-30 games). WAR prior carries the most weight early and fades as the season progresses.

WAR Blending Formula

As the season progresses, the model shifts weight from last year's WAR toward this year's performance:

blended = (1 โˆ’ games_played/162) ร— 2025_prior + (games_played/162) ร— 2026_YTD

At 22 games (13.6% through): ~86% 2025 WAR / ~14% 2026 YTD. By August, game results dominate.

Raw YTD WAR is used as-is โ€” it is NOT projected to a full-season pace, which avoids impossible projections for teams with extreme early-season numbers.

Game Win Probability

For each simulated game, home win probability is:

P(home wins) = 1 / (1 + 10^(โˆ’elo_diff / 400))

where elo_diff = home_elo โˆ’ away_elo + 15 (home field advantage = +15 Elo points). Win probability is clipped to a 30%โ€“70% range to prevent degenerate scenarios.

Playoff Structure

MLB playoff rules are fully modeled:

Special Scenarios

BaseChaser computes several advanced scenario types from the same 100k pool:

Best & Worst Case Tonight

For each team, the most favorable and unfavorable outcomes for today's games are forced, then the remaining schedule is simulated normally. The range between best and worst case reflects how much tonight's games can shift a team's odds.

Game Impact Scenarios

Each matchup is analyzed conditionally: what happens to every team's odds if Team A wins at home vs. if Team A loses on the road? These deltas are shown on the game cards and drive the "stakes" narrative.

What-If Tables

The simulation results are grouped by final record. For each team, every unique win-loss outcome that occurred 10+ times across 100k sims is shown with its associated playoff probability and how often it occurred. Rows are capped at 20 and scrollable.

Seed Probabilities

Beyond just making/missing playoffs, BaseChaser computes the probability of landing in each seed 1โ€“12 per league, including the draft lottery implications for non-playoff teams.

Data Sources

DataSource
Standings & ScoresMLB Stats API (statsapi.mlb.com)
Remaining ScheduleMLB Stats API date-range endpoint
Elo RatingsComputed from completed game results
WAR Priorpybaseball library (FanGraphs bWAR)
Team LogosWikipedia via upload.wikimedia.org

Accuracy & Limitations

No model is perfect. BaseChaser's strengths and weaknesses:

What Changed Since Launch

Quick FAQ

Q: Why does my team show 0% when they have a good record?
A: Early season, game Elo is too compressed to separate teams well. If your team's WAR prior says they're better than their record, trust the model to catch up as real games accumulate.

Q: Why is a team at 95% in April?
A: After the WAR prior fix, teams can only hit 90%+ if both their record AND their WAR prior are exceptional. In the early season sample, no team has reached that threshold. If you're seeing 90%+, it's because their actual game record is dominant (15+ wins at a .700+ pace).

Q: How often does BaseChaser update?
A: Every 20 minutes via automated cron. Each update runs fresh 100k simulations.

Q: Can I see yesterday's odds?
A: Yes โ€” the Odds Movement chart shows daily locked snapshots going back to April 4.

Built with Python + NumPy. | Playoff Odds | How to Use | FAQ | 2026 Braves