Predicting Run Expectancy in MLB: Dynamic Scoring Models
Run expectancy is the mathematical foundation of nearly every baseball prediction system. It answers a deceptively simple question: given the current base-out state, how many runs should we expect to score before the inning ends? The answer to that question, calculated across every possible combination of runners and outs, creates the framework on which plate appearance values, lineup optimization, and game-level projections are built.
The concept is straightforward. The execution is not. A static run expectancy table derived from historical averages provides a starting point, but it fails to account for the specific pitcher on the mound, the specific batters in the lineup, the park dimensions, the era-level run environment, or a dozen other contextual factors that determine how many runs a team will actually score. Modern prediction systems build dynamic run expectancy matrices that adjust for all of these factors in real time, producing context-specific scoring expectations rather than one-size-fits-all averages.
The 24 Base-Out States
Baseball has eight possible configurations of baserunners (empty, first, second, third, first and second, first and third, second and third, and bases loaded) combined with three possible out counts (zero, one, or two). That produces 24 distinct base-out states that fully describe the inning situation at any point during play.
The historical run expectancy for each state can be calculated by averaging the number of runs that actually scored from that point forward through the end of the inning, across every instance in the play-by-play record. Using modern-era data, the approximate values look like this:
| Base State | 0 Outs | 1 Out | 2 Outs |
|---|---|---|---|
| Empty | 0.481 | 0.254 | 0.098 |
| 1st | 0.859 | 0.509 | 0.224 |
| 2nd | 1.100 | 0.664 | 0.319 |
| 3rd | 1.357 | 0.950 | 0.353 |
| 1st & 2nd | 1.437 | 0.884 | 0.429 |
| 1st & 3rd | 1.798 | 1.130 | 0.478 |
| 2nd & 3rd | 1.965 | 1.376 | 0.580 |
| Bases Loaded | 2.282 | 1.572 | 0.689 |
These numbers encode an enormous amount of baseball reality. A runner on second with nobody out (1.100 expected runs) is worth more than a runner on first with nobody out (0.859), which is why a sacrifice bunt that moves a runner from first to second with one out actually decreases run expectancy in most contexts: the runner advances from 0.509 (first, one out) to 0.664 (second, one out), but the sacrifice consumes an out, and the net change from the pre-bunt state (first, zero outs = 0.859) is negative.
Why Static Tables Fail
The table above represents a league average across all parks, all lineups, and all pitchers. That average is useful as a baseline but misleading as a prediction tool. The actual run expectancy in any given game depends on who is pitching, who is batting, where the game is being played, and what era of baseball we are in.
Consider the difference between a bases-loaded, nobody-out situation with a lineup of elite hitters facing a struggling reliever versus the same base-out state with a weak-contact hitter facing a dominant closer. The base-out state is identical. The actual scoring probability is vastly different. A static table assigns 2.282 expected runs to both situations. A dynamic model might assign 3.1 to the first and 1.4 to the second.
Era effects compound the problem. Run environments change over time. The league-average runs per game in 2000 was 5.14. By 2014 it had dropped to 4.07. By 2023 it was back up to 4.62. A run expectancy table built from 2000 data will systematically overestimate scoring relative to a low-run environment, and vice versa. Models that anchor to a fixed historical table inherit whatever bias that era contained.
Park effects add another layer. Coors Field inflates run expectancy across all 24 states by roughly 30 to 40 percent relative to a neutral park. Oracle Park suppresses it. A prediction system that uses a single table for all parks misses these large, well-documented effects.
Building Dynamic Run Expectancy
Dynamic run expectancy replaces the single static table with a matrix that adjusts for the specific conditions of each game. The adjustment process typically involves several layers.
Era and League Adjustment
The first layer scales the baseline table to reflect the current run environment. If the league is scoring 4.5 runs per game and the table was built from data averaging 4.8 runs per game, every cell in the matrix is scaled proportionally downward. This is the simplest adjustment but it matters: a 6 percent reduction in run environment affects every prediction downstream.
Park Factor Adjustment
Park factors modify the scaled matrix based on the venue. A park with a run-scoring factor of 1.15 inflates all cells by approximately 15 percent. More sophisticated models apply park factors that differ by handedness, batted-ball type, or even base-out state, since some parks disproportionately affect extra-base-hit probability (which matters more in states with runners in scoring position).
Pitcher Quality Adjustment
The most impactful adjustment is for the pitcher on the mound. A dominant starting pitcher suppresses run expectancy across all 24 states. An elite closer entering in a high-leverage situation suppresses it even further. This adjustment is typically implemented by modifying the transition probabilities between states based on the projected outcome distribution of the pitcher.
Lineup Quality Adjustment
The batting lineup modifies run expectancy from the offensive side. A lineup stacked with high-OBP and high-power hitters produces higher expected runs from every base-out state than a lineup of replacement-level batters. This adjustment interacts with the pitcher adjustment: a good lineup against a weak pitcher amplifies both adjustments multiplicatively, not additively.
Transition Probabilities Between States
Run expectancy values are not calculated in isolation. They are derived from the probabilities of transitioning between base-out states. Every plate appearance starts in one state and ends in another. A single with a runner on first and nobody out transitions the game from state (first, 0 outs) to state (first and third, 0 outs) if the runner advances two bases, or to (first and second, 0 outs) if the runner holds. A strikeout transitions from (first, 0 outs) to (first, 1 out).
The complete set of transition probabilities between all 24 states (plus the absorbing state of three outs ending the inning) forms a transition matrix. The run expectancy for each state is the sum of immediate runs scored plus the expected future runs from the resulting state, weighted by the probability of each transition.
Dynamic models modify these transition probabilities based on the batter-pitcher matchup. A power hitter facing a fastball-dominant pitcher has different transition probabilities than a contact hitter facing a curveball specialist. By adjusting the transition matrix for each plate appearance, the model produces context-specific outcome distributions that cascade through the entire run expectancy calculation.
The Markov Chain Framework
Mathematically, run expectancy calculation is a Markov chain problem. Each base-out state is a node in the chain. The transition probabilities define the edges. The absorbing state is three outs. The expected runs from any starting state can be calculated by solving the system of linear equations defined by the transition matrix, or equivalently, by Monte Carlo simulation that samples paths through the chain thousands of times.
The Markov property, meaning the future depends only on the current state and not on how we got there, is an approximation. In reality, game context introduces dependencies that violate strict Markov assumptions. A team that has already scored five runs in an inning may face a different reliever than a team in a scoreless inning. The fatigue level of the pitcher depends on the number of pitches thrown, not just the current base-out state. Managers make strategic decisions (intentional walks, pitching changes, defensive shifts) based on context that extends beyond the current state.
Despite these violations, the Markov framework provides a computationally efficient and remarkably accurate baseline. Full game simulation models can incorporate the contextual dependencies that the Markov model ignores, but they require substantially more computation. For many prediction tasks, the Markov approximation captures 90 percent or more of the information at a fraction of the computational cost.
Applications in Prediction Systems
Dynamic run expectancy serves as the foundation for multiple layers of a prediction system. At the plate-appearance level, the change in run expectancy from one state to another quantifies the value of every event. A double that moves the team from (first, one out) to (second and third, one out) increases run expectancy by 0.867 runs in a neutral context. That value becomes the basis for metrics like RE24, which evaluates player performance by the run-expectancy changes they produce.
At the inning level, run expectancy determines the expected scoring distribution. The probability of scoring exactly zero, one, two, or more runs from any starting state can be derived from the transition matrix. This distribution feeds into game-level models that need to know not just the expected runs per inning but the variance and shape of the scoring distribution.
At the game level, run expectancy connects to win probability. The expected runs scored by each team in each remaining inning, combined with the current score, determine the probability that each team wins. Lineup construction decisions are evaluated by their impact on the game-level run expectancy distribution, not just individual plate-appearance outcomes.
Run expectancy also informs in-game strategy evaluation. Should the manager attempt a stolen base? The break-even success rate depends on the run expectancy difference between the current state and the two possible outcomes (success and failure). A stolen base attempt with a runner on first and nobody out needs to succeed roughly 72 percent of the time to be a positive expected-value decision, a number derived directly from the run expectancy matrix.
The quality of the run expectancy model constrains the quality of every downstream prediction. A system built on static league-average tables will produce adequate but imprecise predictions. A system built on dynamic, context-adjusted matrices that account for pitcher quality, lineup composition, park effects, and environmental conditions will produce meaningfully sharper projections. The difference between good and excellent prediction systems often comes down to how well they handle this foundational layer.