jump to navigation

Why isn’t baseball’s free agent market clearing? February 21, 2019

Posted by tomflesher in Baseball, Economics.
Tags: , , , , ,
add a comment

There’s been some discussion of the free agent market in baseball and its alleged inefficiency – that players like Manny Machado don’t sign until February and Bryce Harper is still unsigned, for example. Adam Wainwright, for example, has threatened a strike over free agency.

Certainly, there are many factors in play. However, the fact that there are stars who aren’t being picked up doesn’t mean that there’s anything nefarious afoot. Brad Brach, who signed with the Cubs on February 11, has complained about the teams’ use of algorithms to value players:


Let’s take that at face value and build a model of algorithms and noise. (It seems that Brach is implying collusion by teams, but in a future post I’ll discuss why I don’t think that’s likely.)

First, the simplifying assumptions:

  1. Players have an accurate valuation of their own talent levels (This is difficult to justify because players have an incentive to overvalue themselves, but the conclusions would not change qualitatively by relaxing this assumption)
  2. Teams have a noisy valuation of players based on the players’ talent levels (This is essentially the face value Brach’s claim: that teams use ‘algorithms’ based on player talent.)
  3. There are two teams with similar noise levels. (Modeling different forms of bias, or different preferences by teams, would probably not change the outcome very much, but would affect the distribution of players. Meanwhile, the market for some players is fairly large, but for many it’s very small, especially as prices rise.)
  4. All contracts are for one year. (This avoids the trouble of modeling players’ intertemporal rates of substitution, but a future version of this model may include preferences about both pay and number of years.)
  5. If a player is offered a contract that he thinks accurately reflects or overpays him, he signs with the team that offers him the bigger contract.

Poorly-constructed R code for a simulated free agent season:

for (i in c(1:1000)){data[i,1] <- runif(1)
data[i,2] <- data[i,1]+rnorm(1,mean=0,sd=.05)
data[i,3] <- data[i,1]+rnorm(1,mean=0,sd=.1)
data[i,4] <- max(data[i,2],data[i,3])
data[i,5] <- if(data[i,4]>=data[i,1]) data[i,5]=1 else data[i,5]=0}

Basically, generate a vector of random player talent levels; team 1 accurately values players with a standard deviation of .05, while team 2 accurately values them with a standard deviation of .1. 1000 players go on the market. Outcome:

V1 V2 V3 V4 V5
Min.     :0.0008885 Min.   : -0.1324 Min.   : -0.2024 Min.   : -0.1324 Min.   :0.000
1st Qu.:0.2613380 1st Qu.: 0.2621 1st Qu.: 0.2608 1st Qu.: 0.3012 1st Qu.:1.000
Median :0.4984726 Median : 0.4968 Median : 0.5133 Median : 0.5511 Median :1.000
Mean     :0.4997539 Mean   : 0.4987 Mean   : 0.5087 Mean   : 0.548 Mean   :0.754
3rd Qu.:0.7425434 3rd Qu.: 0.743 3rd Qu.: 0.7566 3rd Qu.: 0.7912 3rd Qu.:1.000
Max.     :0.9995596 Max.   : 1.1115 Max.   : 1.2508 Max.   : 1.2508 Max.   :1.000

That’s right – only 754 of the 1000 players signed. (In multiple simulations, the signing rate hovers around 75%. This makes sense theoretically, since valuations are independent: half the players will be undervalued by each team so 1/4 will be undervalued by both teams.)

Interestingly, player 973 is unsigned:

[973,] 0.9683805341  0.9472948838  0.874961530  0.9472948838    0

He evaluated himself at below the 97th percentile, but got unlucky in that both teams evaluated him below that: team 1 would offer him a 95th percentile contract and team 2 would rank him even further down.

Meanwhile, player 25 gets lucky:

[25,] 0.0109281745  0.0236191242  0.089982324  0.0899823237    1

