Davis Martin spent the first nine starts of 2026 pitching like a guy who was about to get a lot more famous. He had a 1.61 ERA through May 16, he was in the conversation for a first All-Star nod, and if you had only the box scores you would have said the White Sox had found something. Then he made fifteen more starts and posted a 6.52 ERA, which is the kind of number that turns a breakout into a cautionary tale, and his season ERA has settled at 4.32.
Here is the part that matters, the pitch models never had him. Stuff+, which grades a pitch on its physical characteristics like velocity and movement without caring where it ended up or what happened next, had him at 91 through that hot stretch, where 100 is league average. After the collapse, it was 90. It did not move. His stuff was below average in April and it was below average in August, and the only thing that changed in between was that the results caught up.
What did move was Location+, which grades where a pitcher puts the ball given the count and the hitter. Through May 16 he was at 102, slightly better than average, and that was the whole trick. A guy with fringe stuff was surviving on placement. After May 16 his Location+ fell to 86, and the placement stopped covering for the stuff, and the ERA went where the underlying numbers had been pointing the entire time. When his manager Will Venable was asked about it, he said Martin "got exposed for not being able to attack the zone," which tracks with what we were seeing in his location grades.
I want to be careful not to oversell this as a magic trick. Martin also landed on the injured list with a blister in mid-August, and his two worst starts are the last two, so some of the very end of that decline has a physical explanation. But the decline started in late May and ran for twelve weeks before the blister, and it was location the whole way.
The reason I am opening a hitting article with a pitcher is that this is what a grade is supposed to do. Pitching+, which combines the two, does not try to predict Davis Martin's ERA. It grades his arsenal, and it is allowed to disagree with his results, and when it disagrees the disagreement is the information. Nobody looks at an 85 Pitching+ against a 1.61 ERA and concludes the model is broken, they conclude the ERA is going to move.
Hitters Get The Incomplete Grade
Hitters do not a direct analogue to Pitching+. They have plenty of numbers, but the numbers are all doing something else.
xwOBA, or expected weighted on-base average, takes the balls a hitter actually put in play and estimates what they should have been worth based on how hard and at what angle they were hit. It lands on roughly the same scale as batting average, where league average is about .315 and anything north of .400 is an MVP season, which makes it easy to read at a glance. It strips out fielders and parks and luck, which is genuinely useful, but it is still a grade on outcomes. It cannot tell you anything about the swings that did not produce a batted ball, which is most of them, and it cannot tell you why the batted balls looked the way they did.
On the other side you have the bat tracking data, which has been public since 2023 and includes bat speed, swing length, attack angle, swing tilt, contact depth, and more. Those are inputs. They are exactly the raw material you would want. But they are unadjusted, which is a bigger problem than it sounds like. Hitters swing slower at high pitches, not because they are trying to, but because the bat has not reached full speed yet when it meets a ball up in the zone (Covered extensively in my last post). Contact happens deeper on breaking balls. Attack angle changes with pitch height. So a raw bat speed leaderboard is partly a leaderboard of who swings at low pitches.
What has not existed is the thing in between: a grade on the swing itself, adjusted for what the pitcher did, that is allowed to disagree with the results. Everybody has had the data for three years. I assumed nobody had built it because nobody had gotten around to it, but going through the failed attempts, we see exactly why creating “Hitting+” isn’t as simple as it sounds.
Attempt One: Assigning a Value to Each Swing
The first version was the obvious one. Every pitch in a baseball game changes how likely the batting team is to score, and you can measure that change in fractions of a run. A home run adds about a run and a half. A strikeout costs about a quarter of one. That number is called run value, and it is already sitting in the public data for every pitch thrown. So: for every swing, look at how much run value it produced, compare that to what the average hitter gets on that pitch in that count, and grade the hitter on the difference. Swing at a slider off the plate and slap it into left for a single and you beat the average, because the average outcome on that pitch is bad. Swing at a meatball and pop it up and you lose, because the average outcome there is good.
The logic is fine. The leaderboard was Aaron Judge, Juan Soto, Shohei Ohtani, Nick Kurtz, Kyle Schwarber, Giancarlo Stanton. Which is to say the leaderboard was a list of good hitters, sorted by how good they are, which I could have gotten from the back of a baseball card.
The problem is arithmetic. A home run is worth about three times what a single is worth, so when you score a swing by run value, the hitters who hit home runs bank credit three times faster on every pitch in every count.
I will be quoting correlations a few times from here on, so one sentence on those: they run from 0, meaning two things have nothing to do with each other, to 1, meaning they are the same thing wearing different names. My brand new swing metric correlated 0.49 with plain old average exit velocity, which means about a quarter of it was just how hard a guy hits the ball. I had built a slower, more complicated version of a number that already exists.
Attempt Two: Grading Swings and Takes
The fix seemed straightforward. Instead of scoring by run value, score by rank: where does this outcome land among all the outcomes on pitches like this one. That flattens the home run advantage without erasing it.
It worked, in the sense that the exit velocity correlation collapsed to 0.09, but the new leaderboard was Trent Grisham, Juan Soto, Jonathan India, J.P. Crawford, Geraldo Perdomo, and Steven Kwan, with Javier Báez, Yainer Díaz, Salvador Perez, and Nick Castellanos at the bottom.
I stared at that for a while feeling before I noticed something, in March I wrote a piece about the implied strike zone that used four hitters as the extremes of chase rate, meaning how often a hitter swings at pitches outside the strike zone: Báez and Yainer Díaz as the biggest chasers in baseball, Grisham and Soto as the most patient. All four had landed at the correct ends of my swing metric, which was a hell of a coincidence for a number that was supposed to be measuring what happens after you decide to swing.
It was not a coincidence. I had never filtered for swings. Just under half the data was pitches nobody offered at, a called ball is a good outcome for a hitter, and my swing quality metric was measuring plate discipline. I had spent a week building a worse version of chase rate (chase rate = how often you swing at balls outside the strikezone).
There were three more variants after that, and they failed for smaller and less interesting reasons, so I will spare the details.
Taking The Square(d-up) Route to Hitting
By this point I had a clearer idea of what I was actually looking for. A swing ends in one of four states: you miss it, you foul it off, you hit it badly, or you square it up. The metrics I had built could see the first boundary, whiff or not, but a weak roller and a line drive both counted as contact. What I wanted was the probability of getting to good contact.
There is a clean measurement for that. Squared-up rate compares the exit velocity a hitter actually achieved to the maximum he could have achieved given how fast his bat was moving and how fast the pitch was coming. It is a measure of how well the bat met the ball, and because it divides bat speed out, it is not just another way of measuring power. So I scored every swing on it, zero for a whiff, zero for a foul, and the actual ratio for a ball in play, graded against what the league does on that pitch.
The best hitters in baseball by this new metric were Chandler Simpson, Steven Kwan, and Nico Hoerner. The worst were Aaron Judge, Kyle Schwarber, Nick Kurtz, and Cal Raleigh.
I sat with that for a day trying to convince myself it was a finding. It is not. The problem is the normalization I was so pleased with. Steven Kwan swings the bat 62mph, so an 85 mph single is a large fraction of everything he is capable of. Judge swings 76mph and needs to hit it 105mph to clear the same bar. Dividing out bat speed to isolate "quality" does not isolate quality. It rewards hitters who do not hit the ball hard.
And that is the thing I did not understand when I started, which is why it took so many tries. Good contact essentially is power. If you equal out bat speed, you get a metric that likes slow swingers. If you leave it in you have rebuilt a bat speed leaderboard. There is no third thing sitting in between "did you miss it" and "how hard did you hit it" that the data can see. The swing decomposes into fewer pieces than it feels like it should, and I suspect that is why nobody has created a convincing version of a swing metric.
Hitting+ Comes Down to Four Pieces
What survived is four components, and they line up in the order a swing actually happens.
Decision+ grades whether to swing. For every pitch it compares what a league average hitter gets by swinging against what he gets by taking, given the location, the count, and the pitch type, and scores the hitter on choosing the better one. Pitches where it is close barely count, which is the point, because most pitches are not real decisions.
Timing+ grades when the bat arrived. Contact depth, meaning how far in front of the plate the bat met the ball, adjusted for location and compared across pitch types. This one produced the most surprising thing I found. Everyone in baseball is early on soft stuff. On fastballs the league makes contact almost exactly where you would expect, and on breaking balls they are two inches out in front, and on changeups they are three. Being less early than everyone else is the skill.
It also responds to the count in a way that says it is measuring anticipation rather than mechanics. When a hitter is ahead in the count, two balls and no strikes or three and one, he can afford to sit on a fastball and take his hack. In those counts the gap on changeups is two inches wider than it is with two strikes, when he has to protect against everything. You cannot get that from a fixed contact point. That is a hitter geared up for something and getting fooled.
The other thing worth mentioning here is what did not matter. Attack angle, which is the metric everybody writes about, explains almost nothing about how well a ball is struck once you hold the pitch constant. Contact depth explains about eight times more. Swing path is the sexy number and timing is the one doing the work.
Contact+ grades whether the bat found the ball, adjusted for what the hitter chose to swing at. Hitters miss entirely on about 13 percent of their swings at fastballs in the strike zone and about 47 percent of their swings at breaking balls off the plate, so an unadjusted contact rate is partly a measure of pitch selection, which Decision+ has already priced. Adjusting for it moves Salvador Perez up thirteen points, because he chases constantly and makes contact anyway, and moves Mookie Betts and Myles Straw down, because their contact rates were flattered by only swinging at hittable pitches.
Power+ grades what the swing brought, and it has two halves. The first is bat speed adjusted for where contact happened, which I have written about before (paBS). The second is lift, meaning attack angle adjusted the same way, and it turns out to matter enormously.
The cleanest illustration is Vladimir Guerrero Jr. and Aaron Judge. In 2024 their adjusted bat speeds were within half a mile per hour of each other. Their lift was not close: Judge at the 95th percentile, Vlad at the 25th. Judge's xwOBA was .478 and Vlad's was .411. For two hitters with incredible bat speed only one was making the most of it.
The gap between Judge and Guerrero has gotten worse, and it is one of the more interesting things sitting in the data right now. Vlad's bat speed has not moved at all across three seasons. His lift has fallen from the 77th percentile equivalent to the 66th, and his xwOBA has gone .411, .382, .332. He is hitting the ball just as hard as he ever did and he is hitting it into the ground more, and the bat speed leaderboard cannot see any of it.
Mixing The Four Pieces
The composite, Hitting+, is not an average of the four. It is a model that takes all four sets of raw measurements and works out for itself how much each one should count, using xwOBA as the thing it is trying to explain. That is the same way Pitching+ works. Pitching+ is not Stuff+ plus Location+, it is a separate model that uses both as ingredients.
There is a real reason for this, the components are correlated with each other, sometimes strongly. Contact and power trade off, at a correlation of negative 0.61, which is not a modeling artifact, but a real feature of hitting: the guys who never miss when they swing are mostly not the guys who hit the ball +110mph. If you average the components you count that shared tendency multiple times.
Worse, two of the four actually point the wrong way when you look at them alone. Plate discipline and contact ability both appear to have essentially no relationship to production on their own, which would lead you to give them almost no weight, or even to conclude they hurt. Hold power constant and both turn clearly positive. What was happening is that the guys who chase and miss a lot are disproportionately the guys who hit the ball hard, and the power was masking the rest.
Simply averaging the four components gets you a number that correlates 0.39 with actual production. Letting the model set the weights gets you 0.62. That is roughly two and a half times as much of the story explained, and more to the point, it gets the direction right on two components the simple version gets backwards.
Does Any Of This Hold Up
Here is the test I care about most, run on hitters with at least 150 plate appearances, comparing each season to the next.
year to year | |
|---|---|
Power+ | 0.89 |
Contact+ | 0.84 |
Timing+ | 0.81 |
Hitting+ | 0.72 |
Decision+ | 0.70 |
xwOBA | 0.62 |
wOBA | 0.40 |
Every component is more stable season to season than the outcome measures are. That is the entire argument for grading inputs. wOBA barely holds 0.40 from one year to the next, which is why a good half season tells you so little, and a bat speed measurement holds 0.89.
The other number worth having is how long each component takes to mean anything, measured by splitting a season in half at random and checking how well a hitter agrees with himself.
reliable after | |
|---|---|
Power+ | +20 swings, about ~12 PA |
Contact+ | +120 swings, about ~70 PA |
Timing+ | +270 swings, about 150 PA |
Decision+ | more than 1,500 pitches, about 450 PA |
Power+ is real almost immediately, which lines up with the older research showing bat speed settles in a handful of swings. You can grade a callup's power tool in a week of games. Decision+ is at the other end and never quite gets there inside a season, which means it is a retrospective grade and I would not read a hitter's plate discipline off two months of data no matter how tempting the number looks.
The Kwan Problem
Steven Kwan grades out as one of the worst hitters in baseball, which is hard to believe coming into this season:
2024 | 2025 | 2026 | |
|---|---|---|---|
Decision+ | 107 | 107 | 111 |
Timing+ | 123 | 137 | 122 |
Contact+ | 131 | 131 | 131 |
Power+ | 57 | 53 | 45 |
Hitting+ | 69 | 60 | 54 |
He is elite at three of the four and getting better at the one that is hardest to measure. His Hitting+ sits at the first percentile. Meanwhile his xwOBA this season is .318, which is the 62nd percentile, so the batted balls say he is a slightly above average hitter and the grade says he is nearly the worst one alive.
Some of that is correct. Kwan has been below average by results for two straight seasons now, and the model was flagging his power collapse before his production followed. That is the same shape as the Davis Martin case, running in the same direction, and if you had asked me in early 2025 whether a hitter with a 57 Power+ was in trouble I would have said yes and I would have been right.
But the magnitude is wrong. Below average is not first percentile. Bat speed carries the most weight in the composite because bat speed is what separates most hitters from each other, and Kwan swings nine miles per hour slower than his contact points would predict. The model takes the relationship it learned in the middle of the pack, where it holds, and runs it straight off the edge of the map. I tried a version with a curve in it to see whether the extremes were being over punished. It held up under testing, barely, and it moved Kwan from the first percentile to the fifth, which is not a fix. It is a rounding error on a real limitation.
So the ture statement is that Hitting+ over punishes elite contact hitters with no power. It can see that Kwan does not hit the ball hard. It cannot see how he survives anyway.
What Hitting+ Can’t See
The other boundary is cleaner and easier to describe. Hitting+ grades the swing, so it cannot see anything that happens after the ball is hit.
Ceddanne Rafaela has a .282 xwOBA this season and a .335 wOBA. Those are the 40th and 88th percentiles. The gap is not luck and it is not the model missing something about his swing. He takes an extra base on 0.12 batted balls per plate appearance more than the average hitter does with the same exit velocity and launch angle, which is to say he turns singles into doubles by running. Across the league, that extra base rate correlates 0.81 with beating your expected numbers, and it correlates negative 0.07 with bat speed. It is legs, not bat.
That is a boundary rather than an error. Rafaela's extra bases are real runs. They just are not swing quality, and a metric that graded them would be measuring something other than what it says on the label.
Where It Lives
All the data is live at hitting-plus.vercel.app, updated daily, going back to 2024 when bat tracking data starts. You can pull up any hitter, see the four components and how confident each one is given his sample, and see where he meets fastballs versus breaking balls versus changeups.
Below is the leaderboard (through August 20th) for the 2026 season (among minimum 150 plate appearances).

One reason Junior Caminero is such a stand out is his insane combination of Power+ and Contact+. He actually doesn’t have the highest Power+ in baseball, but among the Top 12 in Power+ he is the only player with above average (over 100) Contact+. It’s a unique combination to see a player have such power while also maintaining the ability to make consistent contact.

Plotting Contact+ and Power+ on a scatter chart we can see how Juninor Caminero is an outlier in his combination:

Next time I will get into what these components do as hitters age, because Decision+ can be computed back much further than bat tracking components, and the answer to "does plate discipline improve with experience" turns out to be different than what you might expect.

