in translated statistics.

EQA  .260

BA  .265, OBA .335, SLG .415, OPS .750

For 650 PA, it comes out to about 579 AB, 153 H, 29 DB, 3 TP, 17 HR, 55 BB, 108 SO, 10 SB, 5 CS, 80 R, 76 RBI, and 74 EQR.


For pitchers, 198 IP, 198 H, 22 HR, 66 BB, 132 SO, 110 R, 99 ER, 4.50 ERA





To be honest I first set up the 2018 projections a little after Thanksgiving, but never felt like writing up anything about them. At this stage – with pitchers and catchers still having four more weeks of liberty before reporting for duty, and most of the free agents still free – there’s an awful lot of guesswork to go around. How are the Marlins are going to fill their outfield? The Orioles their rotation? How long will Player X, expected to be ready by May, really be out?

These are my token stabs in the dark at some of those answers

Baltimore Orioles – Signed Audry Perez and Eddie Gamboa; neither is likely to play.

Chicago White Sox – Signed Miguel Gonzalez and Gonzalez Germen. Both Gonzalezes should claim a regular spot for the Sox this year, with Miguel in the rotation and Germen in the pen.

Detroit Tigers – signed Johnny Barbato, who could get a spot callup to fill the back end of the bullpen for a month or so.

Kansas City Royals – Added Tyler Collins, who is no better than the bad outfielders I already have slotted in the KC outfield.

Minnesota Twins – Added Addison Reed and Jermaine Curtis. Curtis won’t play. Reed, however, is probably the best reliever in the Twins bullpen, and is going to be a very popular bid in roto leagues waiting for Rodney to fail.

New York Yankees – Signed Wade LeBlanc to a minor league contract; I expect him to work into long relief for some few innings.

San Francisco Giants – Trading for McCutchen primarily means that the Parker/Slater combo, who were fighting for left field playing time, are now fighting for fourth outfielder time. Although they do have a chance of knocking off Hunter Pence, if he can’t recover from last year’s disaster.

Tampa Bay Rays – No changes, but I had only had Brendan McKay registered as a hitter. Now he’s listed as both a hitter and a pitcher.

Texas Rangers – picked up Curt Casali and Deolis Guerra. Casali is probably the fourth catcher, which puts him on the fringe of getting into the majors this season – survey says about a third of similar players were in the majors. Guerra projects better than several current members of the pen, and I think he’ll be get a fair amount of playing time.

Toronto Blue Jays – Traded Dominic Leone and Conner Greene for Randal Grichuk. Also signed Curtis Granderson and Al Alburquerque. Granderson figures to take over the big side of a LF platoon with Steve Pearce, while Grichuk more or less takes over in right. That should be a marked improvement over the Teoscar Hernandez/Anthony Alford/Ezequiel Carrera combos I had in there before. Replacing Leone with Alburquerque is a loss for what is already a pretty sorry-looking bullpen.


Sorry, folks, for the lack of updates over the last three weeks, but I was actually out of the country on vacation . I hope you’ll forgive me for not announcing in advance, on a public forum, “I’ll be out of my house for the next three weeks!”

I knew some reports would suffer without daily maintenance – mainly adding new people to the database. What I did not expect was that my computer would put itself in sleep mode the day I left, meaning it did not even make the regular data pulls, much less run anything during my absence. I’m trying to rebuild some of the files (mainly the playoff odds charts) that needed daily data.

One vacation pic – from 2000m up in the mountains on the Polish/Slovak border. Not much of an expression, but the background was gorgeous!




This is just too far out there not to pass on.

I had seven players in my database with the last name “Pantoja”: Fidel, Jhonny, Thormar,another Jhonny, Jorge, Alexis, and Yorvin, with birthdates ranging from 1950 to 1997.

This morning’s stat update from MLB had the professional debut, for the Athletics in the Dominican Summer League, of an eight Pantoja.

And his first name is Enrry.


I guess you could call these my power rankings. All major league teams, ranked by WARP1, compared to win percentages. By way of comparison, I looked up Fangraphs team WAR while I was working on it.