Despite being in the 1st percentile, both teams accidentally overvalue him, and his contract ends up being suited to a player with nearly 9 times his value. (For the phenomenon where competition leads reliably to overpayment, see “winner’s curse.”)

We’re going to see both of these types of errors in any market where there’s a subjective evaluation of players. Particularly if the teams are using algorithmic valuations, much of the information they’re based on is going to be publicly available; even if teams weight it differently, efficient algorithms are likely to produce similar results.


How has hitting changed this year? Evidence from the first half of 2017 August 22, 2017

Posted by tomflesher in Baseball.
Tags: , , , , ,

It’s no secret that MLB hitters are hitting more home runs this year. In June, USA Today’s Ted Berg called the uptick “so outrageous and so unprecedented” as to require additional examination, and he offered a “juiced” ball as a possibility (along with “juiced” players and statistical changes to players’ approaches). DJ Gallo noted a “strange ambivalence” toward the huge increase in home runs, and June set a record for the most home runs in a month. Neil Greenberg makes a convincing case that the number of homers is due to better understanding of the physics of hitting.

How big a shift are we talking about here? Well, take a look at the numbers from 2016’s first half. (That’s defined as games before the All-Star Game.) That comprises 32670 games and 101450 plate appearances. In that time period, hitters got on base at a .323 clip. About 65% of hits were singles, with 19.6% doubles, 2.09% triples, and 13.2% home runs. Home runs came in about 3.04% of plate appearances (3082 home runs in 101450 plate appearances).

Using 2016’s rate, 2017’s home run count is basically impossible.

Taking that rate as our prior, how different are this year’s numbers? For one, batters are getting on base only a little more – the league’s OBP is .324 – but hitting more extra-base hits every time. Only 63.7% of hits in the first year were singles, with 19.97% of hits landing as doubles, 1.78% triples, and 14.5% home runs. There were incidentally, more homers (3343) in fewer plate appeances (101269). Let’s assume for the moment that those numbers are significantly different from last year – that the statistical fluctuation isn’t due to weather, “dumb luck,” or anything else, but has to be due to some internal factor. There weren’t that many extra hits – again, OBP only increased by .001 – but the distribution of hits changed noticeably. Almost all of the “extra” hits went to the home run column, rather than more hits landing as singles or doubles.

In fact, there were more fly balls this year – the leaguewide grounder-to-flyer ratio fell from .83 in 2016 to .80 this year. That still doesn’t explain everything, though, since the percentage of fly balls that went out of the park rose from 9.2% to 10%. (Note that those are yearlong numbers, not first-half specific.) Not only are there more fly balls, but more of them are leaving the stadium as home runs. The number of fly balls on the infield has stayed steady at 12%, and although there are slightly more walks (8.6% this year versus 8.2% last year), the strikeout rate rose by about the same number (21.5% this year, 21.1% last year).

Using last year’s rate of 3082 homers per 101450 plate appearances, I simulated 100,000 seasons each consisting of 101269 plate appearances – the number of appearances made in the first half of 2017. To keep the code simple, I recorded only the number of home runs in each season. If the rates were the same, the numbers would be clustered around 3077. In fact, in those 100,000 seasons, the median and mean were both 3076, and the distribution shown above has a clear peak in that region. Note in the bottom right corner, the distribution’s tail basically disappears above 3300; in those 100,000 seasons, the most home runs recorded was 3340 – 3 fewer than this year’s numbers. In fact, the probability of having LESS than 3343 home runs is 0.9999992. If everything is the same as last year, the probability of this year’s home runs occurring simply by chance is .0000008, or roughly 8 in 10 million.

Chone Figgins is below the Mendoza line, so why has he earned his spot? May 7, 2014

Posted by tomflesher in Baseball.
Tags: , ,
add a comment

