Wednesday, June 8, 2016

2016 Mock MLB Draft

Jason Groome
A.J. Puk
As many of you already know, this year’s version of Baseball Mogul includes most of the 100 top prospects that are eligible for this year’s amateur draft. As the 2016 database already includes the top 75-80 players for each franchise, we also have a decent understanding of each team’s specific organizational needs.

So I booted up Baseball Mogul 2016 to see how it would handle this year's draftOne advantage of having a full simulation at our disposal is that I was able to simulate the draft 10,000 times and record all the results. The following table shows the most likely result of the first round (although this exact order only occurred in 131 of the 10,000 simulations). The average draft position for each player is shown below as “ADP”.

Pick
Team
Player
Pos
Age
Bats
Throws
Hgt
Wgt
Scouting
ADP
1
Phillies
Jason Groome
LHP
17
L
L
6'6"
220
40/75
1.61
2
Reds
A.J. Puk
LHP
21
L
L
6'7"
230
45/70
1.78
3
Braves
Nick Senzel
3B
20
R
R
6'1"
205
40/70
3.31
4
Rockies
Mickey Moniak
LF
18
L
R
6'2"
190
40/70
4.36
5
Brewers
Corey Ray
CF
21
L
L
5'11"
185
40/75
5.46
6
Athletics
Delvin Perez
SS
17
R
R
6'3"
165
45/75
6.26
7
Marlins
Riley Pint
RHP
18
R
R
6'4"
195
40/75
8.31
8
Padres
Kyle Lewis
RF
20
R
R
6'4"
195
35/70
10.86
9
Tigers
Matt Manning
RHP
18
R
R
6'6"
195
35/70
10.41
10
White Sox
Dakota Hudson
RHP
21
R
R
6'5"
205
40/65
11.46
11
Mariners
Cal Quantrill
RHP
20
L
R
6'3"
185
40/70
11.01
12
Red Sox
Braxton Garrett
LHP
18
R
L
6'3"
190
40/65
12.06
13
Rays
Blake Rutherford
LF
19
L
R
6'2"
190
45/70
10.86
14
Indians
Zack Collins
C
21
L
R
6'3"
220
40/65
14.16
15
Twins
Forrest Whitley
RHP
18
R
R
6'6"
250
40/70
15.21
16
Angels
Bryan Reynolds
CF
21
S
R
6'2"
210
35/70
16.26
17
Astros
Alex Kirilloff
CF
18
L
L
6'2"
195
40/65
16.06
18
Yankees
Kevin Gowdy
SP
18
R
R
6'4"
170
35/70
18.61
19
Mets
Will Craig
3B
18
R
R
6'3"
225
45/65
17.16
20
Dodgers
Jordan Sheffield
RHP
21
R
R
6'0"
185
40/70
18.71
21
Blue Jays
Buddy Reed
CF
21
S
R
6'4"
185
35/70
20.51
22
Pirates
Ian Anderson
RHP
18
R
R
6'3"
170
40/65
20.56
23
Cardinals
Cody Sedlock
RHP
20
R
R
6'4"
210
45/65
19.86
Scouting shows Baseball Mogul’s “Overall” and “Peak” ratings for each player (on the standard 20-80 scouting scale).

... and this table shows how frequently each player was taken with one of the top 3 picks (rounded to the nearest 0.1%):

Player
Pos
Age
Pick #1
Pick #2
Pick #3
Jason Groome
LHP
17
50.1%
39.1%
10.6%
A.J. Puk
LHP
21
39.2%
45.5%
14.4%
Nick Senzel
3B
20
6.8%
10.2%
42.1%
Mickey Moniak
LF
18
1.4%
2.6%
11.3%
Corey Ray
CF
21
1.0%
0.9%
9.0%
Delvin Perez
SS
17
0.7%
0.5%
6.2%
Riley Pint
RHP
18
0.5%
0.8%
3.5%
Kyle Lewis
RF
20
0.2%

0.7%
Matt Manning
RHP
18

0.3%
0.4%
Dakota Hudson
RHP
21


0.3%
Cal Quantrill
RHP
20
0.1%
0.1%
0.4%
Braxton Garrett
LHP
18


0.3%
Blake Rutherford
LF
19


0.2%

As you can see, Baseball Mogul was ambivalent about whether to take Puk or Groome with the first pick. Twelve years after Moneyball publicized the argument that college players had been perennially under-valued, front offices still frequently use top picks on high school players  so Mogul's drafting AI models that behavior.

Clay's Time Use

Now that I'm done working on 야구의신 and able to once again work full-time on Baseball Mogul, I've been using Time Doctor's time-tracking software for the last 6 months to help me stay on task — and to help identify tasks that are eating up too much of my time. This is the raw data for hours of work during that time:

Project
Hours
Notes
Sports Mogul Inc.113.02Responding to customer e-mail, editing the web site, writing newsletters, filing, accounting, taxes, payroll, etc.
Other / Personal53.7Includes everything from reading Facebook to walking the dog (if done while Time Doctor is running).
Football Mogul22.4
Baseball Mogul959.1See below

And this is a pie chart of the same data:

With 83% of my time being allocated to Baseball Mogul, I made a chart showing a more detailed breakdown of my time use for just Baseball Mogul:


This chart doesn't tell me much, except that I was able to spend most of my time coding and debugging (including technical design etc.). This can be very difficult for small-business owners, and it's taken years to develop the necessary habits and focus — and to surround myself with the best people.

That big "PROGRAMMING / DEBUGGING" section can be further broken down into sub-tasks:


One thing that stands out to me in this chart is the large amount of time spent on "Loading/Saving Game Data" and "Data Manipulation". This occurred because Baseball Mogul 2016 required a complete rewrite of the code that loads and saves your game data, in order to permanently fix a bug that was causing some players to lose "year-by-year" player stats. Going forward, I expect the amount of time spent on these two areas to drop significantly.

Tuesday, April 5, 2016

Baseball Mogul 2016: Rating Calibration

Baseball Mogul 2016 has a new feature that adjusts all stats for the statistical environment in which they are accrued before assigning player ratings. This applies to the current season and to historical seasons, but it also calculates major league equivalencies (MLEs) for the 1.2 million lines of minor league stats included in the game.

The New Rating Scale

The first thing you will notice is that everyone’s ratings have dropped by about 6-8 points. The average rating for a major league player in Baseball Mogul Diamond was about 82. The first version of Baseball Mogul was originally designed with the average player rating set at 75 (corresponding to a grade of "C" in an academic environment). But it crept up over the years until more than half of all players were clumped between 81 and 86, making it difficult to differentiate between an average player and a very good player. In last year's game, the distribution of ratings for major league players looked like this:

Player Rating Distribution in Baseball Mogul Diamond
Making league and stadium adjustments for every stat gives us the ability to rate all players on the same scale, in the same way that a stat like OPS+ defines '100' as the league average. In addition (and unlike OPS) we can specify the distribution of player ratings on this scale. That is, we can specify the degree to which all player ratings are either clumped near the average rating or spread out over the entire scale.

I used this opportunity to re-establish 75 as the major league average for all player ratings and to set the standard deviation at 7. Assuming a normal distribution, ratings for players at the major league level are now distributed on a “bell curve” like this:
Player Rating Distribution in Baseball Mogul 2016
As you can see on the graph, about two thirds of ratings fall between 68 and 82. Any rating of 90 or higher describes an ability in the top 2% of major league talent.

Fitting all player ratings to this scale means that any specific number has the same meaning regardless of whether you are playing in 1927 or 2027. 
For example, a pitcher's Power rating is primarily based on their projected strikeout rate. If a pitcher strikes out batters at a rate that is one standard deviation above the league average, he is assigned a Power rating of 82 (75 + 7).

Historical Adjustments

Player ratings now use the same scale regardless of which season you are playing in (and regardless of how many seasons you play into the future). This differs from previous versions of Baseball Mogul which had different average ratings in different seasons. As league averages went up and down, so did player ratings. For example, the strikeout rate in Major League Baseball has risen more than 65% over the last 25 years. This translated to a big jump in Power ratings for all pitchers. If you start a new game in 2015 using Baseball Mogul Diamond, the average pitcher has a Power rating of 83. But if you start in 1981, the average Power rating is only 70. This discrepancy means that the 1981 season has only nine pitchers with an Overall rating of 90 or more, compared to 56 such players in 2015!

Impact on Gameplay

This volatility was more than just a cosmetic problem. It could lead to a serious imbalance between batters and pitchers. If you start a game in 1969 you will see that pitching ratings are noticeably higher than batting ratings -- because run-scoring was at an all-time low in the late 1960s. Of forty players rated 90 or higher in the 1969 database, only seven (17%) are batters. Because player ratings are part of the game’s artificial intelligence and salary negotiations, this imbalance made it possible to take advantage of the computer-controlled general managers by trading away below-average pitchers in return for above-average hitters (and then signing those hitters at lower salaries than pitchers with the same win value were asking for).

The Shocker!

Baseball Mogul 2016 re-calibrates all ratings when loading a game saved in the previous versions. This means that a team of players rated between 82 and 88 could become a team with of players rated in the high 70s. These rating changes may come as a shock -- in the same way that you would be stunned if your employer suddenly cut your pay by 8% for no reason. I have noticed that I can rewrite the code for determining team revenue or ticket sales or player salaries without getting a single complaint. If the number of outfield assists or complete games goes down by 8% between versions, no one notices. But if the ratings for your players on your team drop by 8%, it seems like the game has undone all the hard work you put into building your team. It's worth remembering that the underlying player talent level is completely unaffected by this adjustment, which applies equally to every player in the database. This is a significant change, but it was a long-awaited fix to the problems of inexact player ratings and unpredictable talent distribution – problems that leaked over into everything from player evaluation to managerial decisions.

Monday, April 4, 2016

Baseball Mogul 2016: Bug Reports

We're currently working on the first patch for Baseball Mogul 2016, which should be available later this week. There haven't been any serious problems reported, but we'd like to address a few issues:

1) The updated rosters include a player called Pete O'Brien that died in 1937.