Team Wins Losses WARP (me) WAR (Fangraphs)
Dodgers 39 25 27.8 21.5
Astros 44 20 26.6 21.5
Yankees 37 23 26.1 23.4
Nationals 38 24 24.5 19.5
Diamondbacks 39 26 24.2 20.1
Rockies 41 24 23.1 14.6
Cardinals 29 32 20.1 12.5
Reds 29 33 19.2 13.6
Brewers 33 31 19.0 15.0
Rays 34 32 18.8 18.3
Cubs 31 31 18.0 13.1
Red Sox 34 28 17.5 18.1
Mariners 31 33 17.1 11.8
Marlins 27 35 17.0 11.1
Mets 28 33 16.2 14.8
Angels 33 33 15.9 10.2
Braves 27 35 15.2 8.3
Indians 31 29 15.2 14.9
Pirates 28 35 14.7 10.1
Blue Jays 31 32 14.7 12.0
Tigers 30 32 14.6 12.7
Twins 32 27 14.4 10.3
Rangers 30 32 12.8 7.9
Giants 26 39 12.0 9.3
White Sox 26 35 11.9 9.0
Orioles 31 30 11.7 8.0
Royals 28 34 10.3 7.7
Phillies 21 40 10.2 6.9
As 27 36 10.2 9.3
Padres 24 40 7.0 4.6
Correlation with WinPct 0.857 0.834

I guess I must still be doing something right.


The Ides of March are come – but not yet gone.

As a round of cuts hits the spring teams, I don’t have cuts – I have adds. I’ve been digging through a slew of other stats, and now have translations up for – get this – 17 leagues not previously listed for 2016.

I’ve got 5 foreign leagues – the Japanese Central and Pacific leagues, and the Korean league, which I’ve had before. But new this year – the Dutch and Italian leagues.

And then we’ve got six winter leagues – Arizona Fall, Australian, Venezuelan, Puerto Rican, Dominican, and Mexican Pacific.

And to top it off – a half a dozen independent leagues. The American Association, the Atlantic League, Frontier, Canadian-American, Pecos, and Pacific leagues.

Now, the fun part of this for me wasn’t so much where the players fell within their leagues, but where the leagues fell with respect to each other.

The Pecos League, a 12-team league playing a 72-game schedule in the Southwest, was the weakest of the leagues I reviewed.  The common players I found in Organized Baseball came from low-level leagues – Arizona, Gulf Coast, Pioneer, and a few AB in the South Atlantic. The rating comes in at .245 – meaning that every run in the Pecos league was only worth a quarter of a run in the majors.

Next up was the Dutch league, which rated .269. Really hard to say much, though, since the rating depends almost entirely on Nick Urbanus and Kevin Moesquit, who played in the SAL and Midwest leagues.

The Pacific Association, a four-team group operating in northern California, checks in at .273.

For reference, we now hit a set of OB leagues. The GCL and Arizona leagues come in at .338 and .333; the Pioneer and Appalachian leagues register at .387 and .381. And, not far above, the short-season As – the Northwest league rated .387 in 2016, while the New York-Penn drew .406.

The weakest of the winter leagues was the one in Australia – which, ironically plays in the (Australian) summertime. They draw a variety of players, quite a few from AA. It comes in at a New York-Penn equivalent of .406.

The Frontier League comes in with a .433 rating. The majority of the common players came from the slightly-stronger mid-A leagues, the Midwest and South Atlantic.

I was surprised by the Italian League’s rating, a robust .504, splitting the difference between the South Atlantic (.476) and Midwest (.511) leagues.  They even had a former major leaguer, in Ronny Cedeno.

The next set of OB leagues up are the high-A leagues. In 2016, the Carolina rated .556, the California was at .577, and the Florida State league led with a .595. Fitting neatly into them would be the new American Association, at .587. The 12 teams of the AA mainly lie along a north-south line running between Laredo, Texas, and Winnipeg, Manitoba; the team in Gary, Indiana is the only one significantly off the line.

