Showing posts with label Baseball Mogul 2017. Show all posts
Showing posts with label Baseball Mogul 2017. Show all posts

Tuesday, July 18, 2017

Baseball Mogul: Overall Ratings

As mentioned before, Baseball Mogul used to have the problem that player ratings weren’t well-defined. For example, an 85 Contact rating might put a batter among the top 25 players in the league in this category, while an 85 Power rating might not be enough to break the top 100.

There was also a problem of rating drift. When you start a new game in 2011, the MLB average for Contact is 78; ten years later, it has risen to 82.

These problems were fixed in Baseball Mogul 2016 and further improved in Baseball Mogul 2017. Player ratings are now well-defined in terms of what each number means relative to the league. And ratings are constantly adjusted every to ensure that these definitions remain meaningful over multiple seasons.

However, I’ve gotten some questions about how the ratings are actually defined. So, I pulled a couple tables from my design documents to help clear this up. This one shows how Overall ratings are groups into 10 separate categories, each with its own general definition:


This table shows a typical distribution of players in a 30-team league:


Players in Database:  The number of players that should fall within this range in a modern database with 30 teams.

Roster Spot(s): The roster spots that players of this caliber generally fill on a major league roster. For example, players rated 77-78 will occupy roster spots #16 to #20 on an average team; they aren’t good for the starting lineup or pitching rotation (a total of 13-14 players) but they have value off the bench and out of the bullpen.






Friday, April 7, 2017

Improvements to Baseball Mogul 2017


Baseball Mogul 2017 includes more than 130 improvements and bug fixes. As you would expect, we have included hundreds of new major and minor league players, and all MLB player and team statistics through 2016 (including the playoffs, off-season awards, and updated contracts and salaries).

But Baseball Mogul 2017 also includes proprietary data that you can't find anywhere else:
  • Hand-edited pitch repertoires and fastball velocities for more than 6,000 pitchers from 1881 through 2017.
  • More than 600,000 lines of PITCHf/x pitch data, including velocity and usage patterns for every season from 2002 and 2016.
  • More than 1.9 million lines of minor league stats from 1880 through 2016, at every level from AAA down to the 'D' leagues.
I've also made some major improvements to the simulation engine:

The first is a new model for improvement and decline at different defensive positions. The sim continues to adjust ratings based on age and playing time, but I've added a lot more data to the model. This means that each specific ability (such as an outfielder's range or a catcher's ability to hold runners) is calculated from all available data major and minor league data (including some data from foreign leagues). Additionally, each ability at each position has its own "maturation curve" -- and these curves change over time from 1890 through 2017 according to my analysis of the historical data.

The second is a new system for normalizing historical stats, leading to much more accurate player ratings and simulation results in historical years. The game now calculates individual averages and standard deviation for each statistic by season, defensive position and stadium. (Previous code used all-time averages for standard deviation, and normalized player statistics over their entire career.)

Finally, I planned a longer beta-test cycle this year, ensuring that the initial release was much more stable and bug-free. Baseball Mogul 2017 went on sale three days ago and the most serious bug that's been reported so far is that the home and away teams are flipped in the 2017 MLB schedule (this bug has already been fixed in the version currently for sale in our store).

Anyway, here's a longer change list. I'm sorry I haven't been able to describe these improvements in more detail, but it's easier for me to code and test changes and new features than it is for me to write about them.

2017 Database

  • Updated major and minor league statistics from 1880 through 2016.
  • Added biographical data for all 2016 MLB debuts and hundreds of new minor league players.
  • Updated 40-man rosters for opening day.
  • Imported more than 600,000 additional lines of PITCHf/x pitch data.
    • Added filters to fix data errors on-the-fly

Historical Simulations (1901 – 2016)

  • Rewrote code for deriving player ratings and statistical projections from historical data.
    • Improved historical accuracy for fielding error rates.
    • Improved historical accuracy for determining pitcher "Endurance" ratings.
  • More accurate defensive ratings, especially for designated hitters and pinch hitters.
  • Incorporated more data in player aging model.
    • Created more accurate career paths in both historical and modern leagues.

Simulation Engine

  • New model for player improvement at defensive positions.
  • More realistic adjustments for playing time at all levels.
    • Improved player health model and injury rates.
    • Improved realism for platoon advantage by player type.
  • Reworked code for simulating minor league games.
  • Updated Win Expectancy data.
  • Improved logic for intentional walks.
  • New system for generating fictional players to improve long-term stability of talent pool.
  • Bug fixes (e.g. small errors in Payroll Budget related to a bug estimated concessions revenue).

Artificial Intelligence

  • Improved selection of defensive starters and starting lineup
    • More realistic use of defensive substitutes
    • Improved logic for 25-man and 40-man rosters
  • Improved long-term (multi-year) roster management
  • Improved management of pitching rotation
    • Includes better logic for picking "alternate starters" from active roster
  • Bug fixes (such as the computer over-riding changes to a player’s position)

Interface / Options

  • Improved Player Rating Editor
    • (e.g. dynamic updating of Predicted stats when ratings are changed)
  • Improvements to Sortable Stats Dialog
    • "40-Man Rosters" added as selectable category when viewing/sorting.
    • "Pitches Thrown", "Strikes Thrown", "Strike Percentage" and "Pitches/Game" added.
    • "Steal Tendency" and "Steal Success" player ratings added to Sortable Stats.
  • Improved heat maps (in Charts Tab of Scouting Report).
  • Improved interface and readability in Play-By-Play screen.
  • Optimized League Builder to increase speed by about 400%.
  • Schedule importer now supports 3-letter team abbreviations.
  • Bug fixes
    • Errors converting between rating scales (“50-100”, “20-80”, “1-20” etc.)
    • etc.

