RE24

Motivation & Background

“Would you rather have a runner on 2nd with no outs or a runner on 3rd with one out?”

I liked to start of my sabermetrics classes with some discussion about current players or teams or a situation that would motivate the lesson for the day, and the question above was one of my favorites. Students would bring up the importance of being able to bring a runner on 3rd home, or the value of having more opportunities (read: outs remaining) to drive in the runner. Some would bring up context: Who’s hitting? Who’s pitching? What’s the score? What inning? etc.

The Run Expectancy and Run Probability Matrices are tools that one could use to help inform a manager decision to answer the question above. They’re also tools that can help analyze players and pitchers by going beyond opportunistic stats such as RBIs and Runs.

Run Expectancy Matrix

The idea behind the values in the matrix is straightforward: For each baserunner-out situation, what is the expected number of runs scored the rest of the half inning? So for the motivating question, when there’s a runner on 2nd with 0 outs, we’d expect 1.155 runs the rest of the inning, and when there’s a runner on 3rd with 1 out, we’d expect 0.905 runs. All else equal, and assuming we’re trying to *maximize the amount of runs we’re trying to score, we’d rather be in the former situation.

Computing this isn’t too bad and there are several precomputed tables out there, but I hadn’t seen any include the entire 2025 season. While there’s a function in R to help one compute the values, I wanted to do it in python. Special thanks to Kyle Bland for the code, which I tweaked and hung on my GitHub, and also for a great explanation about the matrix.

Outs 0 Outs 1 Out 2 Outs
Base State      
_ _ _ 0.497 0.265 0.104
1 _ _ 0.876 0.512 0.219
_ 2 _ 1.155 0.650 0.320
_ _ 3 1.299 0.905 0.325
1 2 _ 1.602 0.933 0.451
1 _ 3 1.837 1.206 0.444
_ 2 3 1.965 1.398 0.548
1 2 3 2.496 1.579 0.719

That’s it, that’s the table. Side note, these values are used in finding linear weights, which in turn are used for other advanced stats such as wOBA.

Analyzing hitters

Now to use this to analyze batters, we could look at the total number of runs above expected that they contributed at the plate using the following equation:

\[ Run Value = Expected Runs_{New state} - Expected Runs_{Old state} + RunsScoredOnPlay\] The idea behind this is we’re attributing the change in baserunner-out state to the batter. For example, a leadoff single has a Run Value of \(0.876-0.497+0 = 0.379\). An inning-ending double play with the bases loaded and no runners scored has a Run Value of \(-1.579\) and is the one of the worst possible plays in terms of Run Value, only behind triple plays that have no runners score. The highest Run Value occurs on a grand slam with two outs, giving a Run Value of \(0.104-0.719+4=3.385\). Below is the top 10 leaders in RE24 for batters in 2025, and here’s a list of who produced the most Run Value in the 2025 regular season (min. 502 PAs).

Player Team RE24
Aaron Judge NYY 71.686
Juan Soto NYM 47.995
Kyle Schwarber PHI 47.542
Shohei Ohtani LAD 42.762
George Springer TOR 41.859
Freddie Freeman LAD 37.280
Cal Raleigh SEA 36.544
Rafael Devers BOS/SF 35.013
Geraldo Perdomo ARI 33.828
Jose Ramirez CLE 33.552

Analyzing Pitchers

RE24 can also be used to analyze pitchers in the same way it was used for batters. It measures how many runs above average did the pitcher give up, so lower is better, as you can see from the leaderboard below or the full leaderboard. Starting pitchers don’t inherit any runners or outs, so their stat is closely related to ERA*IP. They’ll tend to lead both ends of the leaderboard when looking at total RE24 due to their high volume of innings pitched. Below is the top 10 leaders in RE24 for pitchers in 2025, and here’s a list of who produced the most Run Value in the 2025 regular season (min. 100 PAs).

Name Team re24
Paul Skenes PIT -48.9285
Tarik Skubal DET -44.7914
Cristopher Sanchez PHI -44.1328
Garrett Crochet BOS -43.6804
Freddy Peralta MIL -36.5034
Hunter Brown HOU -35.7782
Yoshinobu Yamamoto LAD -34.2904
Nathan Eovaldi TEX -33.9676
Trevor Rogers BAL -30.9783
Jacob deGrom TEX -30.468

Run Probability Matrix

A similar idea to the Run Expectancy Matrix is the Run Probability Matrix. The only difference is that instead of trying to find the average number of runs scored the rest of the inning from a given out-baserunner state, we focus on the probability of scoring at least one run the rest of the inning from the out-baserunner space. For the untrained eye, the difference is subtle and might not seem imporant. However, considering a strategy standpoint, things change throughout the game. If you’re batting in the bottom of the 9th of a tie game, you’re not focused on maximizing the number of runs, but rather scoring a single run. Tom Tango has some tables of Run Probability Matrices on his website, and I modified the code from the Run Expectancy Matrix to make the table above for 2025; the code is in the same file on my Github. Notice that (under a shallow analysis) Yamamoto’s walk of Barger in the bottom of the 11th in Game 7 of the World Series changed the Expected Runs from 0.905 to 1.206, but it decreased the probability of Toronto scoring at least one run from 0.648 to 0.642. That walk led to a higher variance situation, with more risk and more potential reward, and indeed it paid off.

Outs 0 Outs 1 Out 2 Outs
Base State      
_ _ _ 0.270 0.160 0.071
1 _ _ 0.398 0.254 0.116
_ 2 _ 0.608 0.383 0.217
_ _ 3 0.806 0.648 0.232
1 2 _ 0.621 0.410 0.224
1 _ 3 0.850 0.642 0.238
_ 2 3 0.841 0.682 0.237
1 2 3 0.869 0.672 0.300

*There’s a subtlety here. We may not always want to maximize the number of runs scored. Early in the game, that’s a great strategy and we may want to leave the runner on 2nd, but if we’re in the bottom of the 9th of a tie game and we’d like to maximize the probability of scoring at least one run, the table tells us that having a runner on 3rd with 1 out leads to at least one run being scored \(64.8\%\) of the time, and having a runner on 2nd with no outs only scores a run \(60.8\%\) of the time. So in that case, it’d be nicer to have the runner on 3rd with one out.

One last word: We’re not magically given one of the two scenarios above, but rather we may be able to sacrifice bunt the runner over with a certain probability. The matrix can be used this way to inform decisions about sacrifice bunts, stealing bases, intentional walks, etc. One can easily use probabilities of various outcomes to calculate the break-even point for when it’s worth attempting to steal or a sacrifice bunt, as Kyle Bland does in the blog post linked above. I’ll save it as an exercise for the reader.