Between the high-A and AA leagues are the highest independent leagues – the Canadian-American league at .617 and the Atlantic league at .644. Both are primarily in the northeast US region. The Can-Am common players are primarily from AA and high-A, which is a little surprising. Generally speaking, independent leagues made up of players from league X tend to plat a level somewhat below X – they were, after all, players who did not move up in Organized Baseball. The Atlantic fits better – it is highly regarded, with many players from AA, AAA, and even recognized major league players.

The Mexican league, at .652, also falls in here. Matching it is the Puerto Rican winter league.

Double-A leagues come in at .667 (Texas), .671 (Southern), and .697 (Eastern). The Arizona Fall League, at .667, steps right in at the lower end of AA.

Just on the high side of AA are three more winter leagues, surprisingly equal to one another. The Venezuelan rated .701, the Mexican Pacific was at .708, and the Dominican was on top with .733.

The Korean Baseball Organization rates .734.

The Triple-A leagues are at .759 (PCL) and .802 (International).

The Japanese Central league (.809) and Japanese Pacific (.840) are the highest leagues outside of the majors…

which is the only thing left, the National League at 1.000 and the AL (1.107).



Similar to the last one, for hitters. I believe I used a 50 IP requirement, with a caveat for anyone projected to get at least 5 saves. There were 229 pitchers in the totals.

Just going to drop everything in at once, starting with 2016’s best. Pecota really killed it on pitchers last year, particularly with BB and SO.

Stat W L SV G GS IP H R ER HR BB SO ERA (R) WHIP (BR) SO(R) BB(R) sum rates roto
pecota 2.67 2.18 2.66 7.41 4.08 25.75 24.17 0.00 12.09 4.41 9.45 26.98 10.06 15.16 11.72 7.22 166.01 44.16 57.53
steamer 2.55 2.26 2.52 7.92 4.32 28.43 27.54 0.00 13.24 4.72 10.24 28.06 10.06 15.59 11.75 7.68 176.89 45.08 58.78
clay 2.87 2.34 2.46 9.23 4.24 27.50 26.79 0.00 12.98 4.75 10.24 28.04 10.01 15.78 13.14 7.60 177.96 46.52 59.16
rotowire 2.95 2.25 2.21 7.38 4.51 29.23 27.23 0.00 12.77 4.82 10.22 28.71 10.81 17.08 12.08 7.91 180.17 47.89 61.77
zips 3.05 2.60 4.33 7.99 5.05 30.03 28.80 0.00 14.17 5.09 10.90 29.53 10.16 15.64 11.81 7.86 187.02 45.48 62.71
autoclay 2.94 2.61 2.77 8.59 6.70 30.94 30.13 0.00 14.72 4.84 11.10 30.58 10.75 15.56 12.44 7.55 192.21 46.30 62.60
2013-15 mj + mnr/2 3.04 2.87 2.93 9.72 5.80 33.49 33.53 0.00 16.25 5.79 11.24 32.55 11.22 17.10 11.72 7.77 205.05 47.81 66.85
2015mj 3.81 3.08 2.96 8.52 5.45 34.12 32.42 0.00 15.80 5.26 11.75 32.56 12.49 18.54 13.35 8.81 208.94 53.20 70.37

Note: The “R” category is zero for all because one stat I tried to use didn’t have it – so I just cut it from everybody’s.




When it comes to trying to determine who had the most accurate projections, there are a lot of things to consider. And, if you try to consider them all, you won’t have a post – you’ll have  a book.

You can use straight statistics, or you can bias-adjust. You can use whole stats. Rate stats. One-on-one comparisons for individual players. All stats. Just fantasy-relevant stats.

What I’ll do, here, is a fairly straightforward comparison between the numbers projected and the results. I’ll do some comparisons with and without bias adjustments, although part of your forecast skill should include not having large biases in the first place. And, for today, we’ll limit ourselves to hitters.

I’m going to be looking at average forecast errors for multiple statistics. If you’re going to do that, you really need to make sure that you are dealing with a consistent set of players. Having someone included in stat A but not stat B’s list can distort things badly. I eventually came up with a list of 256 players to form my focus group, if you will. These 256 were people that I thought, in the 2016 pre-season, would get at least 200 PA in 2016. But not just me – they only made the list if I, and Steamer, and Pecota, and Rotowire, all agreed they would get 200 PA, and then really did. We all made forecasts for these players, and they played enough to make a reasonable grade.

