Last year, the Cubs had baseball's third-best offense, both in runs scored and in advanced park-adjusted metrics. A lot of things had to go right to get to that point, but not everything went right, and in at least a few cases, you could forgive Cubs fans for expecting to see something even better. After all, Kyle Schwarber would be healthy, and it was easy to dream of young players like Addison Russell , Albert Almora Jr. and Javier Baez taking a step forward, or Jason Heyward rebounding from a disappointing first season in Chicago.

It didn't happen. Last year's third-best offense became this year's 20th-best offense in the first half, a huge reason why the Cubs were under .500 as late as July 14.

Of course, you always figured there was too much talent for things not to improve, and they have, considerably. This year's inadequate first-half lineup has become the National League's most productive second-half lineup, one that looks a lot more like the group that won it all last year. Yet for all the changes in productivity, the most interesting change is how little has changed at all. This is largely the same group, finding the levels they were expected to be at.

Here's what we mean. Since the All-Star break and not including Sunday's 6-3 loss to Philadelphia, the Cubs are...

• First in runs scored (240)

• First in Weighted On-Base Average, wOBA * (.356)

• Second (tied) in on-base percentage (.355)

• Second in slugging percentage (.487)

• Third in home runs (70)

* You can think of wOBA in just the same way you do as OBP, except instead of treating each time on base equally, more credit is given for a home run over a double over a walk, and so on. It's a fundamental building block of advanced metrics. The 2017 Major League average wOBA is .321.



Just as importantly -- and not unrelated, of course -- the Cubs are second only to the Dodgers in wins (26), going from 5 1/2 games back of the Brewers in the NL Central to two games up in what seems like no time at all.

The runs haven't come by accident. Other than the Orioles, no team has increased their wOBA score as much from the first half to the second half as much as the Cubs have.



Put another way, thanks to the Cubs scoring six runs per game in the second half, their overall season line is now .252/.335/.441 (.331 wOBA). Compare that to the nearly identical .256/.343/.429 (.333 wOBA) from last year, and you can see that's good enough to win with -- especially with the starting rotation completing its own turnaround from a poor first half. (After a 4.66 ERA in the first half, 17th in the Majors, the post-break rotation is fourth with a 3.39 mark.)

But here's what's most interesting about this turnaround: This isn't a case of shipping out the players who weren't performing and finding those who would. Instead, it's with essentially the same roster that struggled in the first half. Other than swapping out backup catchers, trading Miguel Montero to Toronto and later replacing him with Alex Avilafrom Detroit, and promoting prospect Ian Happ in mid-May, there hasn't been any great roster turnover. This is simply more a case of players we expected to perform doing exactly that -- up and down the roster.

To illustrate that, let's take the 11 Cubs batters who had 50 plate appearances before and after the break for the team and break them down into three categories.

Hitting better (7)

Baez, Willson Contreras , Russell, Schwarber, Kristopher Bryant , Anthony Rizzo , Benjamin Zobrist

This is most of the heart of the Cubs' order, and when a half-dozen of your biggest names step up, you expect to see team success follow. Yet even within this group of surgers, there's different paths to improvement.

Rizzo, for example, had a perfectly fine first half (.259/.386/.508, .376 wOBA), yet one that wasn't up to his usual standards. He's making up for it with a .309/.411/.564 (.412 wOBA) second half that's made him one of baseball's 15 hottest hitters. Bryant's first half may have felt underwhelming, but he had a .391 wOBA then, nearly identical to the .396 he won the NL Most Valuable Player Award with last year -- and now has a .408 in the second half. He's fine.

You could say something similar for Contreras, who had a solid first-half line of .261/.329/.454 (.333 wOBA) that wasn't quite up to expectations, then scorched the ball for weeks before injuring his hamstring earlier this month.

Baez, meanwhile, didn't so much disappoint in the first half (.256/.295/.450, .304 wOBA) as continue doing what he'd always done; his career line through the All-Star game was a similar .247/.290/.407 (.297 wOBA). While his second half has been outstanding (.295/.340/.561, .365 wOBA), that's more of the outlier than his first half was.

Then there's the trio where improvement was all but certain, based on how far below their career levels they were performing. Schwarber may have been overhyped based on his World Series heroics, but it was never reasonable to expect he'd stay at the .171/.295/.378 (.294 wOBA) line he had when he was sent back to Triple-A. Since returning, he's hit a solid .248/.340/.535 (.367 wOBA), which, coincidentally, is just about the .264/.353/.490 (.360 wOBA) the respected Steamer projection system expected before the season.

Meanwhile, to put in perspective how much Zobrist (.294 wOBA) and Russell (.290 wOBA) struggled in the first half, they each performed at essentially the level that got Schwarber sent down. Both improved considerably in the second half (Zobrist, .321 wOBA, Russell, .367 wOBA), as expected, though Russell has missed a few weeks with a foot injury.

Hitting the same (2)

Almora, Heyward

Though Heyward's defense continues to be elite, he's had two extremely identical (and disappointing) halves, putting up a .303 wOBA in the first half and a .297 in the second. Those are each better than what he did last year (.281), yet still far from what was expected when he signed.

Almora, meanwhile, has more or less repeated his career marks, though he's traded off some patience (just one walk in the second half) for a bit more power (.437 slugging).

Hitting worse (2)

Jonathan Jay , Happ

Obviously, not everyone can improve, especially not when a player like Jay has a first half (.377 wOBA) so far out of character with his career (.337 wOBA), and his second-half .327 mark looks a lot more appropriate. Happ's big first-half debut (.361) has fallen back somewhat (.322), though he was one of the team's driving forces in staying afloat in May and June.

Sure, Avila (.280/.390/.500, .380 wOBA with the Cubs) has continued the hot hitting he had with the Tigers. Yes, backup infielder Thomas La Stella has been hot, though in just 30 second-half plate appearances. But the point here is that this lineup was too talented not to produce, and it has.

It doesn't mean everything will stay this way. Baez probably won't hit this well all year. Rizzo may not either. But then, Contreras will be back soon. So will Russell. The lineup will be just fine. The lineup is fine. It just took longer to get there than expected.