If you're a fan of the Baseball Mogul series, you might be wondering why, after 17 years, I chose this year to fully rewrite the simulation engine.
Well, first, some history:
Wednesday, May 30, 2012
Tuesday, May 29, 2012
Pythagoras Explained
Pythagoras of Samos, mathematician and philosopher, died about 2500 years ago. Nevertheless, his name is familiar to baseball fans. The "Pythagorean Expectation", invented by Bill James in the 1980s, predicts a team's winning percentage from runs scored and runs allowed. Despite the intimidating name, Pythagorean win expectations can now be found on mainstream sites like ESPN and MLB.com.
Wednesday, May 23, 2012
Baseball Mogul 2013 - Version 15.07

We have just released Version 15.07 of Baseball Mogul 2013. This is an update to Version 15.00 (which was launched on April 3rd). Simply put, if you were waiting to make sure the bugs were worked out of the initial release, this is the version to buy:
- Fixes a crash bug that was occurring when viewing Scouting Reports for certain players.
- Fixes a bug where a called strike sometimes didn't count on hit-and-run (or run-and-hit) plays.
- Fixes calculation of season and career WAR ("Wins Above Replacement").
- Includes year-by-year lefty-righty stats for every player going back to 1950 (alas, Retrosheet doesn't have complete data before that).
- Improves manager AI and pitcher usage patterns.
Happy simming!
Clay
Saturday, March 31, 2012
Kickstarter Project
|
| Just a quick plug for a very cool project I'm working on with some friends (for October, when the weather is great and my brain isn't knee-deep in baseball code). Live-action gaming is one of the world's most maligned hobbies. But my experience is that getting out into the woods with other people and killing zombies in the middle of the night is a lot less dorky than sitting at home alone playing World of Warcraft. Please pass this link along to anyone who might be interested (in New England, or willing to drive).
|
Sunday, March 25, 2012
Win Expectancy (Baseball Mogul)
Another new feature for Baseball Mogul 2013 is that all the game logs now show Win Expectancy after each play.
Win Expectancy is the chance that a team has of winning the game, based on the inning, score, outs and runners on base. In the case of the Baseball Mogul game recaps, the Win Expectancy for the home team is shown after each play.
Here's an example from the 9th inning of a game I just played in Play-By-Play mode:
At the top of this screen shot, the home team (Washington) is leading the game 4-3, at the start of the 9th inning. In this situation in the current run-scoring environment, this gives the home team an 87.2% chance to win the game.
Then the Washington pitcher walks the leadoff man (Sanchez), dropping their win chance by 9.6% (to 77.6%).
When John Buck doubles down the right field line, the game is tied and the Marlins have the go-ahead run on second base. The biggest play of the inning is when Jose Reyes singles with two outs to knocks in the (eventual) winning run. By the end of the inning, the Marlins are ahead 5-4 and the Nationals chance of winning the game has dropped to 17.4%.
In the bottom of the 9th, Washington's chances just get worse. The leadoff hitter (Marrero) strikes out, dropping their win chance below 10%.
At the end of the game, their chance to win has dropped to 0.0%. (This is self-evident, but it shows that the math adds up).
Win Expectancy is the chance that a team has of winning the game, based on the inning, score, outs and runners on base. In the case of the Baseball Mogul game recaps, the Win Expectancy for the home team is shown after each play.
Here's an example from the 9th inning of a game I just played in Play-By-Play mode:
At the top of this screen shot, the home team (Washington) is leading the game 4-3, at the start of the 9th inning. In this situation in the current run-scoring environment, this gives the home team an 87.2% chance to win the game.
Then the Washington pitcher walks the leadoff man (Sanchez), dropping their win chance by 9.6% (to 77.6%).
When John Buck doubles down the right field line, the game is tied and the Marlins have the go-ahead run on second base. The biggest play of the inning is when Jose Reyes singles with two outs to knocks in the (eventual) winning run. By the end of the inning, the Marlins are ahead 5-4 and the Nationals chance of winning the game has dropped to 17.4%.
In the bottom of the 9th, Washington's chances just get worse. The leadoff hitter (Marrero) strikes out, dropping their win chance below 10%.
At the end of the game, their chance to win has dropped to 0.0%. (This is self-evident, but it shows that the math adds up).
Thursday, March 22, 2012
Strike Zone Heat Maps (Baseball Mogul)
As I mentioned here, this is the year that Baseball Mogul went from being a random number generator (like Strat-O-Matic or previous computer sports games) to becoming a true physics-based simulation of each pitch. However, it's difficult to determine if our model is realistic without having a way to visualize the results. So, I added heat maps to Baseball Mogul 2013, plus the functionality to record data for every single pitch.
Ideally, we should see the same patterns in our data that we see in Major League Baseball. For example, we know from actual pitch data that BABIP (Batting Average on Balls In Play) varies by pitch location:
This heat map is for right-handed batters only, with a view from behind the catcher. Imagine the batter standing to the left of the strike zone.
As you can see, BABIP is slightly higher in the lower part of the strike zone, because low pitches lead to more ground balls, and ground balls turn into hits a bit more often than fly balls.
And, the "hot zone" for BABIP tilts. That is, on low pitches, the highest BABIP occurs just inside the middle of the plate. On higher pitches, this region is a bit farther away from the batter.
This prime hitting zone tilts at this angle because the sweet spot of the bat passes through the strike zone roughly along this line. With the bat (and arms) pivoting on the batter's shoulder, it's easier to reach the high outside corner with the heart of the bat than it is to reach the high inside corner. So, with Baseball Mogul, I modeled the bat moving through the strike zone, by assigning different coeffecients of restitution to each point on the bat. The coefficient of restitution (COR) reflects how quickly the ball comes off the bat at each spot. It can be represented as a parabolic function along the length of the hitting surface, with the COR peaking at the bat's sweet spot.
I hope I didn't lose you with the technical jargon. Simply put, once this COR model is added to the simulation, we should see results that look somewhat like real life. So here's the same heat map from one season of Baseball Mogul:
Wow.
I honestly didn't expect it would look that good. As with the first heat map, BABIP is highest from the middle of the plate down to the bottom edge. And, we see the same tilt: on low pitches, the batter is more likely to hit the ball solidly if it's over the inner half of the plate. As the pitch moves up in the strike zone, BABIP improves as the pitch moves toward the outer half.
Very cool. I'm really looking forward to using these heat maps to continue to dig into the new simulation engine.
Ideally, we should see the same patterns in our data that we see in Major League Baseball. For example, we know from actual pitch data that BABIP (Batting Average on Balls In Play) varies by pitch location:
![]() |
| Heat map by Dave Allen |
As you can see, BABIP is slightly higher in the lower part of the strike zone, because low pitches lead to more ground balls, and ground balls turn into hits a bit more often than fly balls.
And, the "hot zone" for BABIP tilts. That is, on low pitches, the highest BABIP occurs just inside the middle of the plate. On higher pitches, this region is a bit farther away from the batter.
This prime hitting zone tilts at this angle because the sweet spot of the bat passes through the strike zone roughly along this line. With the bat (and arms) pivoting on the batter's shoulder, it's easier to reach the high outside corner with the heart of the bat than it is to reach the high inside corner. So, with Baseball Mogul, I modeled the bat moving through the strike zone, by assigning different coeffecients of restitution to each point on the bat. The coefficient of restitution (COR) reflects how quickly the ball comes off the bat at each spot. It can be represented as a parabolic function along the length of the hitting surface, with the COR peaking at the bat's sweet spot.
I hope I didn't lose you with the technical jargon. Simply put, once this COR model is added to the simulation, we should see results that look somewhat like real life. So here's the same heat map from one season of Baseball Mogul:
![]() |
| Heat map by Baseball Mogul 2013 |
I honestly didn't expect it would look that good. As with the first heat map, BABIP is highest from the middle of the plate down to the bottom edge. And, we see the same tilt: on low pitches, the batter is more likely to hit the ball solidly if it's over the inner half of the plate. As the pitch moves up in the strike zone, BABIP improves as the pitch moves toward the outer half.
Very cool. I'm really looking forward to using these heat maps to continue to dig into the new simulation engine.
Tuesday, March 20, 2012
Pitch Tracking and the "Charts" Tab (Baseball Mogul)
Baseball Mogul 2013 now tracks and records every single pitch of your simulation. Pitch type, speed, location, result. etc.
In conjunction with this, we have now added a 'Charts' tab to every player's Scouting Report:
The above chart was created by simulating from the 2012 season through 2025. It shows BABIP (Batting Average On Balls In Play) for all lefties that Strasborg faced.
You can also limit the search to certain pitch types (fastballs, sliders, etc.) and situations (2 outs, RISP, "close and late"). For example, here's Jason Heyward's Slugging Percentage on just fastballs:
In conjunction with this, we have now added a 'Charts' tab to every player's Scouting Report:
The above chart was created by simulating from the 2012 season through 2025. It shows BABIP (Batting Average On Balls In Play) for all lefties that Strasborg faced.
You can also limit the search to certain pitch types (fastballs, sliders, etc.) and situations (2 outs, RISP, "close and late"). For example, here's Jason Heyward's Slugging Percentage on just fastballs:
Finally, you can limit the search to at-bats against one team or one specific player, such as Dustin Pedroia versus the Yankees from 2012 through 2020:
Subscribe to:
Posts (Atom)