For projections, I have my own, of course, two varieties – the pure computer printout (“Autoclay”), and what I get from plugging those projections into lineups and depth charts and making my own judgments of playing time (“Clay”). I took these from copies I had on my computer from April 3; the latter were the ones I used for my own fantasy league drafts, last April 2 and 3. The fellows at helped me out by sharing copies they had made for Zips and Steamer (FanGraphs) last spring. I had downloaded stats from Pecota (Baseball Prospectus) and Rotowire, and I could run a variety of stats myself.

Now, the simplest, most naive forecast you could make, would be to simply use each player’s 2015 major league performance as his 2016 projection. That yields this

Stat PA H DB TP HR BB SO R RBI SB CS BA ISO bbrate sorate Sum rates roto
2015 real 118.22 34.65 8.14 1.86 6.78 14.44 30.10 20.82 22.75 4.55 2.07 12.33 17.33 10.21 22.84 327.09 62.70 67.24

The numbers for PA through CS are simply the raw, average, absolute value of the differences, between forecast and reality, for all 256 players. The number for batting average shows the average difference, in hits, between projected and actual batting average, given real atbats. For example – suppose someone really went 100-for-400, a .250 batting average. The forecast was .293 – so the error is 17.2 hits (.293 minus .250, times 400). Similarly, the ISO number shows the difference in extra bases between actual and forecast isolated power. bbrate is the difference, in walks, between real and forecast BB/PA, for actual PA; so rate is the same thing for strikeouts. The “Sum” box is the simple sum of the 15 category boxes; “rates” sums just the four rate statistics; “roto” sums the R, HR, RBI, SB, and BA categories. So a 327 sum – that’s you’re naive baseline.

You can do a little better by taking 2013-15 average, instead of just 2015:

Stat PA H DB TP HR BB SO R RBI SB CS BA ISO bbrate sorate Sum rates roto
2013-15 real 119.13 34.55 7.78 1.49 6.41 15.01 24.65 21.37 22.49 4.26 1.90 11.54 15.40 9.77 23.50 319.27 60.21 66.08

Your next step up in sophistication is to start adding some minor league stats into the ratings. When I run a simple 2013-15 DT for each player, and use that for my forecast – this will have no park factors, no adjustments to league average, and the PA will generally be projected into a 650-PA total, so they won’t project part-time PA at all – well, that gets me this:

Stat PA H DB TP HR BB SO R RBI SB CS BA ISO bbrate sorate Sum rates roto
2013-15 DT 152.04 41.39 9.25 1.95 7.25 17.37 29.25 25.11 24.32 5.83 2.62 9.91 14.06 8.30 10.15 358.80 42.43 72.42

which isn’t really very good at all, thanks to the way PA are thrown off, and all the counting stats along with it. Projecting to a 650_AP season is definitely NOT the way to go. But the rates stats are dramatically better. Lets improve on the previous by taking a simple average of the three years 2013-15, with one little added wrinkle – minor league stats only count for 50% of major league stats.

Stat PA H DB TP HR BB SO R RBI SB CS BA ISO bbrate sorate Sum rates roto
13-15 DT+ 104.98 30.73 6.74 1.40 5.95 12.99 17.96 17.64 19.78 4.08 1.88 9.85 14.13 8.29 9.90 266.28 42.17 57.29

That figure, by itself, is comparable to most of the other stats I’ll run. That value is pretty much the primary input to the autoclay – the computer printout, without any further help from me:

Stat PA H DB TP HR BB SO R RBI SB CS BA ISO bbrate sorate Sum rates roto
autoclay 98.70 27.64 6.41 1.52 5.94 11.37 22.47 16.04 16.38 3.81 1.50 9.37 14.43 7.34 12.80 255.72 43.94 51.53

Next was ZIPS, taking another step forward:

Stat PA H DB TP HR BB SO R RBI SB CS BA ISO bbrate sorate Sum rates roto
zips 94.80 26.82 6.39 1.66 6.22 11.56 22.96 16.08 16.72 3.97 1.67 8.98 15.07 8.16 11.92 252.99 44.14 51.98