Wednesday, April 5, 2017

Baseball Mogul 2017: Schedule File Formats

Baseball Mogul 2017 now includes support for team abbreviations in schedule files, making it much easier to create or import your own schedule files (for historical and/or fictional seasons).

This is a copy of the document included in the Baseball Mogul "schedules" folder.

Schedule Filenames

The league format is converted to numbers and letters that are used to create the file name. If the schedule is from a specific year, the year is appended to the filename.

This is an example of the name of a schedule file: 162-U-555-555-I-2017.txt.

  • ‘162’ is the number of games in the season.
  • ‘U’ means the schedule is “unbalanced”. This means that teams play more games within their division, that vs. league opponents. (A ‘B’ would be used to indicate a “balanced” schedule, where all league teams play every other league team roughly the same number of times).
  • The first ‘555’ refers to the number of teams in each division of league #1 — the American League has 5 teams in each of 3 divisions. The second ‘555’ refers to the number of teams in each division of the league #2 — the National League also has 5 teams in each division.

Because this schedule is for an unbalanced league, Baseball Mogul needs to ensure that league format has the correct number of teams in each division. Thus, the schedule file includes a number for each division.

For balanced schedules, the game only cares about whether the number of teams in each league match the schedule format. This only requires one number for each league. If the above file were for a balanced schedule, it would use the following filename: 162-B-15-15-I-2017.txt.

  • The ‘I’ indicates that the schedule includes interleague games. If the schedule only features league play, this is replaced with an ‘L’.
  • By default, all schedules have a 3-day all-star break. If this schedule didn’t have an All-Star Break, '-N' would be appended to the filename (for ‘No all-star game’).
  • Finally, the specific year can be added as an optional parameter. If a year is listed, this schedule will only be loaded for that season.
The Baseball Mogul "schedules" folder

Examples

162-B-14-16-I = 162 games, balanced, 14-team AL, 16-team NL, with interleague play.
162-U-554-565-I = 162 games, unbalanced, 5-5-4 AL, 5-6-5 NL, with interleague play.
154-U-77-66-L = 154 games, unbalanced, 7-7 AL, 6-6 NL, no interleague play.
154-U-77-66-L-N = 154 games, unbalanced, 7-7 AL, 6-6 NL, no interleague play, no All-Star Break.

Schedule Formats

All schedule files use one line per scheduled game. Each group of games is preceded by a single
specifying the date on which those games occur.

This date must always be in the format “XXX M/D/Y”. For example, “Wed 4/5/2017” refers to
Wednesday April 5th, 2017. The month and day are the only data used; the year and day of week are
ignored.

Individual games on each day can be represented in one of two formats:

1. Numerical Team Indexes

Teams are represented by numbers, starting at 0, such as the following lines:

Sun 4/3/2017
0 @ 6
1 @ 3

Each number specifies a team in the database, with the teams grouped by division.1 For example, in a
template for the 1977 season:

- Teams 0-6 are the AL East
- Teams 7-13 are the AL West
- Teams 14-19 are the NL East
- Teams 20-25 are the NL West

Teams are ranked alphabetically within each division. Using 1977 again as an example:

- Team 0 is the Baltimore Orioles
- Team 1 is the Boston Red Sox
- Team 2 is the Cleveland Indians
- etc.

Note: Baseball Mogul assumes that leagues are sorted alphabetically, and divisions are sorted from East to West. The “American League” will be listed before the “National League”; the “AL East” will be listed before the “AL Central” and the “AL West”; etc.

2. Team Abbreviations

New for Baseball Mogul 2017, schedule files now support 3-letter abbreviations. For example:

Sun 4/3/2017
SFG @ ARI
NYY @ TBR

Team abbreviations can be viewed (or edited) in the League Editor inside Baseball Mogul.

Schedule Files as Templates

If the specific year is omitted, Baseball Mogul will use the schedule file as a template. Instead of
scheduling the games exactly as specified in the file, it will load the schedule file and then randomize
team schedules within each division. This allows the game to create unique schedules for future years, or for historical years for which we do not yet have specific data.

Schedules are shuffled WITHIN each division. So, in the 1977 example above, if Team 0 is scheduled to play the first game of the season, then the schedule created from that template will feature ANY ONE of the first seven teams to play the first game of the season.

Double-Headers

Baseball Mogul doesn’t currently support teams with more than one game schedules on the same day.
If you are creating a schedule file for a historical year with scheduled double-headers, you will need to move the 2nd game to a day where those teams have a day off (such as by moving the 2nd game of a Sunday double-header to the following Monday).

Missing Schedule Files

If there is no matching schedule file, Baseball Mogul fabricates a schedule using an algorithm than can produce some unrealistic schedules (with large gaps between games played). I am trying to expand the number of schedule files available inside Baseball Mogul. If you have created a file for a missing year or format, please forward it to cjd@sportsmogul.com and/or post it to our mod forums.

Thank you!

Appendix A: Numbers Used in Schedule Files for 2014-2016 Seasons

Note that teams are ordered:

  1. Alphaterically by League (AL then NL).
  2. Then by division from east to west.
  3. Then alphabetically within each division.


AL East
BAL 0
BOS 1
NYA 2
TBR 3
TOR 4

AL Central

CHA 5
CLE 6
DET 7
KCR 8
MIN 9

AL West

HOU 10
LAA 11
OAK 12
SEA 13
TEX 14

NL East

ATL 15
MIA 16
NYN 17
PHI 18
WAS 19

NL Central

CHN 20
CIN 21
MIL 22
PIT 23
STL 24

NL West

ARZ 25
COL 26
LAD 27
SDP 28
SFG 29