It’s no secret to regular readers, if any, that I’m a fan of Chone Figgins. The Dodgers picked him up as a free agent and kept him on the roster this year. He’s hitting abysmally – in 15 plate appearances, he’s mustered only a single hit, and that was way back on April 12th – and at age 36 he isn’t getting any younger. Nevertheless, I think he’s earned his spot.

First, the Dodgers knew what they were getting. The last time Figgins hit above the Mendoza Line (.200) was 2010, and he sat out 2013 entirely. No one brought him on expecting him to be an everyday player with a high batting average. What they had a right to expect was a player who reliably walks 10% of the time – well above the league average of 7.7% – and who won’t strike out very often1. Thus far, Figgins has given them exactly that.

Although he has only hit once in his 15 plate appearances, he’s walked 5 times, with those walks spread out fairly evenly throughout the season. Those walks give him a tiny slugging percentage but an enormous OBP – hitting one out of every 15 isn’t bad if you’re walking five more, yielding an OBP of .400 (even with a SLG of .100). Figgins is low-variance – you can put him in to pinch-hit knowing that he’ll regularly walk. He may never hit a home run (and he hasn’t since April of 2012), but he’ll definitely walk regularly. (This is probably due to his being 5’8″ and it being impossible to locate a pitch in his strike zone.)

I have no delusions that Figgins is going to continue to walk 1 out of every 3 times he comes to the plate, but I also don’t think he’ll continue hitting quite so badly. He may not stay at .400 OBP all year, but he also won’t stay at a .100 batting average.

Just for fun, I dug up some other players who had seasons below .200 BA and above .375 OBP. Matt Stairs is the king here, getting 129 plate appearances in 99 games for Philadelphia in 2009. Tyler Flowers got around my “no pitchers and no catchers” restriction in 2009 by appearing in more than 50% of his games DH or PH. Otherwise, it would be easy to find catchers who are kept on the roster not for their hitting but for their defense, and since light-hitting catchers hit 8th, they’ll earn a lot of walks just based on position in the batting order.