Followed by Rotowire’s projections;

Stat PA H DB TP HR BB SO R RBI SB CS BA ISO bbrate sorate Sum rates roto
rotowire 91.30 27.20 7.04 1.65 6.08 11.68 22.34 15.84 16.83 4.37 1.83 9.51 15.19 8.11 12.73 251.69 45.54 52.63

Ahead of Rotowire is where I show up:

Stat PA H DB TP HR BB SO R RBI SB CS BA ISO bbrate sorate Sum rates roto
clay 91.77 26.32 6.30 1.50 6.11 11.35 22.35 15.85 16.60 3.72 1.51 9.32 14.42 7.74 12.47 247.33 43.95 51.59

I’d like to say that’s where it ends, but I have to honestly report that still leaves PECOTA

Stat PA H DB TP HR BB SO R RBI SB CS BA ISO bbrate sorate Sum rates roto
pecota 90.83 25.77 6.14 1.59 5.90 11.77 21.69 15.57 16.25 4.04 1.51 9.04 14.62 8.08 12.61 245.40 44.34 50.80

And, on top, Steamer:

Stat PA H DB TP HR BB SO R RBI SB CS BA ISO bbrate sorate Sum rates roto
steamer 88.62 25.57 6.18 1.51 6.20 10.91 21.64 15.85 16.48 3.93 1.94 8.88 14.91 7.44 12.01 242.08 43.24 51.35


The differences really aren’t that big between them. For instance, if we take the best score on a player by player basis for the 256 player group, then among the top three the results are fairly even – Clay was best on 80, Steamer on 89, Pecota on 87. Clay beats Steamer 129-127 head to head; Pecota beats Clay 133-123; and Steamer beats Pecota 132-124.


{Note – I had this virtually finished this by about Valentine’s Day, and then – right before hitting the publish key – made one more check and discovered that the “real” stats I was using for validation were not the actual, real stats. Wiping out a lot of work and several erroneous conclusions. Then things went crazy at work, and I focused on getting stats for other leagues in, and before I know it its March – not just barely, but a full week in. Time sure seems to move a lot faster than it used to. May also have to do with being more committed to my day job than I used to be – I could never work on this during the day, the way I used to.]




Incremental update, as a few of players and rumors start sorting themselves out.

Kansas City – the biggest change is probably in Kansas City, where Yordano Ventura’s unfortunate death blows a 30-start hole in what was already a stretched-out rotation. Ventura’s loss does far more to hurt the team than picking up Brandon Moss helped.

Tampa Bay/Dodgers – The big Logan Forsythe trade improves the Dodgers second base position, largely pushing Enrique Hernandez out of the way, for a (very good) pitcher that I had them barely using. Jose De Leon will get a much bigger role in Tampa Bay, and he should be a solid starter for them. It opens up second base for Brad Miller; if they can pick up a good first baseman (I have speculatively given them Chris Carter now, instead of Baltimore), they are in real contention for the AL East. Even if they don’t, I currently have Matt Duffy under-utilised, trying to make space for Willy Adames and Daniel Robertson, two prospects I like a lot.

Angels – Luis Valbuena takes a big bite of CJ Cron.

Giants – Signing Nick Hundley opens up the possibility that we could see more of the Posey to first, Belt to LF we saw a couple of years ago. Their LF situation is weak, but Parker and Williamson are both better hitters than Hundley, so in strict terms it won’t help the offense. If getting Posey off his knees a little while helps him stay fresher, though, than it may be worthwhile.

Rockies – Greg Holland has unsettled the closer situation in Colorado. At this point, I’m still going to lean towards Ottavino – he’s the incumbent, and has a better projection than Holland – but the projections do get tricky with guys who have missed a full season. What was an 80/15 split between Ottavino and McGee is now a 65/30 split for Ottavino and Holland.

Braves – Kurt Suzuki is their starting catcher.

