How the BullpenEdge MLB Projection Model Works
Every projection on BullpenEdge comes from one model that runs several times a day. It does not look at anyone's opinion, and it does not change after a game starts. This article walks through what goes into it and why each piece is there.
Step 1: project the players
A starting pitcher's strikeout rate after three starts tells you very little; after three seasons it tells you a lot. The model handles that with a Marcel-style projection: it blends the current season with the three before it, weighted 1.25, 1.0, 0.8 and 0.6, measures each season against that year's league average, and then pulls the result toward average by adding a fixed amount of league-average playing time. Strikeout rates need only about 70 batters faced of ballast; home-run rates need about 1,000 because they bounce around so much more. Hitters get the same treatment for wOBA with 320 plate appearances of ballast. The method is explained in more detail in Projecting pitchers with the Marcel method.
Step 2: build each team's expected runs
For each side of each game the model estimates how many runs that team should score. The opposing pitching is the biggest input, but it is not only the starter: the starter's projected rates are weighted by the share of the game he is expected to pitch (from his recent starts), and the bullpen covers the rest. The bullpen part only counts relievers who are actually rested — anyone who threw 25 or more pitches yesterday, pitched on each of the last two days or three of the last four is treated as unavailable — weighted by how much each reliever has been used, which is a good proxy for his role.
The batting side is the actual lineup when it has been posted, and otherwise the team's most recent lineup against a pitcher of the same hand. Each hitter's projected wOBA is weighted by how often his batting-order slot comes to the plate, and the model also counts how many hitters have the platoon advantage against the starter.
Then the context: the ballpark's run factor, the temperature and wind at first pitch, the home-plate umpire's history, home field, and the league's current scoring level. Each input's weight was estimated from past seasons by a Poisson regression rather than set by hand.
Step 3: from expected runs to probabilities
Two expected-run numbers are not yet a forecast. Baseball scoring is lumpy — a team that averages 4.5 runs is shut out about 6% of the time and scores ten or more about 7% of the time — so the model turns each team's expectation into a full run distribution (a negative binomial, which fits MLB scoring better than a plain Poisson; see Run distributions in baseball). Combining the two distributions gives the chance of each final score, and from that the win probability, the chance of a one-run game, and the chance of any run total.
Finally the win probability is calibrated. Calibration means checking, across thousands of past games, that events the model called 60% happened about 60% of the time, and adjusting if they did not. What a win probability actually means explains why that matters more than picking winners.
Step 4: test it honestly
The model was tested walk-forward: the full history since 2019 is replayed one day at a time, every game is projected using only what was known the night before, and each test season uses a model fit only on earlier seasons. Across 2022–2026 it picked 57.3% of 12,276 winners, against 52.9% for always choosing the home team and 55.5% for comparing season records. The Methodology page has the season-by-season table and the calibration check, and the Track record grades every live projection.
What it deliberately leaves out
- Hunches, narratives and 'must-win' spots — none of them survive testing.
- Head-to-head history between two teams, which is mostly noise once the pitchers and lineups are known.
- Rest and time-zone travel: we tested them and they added nothing measurable, so they are shown as context but not used in the numbers.
- Player props: they are not published until they pass a backtest of their own.