MLB Playoff Odds Monte Carlo Simulator avatar

MLB Playoff Odds Monte Carlo Simulator

Pricing

from $5.00 / 1,000 team projections

Go to Apify Store
MLB Playoff Odds Monte Carlo Simulator

MLB Playoff Odds Monte Carlo Simulator

MLB baseball betting odds model. Monte Carlo replays every remaining game on the real schedule for fair division, wild card, playoff and top-seed probabilities for all 30 teams, plus value bets vs sportsbook odds. Keyless ESPN data, no account needed.

Pricing

from $5.00 / 1,000 team projections

Rating

0.0

(0)

Developer

ELIO LIBERATORE

ELIO LIBERATORE

Maintained by Community

Actor stats

0

Bookmarked

3

Total users

2

Monthly active users

a day ago

Last modified

Share

Plays out the rest of the Major League Baseball regular season thousands of times and returns, for every one of the 30 teams, the fair probability of winning its division, taking a wild card, reaching the postseason at all, and finishing with the best record in its league. If you supply bookmaker implied probabilities, it also reports the gap between the model and the market.

Standings and the remaining schedule come from the public ESPN API. No account, no API key, no configuration.

What makes it different

Almost every baseball tool on Apify Store copies numbers out of a website. This one computes something that is not published anywhere: a full distribution of season outcomes built from the actual games each team still has to play.

Three design choices matter.

It simulates the real schedule, not an average one. MLB schedules are unbalanced. A team fighting for a wild card while facing six games against the best team in its division has a harder path than its record suggests. Every remaining fixture is loaded individually, with the correct home and away side, and played out.

It leans on run differential, not just the record. Runs scored and runs allowed predict future wins better than the win-loss column does, because one-run wins and blowout losses carry the same weight in the standings but not in reality. Strength is estimated from Pythagorean expectation blended with the raw record, and you control the mix.

It admits it does not know how good the teams are. A partial season is a noisy sample. The model regresses every team towards .500 by a configurable amount, and then, in each simulated season, redraws each team's true talent from a distribution around that estimate. Without that second step the output is wildly overconfident: the better team wins nearly every simulated race and a 60 percent favourite comes out looking like a 95 percent certainty.

How it works

  1. Pull the current standings, split by league and division, including runs scored and runs allowed.
  2. Convert each team's record into a strength rating on a log-odds scale: blend Pythagorean win percentage with actual win percentage, regress the result towards .500 in proportion to how much season is left, then take the log-odds.
  3. Load every team's remaining fixtures and deduplicate them into one list of games.
  4. For each simulated season, redraw each team's rating with Gaussian noise, then play every remaining game. A home team's win probability is the logistic of the rating gap plus a home field term.
  5. At the end of each simulated season, award the three division titles in each league to the best record in each division, then the three wild cards to the best remaining records, and record who got the top seed.
  6. Average across all simulations to get probabilities and projected win totals.

Sanity check

On a mid-August slate the output lands close to the well-known public playoff-odds models for the clear contenders and clear also-rans, and diverges by ten to twenty points on a handful of teams whose run differential disagrees with their record. That divergence is the point: it is where the model thinks the standings are lying.

Input

Everything is optional. Run it with an empty input and it projects the current season.

FieldTypeDefaultWhat it does
iterationsinteger10000Seasons to simulate. 10000 gives probabilities stable to about half a point.
seasonintegercurrentSet a past year to project that season from where it stood. Useful for backtesting.
regressionGamesinteger70How hard to pull a partial season towards .500. Equivalent to adding this many .500 games.
pythagoreanWeightnumber0.6Share of the strength estimate that comes from run differential rather than the record.
homeFieldAdvantagenumber0.16Home edge in log-odds. 0.16 is roughly a 54 percent home win rate between equals.
strengthUncertaintynumber0.1Spread of the per-season talent redraw. Set to 0 to see how overconfident the model becomes.
edgeThresholdnumber0.05How far the model must beat the market before a team is flagged as value.
marketProbabilitiesarray[]Bookmaker implied probabilities to compare against.

Market entries look like this:

[
{ "team": "New York Yankees", "market": "playoff", "impliedProbability": 0.98 },
{ "team": "Houston Astros", "market": "division", "impliedProbability": 0.45 }
]

Team names are matched loosely, so "yankees" and "New York Yankees" both work. market accepts playoff or division.

Output

One row per team, sorted by playoff probability. Three ready-made views are included in the dataset: a playoff overview, a market edge table, and the records and run differential the model was built from.

FieldMeaning
league, division, team, abbreviationWhere the team sits
gamesPlayed, wins, losses, gamesRemainingCurrent record
runsScored, runsAllowed, runDifferentialScoring profile
actualWinPctWins divided by games played
pythagoreanWinPctWin percentage implied by run differential
trueTalentWinPctThe blended, regressed estimate the simulation actually uses
projectedWins, projectedLossesMean final record across all simulations
fairDivisionProbabilityChance of winning the division
fairWildCardProbabilityChance of taking one of the three wild cards
fairPlayoffProbabilityChance of reaching the postseason by either route
fairTopSeedProbabilityChance of the best record among the division winners in its league
marketPlayoffProbability, marketDivisionProbabilityWhat you supplied, if anything
playoffEdge, divisionEdgeModel probability minus market probability
hasValueTrue when the larger edge clears your threshold
simulationsIterations actually run

Running it once a day

Playoff races move every night. Schedule the Actor to run each morning and you get a fresh table before the day's games. A full 30-team run with 10000 iterations finishes in about three seconds, so a daily schedule costs very little.

Pricing

Pay per result. One result is one team, so a full-league run produces 30 results. There is no subscription and no minimum.

Limitations and honest caveats

It knows records, not rosters. The model has no idea who is on the injured list, who was traded at the deadline, or who is starting tomorrow. A team that just lost its best two starting pitchers still looks as strong as its run differential says it is. On a fast-moving roster this is the model's biggest blind spot.

Tiebreakers are simplified. Real MLB tiebreakers use head-to-head records and other criteria. Ties in a simulated season are broken at random, which is fine for probabilities across thousands of runs but means no single simulated season should be read as a forecast of the actual tiebreak.

Postseason series are not simulated. The output stops at who qualifies and who gets the top seed. It says nothing about who wins the World Series.

It depends on ESPN. If ESPN changes or delays its feed, results change or the run fails. Standings are also as fresh as ESPN makes them, which is usually within hours of the last game.

Probabilities are not predictions. A 30 percent chance happens three times in ten. The value of this tool is comparing its number with a price, not treating it as a forecast.

On betting. If you use this to inform wagers, treat the output as one noisy opinion among many, and never stake money you cannot afford to lose. No model, including this one, turns a losing bet into a winning one.