And various minor changes for the Nationals (Stephen Drew, Vance Worley), Cubs (Brett Anderson, Jim Henderson), Diamondbacks (Gregor Blanco,), Indians (Austin Jackson), White Sox (Peter Bourjos), Mets (speculatively adding Sergio Romo), Oakland (Adam Rosales and Alejandro de Aza), Phillies (Ryan Hanigan), Padres (Jered Weaver?), and Rangers (James Loney, Wesley Wrigth).



Happy Birthday, MLK. And, thanks to the three-day weekend that comes from that, I was able to complete my first release of 2017 projections. Projections which, if 2016 is any guide, will be arguably the best projections you can find.

For those of you stumbling into this site from the Google, my name is Clay Davenport. I’ve been messing with baseball statistics since about 1980, developing my own sets of tools for run scoring and player ratings (Equivalent Average), and my own methods for translating statistics between leagues (minors, past majors, foreign leagues). I was one of the founding members of Baseball Prospectus, but split from them several years ago and have since gone my own way. And one of the things I did on my own was to go back to using my stats my way – which is what we have here. In the daytime, I work for NOAA – maintaining software and data distribution from our fleet of weather satellites. This site, as much as anything, is about allowing me to access my stats over the internet. Which is my way of explaining why I don’t write that much – this site is about the numbers, not the words.

So, about these projections. They are a two-part effort. Part number one relies on the computer algorithms. I have a database of player-seasons, most of which is displayed one way or another on this sit, which goes back to 1871 for the majors, to 1947 for AAA, and to 1978 for most other Organized leagues. I’ve run some statistics to identify typical progressions, by age or position, for players; but, like BP’s PECOTA, the forecasts are primarily driven by establishing historical analogue players and seeing how they progressed from a similar point. Those are the projections labeled as “the original computer projections”, “All 2017 Hitters” and “All 2017 Pitchers“.

Part 2 is about me, and my experience building forecasts like this. The computer projections get dropped into a monstrous excel spreadsheet, where they form the basic forecast input. Another part of that spreadsheet contains depth charts for every team – into which I allocate my opinion of who plays where and how much. Flipping to the White Sox page, I see I have Jose Abreu down for 75% of the playing time at first, with another 15% coming at DH. That puts him in at 90% total playing time, and 617 projected PA, slightly more than the 602 he gets from the computer. I gave Todd Frazier gets 20% of the 1B time – a lot of that is driven by trying to guess how they’ll work Yoan Moncada in, which leads to shuffling Frazier and Lawrie around. But those numbers will refine as spring training and then the regular season comes around, and I will be updating steadily. So this is primarily the computer projections for rates, with my, major league only, PT estimates superimposed. They do have one further feature – all the statistics are adjusted so that the total statistics of this set match the total statistics of 2016. This means that my projections will balance – runs scored equals runs allowed, hitter homers equal pitcher homes, et cetera. These, then, are the stats in the Major League Hitters and Major League Pitchers links.

As for the projected standings – that’s the way things fall out when the projections are applied. There is big love for the Cubs (even more than last year, when I projected 101 for them) and for the Astros. There is big hate for the Padres and, once again, the Royals (I don’t deliberately target KC, honest; there is a mismatch between KC and the projections that was worth 10 games in 2014, 12 in 2015, and 11 last year). There are players who seem to repeatedly over- or under-perform their projections, and the Royals seem to load up on those over-performers.

In addition, I’ve done just a little bit of cheating on a couple of players. I’ve matched a couple of free agents – Bautista, Trumbo, Napoli – with their rumor mill teams, even though they haven’t actually signed. typically, these are teams with an obvious hole at those positions – we can be pertty sure they are going to sign somebody to fill the void, even if those somebodies eventually get shifted around. Anticipating that Trumbo will eventually re-sign with the Orioles is no different, really, than a forecast  expecting him to hit for a .275 EQA. Again, as reality settles in, those will adjust.

So the first projection for playoffs: Astros and Indians win their division; Seattle and Texas are wild cards; Boston and Toronto in a playoff for the east. Favor Boston. Nationals, Cubs, and Dodgers win their divisions; the Marlins take one wild card; the Mets and Pirates play for the other.


Set your Twitter account name in your settings to use the TwitterBar Section.