Rk Player Year OBP BA PA Age Tm Lg G AB BB SO OPS Pos
1 Chone Figgins 2014 .400 .100 15 36 LAD NL 13 10 5 3 .500 *H/75
2 Nick Johnson 2010 .388 .167 98 31 NYY AL 24 72 24 23 .693 *D/H3
3 Tyler Flowers 2009 .350 .188 20 23 CHW AL 10 16 3 8 .600 /*2HD
4 Matt Stairs 2009 .357 .194 129 41 PHI NL 99 103 23 30 .735 *H/97D
5 Dallas McPherson 2008 .400 .182 15 27 FLA NL 11 11 4 5 .764 /*H5
6 J.J. Furmaniak 2007 .364 .176 22 27 OAK AL 16 17 3 8 .599 /HD46957
7 Michael Tucker 2006 .378 .196 74 35 NYM NL 35 56 16 14 .700 H7/93
8 Brian Myrow 2005 .360 .200 25 28 LAD NL 19 20 5 8 .610 *H/3
Provided by Baseball-Reference.com: View Play Index Tool Used
Generated 5/7/2014.

1Probably due to being 5’8″ and it being impossible to locate a pitch in his strike zone.

Mets, Game 21: Tales Of Interest April 24, 2014

Posted by tomflesher in Baseball.
Tags: , , , ,
add a comment

Three interesting things happened last night:

  • Kyle Farnsworth earned his second save of the year. Thus far, both saves have come against the Cardinals. Kyle is the third Met to earn a save this year, behind Jose Valverde and Carlos Torres; had Bobby Parnell converted his only opportunity, the Mets would have four and be tied with the Yankees for the lead in this category – four Yankees (Shawn Kelley, David Phelps, David Robertson, and Adam Warren) have converted save opportunities, with Adam Warren blowing more saves than he converted. Like the Mets, the Yankees suffered from closer David Robertson disappearing to the DL, with David Phelps and Carlos Torres each being the odd long man to earn a save. Last year, the Mets were in heavy competition for this as well – they used seven pitchers to earn saves (including Vic Black and Frank Francisco, each of whom had only a cup of coffee in the majors last year). Only the Astros, with 8, had more individuals earning saves.
  • The Mets also used five pitchers and no pinch hitters last night. Jon Niese went 6 2/3, striking out twice and walking once. He came out in the top of the seventh after making the second out in the sixth; the game ended with the pitcher’s spot on deck for the Mets. Daisuke Matsuzaka finished the seventh; Carlos Torres and Scott Rice combined for the setup and Farnsworth saved the game after allowing three hits and striking out one in his inning. I was surprised to see DiceK in a short relief role, but he’s handling it very well so far.
  • Michael Wacha had a fascinating game – for the first three innings, every out came via strikeout. He then got a bad case of the yips in the fourth, and though he made it through the inning allowing only two runs, Kolten Wong hit for him in the fifth. Wacha’s final line was 4 IP, 3 H, 2 R (both earned), 4 BB, 10 K. Danny Salazar of Cleveland actually bested Wacha, striking out 10 in 3 2/3 innings pitched back on April 10th. Felix Hernandez also struck out 10 in a four-inning start last year, in the infamous “bee game.”

Spring, When a Young Man’s Position Players Turn to Pitchers April 22, 2014

Posted by tomflesher in Baseball.
Tags: , , , , ,
add a comment

Last week was an exciting time, because it marked the first instances of the year of one of the World’s Worst Sports Blog‘s favorite situations – a position player taking the mound.

Position players are ordinarily called on to pitch under very specific circumstances: either the team is losing in a blowout (see, e.g., Jose Canseco‘s hilarious outing in 1993 – which resulted in Canseco having Tommy John surgery) or the game has gone on so long that no legitimate relievers are available to pitch. The best example of the latter was the April 17, 2010, game between the Cardinals and the Mets, in which the former team used two position players – Felipe Lopez and Joe Mather – in a 20-inning losing effort. (The Mets used another favorite trick, using starting pitcher Mike Pelfrey to close the game, as well as starters John Maine and Jon Niese to pinch run and pinch hit, respectively.)

The first appearance of a position player on the mound this year was similar to that 20-inning game. On April 16th, the White Sox’ Leury Garcia engaged the rubber in the top of the 14th against the Red Sox. Though he pitched a full inning, Garcia did allow two walks and a crucial double to open the game up, and ended up taking the loss. Starter-turned-long-man Chris Capuano got the win for the Red Sox with Burke Badenhop covering the last out to take the save.

The second was the blowout-type, in which the Yankees turned the final inning of a brutal loss over to middle infielder Dean Anna on April 19th. When Anna got up, the Yankees were trailing 14-1; Anna allowed two earned runs on three hits and no walks. Anna moved from shortstop to pitcher, so the Yankees gave up their designated hitter in the process. This triggered a fascinating six position changes to start the inning:

Dean Anna moves from SS to P
Kelly Johnson moves from LF to 1B
Scott Sizemore moves from 1B to 3B
Yangervis Solarte moves from 3B to SS
Alfonso Soriano moves from RF to LF
Ichiro Suzuki replaces Carlos Beltran (DH) playing RF batting 3rd

Still, the World’s Worst Sports Blog has a new spirit animal; although Don Kelly is still our favorite position player, he was outdone last season by the magical Jake Elmore, who played every position including designated hitter during his 2013 season with the Astros. Elmore played mostly middle infield and came in (mid-inning!) to catch on August 19 after Carlos Corporan was hit by a foul ball (catcher Jason Castro was serving as DH), and then was asked to pitch the final inning of that game. Oddly, even though pitcher and catcher are the toughest boxes to check off, Elmore’s last position? The innocuous center field on September 10th.

In any just world, Elmore and Kelly will end up on the same team at some point in the future and be batterymates.

Everybody’s Stupid Except Me April 21, 2014

Posted by tomflesher in Baseball.
Tags: , , , ,
add a comment

Or, why is there a guy being paid to manage the team when I already do it?

There have been quite a few extra-innings games this year for the Mets. The pitching situation has been stressed a couple of times; thankfully, yesterday’s 14-inning monstrosity against the Braves worked out okay. This is due almost entirely to Dan Uggla‘s status as one big walking, talking error. His Jeter-esque defense ticked me off in the All-Star Game a few years ago, but it’s been hilarious since.

Poor Gus Schlosser took a bullet for the Braves, pitching nearly four innings before giving up the game-winning sac fly to Curtis Granderson (who can’t even get a hit when he’s playing hero) after a previous career-high 1.2 innings earlier this year. Schlosser was the Braves’ sixth pitcher of the night. Jose Valverde got the win for the Mets, their seventh pitcher of the night. Valverde was an odd choice to go to in a high-leverage situation, since Jeurys Familia hadn’t pitched the previous day. Gary Cohen speculated that Familia was simply unavailable, meaning that we’ll find out today that he’s healthy as a horse but was getting a drink of water when the phone call came. Gonzalez Germen had a rough third of an inning, but Scott Rice cleared it up for him.

Terry Collins did a few very strange things. First, he pinch-hit Andrew Brown for Omar Quintanilla and immediately used Ruben Tejada to pinch-hit for the pitcher, apparently counting on Brown to get on base and planning to use Tejada to bunt him over. Of course, using a pinch-hitter for your shortstop counting on the pinch-hitter to get on base is risky, and Brown didn’t, leaving Tejada to pinch-hit when Travis d’Arnaud and Kirk Niewenhuis were still sitting on the bench. Granted, it worked out okay, since Tejada hit a nice single to get on base, but Quintanilla has had a .375 OBP this year; unless he was injured or something, using Brown to hit for him is weird. Forcing Tejada into the game was weirder, since letting Quintanilla hit and then allowing the game’s situation to dictate the double switch would have allowed Terry a bit more control over the situation. As it is, Terry used Quintanilla in the top of the ninth, Brown to hit in the bottom of the inning, and then Daisuke Matsuzaka in the same slot to start the tenth. Considering that the Mets were at the end of their bench by the end of the game, keeping Brown around to hit for someone later in the game would have been a more conservative move with no smaller an upside.

Second, and much less sinfully, he benched Anthony Recker as part of a double switch in the 13th to 14th to make room for Papa Grande. Recker was exhausted, certainly, and was in the ideal spot to allow for the double switch. However, suppose Granderson hadn’t hit his sac fly but had grounded out to leave Eric Young and Kirk Niewenhuis at second and third, respectively, with two outs. That requires David Wright to get on base, and then (if Schlosser made the reasonable decision to walk Wright and pitch to Daniel Murphy) you’re counting on Murphy to make a clean hit. At that point, you have a choice – either you ask Valverde for a second inning, you ask Familia to pitch even though he seemed to be unavailable, or you ask a starter to pitch. Leaving Recker in at first base and removing Lucas Duda would have put Valverde in the #4 slot instead of the #5 slot, but would have maintained Recker’s eligibility to pitch. Granted, that still involves moving an outfielder to first and having a starter play the corner a la Kyle Lohse and Roy Oswalt a few seasons ago; on the other hand, if Quintanilla had been allowed to bat for himself, you then also have either Ruben Tejada or Andrew Brown on the bench, in which case Brown has experience at first and Tejada has experience at second, allowing Daniel Murphy to take over at first.

I did, however, love using DiceK in the long-reliever role in extra innings. I’m glad Terry had him on hand, and I’m thoroughly impressed with Matsuzaka’s ability to adjust to the relief role.

Side note: the Mets have actually been outscored game for game in extra innings, 23-22, leading to a weird .480 Pythagorean expectation. Small sample sizes and walkoffs make that a bit difficult to draw real conclusions from.

Conflicts April 14, 2014

Posted by tomflesher in Baseball.
Tags: , , , , , ,
add a comment

You’re trying not to smile, aren’t you?

– My wife on Saturday morning

Although the Dodgers are currently my favorite California team, it’s tough – I’m a huge Angels fan. It all started in 2004, when Josh Paul forgot to tag A.J. Pierzynski …. but I prattle on. Suffice to say, I was a terrible Mets fan this weekend.

Bartolo Colon took one for the team yesterday, going 5 innings but allowing nine earned runs (four of them home runs). After two extra-inning games, it was nice to get some length out of Colon, even if it will destroy his stats for the rest of the month. Although this would have been an excellent time to allow professional pinch hitter Ike Davis to show off the stuff that made him Arizona State’s closer, Terry Collins opted to allow Scott Rice, Jeurys Familia, and John Lannan each toss an inning. Familia was a bright spot, since he doesn’t seem to be taking his loss on Saturday too hard.

I was really pleased to see Lannan used as a potential long man on Saturday night. Although both Lannan and Rice pitched in the night game Saturday and the day game Sunday, Rice had been used in the left-handed specialist role before being asked to eat up an inning on Sunday. Lannan was finally used in extra innings as a second starter; he ended up only needing to go two innings, but I’m sure Terry was glad to have a sixth starter on the bench for his second straight extra-innings game. Gonzalez Germen is also doing some excellent work these days. Hopefully we won’t be on the hook for Kyle Farnsworth in the setup role for too much longer. I’m not sure what kept the Professor out of the high-leverage game on Saturday night – I’m glad, don’t get me wrong, but he had only tossed a third of an inning the night before, and Terry seems to think he’s useful.

Jose Valverde finally blew a save. It’s been almost a year since he did – he blew three saves in 2013 for Detroit, all within a one-month span starting on May 12th. Of course, June 12th was his last save opportunity.

The Vultures of Capistrano April 10, 2014

Posted by tomflesher in Baseball.
Tags: , , , ,
add a comment

As with the swallows returning to Capistrano, every April brings the return of the Vultures to Major League Baseball.

A vulture win is a special kind of decision for a reliever. In its purest form, it occurs when a pitcher enters the game in a save situation – usually, a lead of 3 runs or fewer, although a larger lead is allowable if the tying run comes to the plate no later than two batters after the batter currently at the plate – and promptly blows the save before the team takes the lead back to win the game. Some commentators require that the pitcher then leave the game, allowing the win to occur through no fault of the pitcher’s own; others will allow a pitcher to acquit himself by closing the game and still call it a vulture win – that is, any game in which a pitcher has both a blown save and a win is a vulture win. The World’s Worst Sports Blog follows the latter convention, due to it being easier to find in stat sheets.

The first vulture win of the season was picked up by Kansas City’s Wade Davis on April 5th. Davis entered the game in the 8th inning to a 3-1 lead and promptly allowed a single to Marcus Siemen before hitting Jose Abreu with a pitch. Dayan Viciedo then walked to load the bases. Conor Gillaspie singled to bring Siemen home, and Paul Konerko hit a sacrifice fly to score Abreu. Magically, the lead was gone; having blown the save, Davis promptly struck out Alejandro de Aza and coerced a line out from Alexei Ramirez. In the next inning, Salvador Perez scored Alex Gordon to re-establish the lead, which was finally saved by Greg Holland.

The second was another pure vulture win by Tony Watson on April 8th. Watson came in to pitch the 7th for Pittsburgh; ahead 6-5, all it took was a single and stolen base by Emilio Bonifacio (plus a sacrifice from Ryan Kalish) to set up Anthony Rizzo‘s tying RBI. Hilariously, Watson then struck out Nate Schierholtz and got Luis Valbueno to line out, having summarily blown the save. In the 8th, Russell Martin sacrifice-flied Starlin Marte home to take back the lead, earning the W for Watson. Mark Melancon got the hold for the setup, and Jason Grilli saved the game for the Pirates.

Finally, Dan Otero of the As just last evening picked up a vulture win of the “kept pitching” variety. Otero relieved Jim Johnson in a 4-3 game in the bottom of the ninth with the bases loaded, then allowed Brian Dozier to sacrifice-fly Kurt Suzuki in to tie the game. Nonetheless, Otero pitched a clean tenth; in the top of the eleventh, Derek Norris homered himself, Daric Barton, and Alberto Callaspo in. Otero allowed two hits and a walk, but no runs, in the eleventh for the win.

No earned runs to start the season April 9, 2014

Posted by tomflesher in Baseball.
Tags: , , ,
add a comment

Fernando Rodney saved his second game for the Seattle Mariners last night, after being set up by the combined efforts of Danny Farquhar and Tom Wilhelmsen in the 7th and 8th innings. What really looked interesting about this box score is that all three relievers have yet to allow an earned run this year – Rodney (2 2/3 innings pitched) and Farquhar (4 1/3)  have each appeared in three games without allowing a run, and Wilhelmsen has appeared in four (3 1/3). (In the interest of fairness, Wilhelmsen was credited with an unearned run.) Mets closer Jose Valverde is in the same position, having pitched in four games and 4 1/3 innings without allowing the opposition to score. The Dodgers’ J.P. Howell has appeared in six games, mostly in the 8th inning setup role, without giving up a run in 5 1/3 innings (and in fact earned the win in extra innings last night), and he seems to be sharing that role with teammate Chris Perez, who matched that six-game streak over four innings. The two Dodgers share the longest streak, counting games; Chris Withrow (5 games) and Zach Britton (3 games) each have fewer games played but more innings without surrendering a run.

Last year’s mark was set by Arizona’s Matt Reynolds, who opened the season with 19 games and 17 2/3 innings of scoreless relief; Alex Torres (20 innings in 10 games), Louis Coleman (21 innings in 18 games) and Juan Perez (22 innings in 14 games) each had more innings but fewer games.

Though he looked shaky last night in his non-save situation, we can all hope that Jose Valverde outdoes himself from last year – only five games and five innings before giving up his first run.

Tejada leads the team in OBP April 9, 2014

Posted by tomflesher in Baseball.
Tags: , , , ,
add a comment

Moneyball was an influential book for two reasons. First, it described the process by which a GM can attempt to min-max a winning team every year. That’s interesting. Second, it showed a lot of the fans – not the front offices, who had already corrected the inefficiency by the time the book was published, but the fans – about the importance of walking and generally getting on base.

I never thought last year that I’d be typing this sentence, but Ruben Tejada is leading the Mets in OBP for qualified players (3.1 plate appearances per team game). Two players outstrip Tejada’s .400 mark – professional pinch hitter Ike Davis and starter Jonathan Niese, each at .500 – but neither has enough plate appearances to be on pace to qualify for rate stats. In retrospect, it shouldn’t be surprising that Tejada’s eye is developing. As a 21-year-old in 2011, Tejada had an OBP of .360 in 376 plate appearances over 96 games, walking 35 times – that’s one walk every 10 3/4 plate appearances – and striking out 50, for a K/BB ratio of 1.42. Last year, Tejada went pear-shaped, walking only one out of every 15 plate appearances, but he still only struck out 1.6 times for every walk he took – which is hardly the mark of an inconsistent hitter. Last year, it looks like Tejada just got really unlucky, batting .228 on balls in play versus a team average of .291. This year, he’s swung all the way to the other side of the pendulum – so far, his BAbip is .400 versus a team average of .241.

Tejada may never be a brilliant shortstop like Jose Reyes was, but his batting is gaining in consistency.