2) Injury levels are generally too low for the modern era. The number of trips to the disabled list has increased steadily over the last 50 years. There is a bug in how Baseball Mogul uses this data, causing injury rates to be about 40% too low. You can fix this yourself by with the following changes in the League Editor:
  1. Set "Injury Frequency" to +60%.
  2. Set "Injury Severity" to +20%.
3) We are fixing some bugs with the expansion draft.

4) Some of the help files need to be updated.

5) We would like to build a version that runs on Windows XP. (Windows XP is currently listed as not supported, but we still have customers who would like to play Baseball Mogul 2016 on XP).

If you find any other problems that need to be addressed, please send me an email at bugs@sportsmogul.com.

Thanks!

Clay

Sunday, April 3, 2016

Baseball Mogul 2016: Bringing The Dead Back To Life

It turns out that the updated rosters for Baseball Mogul 2016 included a player that died in 1937. (This happened because the Pete O'Brien who played 8 games for the Diamondbacks last year is listed as "obriepe01" at Baseball-Reference but as "obriepe04" at the Baseball Databank.)

Pete O'Brien
1890 Chicago Colts
(Dead)
Pete O'Brien
2015 Diamondbacks
(Not Dead)
A patch for this should be available this week. But if you'd like to fix it yourself (and learn a bit about how the roster files work) you can follow these steps:
  1. Go into Baseball Mogul and choose 'Open Baseball Mogul Folder' from the Help Menu.
  2. Go into the 'Input' folder, and then into the 'Players' folder.
  3. Edit the file called "2016-Rosters.csv", changing "o'bripe01" to "o'bripe04".
Now, you'll need to rebuild the main database  a file called "Universe.dat" that is loaded whenever you start a new game and choose "Modern".

Note: You will probably want to turn on the feature in Windows that lets you see (and edit) the 3-letter filename extensions.
  1. Start Baseball Mogul.
  2. Click 'Classic' and choose '2016' in the dropdown box. Then click 'Play'.
  3. It will chug for a few minutes and then show you the screen where you pick a team. Pick any team and click 'Play'.
  4. After the game setup finishes, choose 'Save...' from the Game Menu and save the game as 'Universe'.
  5. Go back out to the Baseball Mogul folder ('Open Baseball Mogul Folder' from the Help Menu).
  6. Find the existing "Universe" file ("Universe.dat") and rename it to "Universe.bkp".
  7. Find the game you just saved ("Universe.mog") and rename it to "Universe.dat".
The next time you start a 'Modern' game, it will load your new file.

Saturday, April 2, 2016

Baseball Mogul 2016: New Features

More Realistic Simulations - Now 70% Faster

This year's focus was on making Baseball Mogul 2016 better instead of bigger. The first task was ripping out and rebuilding some old database code that caused problems with sims before World War II — and sometimes caused a loss of data when saving games to the hard drive. As a result of this effort, historical simulations are now much more realistic. An added benefit is that the entire simulation is more than 70% faster!

New Player Rating Editor (and new ratings)

You can now directly edit each player's individual ratings (replacing the previous frustrating method of editing the player's statistical projections until the game assigned the desired ratings). All batting ratings are editable versus lefty and right pitchers, making it possible to accurately represent players like Mickey Mantle (who was a better overall hitter when batting right-handed despite having more power as a lefty).

This new format also introduces some new ratings, such as "Gap Power", "Plate Protection" and "Steal Tendency".

Improved Player Aging

In previous versions, ratings like "Speed" and "Power" matured and deteriorated at different rates, but the process was inexact because of the way ratings were derived from player statistics. With the new database format, we did our own research into how a player's skill set improves and declines. A couple of interesting findings:

1) The conventional wisdom is correct that catchers lose foot speed more quickly than other players, presumably because of the wear and tear on their knees.

2) Despite modern training practices, pitcher effectiveness peaks earlier now than it did in the 20th century.

PITCHf/x Data

We've parsed and processed PITCHf/x data for more than 5 million individual pitches over the last 14 years, giving us more realistic pitch ratings and pitch selection for more than 1,400 different pitchers (in addition to the hand-edited pitch repertoire information that is included for pitchers going back to the 19th century.

Plus Many Smaller Changes, such as:

You can now choose either a "strict" or "flexible" pitching rotation for each team.
  • With a flexible rotation, the computer manager will skip the last starter depending on how well rested your ace is. As before, this level of flexibility is still adjustable for every team and every player using the "Start On Short Rest" strategy setting.
Improved artificial intelligence for salary arbitration.

Improved general manager AI (including roster management, drafting, trading and free agent salaries).

New system for "generic photos" (used for fictional players). This fixes the problem where a player's handedness might not match that shown in his action photo.

...

Updates for Opening Day of the 2016 Season

  • Updated rosters for every franchise including more than 2100 active players
  • Complete major league and minor league stats through 2015
    • Includes 1.4 million lines of minor league stats
  • Authentic 2016 MLB season schedule (all 2430 games)

Backwards Compatibility

Baseball Mogul 2016 automatically loads databases from previous versions of Baseball Mogul.