No entries match this filter.

Ke’Bryan Hayes is batting .068. His contact quality says .249. At 48 plate appearances, both numbers are provisional. But the distance between them is not small, and it points in one direction.

Four weeks into a season, the variance in batted-ball outcomes is still high. A squared-up drive settles into an outfielder’s glove. A weak grounder bounces through the left side on a bad hop. Most hitters have 60 to 80 plate appearances, not enough for the luck to redistribute. But the gaps between contact quality and results are large enough to read, and the largest gaps at this stage tend to close the hardest over the next several weeks. The signal is early. The pressure is already building.

Two hitters are owed results. Two have been spending them early. One corrected and then reversed.

Ke’Bryan Hayes · Pittsburgh Pirates · 48 PA
BA .068 / xBA .249 · wOBA .113 / xwOBA .316 · SLG .068 / xSLG .415 · EV 90.6 · Barrel 7.9% · HH 39.5%

The .068 is not a contact problem. Hayes’s exit velocity sits at 90.6, league average. His barrel rate runs below career norms but isn’t disqualifying. His hard-hit rate of 39.5% matches the league average almost exactly. By every measure of how hard the ball is leaving the bat, Hayes is producing the contact of a serviceable major leaguer. The contact deserves a .249 batting average. It has received a .068.

His BABIP is .063. League average hovers around .295. Hayes has been hitting the ball into fielders’ gloves at a rate that would be improbable over a full season for any contact profile, let alone one this ordinary. He is not generating pop-ups. He is not hitting the ball into the dirt. The batted balls are landing where defenders happen to be, continuously, producing the most extreme balls-in-play sequence in baseball this season. There is no skill-based explanation. There is only variance, and variance has been taking a victory lap.

The wOBA gap is .203 points. Gaps this large rarely survive a full season. This one has not just persisted through four weeks. It has been widening. At week two it was smaller. At week four it is the largest active gap in baseball among hitters with at least 40 plate appearances. Hayes is not trending toward the correction. He is trending away from it. If the contact profile holds, the correction should arrive more compressed for the delay. That is the historical pattern, not a guarantee.

Fernando Tatis Jr. · San Diego Padres · 78 PA
BA .242 / xBA .279 · wOBA .271 / xwOBA .358 · SLG .303 / xSLG .418 · EV 93.8 · Barrel 13.5% · HH 73.1%

The hard-hit rate is 73.1 percent. Second-best in baseball is Max Muncy at 69.2. Tatis has four and a half percentage points of daylight between himself and the next-hardest contact maker in the sport. He is squaring the ball up on seven of every ten swings. The result, so far, is a .242 batting average and a .271 wOBA.

Those numbers read like a shortstop earning his roster spot with the glove. Tatis is providing that too. The bat has been donating its contributions to the outfield.

Exit velocity at 93.8, well above league average. Barrel rate of 13.5%, genuine power production. The contact metrics describe an elite hitter whose batted balls have been finding leather at a rate the model logs as variance. The xwOBA of .358 against a wOBA of .271 is an .087-point gap. At 78 PA the sample is still thin, but the contact underneath it is not ambiguous.

The hard-hit rate has led baseball for four straight weeks while the surface results have looked like a modest slump. Historically, those two facts do not coexist over a full season. The hard-hit rate is harder to sustain as a fiction than the batting average. The counting stats have been about two weeks behind the contact that should be generating them. The gap favors closing, though the timeline is uncertain at this depth.

Brendan Donovan · Seattle Mariners · 65 PA
BA .294 / xBA .224 · wOBA .418 / xwOBA .329 · SLG .529 / xSLG .336 · EV 85.1 · Barrel 5.0% · HH 30.0%

Brendan Donovan is posting a .529 slugging percentage on an 85.1 exit velocity, a 5% barrel rate, and a 30% hard-hit rate. Those contact metrics belong to a hitter who grinds out production through plate discipline and bat-to-ball skills, not raw power. The xSLG of .336 is what the model returns when it looks at that profile. The actual SLG is .193 points higher. That is not a contact story. That is sequencing, and sequencing is the shortest-lived currency in baseball.

Donovan is a legitimate hitter. Solid walk rate, low strikeout rate, genuine bat-to-ball. None of that has historically produced a .529 slugging percentage over a full season. The balls in play that could have become singles have been becoming doubles, the power appearing in the gaps without structural support from the contact metrics. The xSLG of .336 has been logging every batted ball with the same reading through all of it.

Donovan at .418 wOBA looks like a middle-of-the-order contributor. Donovan at .329 xwOBA looks like what he is: a useful, contact-oriented hitter who contributes more through patience and plate coverage than through exit velocity. Those are not the same player. The current stat line is running on the credit between them.

Andy Pages · Los Angeles Dodgers · 71 PA
BA .409 / xBA .310 · wOBA .492 / xwOBA .375 · SLG .697 / xSLG .510 · EV 92.6 · Barrel 10.4% · HH 58.3%

The hardest case to call. Pages is hitting .409 on a 92.6 exit velocity, a 10.4% barrel rate, and a 58.3% hard-hit rate. The contact is good. This is not soft-contact variance finding gaps. Pages is squaring the ball up with regularity, and the results are ahead of what his contact deserves, but the contact itself provides a floor that Donovan’s does not.

The xwOBA gap is .117. That number is meaningful, but it reads differently when the underlying contact includes a 58.3% hard-hit rate and a 10.4% barrel rate. Pages is running a warm BABIP on top of contact quality that already points toward above-average production. Some of the gap should correct. The .409 is unlikely to hold. Where it lands depends on which component has been doing the work.

Pages is not being pitched around yet. The Dodgers lineup is deep enough that pitchers are mostly attacking, which means the approach has not adjusted to the sample. As it does, the contact quality will be asked to carry more of the weight. If the correction comes, it likely runs slower and lands softer than Donovan’s. The bat underneath the hot sequencing is legitimately above average. The .409 is probably not sustainable, but the floor is higher than the surface read suggests.

Brandon Lowe · Tampa Bay Rays · 72 PA
BA .250 / xBA .244 · wOBA .428 / xwOBA .360 · SLG .633 / xSLG .447 · EV 84.5 · Barrel 11.1% · HH 42.2%

Lowe’s case requires a timeline.

At week two he was the most extreme overluck case in baseball. xwOBA .408 against a wOBA of .550. Slugging .889, on a contact profile that included an 84.5 exit velocity and an 11.1% barrel rate. The model looked at those batted balls and returned numbers describing a solid second baseman. The results described a cleanup hitter in peak form. The gap was unsustainable by any standard available for describing unsustainability.

By April 10th it had nearly closed. xwOBA .321, wOBA .358. The correction ran quickly and far enough that the story appeared over. Then the last twelve plate appearances happened, and the current SLG of .633 against an xSLG of .447 represents the gap reopening on the same contact profile that produced the week-two outlier.

The contact has not changed. EV still 84.5, barrel rate still 11.1%, hard-hit rate 42.2%. The same profile the model corrected in week three is running ahead of expected again in week four. A .447 xSLG is solid production and represents the floor the contact points toward. The .633 SLG is sequencing that reopened a gap the correction was already closing. The prior correction suggests the pattern favors mean reversion, though twelve plate appearances is a thin basis for any directional claim.

None of this is certain. Four weeks of batted-ball data is a reading, not a verdict. The gaps described here are directional signals at a sample size where individual games can move the numbers materially. What the expected stats provide is a baseline for evaluating how much of a hitter’s current line is contact-supported and how much is sequencing. The sequencing tends to normalize. The contact tends to persist. How fast, and how far, varies.

Hayes carries the widest gap on the most ordinary contact. That combination has historically resolved toward the expected stats, though 48 PA is early to set a timeline. Tatis has the strongest contact profile in baseball producing below-average results, a divergence that favors closing but has not yet begun to. Donovan’s surface stats are the least supported by his contact metrics. Pages has the contact quality to sustain production well above average even after the BABIP cools. Lowe has already shown the correction running and then stalling.

All five cases are variations on the same ledger entry: the contact quality has been keeping records since Opening Day. The box score has not caught up. Whether it does, and when, is what the next several weeks will answer.

Saquon Barkley rushed for 1,140 yards in 2025 and produced the largest year-over-year rush EPA collapse at the position since the current EPA model was implemented in 2020. Both numbers describe the same backfield. They disagree about the season.

The disagreement is the interesting part. Kyren Williams ran for 1,299 yards on 316 carries in 2024 with a rush EPA of negative twenty-three. Not approximately zero. Negative twenty-three. The conversation around him at the time was top-five running back. McVay cut his volume by 18% in 2025 and Williams came back with fewer carries, better efficiency, and a positive EPA. The 2024 rush EPA had been telling the truth a year early. Most of the league treated it as a noise reading because the counting stats were good. The 2025 stat line was the audit.

The six backs below are the 2026 version of the same exercise. Where the volume and the value disagreed in 2025. What the disagreement was telling you about the back. And which way the offseason has been betting so far, because free agency and the coaching cycle are the league’s first answers to the same question the rankings are about to ask. The draft will write the rest in two weeks.

Saquon Barkley
2023 (NYG): 247 car · 962 yd · 3.89 ypc · −49.3 EPA · +0.39 RYOE/att · 15.0% load
2024 (PHI): 345 car · 2005 yd · 5.81 ypc · +37.3 EPA · +1.61 RYOE/att · 20.6% load
2025 (PHI): 280 car · 1140 yd · 4.07 ypc · −24.1 EPA · +0.28 RYOE/att · 31.1% load

The 2024 season was the ninth 2,000-yard year in NFL history. None of the previous eight came close to repeating. Saquon’s 1,140 is the median for the post-2K group, which means the yardage half of the regression was the expected half. The EPA half is the part that needs explaining.

The share of his carries facing eight or more defenders climbed from 20.6% to 31.1%, the second-largest jump among 200-carry backs in the league. Defenses crowded the line because the rest of the offense gave them permission to. Yards per carry fell from 5.81 to 4.07 against that math, which is not a collapse so much as a return to mortal: the yards-over-expected per attempt went from +1.61 (historic) to +0.28 (above average). The skill held, in roughly the same shape it held across two teams and three blocking environments. The setup it depended on did not.

The Eagles fired offensive coordinator Kevin Patullo in January and replaced him with Sean Mannion, a 33-year-old quarterbacks coach from Green Bay who has never called plays. AJ Brown spent half the season on the trade block. Hurts and the coaching staff spent the year reportedly fighting about under-center work. The structural causes of the box count are the offensive coordinator hire, the wide receiver who isn’t sure he wants to be there, and the quarterback whose efficiency stepped back. None of those causes resolved. The 2026 over-under should sit closer to 2025 than to 2024.

Bijan Robinson
2023 (ATL): 214 car · 976 yd · 4.56 ypc · −26.7 EPA · +0.39 RYOE/att · 20.6% load
2024 (ATL): 304 car · 1456 yd · 4.79 ypc · +17.9 EPA · +0.68 RYOE/att · 12.8% load
2025 (ATL): 287 car · 1478 yd · 5.15 ypc · −12.3 EPA · +0.91 RYOE/att · 14.6% load

Bijan Robinson’s yards-over-expected per attempt has climbed every year of his career: +0.39 as a rookie, +0.68 in his second season, +0.91 in his third. That figure was the third-highest among qualified backs in 2025, behind James Cook and Derrick Henry. The Falcons delivered him a positive rush EPA in only one of those three years, and the season the EPA went positive was the season his per-carry skill was at its lowest. Yards over expected describes the back. Rush EPA describes the back inside the situations he was given, and Atlanta gave him a lot of bad ones.

Penix played the year finding his footing as a starter. The passing game stayed inconsistent. A non-trivial share of Bijan’s carries occurred on second-and-long or in trailing scripts where the EPA math is unforgiving regardless of who is carrying the ball. His receiving line saved the season. 103 targets, 79 catches, 820 yards, +26.6 receiving EPA. Combined scrimmage EPA: positive fourteen. He finished first-team All-Pro, fourth in Offensive Player of the Year voting, and led the NFL in scrimmage yards. The rush EPA reflects the offense around him, which had a worse year than he did.

Atlanta fired Raheem Morris and hired Kevin Stefanski. The Cleveland scheme runs more under-center than Atlanta’s did (about 61% versus 30%), which is meaningful only because Bijan averaged 5.5 yards per carry from shotgun and 4.3 from under center in 2025. That is a sample-size note rather than a worry. The bigger note is that Stefanski’s Cleveland offenses produced three straight top-10 rushing units from 2020 to 2022. That is the scheme Atlanta hired for, even as the later Cleveland years fell apart around it. The Falcons picked up Bijan’s fifth-year option in April, and Brian Robinson Jr. is the new short-yardage piece behind him. The disagreement that defined his 2025 rush EPA was the offense around him, and the offense around him just changed.

Breece Hall
2023 (NYJ): 223 car · 994 yd · 4.46 ypc · −20.7 EPA · +0.67 RYOE/att · 19.3% load
2024 (NYJ): 209 car · 876 yd · 4.19 ypc · −20.9 EPA · +0.01 RYOE/att · 11.5% load
2025 (NYJ): 243 car · 1065 yd · 4.38 ypc · −22.3 EPA · +0.59 RYOE/att · 27.3% load

Hall has run for negative rush EPA in each of his three full seasons. The per-carry numbers haven’t moved much: yards per carry between 4.19 and 4.46, RYOE per attempt positive in two of three years, his 2025 figure (+0.59) close to his 2023 figure (+0.67). The rush EPA hasn’t moved at all. Three years, three different volume contexts, three negative numbers in the same neighborhood.

The Jets started three quarterbacks in 2025: Justin Fields for nine games (−22 EPA), Brady Cook for five (−68 EPA), Tyrod Taylor for six (−13 EPA). Combined team passing EPA across all three was negative one hundred and four. Defenses noticed. Hall’s loaded-box rate climbed from 11.5% to 27.3%, the largest jump in the league among 200-carry backs both years. A back can outrun his blocking. He cannot outrun a quarterback room that gives the safety standing permission to play eight yards from the line of scrimmage.

The Jets traded Fields to Kansas City and acquired Geno Smith from the Raiders. Smith threw seventeen interceptions in Las Vegas in 2025 and was bad in a way that is hard to repeat in a less broken environment; he was good in Seattle for three years before that. The bar Hall needs is not Geno-as-Pro-Bowler. The bar is one starter for the whole season, and that bar just got cleared. The 2026 rush EPA on the same per-carry numbers should be a different number than the 2025 rush EPA was.

Tony Pollard
2023 (DAL): 252 car · 1005 yd · 3.99 ypc · −16.8 EPA · −0.16 RYOE/att · 11.1% load
2024 (TEN): 260 car · 1079 yd · 4.15 ypc · −26.2 EPA · +0.05 RYOE/att · 21.2% load
2025 (TEN): 242 car · 1082 yd · 4.47 ypc · −21.7 EPA · +0.47 RYOE/att · 23.1% load

Same shape as Hall. Per-carry efficiency improved, rush EPA stayed deep in the negatives. Different cause. Cam Ward, the first overall pick of the 2025 draft, attempted 540 passes for the Titans and finished with a passing EPA of negative one hundred nine, the worst figure in the league among qualified passers by thirty-six points. He ran fine. The drives kept starting in a hole.

Tennessee fired Brian Callahan, hired Robert Saleh as head coach, and brought Brian Daboll in as offensive coordinator. Daboll spent four years as Buffalo’s offensive coordinator turning Josh Allen from a raw first-round project into an MVP candidate. That is the development arc Tennessee hired him to run on Cam Ward. Pollard turned twenty-nine in April. The window for a contingent recovery is one year wide. If Ward takes the kind of year-two leap Allen made in Buffalo, Pollard’s 2025 efficiency translates into positive EPA without his stat line moving much. If Ward doesn’t, the rush EPA reads the same way it just did and Pollard’s age starts being the explanation.

James Cook
2023 (BUF): 237 car · 1122 yd · 4.73 ypc · −7.3 EPA · +0.45 RYOE/att · 10.1% load
2024 (BUF): 207 car · 1009 yd · 4.87 ypc · +10.6 EPA · +0.82 RYOE/att · 21.7% load
2025 (BUF): 309 car · 1621 yd · 5.25 ypc · +5.6 EPA · +1.17 RYOE/att · 30.4% load

Cook is the section where the framework’s machinery has nothing to disambiguate. Both numbers agree, and they have agreed for three straight years. The trajectory is the textbook version: yards per carry 4.73 to 4.87 to 5.25, RYOE per attempt 0.45 to 0.82 to 1.17, rush EPA −7 to +11 to +6. The 2025 EPA dipped slightly only because the touchdown count fell from 16 to 12 and the EPA model heavily weights touchdowns. Everything else moved up. He absorbed a 49% jump in carries, raised his yards per carry, and led the league in rush yards over expected per attempt. He did it against more crowded boxes (loaded-box rate up nearly nine points) as Buffalo leaned into early-down runs. The yards came anyway.

He signed a four-year, $48 million extension in August. The Bills’ passing offense remains the most efficient in the league behind Allen. The defensive math around him should stay honest. The 2026 read is the same as the 2025 read: workhorse usage in an efficient offense, with both numbers agreeing about him. There is no disagreement to resolve.

Derrick Henry
2023 (TEN): 280 car · 1167 yd · 4.17 ypc · −2.1 EPA · +0.31 RYOE/att · 35.4% load
2024 (BAL): 325 car · 1921 yd · 5.91 ypc · +40.6 EPA · +1.77 RYOE/att · 33.2% load
2025 (BAL): 307 car · 1595 yd · 5.20 ypc · +9.2 EPA · +1.12 RYOE/att · 39.1% load

Henry turned thirty-two in January. The 2023 line in Tennessee (1,167 yards, −2 EPA, +0.31 RYOE/att) was a back closing out his run with a faded contender. The 2024 in Baltimore (1,921 yards on 5.91 ypc, +40.6 EPA, +1.77 RYOE/att) was historically anomalous on every axis available, and the team change was the inflection. He gave back 326 yards and 31 points of EPA in 2025 and stayed ahead of the line that catches Saquon. The EPA stayed positive. The yards-over-expected per attempt stayed second in the league. The yards per carry held above five.

Henry faced a heavier box than Saquon did. His 2025 loaded-box rate was 39.1%, against Saquon’s 31.1%. The Ravens finished twenty-first in team passing EPA, well below Philadelphia. By the situational arithmetic Henry was supposed to be the back whose numbers collapsed: a year older than Saquon, in a worse passing environment, with defenses crowding the line at a higher rate, on the same volume. The arithmetic still produced positive EPA. The reason is the 1.12 yards over expected per carry. Saquon’s was 0.28. The same difficult situation looks different depending on how much the back outruns it.

The 2026 risk is the per-carry skill, because the per-carry skill is the cushion holding everything else above the line. Henry will be running an age-32 season behind the same scheme against the same defensive math, and a small decline in RYOE per attempt drops him into the cluster that catches Saquon. The 2024 outlier is a memory. The 2025 baseline is closer to the floor than the ceiling. Backs rarely age into more yards per carry.

The 2025 leaderboard prints seventeen 1,000-yard rushers. Seven of them gained their team expected points. The other ten did not, and the disagreement said something different about each one. Rush EPA describes the back inside the situations he was given. Yards over expected describes the back. When both numbers agree, the leaderboard is telling the truth. When they disagree, one of them is.

Free agency and the coaching cycle already chose. Stefanski to Atlanta is a bet on Bijan’s RYOE finally meeting an offense it deserves. Daboll to Tennessee is a bet on the QB room around Pollard. Geno Smith to New York reads the same way for Hall: any starter all year, even a mediocre one, is enough to fix what was crowding the box. Philadelphia hired a 33-year-old quarterbacks coach who has never called plays, which is not a bet so much as a wish. The only back in the cluster whose RYOE per attempt also went negative was Christian McCaffrey, on 311 carries at age 29, and the 49ers’ depth chart going into the draft has him as the only proven option. If San Francisco spends a high pick at the position in two weeks, that bet gets walked back. If they don’t, the people running the depth chart do not appear to have looked at the touch counts. Cook and Henry got paid to be themselves.

The 2026 cheat sheets will be built from 2025 yardage. Yardage is the easy number to pull. The hard numbers are the ones underneath, and the offseason has already started telling you which way the front offices read them.

14 G · 57 PA · 51 AB · .314 / .386 / .706 · wOBA .462 / xwOBA .483
EV 97.9 mph · Barrel 26.5% · Hard-Hit 70.6% · 6 HR

Contact quality in Jordan Walker’s first 12 plate appearances can tell you a direction. It cannot tell you a magnitude. The Week One Truthers piece was explicit about the limit: no responsible analyst would draw conclusions from the sample it was drawing conclusions from, the method was the point rather than the prediction, the gap between the box score and the contact data was most visible when the sample was at its most absurd. The piece bet on a direction. It did not bet on a level.

Thirty-four batted balls is a different kind of sample, and the method does different work inside it. At 12 PA, the sample could not distinguish between two readings of Walker’s numbers: a first-week outlier regressing to a 2025 prior, or a first-week peak overshooting a new and higher one. The two readings had the same arithmetic at 12 PA. They had the same arithmetic at the April 3rd trough. Thirty-four BBE can tell them apart. It still cannot tell you the level. It can tell you which of the two readings the level belongs to, which is most of the question.

At 17 batted balls, on April 3rd, either reading was defensible. The cumulative exit velocity had fallen from 100.4 to 97.3. Barrel rate from 33.3% to 17.6%. xwOBA from .686 to .365. These are the numbers of a good hitter coming back to earth. They are also the numbers of a first-week outlier regressing to a prior that his 2025 had earned him. Same arithmetic, two stories.

The next seventeen batted balls disambiguated. Walker hit a grand slam in Detroit on the 4th. A solo shot off Ken Waldichuk in Washington on the 6th, 104.4 mph off the bat. A fifth home run in Washington on the 8th, 107.8 to center field, cleared Jacob Young’s glove by a foot. Four home runs in five games. A sixth off Boston on the 11th tied him with Henderson and Alvarez for the major-league lead. By April 11th the cumulative numbers had stopped falling. They settled where they currently sit.

2025 finalWeek One (12 PA)April 3 (17 BBE)Now (34 BBE)
Exit Velocity92.3100.497.397.9
Barrel Rate10.9%33.3%17.6%26.5%
Hard-Hit Rate50.0%88.9%76.5%70.6%
xwOBA.278.686.365.483

Thirty-four BBE is not enough to stabilize a point estimate of xwOBA. The reliability of that number at this sample is around .18, which is a polite way of saying the .483 is not a claim the data is in any position to defend. The direction is a different matter. A hitter with Walker’s 2025 barrel rate produces nine barrels in thirty-four tries less than one percent of the time. A hitter with his 2025 hard-hit rate produces twenty-four hard-hit balls in thirty-four essentially never. Average exit velocity does not need to stabilize to its own true value for a 5.6 mph gap to have cleared sampling noise. Where above the 2025 prior the 2026 profile is settling is something thirty-four BBE cannot yet say. That it sits above the 2025 prior is something thirty-four BBE can. The two are different claims, and the sample at 34 can honor one of them. Various readers of Walker have already started responding to the one it can.

The Cardinals are reading it fastest, because they have to fill out a lineup card every night. Chaim Bloom spent the offseason telling reporters the team needed a power right-handed bat. He said it at the Winter Meetings. He said it on local radio. He said it enough times that it became the winter’s shorthand for what the roster didn’t have. The team was going to run Walker out there anyway, because they had nobody clearly better and were already paying him. The answer was supposed to come from somewhere else. The answer has been coming from Walker. Masyn Winn missed a few games last week and Walker moved to cleanup because somebody had to hit fourth. Since the move he is slashing .333/.407/.833. Nobody has suggested moving him back.

Walker himself has been reading it on his own schedule. The Week One Truthers piece credited Driveline Baseball with the offseason work, because Driveline’s hip-collapse diagnosis from October was the reported version at the time and was the cleanest available mechanism. Walker now credits Casey Chenoweth, the assistant hitting coach the Cardinals brought in to work with him, and talks about a reorganized workout program and a swing rebuilt around what the body could now do. “It’s just going through the roof right now,” he told the beat after the Washington series, “and I’ve got to get it to stay there.” That is the quote of a player who knows exactly what he used to be and who is trying not to look at what he is becoming in case looking at it breaks the spell. The mechanism story has revised once. It may revise again. The thirty-four batted balls won’t, because they already happened.

The projection is the slowest reader, and by design. FanGraphs has Walker for a .310 wOBA the rest of the way, which is the 2025 season rendered forward with an age adjustment. The projection is doing what projections are built to do. It weights multi-year history against a small recent sample and arrives at a number that describes the 2025 version rather than the one currently batting. Slow weighting is the right default in almost every case because almost every case is not Walker. The projection will move when the plate-appearance threshold it weights against moves, which will take another month. By then it will describe whatever Walker was a month ago, which will still be behind whatever Walker is by then. Projections run at the speed of the sample. The sample is still smaller than the prior.

The 100.4 didn’t hold. The 17.6% trough didn’t hold. Something between them is holding. The hundredth-percentile exit velocity held. The grand slam in Detroit held. The cleanup spot held. Chaim Bloom had his right-handed bat. The mechanism story will probably revise again. FanGraphs will get there in a month. The sample is now big enough to say that much. Where above the 2025 prior the 2026 profile is settling is next month’s question, and it is a much smaller question than the one the trough looked like it was asking three weeks ago.

49 PA · .391 / .435 / .381 · xBA .290 · xSLG .327 · xwOBA .298
EV 80.6 mph · Barrel 0.0% · Hard-Hit 15.9% · K% 4.1%

Chandler Simpson has forty-nine plate appearances, zero barrels, and an average exit velocity of 80.6 miles per hour. He is batting .391.

The Statcast board reads like a reporting error. Exit velocity: 80.6 mph, against a league average around 89. Hard-hit rate: 15.9 percent, against a league average around 40. Barrel rate: zero, flat, on every daily snapshot since the season opened, not a single rounded-down .4 or .6. The model looks at that contact profile and returns an xwOBA of .298 and an xBA of .290, which are the numbers it prints when a batted-ball population looks like a backup utility infielder in a day game.

Actual wOBA: .381. Actual batting average: .391.

None of this is small-sample noise. In 2025, across 109 games as a rookie, Simpson’s barrel rate, hard-hit rate, and average exit velocity all ranked in the first percentile. One, one, one. In the same season, his whiff rate was 11.5 percent and his strikeout rate was 9.8 percent, both in the 98th percentile. The same player, the same profile, the same contradiction as now: a bottom-of-the-league contact maker who does not miss, does not walk very much, and arrives at first base before the throw does more often than is comfortable for the pitcher. He finished the year hitting .295 with forty-four stolen bases and zero home runs.

The 2026 version is more extreme in both directions. The strikeout rate is 4.1 percent, tied for the lowest mark in the sport and more than three points clear of the next tier, which begins with Luis Arraez at 7.3. It will not hold at that level. Even discounted to something sane, it is the kind of number you keep glancing back at to make sure it was really there. Everything he does is stacked at the edge of the distribution.

Simpson is twenty-five, left-handed, listed at five-eleven and 170 pounds. The Rays drafted him in the second round in 2022. In 115 games across two Class-A levels in 2023 he stole ninety-four bases on one hundred nine attempts, tied for the most in the minor leagues that year and one of the most by any minor leaguer in recent memory. His first over-the-fence home run since his junior year in college came this spring in a Grapefruit League game against the Twins and was treated by the Tampa Bay beat writers as a novelty act, which it was. Asked afterward whether it signaled anything about what was coming, Simpson said, “Hell nah. Nah, nah, nah, nah,” and laughed.

The hitters he studies on film are Rod Carew, Tony Gwynn, Rickey Henderson, Wade Boggs, and Luis Arraez. The runners he studies are Vince Coleman, Billy Hamilton, and Kenny Lofton. The athletes he studies who are not baseball players are Tyson Gay, Usain Bolt, and Michael Johnson. Most major-league rookies study the first kind of film. Fewer study the second. Almost nobody studies the third, because almost nobody is trying to assemble an offensive game in which the distance from home to first is a contested quantity on every batted ball. Simpson is.

Start from what happens on a single play. Simpson grounds one at 78 miles per hour to the left side of the infield. The xStats model looks at the exit velocity and the launch angle and returns a number. The number is lower than what Simpson actually does with that ball. He beats the throw. The ground ball that is a routine 6-3 for any other hitter becomes a single because the runner arrives before the ball does, or because the infielder who sees him coming rushes his hands and short-hops the first baseman, or because the third baseman is cheating two steps in against the bunt and cannot get back on the chopper fast enough. The model was fitted to the outcomes of hitters who do not run the way Simpson runs, which is almost all of them, which is the whole problem.

xStats is a batted-ball model. The question it asks is what contact quality is worth. As of 2019, the answer it gives includes a partial correction for speed: Statcast noticed that fast runners were systematically outperforming their xwOBAs on slow grounders and updated the model to incorporate a hitter’s seasonal sprint speed on the narrow subset of batted balls it classifies as topped or weakly hit. The update does what it was designed to do. It does not correct line drives that drop in shallow left field because the fielder had to hold the runner off second. It does not correct singles that become doubles because the hitter was already rounding first when the throw came in. It does not correct bunts beaten out down the third-base line. And the sprint-speed term the model does apply was calibrated on the league-wide distribution of sprint speeds. Simpson sits past the end of that distribution.

The standard move during a season is to blend xStats against actuals as the sample grows. Whether the blend lives in a spreadsheet or in the reader’s head, its job is to pull variance toward quality. It assumes the gap between what a player is producing and what his batted balls deserve is noise the season will absorb. For most hitters the assumption is correct. Bobby Witt Jr. is currently underperforming his xwOBA by more than a hundred points with a 60 percent hard-hit rate. Freddie Freeman is underperforming his by a hundred with a 19 percent barrel rate. The blend is right to wait for them. The variance they are sitting inside is the ball-finds-glove kind that two more weeks of schedule will iron out.

Simpson’s gap is structural. It sits between a model that measures contact and a player whose production comes from a place the model was not built to look. Waiting for the .381 to drift back toward the .298 is waiting for the wrong weather. The .298 is the floor of what his batted balls would be worth in the legs of somebody slower.

There is a version of this piece that calls xStats broken and asks for the sprint-speed correction to be extended to every batted-ball category. That would be a different piece and a worse one. xStats does exactly what it claims to do: it measures contact quality, with one narrow exception, and hands the rest of the game to the reader. A framework that knows its own limits can be read at them. Simpson is what that reading looks like at the edge.

Forty-nine plate appearances is a small sample for almost any hitter in baseball. For Chandler Simpson it is the sample size at which the model and the player have already agreed to disagree, and the disagreement is not going to close. The model will keep returning .298. The player will keep hitting something that starts with a three. Both numbers are telling the truth. They are telling it about different games.

Most fantasy football rankings for 2026 will be built from 2025 full-season averages, because full-season averages are the easiest number to pull. They also weight the first fourteen weeks at more than three to one against the last four, which is bad math for any season where the meaningful role changes happened in December. Most seasons.

The other thing the average obscures is that the last four games come from two different kinds of teams. Coaches whose seasons are alive choose players the way they choose plays, under consequence and with someone watching. Coaches whose seasons are over choose for other reasons: notes for next year, the best remaining option being the only option, the rookie quarterback finding out who his guy is. Both kinds of choice show up the same way in the box score. They are not the same evidence. Four players below from the first kind of team. Two from the second.

Colston Loveland, Chicago Bears TE
Weeks 1-14: 13.2% TS · 13.7% AYS · 0.29 WOPR · 8.5 PPR/g
Weeks 15-18: 26.6% TS · 28.4% AYS · 0.60 WOPR · 15.6 PPR/g

Rookie tight ends do not run NFL offenses in winner-take-all games. The position is too hard, the assignments are too complicated, the veteran in the room is too important to bench. Sam LaPorta caught 86 passes as a rookie for the contending 2023 Lions and the league spent the next two years calling him an exception. Through fourteen weeks of 2025 Loveland’s target share sat at 13.2%, splitting reps with Cole Kmet the way rookie tight ends usually split with their veteran. Across the final four games it was 26.6%. Air yards share moved in lockstep, 13.7% to 28.4%. Both numbers doubled. The air yards share is the one that matters: target share doubling can mean more checkdowns, air yards share doubling is routes into the field. The Bears, NFC North champions, went into Week 18 against Detroit playing for the conference’s two seed, with a tenth-overall pick at tight end whose career-high in receptions before that day was six.

Soldier Field, fourth quarter, Bears down 16-8: Caleb Williams found Loveland for twenty-seven yards into the red zone, and a few plays later for a one-yard touchdown in the back of the end zone. Cole Kmet caught the two-point conversion to tie it 16-16. Detroit kicked the field goal as time expired and won 19-16. Chicago backed into the seed an hour later when Washington beat the Eagles. Loveland finished ten catches on thirteen targets for ninety-one yards.

Ben Johnson came from Detroit, where Sam LaPorta was the rookie exception because Ben Johnson decided he should be. The pattern has now repeated. Loveland’s WOPR across the four-game window was 0.60, featured-receiver territory in any offense, let alone for a rookie tight end. Johnson looked at his rookie in the most important game of his first year as a head coach and decided the answer was the rookie. Tight end usage decisions made in January are the ones that carry into August. Bears fans who have spent twenty years waiting for a tight end like this are allowed to enjoy him slowly.

Zay Flowers, Baltimore Ravens WR
Weeks 1-14: 28.1% TS · 32.7% AYS · 0.65 WOPR · 12.6 PPR/g
Weeks 15-18: 33.3% TS · 51.2% AYS · 0.86 WOPR · 20.0 PPR/g

Through fourteen weeks Flowers had 32.7% of Baltimore’s air yards. Through the four-game late window he had 51.2%. More than half of every downfield throw the Ravens made in their elimination month went to the same five-foot-nine receiver who at the start of the year had been splitting that work with the rest of the corps.

The Ravens’ team-wide passing depth did not change. They threw at the same average depth they had been throwing all year, and they actually threw slightly fewer passes per game in the late stretch, not more. This was not Lamar Jackson rediscovering the deep ball. It was the same offense, with one receiver running deeper routes inside it. Flowers’ personal average depth of target climbed from 9.7 to 12.2. The route tree did not get bigger. The route tree got concentrated.

The window ended in Acrisure Stadium with the AFC North on the line and Tyler Loop, the rookie kicker, missing a 44-yard field goal as time expired in a 26-24 loss to Pittsburgh. The Ravens were eliminated on the spot. Flowers held the same role through the elimination game. A staff funneling more than half of its downfield offense through one receiver under maximum pressure is a usage decision the 2026 staff will not be able to unsee, regardless of who that staff turns out to be.

Colby Parkinson, Los Angeles Rams TE
Weeks 1-14: 9.4% TS · 2.5% AYS · 0.16 WOPR · 7.0 PPR/g
Weeks 15-18: 15.7% TS · 10.1% AYS · 0.31 WOPR · 14.9 PPR/g

Colby Parkinson’s air yards share through fourteen weeks of 2025 was two and a half percent. The number is correct. He was running approximately zero routes beyond the line of scrimmage. He existed to seal the edge on outside zone runs and catch the occasional checkdown when the play broke down.

Then he caught two touchdowns against Detroit in Week 15 and two more against Arizona in Week 18. Four touchdowns across the four-game stretch. Eight on the season. From a player most fantasy managers had on their roster as the second tight end behind their actual tight end, if they had him at all. The touchdowns are the visible part. The air yards share is the mechanism: 2.5% through fourteen weeks, 10.1% through four. A blocking tight end was running routes that didn’t exist for him in October.

The Rams were in a brutal NFC West fight from October through Week 18, settling for the five seed after a 38-37 overtime loss to Seattle in Week 16 that flipped the division. Every late-season game mattered. McVay had Puka Nacua. He had a featured backfield. He had Davante Adams when Adams was healthy. In the red zone, he kept calling Parkinson. The chess piece became the queen for one month and McVay won enough of the games. Coaches don’t usually forget the player who answered when called.

Parker Washington, Jacksonville Jaguars WR
Weeks 1-14: 16.4% TS · 22.9% AYS · 0.41 WOPR · 9.3 PPR/g
Weeks 15-18: 24.4% TS · 34.4% AYS · 0.61 WOPR · 18.4 PPR/g

The Jacksonville Jaguars went 13-4 in 2025 and won the AFC South. This is not a thing the Jacksonville Jaguars do. The franchise has been the league’s most reliable source of organizational despair for the better part of a decade and most people who have been Jaguars fans for that decade are still bracing for the 2026 collapse.

Liam Coen took over as head coach in the offseason. He inherited an offense that started 5-4 through the first nine weeks. The Jaguars then won eight straight games to take the division. What Coen ran in the closing month looked like the offense he had been working toward all year, and the leading target inside it, ahead of both Jakobi Meyers and the team’s 2024 first-round wide receiver Brian Thomas Jr., was a 5’10″ sixth-round pick out of Penn State whose pre-draft scouting reports led with the elite hands and the slot footwork and ended with a question about whether 29-inch arms were going to play in the NFL.

EverBank Stadium, Week 18, division-clinching game against Tennessee: Trevor Lawrence threw the opening drive touchdown to Washington. The Jaguars rolled 41-7. Washington had nine targets in a game decided by halftime, which is what a coordinator does when he wants to give a player tape rather than when game flow makes him do it. Across the four-week stretch his target share climbed to 24.4% and his air yards share to 34.4%. WOPR closed at 0.61. Those are WR1 numbers in any offense. Top-thirty wide receiver production for a month inside a division title run is the kind of role that opens 2026 instead of closing 2025.

Chris Olave, New Orleans Saints WR
Weeks 1-14: 28.2% TS · 38.9% AYS · 0.70 WOPR · 14.2 PPR/g
Weeks 15-17: 34.3% TS · 52.2% AYS · 0.88 WOPR · 27.7 PPR/g

The first-pass narrative on Chris Olave’s late season is that the Saints were eliminated and finally got around to throwing to their best receiver. This is the kind of narrative that arrives complete and has the side effect of being wrong. The Saints did not start feeding Olave because they had nothing to lose. They changed quarterbacks.

Spencer Rattler started the first eight games of the Saints season and went 1-7. The team benched him for Tyler Shough, a 26-year-old rookie out of Louisville whose college career stretched across three programs and several injury years. Shough went 5-4 the rest of the way and gave the Saints the most functional quarterback play they had had since Drew Brees retired. The Olave-Shough split is sharp: +27.3 expected points added as a receiver with Shough under center, against −0.6 across the eight Rattler games. By the late window, Shough was targeting Olave on 52.2% of the Saints’ downfield passing attempts, the same concentration Baltimore built around Flowers in a different offense. The late-window explosion is stage three of an arc that started in early November, not a December epiphany.

Caesars Superdome, Week 16 against the Jets: Shough lofted a 23-yard touchdown to Olave on the back shoulder in the third quarter. Fourth quarter, Taysom Hill lined up in the backfield on a trick play and threw a 38-yard touchdown to Olave the team had been saving in the playbook. Olave finished 10-for-16 for 148 yards and two touchdowns. Across the three-game Shough window his WOPR was 0.88 and he averaged 27.7 PPR points per game. The only wide receiver in the league with a higher late-window WOPR was Jaxon Smith-Njigba.

Then the season ended in a hospital. Olave was ruled out for Week 18 with a blood clot in his lung, which is a serious medical event and not the kind of thing that resolves with a week of rest. The 2026 ranker reads three games of demonstrated alpha usage with the rookie quarterback against a medical question that won’t have an answer until camp. Both belong in the column.

Wan’Dale Robinson, New York Giants → Tennessee Titans WR
Weeks 1-14: 28.0% TS · 26.9% AYS · 0.61 WOPR · 13.4 PPR/g
Weeks 15-17: 38.5% TS · 38.7% AYS · 0.85 WOPR · 14.6 PPR/g

Wan’Dale Robinson’s 2024 was a 140-target season that produced 699 receiving yards. A 4.8 average depth of target. 7.5 yards per reception. Sixty-six percent catch rate. Numbers that describe a slot receiver running drag routes in shotgun on a team that spent most of every game trailing. The Giants drafted him in the second round in 2022 out of Kentucky, he tore his ACL midway through his rookie year, and the slot was where he had lived ever since.

Then Malik Nabers tore his ACL in Week 4 of 2025 and the Giants offense reorganized around the player who was already there. Russell Wilson was benched after three games. Rookie Jaxson Dart took over and decided his number-one option was the small guy. The air yards share through fourteen weeks was 26.9%. Across the late stretch, 38.7%. Target share moved in parallel, 28.0% to 38.5%. WOPR closed at 0.85, alpha-receiver territory. The same player who had been the league’s shallowest wide receiver started running deeper routes because Dart was throwing him deeper passes.

Allegiant Stadium, Week 17, what the New York papers were calling the Tank Bowl with the first overall pick of the 2026 draft on the line. Robinson caught eleven of fourteen targets for 113 yards. He fractured his ribs in the first half and finished the game anyway to reach a thousand receiving yards on the season, the first 1,000-yard year of his career. The Giants won 34-10 and lost their grip on the top pick.

He signed with Tennessee in March, reuniting with Brian Daboll, the head coach he played for in New York and now the Titans’ offensive coordinator. The 2026 role is the same role: slot piece around a young quarterback. The tape is portable. What it shows is that the player can carry a 40 percent target share when the offense decides to feed him, which is exactly the kind of role Daboll has the authority to design.

Loveland’s role grew because Ben Johnson decided it should. Flowers became the deep ball because the Ravens funneled the deep portion of their offense through him. Parkinson stopped being a blocker because McVay needed a goal-line answer. Washington became the leading target inside the offense that was playing the best football in the AFC in December. Olave’s role grew because the Saints stopped being terrible at quarterback. Wan’Dale Robinson’s role grew because Malik Nabers tore an ACL.

Half of those changes will hold into 2026. Half will not. The diagnostic surfaces which names to rewatch before you sign the cheat sheet you printed in April.

The names that survive into August are the ones who showed up in December, and December has already happened. The box scores are public. The full-season average is what you reach for instead.

3/27 vs COL: 7.0 IP, 4 H, 0 ER, 2 BB, 5 K, 73 P · W 2-1
4/01 vs CHW: 9.0 IP, 3 H, 0 ER, 0 BB, 7 K, 93 P · W 10-0
Season: 16.0 IP, 7 H, 0 ER, 2 BB, 12 K · 0.00 ERA, 0.56 WHIP · xERA 1.43 · xwOBA .187

Sandy Alcantara threw a complete game shutout against the White Sox on 93 pitches. Three hits. Zero walks. Seven strikeouts. Ninety-three pitches is barely ten per inning, and the White Sox are on pace to lose a historically meaningful number of games, so the natural instinct is to discount it. But the pitch count is the interesting part. It tells you how the outs were made.

In 1980, Rick Langford of the Oakland A’s threw 28 complete games in a single season and 22 of them consecutively. Fernando Valenzuela threw 20 for the Dodgers in 1986. Curt Schilling threw 15 for the Phillies in 1998. CC Sabathia threw 10 in 2008. James Shields threw 11 for the Rays in 2011, the last pitcher to reach double digits. The decline wasn’t gradual. It was a controlled demolition, driven by pitch count limits, bullpen specialization, and a philosophical shift toward viewing starting pitchers as six-inning assets who hand the ball to a chain of relievers optimized for specific situations.

In the 2024 season, 0.6% of all major league starts were complete games. Roughly 29 out of 4,860. The entire sport produced 29 in a full year. No active pitcher has even reached 30 complete games for a career.

Alcantara has 12. He threw six of them in 2022, which was more than any other team’s entire pitching staff. The next closest pitcher that year had two. He won the Cy Young by leading the majors with 228.2 innings, facing 886 batters, and posting a .270 xwOBA against. His strikeout rate that year was 23.4%, barely above league average for starters. The xBA against him was .215. The Cy Young was built on contact suppression, not missed bats. He also threw a Maddux against the Mets in 2019, 89 pitches for a two-hit shutout. The shutout and the Maddux are seven years apart, a Tommy John surgery apart, a full year of missed baseball apart, and four pitches apart in total count. He is the last pitcher in baseball who does this, and there is nobody behind him learning how.

The reason is arithmetic. The sport optimized for strikeouts, and strikeouts cost pitches. A pitcher who strikes out 10 in six innings has done something excellent and also thrown 95 pitches, because strikeouts require at least three pitches per plate appearance and usually more. Ninety-five pitches in six innings means the bullpen is warming up regardless of how well the starter is pitching. The path to nine innings doesn’t run through missed bats. It runs through weak contact on early counts. A pitcher who gets hitters to put the ball on the ground in two or three pitches instead of six can stay on the mound long enough for the ninth inning to be reachable.

Alcantara is that kind of pitcher. His sinker runs arm-side at 97 mph and his career ground ball rate sits in the 72nd percentile. Hitters make contact against him more often than they make contact against a Strider or a deGrom. They just don’t make good contact, and the contact they do make tends to find the ground. When most of a pitcher’s outs happen on the first or second pitch of an at-bat, the pitch count stays low, the manager stays in the dugout, and the complete game becomes arithmetically possible. Most modern development programs are training in the opposite direction, toward strikeout rates that produce shorter outings and heavier bullpen usage. Alcantara’s approach is unfashionable. It also produced six complete games in a year where the rest of baseball combined for roughly two dozen.

The contact profile that makes complete games arithmetically possible is also the diagnostic lens for whether Alcantara is becoming himself again. The xwOBA tracks exactly this: how well hitters are hitting the ball against him, measured by contact quality rather than outcomes. Across four seasons, the trajectory tells a story the ERA can only approximate.

PeriodBFERAxERAxwOBA
2022 (Cy Young)8862.282.92.270
2023 (pre-injury)7624.144.30.319
2025 full season7455.364.64.332
2025 final 8 starts2092.683.20.280
2026560.001.43.187

The decline started before the surgery. In 2023, the xwOBA rose from .270 to .319. The UCL tore in September. He missed all of 2024. The contact quality was already degrading before the elbow gave out.

The 2025 return was brutal in the way that Tommy John returns usually are and everyone pretends to be surprised by anyway. He touched 99 mph on Opening Day against Pittsburgh and looked like Sandy Alcantara for about four innings. By mid-July he sat at 7.14 ERA, the highest among qualified starters in baseball. The full-season xwOBA was .332, worse than the year before the surgery. Three consecutive years of worsening contact suppression. The ERA closed at 5.36 against an xERA of 4.64, which meant even the degraded contact quality was being punished by nearly three-quarters of a run beyond what it deserved.

Then August. His final eight starts: 2.68 ERA, 0.86 WHIP, 52 strikeouts against 10 walks across 209 batters faced. The xwOBA across those eight starts was .280, down from .332 on the season and closing in on the .270 from the Cy Young year. The Marlins held him at the deadline when half the league called. At the time that looked like sentiment. The .280 is the reason it wasn’t.

The K% in that window was 24.9%. His 2022 Cy Young K% was 23.4%. He is missing more bats now than he did when he won the award, and the pitch count is still low enough to finish ninth innings. That combination does not exist elsewhere in the sport.

The full trajectory reads .270 to .319 to .332 to .280 to .187. The curve was bending back in August. The 93-pitch shutout is the most visible data point in a ten-start arc spanning two seasons and 265 batters faced.

The .187 is extreme even by the standards of the system. In 2022, only elite relievers throwing 60-inning seasons posted xwOBAs below .230. No starting pitcher was in that range. Alcantara’s Cy Young xwOBA of .270 didn’t crack the top 15. What he’s producing through 56 batters in 2026 would have been the best contact suppression number in baseball in any year the system has data for. Against the Rockies and the White Sox, who between them may not win 120 games this season, but contact quality measures whether the barrel found the ball. It doesn’t check the standings.

His fastball is averaging 97.7 mph and topped 100.3, identical to his pre-injury velocity. He added a sweeper this offseason, his sixth pitch. The composite ranks him 145th, somewhere between a second-tier closer and someone’s fourth outfielder.

The contact quality data that explains why Alcantara can throw complete games is the same data the system uses to evaluate him during the season, blending what the preseason projections expected with what the batted balls are actually showing. At 56 batters faced, the blend is still roughly 78% projection, 22% season. The .187 will regress toward something more mortal as the schedule gets harder. The question is where it settles. If the answer is .250, that’s still better than the Cy Young. If it’s .280, that’s the August finishing kick sustained over a full season. Either way, the composite rank at 145th is carrying last year’s wreckage more clearly than this year’s repair.

There were 29 complete games in all of baseball last year. Alcantara threw one in the first week of this season, on a reconstructed elbow, with a contact quality profile the Cy Young version of himself couldn’t reach. The same signature, seven years later, on the other side of the surgery. The arm remembers what it’s for.

Week One Liars caught pitchers whose Statcast profiles disagreed with their box scores. This is the companion piece, applied to hitters, and the premise is simpler: these are batters where the contact data agrees with what you saw, or says what you saw was the understatement.

Three games per hitter. Roughly ten to fifteen plate appearances. No responsible analyst would draw conclusions from this. We are drawing conclusions from this. The point is less the conclusions than the method that produces them, and the method is more fun when the sample is this small because the disagreements between the box score and the contact data are at their most absurd. Exit velocity describes the swing, and the swing doesn’t know it’s March. Batting average needs sequencing, defensive positioning, and several hundred at-bats before it means anything. The hitters below all generated early contact profiles worth examining. Some look hot and are. Some look cold and aren’t. One looks like a statistical hallucination.

Jordan Walker, STL vs. TB (3/27-3/29)
3 G, 12 PA, 4-for-10, HR, 2 2B, 2 BB, 6 R, 3 RBI · BA .400 / xBA .467 · wOBA .592 / xwOBA .688 · EV 100.4 · Barrel 33.3%

Driveline Baseball found the problem last October. Walker’s back hip was collapsing, causing him to drift forward and drain power on contact. He is 6-foot-6, 250 pounds, ran the fifth-fastest bat speed in the majors in 2025, and hit six home runs in 400 plate appearances. That combination should not be possible. His 2025 line: .215/.278/.306, -1.2 WAR, 270th out of 277 qualifiers. He spent time in the minors for the second consecutive year.

Spring training offered no evidence that anything had changed. He hit .205 with zero extra-base hits, a 60% groundball rate, and 15 strikeouts in 40 at-bats. The Cardinals pulled him from the lineup for three days to work in the hitting lab. Beat writers debated whether he belonged in Memphis. The front office gave him the Opening Day roster spot anyway, which felt at the time like a decision made from obligation rather than conviction.

Then: 4-for-10, a three-run homer off Matz (414 feet, 105.8 off the bat, on an 83 mph changeup), two doubles, two walks, six runs. First series with three extra-base hits since September 2023. And underneath the surface line, the Statcast profile is doing something louder. Exit velocity jumped from 92.3 to 100.4 mph. An 8.1 mph gain in one offseason. Barrel rate from 10.9% to 33.3%. The xwOBA from .278 to .688. This is the contact profile of a different hitter than the one who went to Memphis twice.

Exit velocity doesn’t care about sample size the way batting average does. A hitter either makes contact at 100.4 or he doesn’t. If the hip is no longer collapsing, if the lower half is actually transferring energy through the barrel the way a 250-pound frame should, the exit velocity is the first measurement to confirm it. The question a week ago was whether the Driveline work took. The spring training line said no. The exit velocity says yes. One of those describes the quality of the swing. The other describes where groundballs happened to roll in Arizona.

Freddie Freeman, LAD vs. ARI (3/27-3/29)
3 G, 13 PA, 3-for-12, 2B, RBI, BB · BA .250 / xBA .449 · wOBA .295 / xwOBA .599 · EV 95.9 · Barrel 25.0%

Freeman started the season 0-for-8. He is 36. He just collected his second consecutive World Series ring. The aging-superstar narrative is sitting right there, already formatted, waiting for someone to press publish.

Every ball he put in play during that hitless stretch left his bat at 91 mph or harder. Four exceeded 100 mph. He was barreling the ball into outs, which is the kind of thing that corrects over time and also the kind of thing that generates articles titled “Is Freddie Freeman Finally Slowing Down?” The correction arrived in Game 3: 3-for-4, including an RBI double off a 97.6 mph Loaisiga sinker turned around at 102.3. He also got tagged out via hug, stranded between first and second while Ketel Marte held the ball and opened his arms. Freeman walked into it. The exit velocity from that at-bat was more informative than the baserunning.

The .304 gap between Freeman’s wOBA (.295) and xwOBA (.599) is the largest in the dataset. No hitter in baseball had a wider separation between contact quality and results through the opening series. Exit velocity jumped 5 mph from 2025 (90.9 to 95.9). Barrel rate more than doubled (10.4% to 25%). A 36-year-old whose exit velocity increased 5 mph in one offseason changed something. Freeman was one of the best hitters in baseball for three games. His batting line reads .250 with no home runs. The truth is in the exit velocity, and the exit velocity is not slowing down.

Shohei Ohtani, LAD vs. ARI (3/27-3/29)
3 G, 13 PA, 1-for-8, BB, HBP, 2 R · BA .125 / xBA .238 · wOBA .344 / xwOBA .444 · EV 97.1 · Barrel 28.6%

One-for-eight. The four-time MVP, 55 home runs last season, batting .125. Somewhere a podcast is being recorded about this.

Exit velocity: 97.1 mph. Barrel rate: 28.6%. Expected wOBA: .444, almost exactly his 2025 full-season mark of .425 across the plate appearances that produced those 55 home runs. The ball is leaving his bat at the same speed, at the same angles, producing the same contact quality that led the National League in slugging. Eight at-bats have returned one hit. Eight at-bats will do that.

He was hit by a pitch in the Game 1 seventh inning and scored on Kyle Tucker’s first hit as a Dodger, an RBI double into the right-center gap. The top three in the Dodgers lineup (Ohtani, Tucker, Betts) went a combined 0-for-9 in Game 3 and the Dodgers still won 3-2 on a Will Smith homer, because the Dodgers have a lineup where the four-hole hitter and the five-hole hitter can carry a game that the top of the order takes off. The Statcast profile from this series is indistinguishable from the one that produced 55 home runs over a full season.

Mike Trout, LAA at HOU (3/27-3/29)
3 G, 20 PA, 6-for-13, 2 HR, 4 BB, SB · BA .462 / xBA .354 · wOBA .646 / xwOBA .587 · EV 90.5 · Barrel 30.0%

The Opening Day homer landed 403 feet away, on the train tracks in left-center at Daikin Park, off a 96 mph Blubaugh fastball. Fifth career Opening Day homer, an Angels franchise record that he set and extended himself. He walked three times, played center field for the first time since April 2024, before the meniscus tear, before the bone bruise, before the 130-game season that passed for healthy by Trout standards. He stole a base. Game 2, another homer. Through three games: 6-for-13, two home runs, four walks, a steal. The Angels opened 2-0 against Houston, which is the kind of sentence that only appears in the first week of a season.

The contact data confirms most of this. The xwOBA is .587. The barrel rate doubled from 15.8% to 30%. The results reflect genuine contact quality.

Then there is the exit velocity, and this is where the truth gets specific. Trout’s EV is 90.5, nearly identical to last year’s 90.9. The barrel rate doubled at the same raw exit speed. He is finding the barrel more often without hitting the ball harder. That’s a timing adjustment, a swing-path refinement, a 34-year-old optimizing mechanics around a body that no longer produces the 95+ mph exit velocity he averaged from 2017 through 2022. The barrel rate is real. What the barrel rate can produce over 600 plate appearances at 90.5 mph is a different question than what it produced at 95. Both numbers say he is hitting well. They describe a different ceiling than the one the highlight reel suggests.

Luke Raley, SEA vs. CLE (3/27-3/29)
3 G, 15 PA, 3-for-7, 3 HR, 5 RBI · BA .286 / xBA .369 · wOBA .541 / xwOBA .619 · EV 94.9 · Barrel 50.0%

Three hits. All home runs. A solo shot on Opening Day. A two-run homer to right on Friday that iced a 5-1 win. A pinch-hit, two-run blast in the 10th on Saturday off the bench. Three home runs in nine plate appearances from a man who hit four in all of 2025.

Raley’s 2025 was wrecked by an oblique strain and back spasms that limited him to 73 games and a .202 batting average. He played college ball at Division II Lake Erie College. He was a seventh-round pick a decade ago.

Statcast tracked eight batted balls. Four were barrels. A 50% barrel rate, which is the kind of number that gets printed in a textbook under “why small samples are dangerous.” The xwOBA is .619. The exit velocity is 94.9. The Mariners’ 6-7-8 hitters (Raley, Dominic Canzone, Cole Young) have combined for six of Seattle’s eight home runs through four games while Julio Rodriguez’s bat hibernates on schedule.

Fifty percent of his batted balls are barrels. You cannot fake that number. You also cannot sustain it.

Walker is hitting the ball 8 mph harder than last year. Freeman posted the largest gap between contact quality and results in the dataset. Ohtani is producing the same contact profile that generated 55 home runs and a 1-for-8 line simultaneously. Trout’s barrel rate doubled while his exit velocity held flat. Raley has three hits and all of them left the stadium.

Three games is barely an observation. But exit velocity is a measurement, batting average is an early estimate, and most of the conversations happening right now are based on the estimate.

The data gets more interesting from here. As the sample grows, rolling windows start to show trajectories rather than snapshots. Barrel rates stabilize. Exit velocity trends emerge over 50 plate appearances that are invisible over 12. The gaps between expected and actual stats begin to close, and the direction they close in is where the information lives. Right now the dataset is small enough to be fun. In a few weeks it will be large enough to be useful.

One start. That’s the dataset. One start per pitcher, roughly twenty batters faced, and the hot takes have already been filed. This is, by any statistical standard, a completely meaningless sample. What follows is a completely meaningless analysis of that sample. But Statcast doesn’t know it’s Opening Week, and it tracked every batted ball anyway, so we might as well look at what the contact data says about the starts everyone is already overreacting to.

The exercise is simple: take the box score line everyone saw, then hold it next to the Statcast expected stats from the same outing. When the two agree, the start was what it looked like. When they disagree, one of them is lying. The box score records what happened. Statcast estimates what should have happened based on how hard the ball was hit and where. Over one start, either one could be wrong. Over a full season, the contact data wins.

Chris Sale, ATL vs. KC (3/27)
6 IP, 3 H, 0 ER, 3 BB, 6 K · ERA 0.00 · xERA 5.10 · xwOBA .345 · BA .158 / xBA .271 · Win

The line looks like a vintage Sale outing. Six scoreless on Opening Night, the Braves cruising to a 6-0 win behind three home runs from Albies, Baldwin, and Harris. Sale passed Bob Feller and Warren Spahn on the career strikeout list, because apparently that’s something you can just do on a Friday. The narrative is already written: the 2024 Cy Young winner, back from a broken rib, dealing in his seventh career Opening Day start.

The contact data is less impressed. Hitters posted a .345 xwOBA against Sale. For context, a .345 xwOBA against is what you’d expect from a pitcher with a 5.10 xERA, not a 0.00. Batters had an expected batting average of .271 but only managed a .158 actual. That’s a .113 gap between what the contact quality predicted and what the scoreboard showed. The balls were hit hard. They just went at people.

Sale’s defense did heavy lifting. The Braves turned double plays in the first and second innings. Left fielder Eli White made a sliding catch to prevent a double. Matt Olson robbed Vinnie Pasquantino of a hit in the fourth. Austin Riley stretched to scoop a line drive in the sixth. The Braves infield was playing like Sale owed them money. These are real plays made by real fielders, but they are not things Sale controls, and the contact that produced them was solid.

Sale was a legitimate ace in 2025. He posted a 2.58 ERA and 2.87 xERA across 510 batters faced before a fractured rib ended his season. The question is whether this particular start was dominant pitching or dominant defense. The xwOBA says defense. The box score doesn’t know the difference.

The “Sale is back” conclusion is probably correct. The evidence for it just isn’t this game.

Freddy Peralta, NYM vs. PIT (3/26)
5 IP, 6 H, 4 ER, 0 BB, 7 K · ERA 7.20 · xERA 2.63 · xwOBA .253 · BA .286 / xBA .223 · Win

Peralta’s Mets debut, Opening Day at Citi Field in front of 41,449. The Mets traded two prospects to Milwaukee for this start. Brandon Lowe greeted him with a two-run homer in the first inning, a wind-aided ball that barely cleared the right field wall and just missed Carson Benge’s glove. Lowe went deep again in the third, a solo shot. Peralta struck out the side after the first homer, then kept grinding. Mets won 11-7 in a game where reigning Cy Young winner Paul Skenes lasted two-thirds of an inning on the other side, which probably deserves its own article.

The final line, 7.20 ERA, is ugly for a debut. But Peralta walked nobody and struck out seven in 80 pitches. And the contact data tells a different story than the runs allowed. His xERA is 2.63. His xwOBA against is .253, which is elite. Hitters posted a .286 batting average against him but had an expected average of just .223. Two home runs and a handful of balls finding holes inflated the line beyond what the contact quality warranted.

Peralta was a 2.70 ERA pitcher in 2025 across 723 batters faced. He led the NL in wins. He finished fifth in Cy Young voting. The zero walks and seven strikeouts in the box score actually align better with the projection than the four earned runs do.

If this pitcher’s name weren’t attached to a 7.20 ERA, you’d call it a quality start that got unlucky. It was.

Cole Ragans, KC at ATL (3/27)
4 IP, 6 H, 4 ER, 4 BB, 5 K · ERA 9.00 · xERA 8.90 · xwOBA .433 · BA .353 / xBA .292 · Loss

Same game as Sale, other side. Ragans gave up home runs to Ozzie Albies, Drake Baldwin (a left-handed hitter going deep off a lefty that Ragans didn’t allow a single homer to from that side in all of 2025), and Michael Harris. The Royals lost 6-0 and Ragans looked nothing like the pitcher Kansas City built their rotation around.

Here is where it gets interesting. Ragans’ xERA is 8.90. His xwOBA against is .433. His expected batting average against is .292. The contact data confirms the box score. The hitters didn’t get lucky. They hit the ball hard, in the right places, and the results reflected the quality of contact almost exactly.

Ragans had a brutal 2025, missing most of the season with a groin injury and a rotator cuff strain. In just 61.2 innings he put up a 4.67 ERA, but his expected stats suggested a pitcher far better than the results showed. His xERA was 2.67 across 257 batters. The expectation entering 2026 was that the expected-stats version would materialize. This Opening Day start does not look like that correction. The gap between actual and expected that defined his 2025 has closed, and not in the direction anyone wanted.

One start. Tiny sample. But when the contact data confirms the box score instead of contradicting it, the start is carrying more information than the ones where they diverge.

The contact was genuinely bad. Whether that represents the new Ragans or one-start noise requires more data. His next start carries real diagnostic weight.

Nathan Eovaldi, TEX at PHI (3/26)
4.2 IP, 8 H, 5 ER, 0 BB, 7 K · ERA 9.64 · xERA 2.91 · xwOBA .266 · BA .364 / xBA .244 · Loss

Opening Day in Philadelphia. Eovaldi faced 22 batters and two of them deposited the ball into the seats. Kyle Schwarber launched a two-run homer in the first inning, because Kyle Schwarber. Alec Bohm hit a three-run shot in the fifth that chased Eovaldi from the game. Rangers lose 5-3. The surface read is that the 36-year-old’s arm finally gave out.

The contact data says the opposite. Eovaldi posted a .266 xwOBA against, which translates to a 2.91 xERA. Hitters batted .364 against him but had an expected batting average of just .244. The gap is .120 in the wrong direction. Balls that should have been outs found grass. And then two of them left the yard, which is the kind of variance that can turn any pitcher’s line into a catastrophe in 22 batters faced.

This was a 1.73 ERA pitcher in 2025 across 496 batters. He led a Rangers rotation that posted the best staff ERA in baseball. The Statcast profile from this start, strip the two homers, looks like the pitcher the projection systems expected. Two home runs in 22 batters is a 9.1% HR/BF rate. League average is roughly 3%. If Eovaldi maintained this pace he’d give up approximately 80 home runs this season. He will not maintain this pace.

The contact quality was fine. The results weren’t. That gap closes over time.

Four starts, four box scores, four instant reactions. In three of the four cases, the contact data disagrees with the scoreboard. Sale’s dominance was partly illusory. Peralta’s ugly debut was surface noise over elite contact suppression. Eovaldi’s implosion was mostly fictional. In the fourth case, Ragans, the contact confirmed the disaster, and that confirmation is itself information.

The distinction matters because it tells you which direction each pitcher’s results are likely to move as the sample grows. Sale’s ERA will probably rise from 0.00 toward something that reflects a .345 xwOBA. Peralta’s will correct toward the 2.63 xERA that his contact profile supports. Eovaldi’s will fall from 9.64 toward something that reflects a .266 xwOBA. Ragans is the question mark, because the contact and the results agreed, which means the next start carries real diagnostic weight.

One start is not a sample. It’s barely an observation. But Statcast tracked every batted ball anyway, and most people are drawing conclusions from the box score alone.

The barrel rate moves first. Before the expected wOBA improves, before the results follow, a hitter starts barreling the ball at a different rate. The contact quality catches up to the barrel rate. The box score catches up to the contact quality. The gap between where the contact quality already is and where the results still sit is where the 2026 edge lives.

The barrel rate is the most upstream signal in the contact quality chain. It measures the percentage of batted balls hit with the combination of exit velocity and launch angle that produces the best outcomes, roughly 98 miles per hour at a launch angle between 26 and 30 degrees. When a hitter’s barrel rate climbs meaningfully, something changed in how he is making contact. A swing adjustment. A mechanical refinement. Whatever the cause, the ball is leaving his bat differently than it did before.

The xwOBA catches up to the barrel rate next. Expected wOBA computes what a hitter’s full contact profile, every batted ball weighted by its quality, should have produced in a neutral environment with average defense and average luck. A higher barrel rate means more elite contact events in the pool. More elite contact events mean a higher xwOBA. The relationship is not immediate because a full season of contact is required to move the aggregate number meaningfully, but the direction is determined the moment the barrel rate changes. A hitter who improved his barrel rate by five percentage points over a full season did not run hot for a few weeks. He produced a different distribution of contact quality for six months.

The actual wOBA lags the xwOBA because results require more than contact quality to accumulate. Sequencing determines whether hard contact produces runs or strands runners. Defense converts some of that contact into outs. Luck distributes balls in play across a range of outcomes that regresses toward the contact quality over time but rarely arrives there cleanly within a single season. A hitter can post an elite xwOBA and a mediocre wOBA in the same year if the sequencing runs cold, if the hard contact clusters in the wrong situations, if the BABIP timing works against him. The gap between the two numbers is not random noise. It is the distance between what the contact quality produced and what the results reflected, and it carries directional information about where the results are going.

The projection systems lag the actual wOBA because they are built on multi-year history. A hitter who posted a .312 wOBA in 2024 and a .359 wOBA in 2025 enters 2026 projected somewhere between those two numbers, weighted toward the longer track record. The projection sees the 2025 result as one data point against several prior ones. What it does not see is the barrel rate that preceded the 2025 xwOBA that preceded the 2025 wOBA. The projection is anchored to outputs. The barrel rate was measuring inputs.

So the full chain runs: swing change, barrel rate, xwOBA, wOBA, projection. A breakout is visible at step one. The draft prices step four.

The gap this creates is where the edge lives. A hitter whose barrel rate jumped significantly in 2025 already has an improved xwOBA. His actual wOBA is still catching up to the xwOBA. His projection is still catching up to the wOBA. Three layers of lag between what the contact quality is measuring and what the market is pricing. Rostered values haven’t caught up. The lag has not closed.

The players on this list showed the full signature in 2025: a meaningful barrel rate improvement, an xwOBA that followed it up, and an actual wOBA still running below the contact quality. In each case the projection priced a surface line that was already behind the contact quality when the season ended. In each case the batted ball data says the stat line was a floor, not a ceiling.

1. Jo Adell
xwOBA .314 → .365, +.051 · Barrel 11.7% → 17.3%, +5.6 · wOBA .333 · Gap +.032 · EV 91.7

The prevailing market take is that 2025 was a fluke, a one-year aberration from a player who has disappointed before. That read explains why he is entering 2026 as a prove-it case rather than a confirmed breakout.

The barrel rate is why the read is wrong. 11.7% to 17.3% across 573 plate appearances is not a hot streak. Players don’t accidentally post 17.3% barrel rates over half a season’s worth of contact. They develop them. Adell developed one. The xwOBA followed, jumping .051 in a single season, and his actual wOBA of .333 still runs .032 below where the contact quality says he should be producing. The box score is running last year’s version of him. The batted ball data is running the new one.

2. Michael Busch
xwOBA .324 → .378, +.054 · Barrel 11.2% → 17.1%, +5.9 · wOBA .369 · Gap +.009 · EV 92.2

The gap is nearly closed, meaning the results mostly confirmed the contact quality in 2025. The forward-looking case is the arc: 17.1% barrel rate, 92.2 EV, in year two. The regression argument centers on his bat speed, which ranks in the bottom fifth of the league. The exit velocity is why that argument is incomplete. A 92.2 EV means he is making efficient contact, not slow contact. The platoon situation against lefties is the real risk. Against right-handed pitching, which represents the majority of his plate appearances, the contact profile is legitimate and still improving.

3. Spencer Torkelson
xwOBA .286 → .334, +.048 · Barrel 6.7% → 13.5%, +6.8 · wOBA .339 · Gap −.005 · EV 90.2

The empty-calorie critique is accurate: power-first, three-true-outcomes, career .240 average, limited speed. None of that is wrong, and none of it is the argument. The argument is that his barrel rate doubled. 6.7% to 13.5% over 649 plate appearances is a rebuilt swing, not a variance event. He hit 31 home runs in 2025 with a 13.5% barrel rate. The arithmetic on what happens if that rate holds at 15% or 16% does not require a complicated projection.

4. Pete Alonso
xwOBA .345 → .386, +.041 · Barrel 13.2% → 18.9%, +5.7 · wOBA .368 · Gap +.018 · EV 93.5

The highest barrel rate on this list. The highest exit velocity. Both confirmed over 709 plate appearances. His xwOBA arc, .357, .369, .345, .386, shows a 2024 dip the market priced hard and a 2025 recovery that exceeded his prior career peak. The wOBA of .368 runs .018 below xwOBA across 709 plate appearances. That is not noise. It is production still waiting to appear in the box score, on top of a profile that was already elite.

5. Josh Bell
xwOBA .312 → .359, +.047 · Barrel 7.6% → 12.0%, +4.4 · wOBA .324 · Gap +.035 · EV 90.4

The 2024 number looked like decline. The 2025 contact profile says it was something else. Bell’s xwOBA recovered to .359 while his actual wOBA sat at .324, a .035 gap across 533 plate appearances. His barrel rate nearly doubled. His bat speed increased nearly three miles per hour. His contact ability, power production, and pitch recognition all grade above average simultaneously, a combination that does not show up in a .324 wOBA.

A switch-hitter with no platoon limitation, a .035 gap, and a bat speed trend moving in the right direction is the kind of profile that produces a very different season than the one the market is pricing.

6. Andrew Vaughn
xwOBA .320 → .349, +.029 · Barrel 9.3% → 12.0%, +2.7 · wOBA .311 · Gap +.038 · EV 91.6

Vaughn was never a bad hitter in Chicago. He was a hitter whose contact quality graded above his results consistently, playing in a bad lineup on a bad team with no protection in the order. The move to Milwaukee in July told the story immediately: .308/.375/.493 over 64 games. The full-season contact numbers confirm what was already there: .349 xwOBA, 12.0% barrel rate, 91.6 EV, wOBA running .038 below the contact quality. A full season in Milwaukee means the environment that let the contact quality produce is no longer a second-half variable. It is the baseline.

7. Anthony Volpe
xwOBA .278 → .301, +.023 · Barrel 3.9% → 10.5%, +6.6 · wOBA .286 · Gap +.015 · EV 89.3

The xwOBA improvement is modest. The barrel rate jump is not. 3.9% to 10.5% across 596 plate appearances is the sharpest single-season rate change on this list. The full translation into aggregate contact quality takes time; the xwOBA reflects the entire season including the first half, when the rate was still climbing. The barrel rate at the end of 2025 is the number that predicts 2026. At 24, in a Yankees lineup that generates runs as efficiently as any in baseball, the counting stat environment is the last piece a hitter with this barrel rate trajectory needs.

8. Gleyber Torres
xwOBA .314 → .363, +.049 · Barrel 6.3% → 8.2%, +1.9 · wOBA .332 · Gap +.031 · EV 90.0

The 2024 crater was not decline. It was a sports hernia he played through most of the season, a fact that only became public after the year ended. The xwOBA drop from .363 to .314 had a structural cause. The 2025 recovery to .363 across 628 plate appearances is the baseline the injury obscured, not a rebound above it. His wOBA of .332 still runs .031 below the contact quality.

One variable the batted ball data cannot answer: he was removed from a spring training lineup two days ago with an unspecified issue. If he is healthy, the contact profile supports a full-production season.

9. Dansby Swanson
xwOBA .324 → .345, +.021 · Barrel 9.2% → 11.7%, +2.5 · wOBA .310 · Gap +.035 · EV 90.5

The surface line, .244 average and .717 OPS, looked like a step back. The contact data told a different story: career highs in hard-hit rate, barrel rate, and average exit velocity. The .035 gap across 645 plate appearances was almost entirely driven by sequencing. The hard contact was there. It arrived at the wrong times.

Swanson almost never misses games, is locked in as the Cubs’ starting shortstop through 2029, and in 2025 produced the best contact quality of his time in Chicago. The .244 average was what the sequencing produced. The .345 xwOBA was what the bat produced. Those two numbers should converge.

10. Salvador Perez
xwOBA .361 → .357, −.004 · Barrel 12.2% → 14.8%, +2.6 · wOBA .311 · Gap +.046 · EV 90.0

The steelman first. Perez turns 36 in May. Age-based decline at catcher arrives suddenly rather than gradually. Carter Jensen reached the majors last September with elite exit velocity numbers and the Royals are openly discussing shifting Perez to designated hitter, which creates a playing time risk mid-season. The xwOBA was flat year over year, so the contact quality argument here is entirely the gap, not a trajectory.

That gap is .046 across 641 plate appearances. At that sample size, .046 is not sequencing variance. A 14.8% barrel rate and 90.0 EV graded out at a .357 xwOBA level. His actual wOBA was .311. Something specific suppressed the results relative to what the contact quality was producing, large enough and sustained enough across a full season that the correction, when it comes, will be meaningful. Perez has posted 30-homer seasons at 34 and 35 while the market priced age regression both times. The age argument has been right in the abstract for three years. The contact quality says it has not been right yet in practice.

The contact quality in 2025 was measuring something the results hadn’t confirmed. These 10 players enter 2026 with a batted ball profile that says the stat line was a floor. That is not a prediction. It is a reading of what already happened.

A hitter’s batting average tells you what happened. His expected batting average tells you what should have happened, given how hard he hit the ball and at what angle. The gap between the two is where mispricing lives. A positive gap means the bat is better than the stat line. A negative gap means the stat line is flattering the bat. Multiply that logic across three dimensions of contact quality and four years of Statcast data, and you get a list of hitters whose draft positions are wrong.

The pitcher version of this analysis ran first. Batters are a different problem. Pitchers have one primary expected stat (xERA) with two supplementary dimensions. Batters have three co-equal dimensions that can diverge independently. Expected wOBA (xwOBA) captures total offensive value. Expected slugging (xSLG) isolates power. Expected batting average (xBA) isolates contact-for-hits. A hitter can be unlucky in power but lucky in batting average simultaneously. The mechanism matters as much as the direction.

This is 20 hitters ordered by how good their contact actually was. Buy-low candidates appear higher than consensus. Sell-high candidates appear where the bat places them. A 200 plate appearance minimum in 2025 is the floor. Multi-year data is the tiebreaker between signal and noise. One thing the data confirmed before the list began: the top of the consensus is clean. Ohtani (+.007), Judge (-.003), Witt (+.005), Henderson (+.002), and Lindor (-.005) have near-zero gaps. They are what they look like. The mispricing lives in the middle rounds.

Consensus rank is listed for reference.

1. Juan Soto / Consensus 4
.390 wOBA · .429 xwOBA · .525 SLG · .608 xSLG · 93.8 EV · 18.1% Brl

Soto has run a positive xwOBA gap in all four seasons with Statcast data. 2022: +.027. 2023: +.012. 2024: +.042. 2025: +.039. Across 2,800 plate appearances, his contact quality has consistently exceeded his results. The mechanism lives in the xSLG gap: +.083 in 2025 and +.086 in 2024. The power is structurally suppressed relative to the batted ball profile. A 93.8 exit velocity and 18.1% barrel rate should be producing more extra-base hits than they are.

Soto at 4 is already priced as an elite player. The data says he should be producing even more than his already-elite surface line. That will not move him higher on most draft boards. It will make him the safest pick in the top five. When the underlying quality exceeds the results for four consecutive years across nearly 3,000 PA, the variance is on your side.

2. Corey Seager / Consensus 84
.365 wOBA · .400 xwOBA · .487 SLG · .569 xSLG · 92.9 EV · 15.3% Brl

The largest consensus disconnect among established hitters on this list. Seager’s xwOBA is .400. He’s ranked 84th. His four-year xwOBA gap: +.042, -.008, +.026, +.035. Three of four years positive, the one negative year (2023) was the best surface season of his career at .327/.623. The data says that 2023 was the outlier, not the baseline.

The xSLG gap of +.082 confirms the power suppression. A 92.9 EV with 15.3% barrel rate, the barrel rate consistent at 15.2-15.3% across the last three seasons after a jump from 10.5% in 2022, should be producing more extra-base hits. The contact quality has been rock-stable while the results fluctuated above and below it. Seager at 84 is one of the widest gaps between contact quality and draft position on this board. The ball says top 30.

3. Ben Rice / Consensus 65
.358 wOBA · .394 xwOBA · .499 SLG · .557 xSLG · 93.3 EV · 15.4% Brl

Two seasons of data, both running the same direction. The 2024 debut sample was small (178 PA) but the gap was enormous: +.071 xwOBA, +.114 xSLG. The contact was real before the stat line caught up. His 2025 full season closed the gap but did not eliminate it: +.036 xwOBA, +.058 xSLG across 530 plate appearances. A 93.3 exit velocity at age 25 in his first full season is the raw quality signal. The results are still lagging what the batted ball data says he is.

4. Vladimir Guerrero Jr. / Consensus 17
.366 wOBA · .384 xwOBA · .467 SLG · .506 xSLG · 92.0 EV · 12.2% Brl

Guerrero’s profile tells a different story depending on which season you look at. 2022: no gap (+.003), the surface matched the contact perfectly. 2023: +.040, massively unlucky, the ball was harder than the stat line showed. 2024: +.014, slight positive. 2025: +.018, slight positive. The trajectory is toward alignment, not divergence. His four-year xwOBA: .354, .380, .412, .384. The underlying quality is real and consistent. The 2023 outlier year, where his xwOBA was .380 but his wOBA was only .340, looks more like a .292 hitter who deserved to hit .310. The consensus at 17 is pricing him correctly, maybe even slightly below where the four-year contact profile places him.

5. Nick Kurtz / Consensus 20
.419 wOBA · .372 xwOBA · .619 SLG · .537 xSLG · 92.7 EV · 18.4% Brl

The single largest negative contact gap in the entire batter pool. A .419 wOBA against a .372 xwOBA. That is 47 points of gap. The xSLG divergence is 82 points: a .619 actual against a .537 expected. His batting average is .290 against an xBA of .245. Every dimension says the same thing. The results are running far ahead of the contact quality.

The raw tools are real. A 92.7 exit velocity and 18.4% barrel rate in a rookie season are legitimate. But .372 xwOBA is a 40th-ranked hitter, not a 20th-ranked one. With zero prior seasons to calibrate against, this is pure variance signal. The contact data says Kurtz is good. The box score says Kurtz is great. One of them will correct toward the other. Four years of data on other hitters says which one.

6. Cal Raleigh / Consensus 15
.392 wOBA · .371 xwOBA · .589 SLG · .547 xSLG · 91.3 EV · 19.5% Brl

The most interesting year-over-year flip in the dataset. In 2024, Raleigh was a textbook positive gap: +.024 xwOBA, .347 xwOBA against a .323 surface. The contact quality said he was better than the line. Then 2025 happened. The barrel rate surged from 15.4% to 19.5%. The xwOBA jumped from .347 to .371. The actual results jumped further, to .392. The breakout was real, but the surface is now running ahead of the improved underlying quality by 21 points.

Raleigh at 15 is being drafted on the .392 wOBA. The contact data says .371 is closer to what the bat will sustain. That is still a very good hitter, particularly at catcher. The 19.5% barrel rate is the highest of his career and the mechanism that justifies the consensus. If the barrels persist, the xwOBA will rise to meet the surface. If they regress toward the 12-15% range of his prior three seasons, the surface comes back down.

7. Jo Adell / Consensus 123
.333 wOBA · .365 xwOBA · .485 SLG · .549 xSLG · 91.7 EV · 17.3% Brl

The tools materialized. Adell’s 2022 Statcast profile was ugly: negative xwOBA gap (-.029), an exit velocity that didn’t register on the leaderboard, barrel rate unmeasurable. The 2024 season was the transition: a +.018 gap, exit velocity climbing to 89.8, barrel rate up to 11.7%. Then 2025. The exit velocity jumped to 91.7 and the barrel rate to 17.3%. The xwOBA of .365 and xSLG of .549 are legitimate power hitter numbers. The +.032 gap says the results haven’t caught up yet.

Adell at 123 is still being priced as the prospect who couldn’t put it together. The contact quality says he has put it together, and the surface line is 32 points of xwOBA behind where the bat is. The career arc, from sub-.250 xwOBA to .365 in three years, is the kind of development that consensus rankings are slowest to absorb.

8. Salvador Perez / Consensus 96
.311 wOBA · .357 xwOBA · .446 SLG · .534 xSLG · 90.0 EV · 14.8% Brl

Three years of compounding underperformance with elite contact quality underneath. The xwOBA gap trajectory: .000, +.024, +.026, +.046. Each year wider than the last. The xSLG gap is the largest in the dataset at +.088: a .446 actual slugging against a .534 expected. The barrel rate jumped from 8.8% in 2023 to 12.2% in 2024 to 14.8% in 2025. Perez is hitting the ball harder every year and getting less for it.

The mechanism is BABIP. His batting average is .236 against an xBA of .269. That is 33 points of batting average that defense and luck are eating. Across 2,346 plate appearances over four years, the pattern has been persistent and directional. Perez at 96 is being priced as a declining veteran. The contact data says his bat has improved every season for three years running. The ball is getting harder. The gaps are getting wider. Something will give.

9. Freddie Freeman / Consensus 51
.370 wOBA · .350 xwOBA · .502 SLG · .467 xSLG · 90.9 EV · 10.4% Brl

The four-year trajectory is the story, and it moves in a direction the surface doesn’t show. Freeman’s xwOBA: .406, .406, .369, .350. His actual wOBA: .393, .411, .365, .370. In 2022, the contact quality (.406) exceeded the results (.393). In 2025, the relationship inverted: the results (.370) exceed the contact quality (.350) by 20 points. The xBA gap tells the same story: -.027 in 2025, meaning his .295 batting average should be closer to .268 based on how hard the balls left the bat.

Freeman is still a productive hitter. A .350 xwOBA is solidly above average. But the surface line is now flattering him by 20 points, and the underlying quality has declined in each of the last three seasons. The consensus at 51 is pricing the .295 BA. The contact data says the bat is a .268 BA, .467 xSLG hitter whose name carries a premium that the barrel rate no longer fully supports.

10. Dansby Swanson / Consensus 149
.310 wOBA · .345 xwOBA · .417 SLG · .477 xSLG · 90.5 EV · 11.7% Brl

Positive gap in all four years. 2022: +.005. 2023: +.019. 2024: +.017. 2025: +.035. The pattern is persistent and widening. Swanson has never posted a season where his results matched or exceeded his contact quality. Across 2,572 plate appearances, the ball has consistently been better than the line. The xSLG gap of +.060 in 2025 says the power is real but the extra-base hits are finding gloves.

Swanson at 149 is a shortstop with four years of demonstrated positive gaps. His 2025 xwOBA of .345 is not elite, but it is significantly better than the .310 wOBA that the box score shows and the consensus is pricing. A .345 xwOBA shortstop ranked 149th is mispriced. The magnitude depends on how much of the four-year pattern you believe will persist. The data says all of it.

11. Shea Langeliers / Consensus 70
.364 wOBA · .328 xwOBA · .536 SLG · .463 xSLG · 90.9 EV · 11.2% Brl

The most dramatic single-year flip in the dataset. In 2024, Langeliers showed contact above results: +.013 xwOBA gap, solid underlying quality, results slightly lagging. Then 2025 arrived and the relationship inverted completely. The gap went from +.013 to -.036. His SLG jumped to .536 against an xSLG of only .463. His BA is .277 against an xBA of .251. Every dimension says the surface ran ahead of the contact quality in a single season.

The mechanism: his barrel rate dropped from 12.8% to 11.2% while his SLG jumped 86 points. Fewer optimal batted balls, more actual extra-base hits. That combination is textbook BABIP fortune. Langeliers at 70 is being priced on a .364 wOBA. The contact data says .328, which is closer to his 2024 and 2023 profiles (.328 and .299 xwOBA respectively). The breakout was real on the leaderboard. The batted ball data says it wasn’t real in the bat.

12. Cody Bellinger / Consensus 63
.347 wOBA · .327 xwOBA · .480 SLG · .430 xSLG · 88.3 EV · 7.5% Brl

The 2023 Cubs renaissance was the most Statcast-fraudulent season in recent memory. A .370 wOBA against a .328 xwOBA. A .525 SLG against a .436 xSLG. A .307 BA against a .266 xBA. Every dimension screamed regression, and regression is exactly what arrived. His 2024 wOBA dropped to .322. His 2025 is .347, still running 20 points above the contact quality.

Three of four years show a negative gap. The one neutral year (2022, gap of .000) was also his worst surface season at .284 wOBA. Bellinger produces better results than his contact quality predicts during good years and matches it during bad ones. An 88.3 exit velocity and 7.5% barrel rate are not the tools of a .347 wOBA hitter. They are the tools of a .327 wOBA hitter who finds favorable sequencing. The consensus at 63 is drafting the name and the 2023 memory. The bat hasn’t been that player for two years.

13. Adley Rutschman / Consensus 151
.298 wOBA · .325 xwOBA · .366 SLG · .410 xSLG · 89.4 EV · 7.5% Brl

Positive gap in three of four years. 2022 was the one exception (-.013), his debut season. Since then: +.022, +.011, +.027. The pattern is consistent and has been running for 1,690 plate appearances across three full seasons. Rutschman’s contact quality persistently exceeds his results. The xSLG gap of +.044 says the power output should be higher than what appears in the stat line.

The concern is that the underlying quality itself has declined. His xwOBA: .341, .374, .320, .325. The 2023 peak has not returned. Rutschman at 151 is being punished for the surface decline, but the contact data says the 2025 version (.325 xwOBA) is slightly better than the 2024 version (.320 xwOBA). The trajectory has stabilized, not continued falling. A .325 xwOBA catcher with positive gaps is underpriced at 151. He is not the breakout star of 2023. He is a solid starting catcher whose stat line has been running behind his bat for three years.

14. Oneil Cruz / Consensus 85
.295 wOBA · .324 xwOBA · .378 SLG · .425 xSLG · 95.8 EV · 17.9% Brl

The exit velocity is the number that demands attention. 95.8 mph average. That is the hardest average exit velocity among all qualified hitters in the dataset. The barrel rate is 17.9%. These are not the batted ball numbers of a .295 wOBA hitter. They are the batted ball numbers of someone who should be producing far more damage than the stat line shows.

The gap has been positive in his two full seasons: +.013 in 2024, +.029 in 2025. His 2022 debut was the opposite (-.017), but at 91.9 EV, a different player. The exit velocity jumped nearly four miles per hour between his debut and his current form. A 95.8 EV hitter with a 17.9% barrel rate and a .200 batting average is getting eaten alive by defense and positioning. The xBA gap (+.018) and the xSLG gap (+.047) both confirm it. Cruz at 85 is ranked on the .295 wOBA and the .200 BA. The ball says neither number reflects the bat. The raw tools are elite. The results have not caught up.

15. Trea Turner / Consensus 23
.352 wOBA · .321 xwOBA · .457 SLG · .410 xSLG · 89.3 EV · 5.8% Brl

Negative gap in all four years. 2022: -.012. 2023: -.002. 2024: -.026. 2025: -.031. The gap is widening every season. Across 2,577 plate appearances, Turner has never posted a year where the contact quality matched the surface results. The 2025 gap is the largest: his .304 batting average sits against an xBA of .270. That is 34 points of batting average that the batted ball data cannot account for.

The mechanism is bat-to-ball speed and placement, not contact quality. Turner’s 5.8% barrel rate is the lowest on this list. His 89.3 EV is below the dataset average. He is not hitting the ball hard. He is hitting the ball where defenders are not, at a rate that four years of Statcast data have not corrected. At some point, a persistent model disagreement stops being luck and starts being a skill the model doesn’t capture. Turner’s legs are part of the explanation: infield singles that Statcast grades as outs convert at a rate that inflates BA and wOBA beyond what the batted ball quality predicts. He is probably a better hitter than the model says. He is probably not a .352 wOBA hitter. He is somewhere in between, and the consensus at 23 is pricing the surface, not the middle ground.

16. Isaac Paredes / Consensus 182
.353 wOBA · .320 xwOBA · .458 SLG · .380 xSLG · 87.4 EV · 6.3% Brl

Negative gap in all four years. 2022: -.022. 2023: -.046. 2024: -.018. 2025: -.033. The xSLG gaps are the most extreme in the dataset. 2023: -.114. 2025: -.078. 2022: -.073. Paredes consistently produces slugging numbers that his exit velocities and barrel rates have no mechanism to explain. An 87.4 EV with 6.3% barrel rate should not produce a .458 SLG. The model says .380. Four years of data say the model is right about the bat and wrong about something else.

The something else is pull-side power to short porches and park effects that Statcast’s expected model doesn’t fully capture. Paredes hits fly balls that clear fences by inches at parks where the model, trained on league-wide data, thinks they’re flyouts. It has worked for four years. Whether it continues to work depends on ballpark factors and lineup construction more than on the bat itself. At 182, the consensus is punishing the low EV. The surface says it shouldn’t. This is the rare case where the model’s limitation is more interesting than its verdict.

17. Michael Harris II / Consensus 100
.289 wOBA · .315 xwOBA · .409 SLG · .438 xSLG · 90.2 EV · 9.1% Brl

Positive gap in three of four years. The one negative year was his rookie debut in 2022 (-.029), the season where his .297 BA and .368 wOBA outran the batted ball data by the widest margin of any player in that year’s pool. Since then: +.011, +.034, +.026. Three consecutive years of the contact quality exceeding the stat line. The 2022 BABIP luck has inverted into persistent BABIP misfortune.

Harris at 100 is being priced on a .289 wOBA that understates a .315 xwOBA contact profile. The gap is not large enough to move him dramatically, but combined with his speed and defense, it makes the 100th pick a better value than the surface suggests. The EV and barrel rate have been stable across all four years (89-91 EV, 9-10% Brl). This is not a breakout candidate. This is a player whose established contact quality has been persistently underrepresented in his stat line.

18. Jackson Chourio / Consensus 19
.328 wOBA · .307 xwOBA · .463 SLG · .426 xSLG · 89.3 EV · 9.7% Brl

Negative gap in both available seasons. 2024: -.012. 2025: -.021. The trend is moving in the wrong direction at age 21. A .307 xwOBA is not a 19th-ranked hitter. It is a league-average bat that is producing above-average results through favorable sequencing. The xSLG gap of -.037 and xBA gap of -.023 both run the same direction. Every dimension of the batted ball data says the surface is ahead of the contact.

Two seasons is not four. The sample is smaller and the player is younger. Chourio could develop into the hitter the consensus projects. The 89.3 EV and 9.7% barrel rate show a barrel rate improvement from 2024 (7.8%) even as the exit velocity held steady (89.7 to 89.3), and neither metric is yet at the level that supports a top-20 pick. The consensus is pricing the age, the five-tool ceiling, and the trajectory. The contact data is pricing the bat as it exists today. Today, the bat is average. The draft position is not.

19. Jacob Wilson / Consensus 163
.348 wOBA · .304 xwOBA · .444 SLG · .364 xSLG · 84.6 EV · 2.2% Brl

The exit velocity is the alarm. 84.6 mph average is the lowest among all qualified hitters in the dataset by a wide margin. The 2.2% barrel rate means roughly 1 in 45 balls in play met the optimal exit velocity and launch angle threshold. His .311 batting average sits against an xBA of .277. The xwOBA gap of -.044 is the second largest on this list. Wilson is hitting the ball softly, finding holes consistently, and producing a stat line that his batted ball data cannot support.

His one prior season (103 PA in 2024) showed a slight positive gap of +.010, but with no EV or barrel data available, it provides no calibration. Wilson at 163 is a low-cost player, so the negative gap matters less for draft capital than it does for roster management during the season. If the .311 BA sustains, the model has a problem. If it regresses toward .260 where the xBA lives, the .304 xwOBA places him outside the top 250. Watchlist, not roster.

20. Jose Altuve / Consensus 97
.331 wOBA · .300 xwOBA · .442 SLG · .384 xSLG · 85.1 EV · 6.2% Brl

Negative gap in all four years. 2022: -.041. 2023: -.061. 2024: -.025. 2025: -.031. Across 2,350 plate appearances, Altuve has never once produced a season where his contact quality matched or exceeded his results. The 2023 gap of -.061 is among the largest single-season negative divergences in the qualified batter pool. His xwOBA trajectory: .356, .332, .319, .300. The underlying contact quality has declined every year for four consecutive years. His actual wOBA: .397, .393, .344, .331. The surface has declined too, but not as fast.

An 85.1 exit velocity and 6.2% barrel rate are not the tools of a .331 wOBA hitter. They are the tools of a .300 xwOBA hitter, which is what the model has said every year for four years. Four years of disagreement across 2,350 PA is the most persistent model override in the dataset. Altuve is either the strongest evidence that Statcast’s expected statistics miss something real about how certain hitters generate value without hard contact, or he is the longest-running overperformer in baseball waiting for a correction that keeps not arriving. The contact data last at 20 because .300 xwOBA is where the bat grades. Whether you believe the bat or the brain is the question the model cannot answer.

Fifteen of these twenty hitters have multi-year gaps running the same direction. That is not a list of players having one good or bad season. It is a list of players whose contact quality and stat lines have been disagreeing for years. The disagreement is the information. What you do with it depends on whether you trust the bat or the box score. The bat has more data points.

Ranked lists sell certainty. This one doesn’t. This is a list of 20 starting pitchers ordered by how good their stuff actually was, not by how good their results looked. The distinction matters because results include sequencing, defense, and luck. Stuff is just stuff. Exit velocity, launch angle, and batted ball quality on every pitch that was put in play, measured by MLB’s Statcast system and converted into expected statistics that answer a simple question: what should have happened?

Three expected stats do the work. Expected ERA (xERA) measures what the earned run total should have been given the contact quality allowed. Expected wOBA (xwOBA) measures the total offensive damage that contact should have produced. Expected batting average (xBA) measures how often that contact should have fallen for hits. When all three agree with the surface numbers, the pitcher is what he looks like. When all three disagree in the same direction, somebody is getting mispriced.

This list starts from consensus composite rank, a weighted blend of FantasyPros projections, expert consensus rankings, and FanGraphs Depth Charts. Then it adjusts based on what the contact data says across multiple seasons. Some pitchers moved a few spots. Some moved 60. One came off entirely because his elbow did what elbows do.

Consensus rank is listed for reference. A 400-batter minimum in 2025 is the floor for inclusion. Pitchers with confirmed injuries that will cost them significant time in 2026 are excluded regardless of how good the contact data looks.

The 20
1. Tarik Skubal / Consensus 7
2.21 ERA · 2.71 xERA · 32.2% K · wOBA .245 / xwOBA .258 · BA .200 / xBA .206

There is nothing hidden in Skubal’s profile. The surface ERA outperforms the contact quality by half a run, but the supplementary dimensions show the gap is small and running in the same direction across every metric. His four-year xERA: 3.34, 2.32, 2.66, 2.71. Four-year xwOBA: .288, .237, .258, .258. The consistency across 2,288 batters faced is the signal. A pitcher generating whiffs on a third of plate appearances can sustain a lower ERA than his batted-ball profile predicts because fewer balls enter play. That’s not luck. That’s math. Skubal is exactly what he looks like, and what he looks like is the best starting pitcher in baseball.

2. Paul Skenes / Consensus 10
1.97 ERA · 2.65 xERA · 29.5% K · wOBA .247 / xwOBA .255 · BA .199 / xBA .202

The interesting thing about Skenes is not the ERA gap. It’s the wOBA gap. His xwOBA is .255 and his actual wOBA is .247. That’s .008. The offensive impact of contact against Skenes is almost exactly what the model predicts. The ERA outperformance, 0.68 runs averaged across 1,247 batters, lives entirely in sequencing and strand rate. He doesn’t suppress the quality of contact beyond what the model expects. He suppresses the damage that contact does in ways the model doesn’t capture.

His splinker is the mechanism. It generates weak contact that Statcast grades as average because the exit velocities aren’t extreme, but the ball finds gloves instead of gaps at a rate that two seasons of data have not corrected. At some point persistence stops looking like luck and starts looking like a limitation of the model. The K rate dropped from 33.1% to 29.5% in year two. Worth watching. For now, the rank is earned.

3. Garrett Crochet / Consensus 13
2.59 ERA · 2.89 xERA · 31.3% K · wOBA .270 / xwOBA .266 · BA .217 / xBA .210

Some pitchers require paragraphs of explanation. Crochet requires one sentence. Every dimension of his Statcast profile aligns with his surface results, his 2025 numbers are consistent with his 2024 numbers, and the only meaningful change between seasons was a four-point drop in K rate that looks like workload regression rather than a stuff problem. The consensus is reading him right.

4. Yoshinobu Yamamoto / Consensus 27
2.49 ERA · 2.74 xERA · 29.4% K · wOBA .244 / xwOBA .259 · BA .183 / xBA .199

The year-over-year movement tells the story here, and it tells it across every dimension simultaneously. His xERA dropped from 3.44 to 2.74. His xwOBA from .292 to .259. His xBA from .232 to .199. When three independent measures of contact quality all improve by roughly the same magnitude between seasons, that’s not a statistical artifact. That’s a pitcher who figured something out. The consensus at 27 still carries a discount for the 2024 adjustment year. The underlying numbers say the adjustment is over.

5. Chris Sale / Consensus 39
2.58 ERA · 2.87 xERA · 32.4% K · wOBA .278 / xwOBA .265 · BA .220 / xBA .205

Two consecutive seasons of sub-2.90 xERA is a legitimate renaissance. His 2024 xwOBA was .263. His 2025 is .265. The contact quality has been stable and elite across 1,212 batters in the post-injury era. One wrinkle in 2025: his actual wOBA (.278) is running above his xwOBA (.265), meaning hitters are doing slightly more damage than the contact quality predicts. That’s a small gap and could be noise.

The real question with Sale is never about stuff. It’s about the body attached to the stuff. He fractured a rib in 2025. He has exceeded 20 starts just once in the last five years. The contact data says this is an elite pitcher. The medical history says this is an elite pitcher who may give you 25 starts. Draft the ability. Price the availability.

6. Zack Wheeler / Consensus 128
2.71 ERA · 2.49 xERA · 33.3% K · wOBA .263 / xwOBA .247 · BA .197 / xBA .189

The best contact quality profile of any pitcher in this piece who threw 400 or more batters against in 2025. A 2.49 xERA. A .247 xwOBA. A .189 xBA. A 33.3% K rate. Four-year xERA trajectory: 3.08, 3.21, 2.75, 2.49. Every season better than the last across 2,766 batters. This is the best version of Zack Wheeler that has ever pitched.

He’s ranked 128th because he had thoracic outlet decompression surgery in September. A blood clot in his throwing shoulder led to rib removal. He threw live batting practice for the first time this week, sat 93 mph, and won’t make Opening Day. The Phillies are targeting an early-to-mid April return.

If you draft Wheeler, you are drafting two things: the best contact quality arm available outside the top five, and the risk that the surgery takes something from him that Statcast can’t see yet. The gap between 128 and where the ball would rank him is the largest on this list. Whether that gap closes depends on the shoulder, not the stuff.

7. Logan Gilbert / Consensus 38
3.44 ERA · 3.09 xERA · 32.3% K · wOBA .280 / xwOBA .275 · BA .211 / xBA .206

Gilbert is the pitcher on this list that nobody is talking about, and the multi-year data makes the silence strange. Four-year xERA: 4.14, 3.63, 3.06, 3.09. Four-year K%: 22.7, 24.5, 27.4, 32.3. Four-year xwOBA: .318, .295, .276, .275. Four-year xBA: .253, .238, .220, .206. Every dimension of contact quality has improved every season for four consecutive years. That progression doesn’t happen by accident. It happens because a pitcher is developing, and Statcast is picking it up before the box score catches up.

The surface ERA this year (3.44) sits above the expected ERA (3.09) because of bad sequencing luck, not bad stuff. A pitcher with those expected numbers and that K rate will not carry a 3.44 for long. The consensus at 38 is pricing the surface. The ball has been saying top 10 for two years.

8. Dylan Cease / Consensus 69
4.55 ERA · 3.46 xERA · 29.8% K · wOBA .313 / xwOBA .290 · BA .239 / xBA .214

Cease is the most frustrating pitcher in baseball to own and the most obvious positive contact gap on this list. Every supplementary stat confirms the gap. The .023 wOBA divergence and the .025 BA divergence run the same direction as the 1.09 ERA gap. Hitters are doing far more damage against Cease than the quality of their contact warrants, and this has been true for three consecutive years.

His multi-year xERA: 2.73, 4.16, 3.29, 3.46. The 2023 outlier aside, the underlying stuff has been consistently solid. His ERA over the same span: 2.20, 4.58, 3.47, 4.55. The surface results are wildly more volatile than the contact quality. The mechanism is walks. Cease walks batters at a rate that turns sequencing variance into earned runs, and the earned runs pile up in ways that have nothing to do with the quality of his pitches. If you can stomach the walks and the occasional blowup, the contact quality at rank 69 is mispriced by 20 spots. The ball has been saying the same thing about Cease for three years. The box score keeps refusing to listen.

9. Bryan Woo / Consensus 36
2.94 ERA · 3.07 xERA · 27.1% K · wOBA .259 / xwOBA .274 · BA .200 / xBA .215

Thirteen points of ERA gap. The xwOBA and xBA both show slight surface overperformance, all within normal variance. There is no hidden signal here in either direction. What matters is the trajectory. His three-year xERA: 3.48, 2.77, 3.07. The K% arc, 25.1 to 21.4 to 27.1, shows the 2024 dip was the outlier. The slider found its whiff rate in a full healthy season. Woo started 30 games for the first time in his career and the contact quality held. Fairly priced.

10. Jesús Luzardo / Consensus 76
3.92 ERA · 3.33 xERA · 28.5% K · wOBA .290 / xwOBA .285 · BA .240 / xBA .228

Luzardo’s 2025 season looks like a 3.92 ERA if you check the box score and a 3.33 xERA if you check what the contact actually looked like. The gap runs the same direction in every dimension: hitters did more damage than the quality of their swings justified. Two back-to-back meltdowns in May, 20 earned runs across starts against Milwaukee and Toronto, cratered his surface numbers in a way that his season-long contact quality doesn’t support.

The trajectory tells a bounceback story. His xERA: 3.42, 3.96, 4.52, 3.33. His xwOBA: .291, .307, .331, .285. After a catastrophic 2024 (only 274 PA, 5.00 ERA, 4.52 xERA), the 2025 contact quality is the best of his career. K% bounced from 21.2% back to 28.5%. The improvement is mechanical, not lucky. Luzardo at 76 is underpriced if the meltdowns were noise. The contact data, across 758 batters, says they were.

11. Jacob deGrom / Consensus 50
2.97 ERA · 3.36 xERA · 27.7% K · wOBA .259 / xwOBA .286 · BA .196 / xBA .221

The pre-injury Statcast profile was otherworldly: a 1.82 xERA and .209 xwOBA in 2023, K rates above 39%. The 2025 return showed a different pitcher. His xERA is 3.36, his xwOBA is .286, his K rate dropped to 27.7%, his xBA rose from .163 to .221. Every expected dimension moved toward average. The wOBA gap (.027) says even the 2.97 surface ERA is running ahead of the stuff.

The good news is that he made 30 starts, threw 172 innings, and hit 97.6 mph in his first spring start this week. The body held. The stuff didn’t come all the way back, but it didn’t need to. A 3.36 xERA pitcher who makes 30 starts is valuable. He’s just not the deGrom whose name once ended arguments. The consensus at 50 is pricing the name and the health. The contact data says the name no longer carries the premium it used to.

12. Nathan Eovaldi / Consensus 133
1.73 ERA · 3.02 xERA · 26.0% K · wOBA .240 / xwOBA .272 · BA .194 / xBA .219

The 1.73 ERA is fiction. A .272 xwOBA with a .240 actual means hitters did substantially less damage than the quality of their contact warranted. That will correct. But the underlying stuff is genuinely the best it has ever been. Four-year xERA: 4.28, 3.96, 3.88, 3.02. Four-year xwOBA: .323, .307, .309, .272. Every dimension of contact quality has improved every season for four consecutive years.

The consensus at 133 is pricing the pre-2025 Eovaldi, a mid-fours xERA workhorse. The 2025 version is a 3.02 xERA pitcher, a legitimate mid-rotation starter whose surface numbers made him look like an ace. The surface will regress. The improvement underneath it is real. The risk is durability: a rotator cuff strain ended his 2025 in August, and offseason sports hernia surgery on both sides followed. He says he has no restrictions in camp. He has also never thrown 170 innings in back-to-back seasons. Draft the improvement. Budget for 22 starts, not 32.

13. Hunter Brown / Consensus 35
2.43 ERA · 3.14 xERA · 28.3% K · wOBA .262 / xwOBA .277 · BA .201 / xBA .217

Every expected stat says the 2.43 ERA is flattering him. The xwOBA gap (.015), the xBA gap (.016), and the ERA gap (.71) all run the same direction. Hitters made contact that grades out at a 3.14 ERA level. The box score says 2.43. When the hits happened to land mattered more than how hard they were hit, and that kind of sequencing luck tends to correct.

But the three-year trajectory complicates a simple sell verdict. His xERA: 4.27, 3.29, 3.14. His xwOBA: .318, .286, .277. The improvement is real, consistent, and confirmed across 2,106 batters and three independent dimensions. Brown is genuinely getting better every year. He is not a 2.43 ERA pitcher. He is a 3.14 ERA pitcher who has posted a career-best xERA and is still improving. Draft the trajectory. Discount the surface.

14. Ranger Suárez / Consensus 165
3.20 ERA · 3.16 xERA · 23.2% K · wOBA .298 / xwOBA .278 · BA .256 / xBA .226

The most interesting wrinkle on the list. His ERA and xERA are nearly identical (four points of gap), which normally means no signal. But look at the wOBA dimension: .278 expected against .298 actual. And the BA dimension: .226 expected against .256 actual. The hitters who face Suárez are making weaker contact than the results show. He’s getting meaningfully unlucky on balls in play, and the ERA hasn’t reflected it yet because the sequencing has been kind enough to offset the BABIP misfortune.

Now signed with the Red Sox, moving from Philadelphia to a ballpark that shouldn’t change his profile substantially. The four-year trajectory adds weight. xERA: 3.78, 4.39, 3.64, 3.16. xwOBA: .305, .322, .300, .278. Both are career bests. The consensus at 165 is pricing the low K rate and the lack of name recognition. The contact data says this is a different pitcher than the one who posted a 4.39 xERA two years ago. The improvement has been quiet and steady, the kind that doesn’t generate headlines but does generate outs.

15. Joe Ryan / Consensus 75
3.42 ERA · 3.43 xERA · 28.2% K · wOBA .290 / xwOBA .289 · BA .218 / xBA .209

One point of xERA gap. Near-zero wOBA gap. The box score tells the complete truth about Joe Ryan. There is no hidden value here and no hidden risk. His 2024 xERA was 2.88, so the underlying stuff did worsen year over year, and the xwOBA confirms it: .268 then, .289 now. But the surface tracked the change perfectly. Ryan is the rare pitcher where the contact data has nothing to add. He is exactly what you see. The rank at 75 is right, and there is no reason to move him more than a few spots in either direction.

16. Freddy Peralta / Consensus 55
2.70 ERA · 3.43 xERA · 28.2% K · wOBA .270 / xwOBA .289 · BA .193 / xBA .206

Every expected stat says the 2.70 is lucky. But Peralta’s case is more complicated than a simple sell because the volatility is structural. His four-year xwOBA: .259, .284, .307, .289. His four-year xERA: 2.68, 3.35, 3.83, 3.43. He oscillates in underlying contact quality across a wide range, not just in surface results. The 2025 xwOBA (.289) is better than his 2024 (.307) but worse than his 2022 (.259). The actual contact quality changes year to year, which makes projection harder than it is for pitchers who simply get lucky or unlucky against a stable baseline.

Peralta is a mid-threes ERA pitcher with a high ceiling and a low floor. The consensus at 55 is roughly where the ball would put him if you average across years. Drafting him as a 2.70 ERA pitcher is overpaying. Knowing that the underlying stuff can range from .259 to .307 xwOBA in any given year is the information that the ranked list doesn’t show you.

17. Max Fried / Consensus 44
2.86 ERA · 3.38 xERA · 23.6% K · wOBA .272 / xwOBA .287 · BA .223 / xBA .233

Fried has lived on the sell side of the xERA gap for years, and every supplementary stat confirms it. The xwOBA gap (.015), the xBA gap (.010), and the ERA gap (.52) all say the box score is telling a better story than the contact quality supports. The four-year picture is mixed: xERA of 2.83, 2.75, 3.75, 3.38. The 2024 was genuinely poor by his standards, and 2025 is a real improvement.

But the 23.6% K rate caps the ceiling. A pitcher who strikes out fewer than a quarter of batters needs a lot of things to go right on balls in play. His ground ball rate provides some margin, and Fried has historically been one of the best in the game at inducing weak grounders. That skill is real and it’s why his ERA has consistently outrun his xERA. The question is how far it can carry him. The data says he’s probably a 3.20 ERA pitcher being drafted as a 2.86 ERA pitcher. That’s a meaningful gap when roster spots are tight.

18. Logan Webb / Consensus 48
3.22 ERA · 3.58 xERA · 26.2% K · wOBA .303 / xwOBA .295 · BA .264 / xBA .247

Webb’s multi-year data tells a story with a genuine turning point. Four-year xERA: 3.64, 3.66, 4.37, 3.58. The 2024 season was ugly across every contact dimension, xwOBA ballooning to .326, and 2025 is the first real bounceback. The mechanism is the K rate. It jumped from 20.5% to 26.2%, the highest of his career by a wide margin. Webb is missing more bats than he ever has.

One detail that the surface doesn’t reveal: his xwOBA (.295) is lower than his actual wOBA (.303), and his xBA (.247) is lower than his actual BA (.264). The contact quality is better than the results. Webb is getting unlucky on balls in play while simultaneously throwing the best stuff of his career. That combination, career-best underlying quality paired with unfavorable sequencing, is exactly the kind of signal that resolves in the pitcher’s favor over time. The rank reflects the xERA. The trajectory is better than the snapshot.

19. George Kirby / Consensus 67
4.21 ERA · 3.88 xERA · 26.1% K · wOBA .300 / xwOBA .306 · BA .252 / xBA .249

This is not a bad-luck story, and the multi-year data confirms it. His four-year xwOBA: .287, .305, .290, .306. After a 2024 improvement, the contact quality regressed to 2023 levels. The stuff genuinely got hit harder. The 4.21 ERA is slightly harsh (the xERA gap is only 0.33 runs) but the underlying direction is wrong.

The one encouraging signal is the K rate, which improved from 23% to 26.1%. Kirby at 19 is a bet that the strikeout improvement is durable and will eventually pull the contact quality back down. Historically, pitchers who add strikeouts see the contact profile follow within a season or two. If the K rate holds, this rank is fair. If it slides back toward 23%, the contact quality says Kirby is a back-end starter, not a mid-rotation arm.

20. Tanner Bibee / Consensus 173
4.25 ERA · 3.64 xERA · 21.3% K · wOBA .313 / xwOBA .297 · BA .246 / xBA .227

The new entry on the list, replacing Hunter Greene (elbow surgery, out until July). Bibee’s three-year xERA has improved every season: 3.71, 3.75, 3.64. The 2025 ERA of 4.25 is the unluckiest he’s been, with a +0.61 ERA gap and every supplementary stat confirming it: a .016 wOBA gap and a .019 BA gap, all running the same direction. The contact quality is better than the results.

The concern is the K rate, which dropped from 26.3% to 21.3%. That’s a meaningful regression in swing-and-miss ability. A pitcher with a 3.64 xERA and a 21% K rate is walking a thin line. The contact suppression is real, confirmed across three seasons and 2,057 batters, but without strikeouts, the margin for error on balls in play shrinks. Bibee at 20 is a bet that the contact quality, not the K rate, is the truer measure. If the strikeouts recover even partially, there’s a mid-rotation starter hiding at consensus rank 173.

Just Missed the Cut

Cole Ragans (Consensus 49). 4.67 ERA, 2.67 xERA, 38.1% K. The largest ERA gap in the entire pitcher pool, confirmed across xwOBA (.256 vs .295) and xBA (.187 vs .228). Four-year K% arc: 15.5, 28.8, 29.3, 38.1. Something structural changed. But the 2025 sample is only 257 batters faced after a rotator cuff strain limited him to 62 innings. If Ragans had 500 PA, he’d be top 5 on this list. At 257, the data says watch closely.

Hunter Greene (Consensus 71). 2.76 ERA, 3.05 xERA, 31.4% K. Four years of consistent improvement across every contact dimension. Would rank 8th on this list if healthy. Elbow surgery to remove bone chips and loose bodies will keep him out until July. The stuff is real. The elbow is not cooperating.

Zack Wheeler note: Wheeler’s inclusion at 6 carries more health risk than any other pitcher on this list. Thoracic outlet decompression surgery is a serious procedure. The contact data is unambiguous: this is a top-3 arm. Whether the arm is available is a separate question that Statcast cannot answer.

The data is in the tool. Load the xStats tab, pull the full pitcher table, sort by regression score. The pitchers where the columns disagree with the composite rank are the ones this list was built from. The methodology is replicable. The conclusions are falsifiable.

Every pitcher in baseball has two stat lines. One lives on the box score. The other lives in the quality of contact he allowed, computed from exit velocity and launch angle on every batted ball that left a hitter’s bat. MLB’s Statcast system tracks both. The gap between the two is the single most exploitable signal in fantasy baseball.

The expected ERA, xERA, answers a question the traditional ERA cannot: how good were the pitches? Traditional ERA measures outcomes. Outcomes include sequencing, defensive positioning, park effects, luck on balls in play. xERA strips all of that away and asks what the pitcher’s contact quality would produce in a neutral environment with average defense and average luck. When a pitcher’s ERA sits well below his xERA, he has been lucky. When it sits well above, he has been unlucky. The luck tends to correct.

xERA is the headline number, but it is not the only one. Statcast also produces expected wOBA (xwOBA) and expected batting average (xBA) against each pitcher, each derived from the same batted-ball measurements but capturing different dimensions of contact quality. When all three expected stats tell the same story, the signal is strong. When they diverge, the signal is more complicated and more interesting.

This is not a ranked list. It is four starting pitchers, each illustrating a different relationship between their surface stats and what the ball actually measured. The point is not to tell you who to draft. The point is to show how reading the gap works, so you can evaluate every pitcher in the pool using the xStats tab and apply the same logic to your own draft.

The Buy: Cole Ragans

Cole Ragans is running a 4.67 ERA. In most leagues, that number ends the conversation. A pitcher with a 4.67 ERA is a waiver-wire arm at best, a drop candidate at worst. The surface number says he is bad.

The ball says something completely different.

Ragans’ xERA is 2.67. That is a two-run gap. Other pitchers have posted large positive gaps, but their xERAs were mediocre to begin with. Ragans is the only starter in baseball running a gap this wide with an xERA that grades out as elite. When hitters put the ball in play against Ragans, the exit velocities and launch angles graded out as comparable to what Tarik Skubal and Garrett Crochet allowed. The xwOBA confirms it independently: .256 expected against .295 actual, a .039 gap running the same direction. His xBA against is .187. By contact quality alone, hitters could barely touch him. But the hits clustered at the worst possible moments. Runners moved station to station in sequences the pitcher could not control. The earned runs accumulated in a way that had almost nothing to do with the pitches he threw.

The K% is the mechanism. Ragans struck out 38.1% of batters he faced last season, up from 29.3% the year before. That is not a small adjustment. Look at the four-year arc: 15.5% in 2022, 28.8% in 2023, 29.3% in 2024, 38.1% in 2025. Something structural changed. And the xERA confirms the new strikeout rate is backed by genuine contact suppression. He is not just swinging-and-missing more hitters. The hitters who do make contact are making worse contact.

K RATE % 10 20 30 40 15.5% 28.8% 29.3% 38.1% 2022 2023 2024 2025
Cole Ragans, strikeout rate by season. The jump from 29.3% to 38.1% is backed by a corresponding improvement in contact quality: his xERA dropped from 3.25 to 2.67 over the same period.

A 4.67 ERA pitcher with a 38.1% K rate and a 2.67 xERA is not a 4.67 ERA pitcher. He is a top-15 arm being sold at a rank-49 price because the box score hasn’t caught up to the pitches. The gap will close. It always does. The question is whether it closes before or after your draft.

The Sell: Nick Pivetta

The opposite case. Pivetta posted a 2.87 ERA last season, a career best by more than a full run. The box score reads like a breakout. A pitcher who had never cracked 3.50 suddenly looked like a mid-rotation anchor. His composite rank sits at 89.

His xERA is 3.99.

That gap, 1.12 runs in the wrong direction, is one of the largest negative contact gaps among ranked starters. The wOBA data runs parallel: .256 actual against .310 expected, a .054 gap that is even wider proportionally than the ERA divergence. His xBA says hitters should have batted .229 against him. They actually batted .195. Every expected stat, ERA, wOBA, BA, says the real performance was worse than the surface results.

And the multi-year data makes it worse. In 2024, Pivetta’s wOBA gap ran the other direction: .306 actual against .292 expected, meaning the ball said he was slightly better than his results. This year every polarity reversed. His K% dropped from 28.9 to 26.4. His xERA rose from 3.44 to 3.99. His xwOBA rose from .292 to .310. The pitches got worse across every measurement while the results improved by a full run of ERA.

That is luck, by any definition Statcast can measure. A pitcher whose contact quality grades out as a 3.99 ERA arm cannot sustain a 2.87 ERA. The sequencing that bailed him out in 2025, the hard-hit balls that found gloves, the runners who got stranded in favorable counts, will not replicate at the same rate. Regression is not a theory here. It is a mechanical inevitability.

ERA vs xERA Ragans 4.67 2.67 Pivetta 2.87 3.99 Skenes 1.97 2.65 Crochet 2.59 2.89 wOBA vs xwOBA (against) Ragans .295 .256 Pivetta .256 .310 actual expected
Ragans and Pivetta show the largest divergences in opposite directions. Both xERA and xwOBA confirm the same signal. Skenes shows a moderate xERA gap but near-zero xwOBA gap, pointing to run prevention rather than contact quality. Crochet’s bars are nearly identical: the ball and the box score agree.

Pivetta is among the most likely pitchers in the top 100 to disappoint someone who drafts him on his surface numbers. The ball has already said so. The box score just hasn’t delivered the news yet.

The Edge Case: Paul Skenes

Skenes complicates the framework. He has outperformed his xERA in both major league seasons. A 1.96 ERA against a 2.50 xERA as a rookie. A 1.97 against a 2.65 last year. Across 1,247 batters faced, he has averaged roughly 0.6 runs of outperformance per season.

The normal read is sell. The gap is negative in both years. The model says he should regress.

But the wOBA data tells a different story than the xERA, and the divergence between them is where the real information lives. Skenes’ xwOBA gap is -.008. His xBA gap is -.003. Both are near zero. The contact quality model has him almost exactly right at the batted-ball level. Hitters make contact against Skenes that is precisely as good as the expected stats predict. The model is not misreading his stuff.

The xERA gap, though, is -.70. That means Skenes prevents significantly more runs from the same quality of contact than the model expects. The batted balls are what the model predicts. The damage from those batted balls is not. This is a sequencing and strand-rate phenomenon, not a contact-quality one. Skenes limits damage when runners are on base at a rate the population-level model does not anticipate. Whether that is a repeatable skill, an artifact of his pitch mix creating weaker contact in high-leverage counts, or luck that spans two seasons is the question the data cannot fully answer.

Two seasons is not a long track record. But two seasons is also not a fluke. If the outperformance were random, you would expect it to appear in one direction in year one and the other in year two. Instead, it appears in the same direction, at roughly the same magnitude, across two different sample sets, while the batted-ball metrics remain perfectly calibrated.

The practical takeaway: Skenes at rank 10 is probably fairly priced even though the xERA says he should be worse. But the reason is more specific than “the model is broken.” The model reads his contact quality correctly. It underestimates his run prevention. That distinction matters for how you evaluate the risk. If the xwOBA gap were also large, you could argue the model misunderstands his stuff. It does not. It misunderstands what happens after the contact. That is a narrower, harder-to-evaluate edge, and it is one the data flags but cannot resolve.

Not every gap is actionable. Knowing when to trust the model and when to question it is the harder skill.

The Control: Garrett Crochet

The final case is the simplest: a pitcher where the ball and the box score agree.

Crochet posted a 2.59 ERA against a 2.89 xERA. The gap is thirty points, which is statistical noise at the sample sizes involved. His xwOBA gap is +.004, also noise. His 2024 xERA was 2.86 and his 2024 xwOBA was .267. Two consecutive seasons where every expected stat aligns with every actual stat, one in a partial season and one across a full workload. The contact quality was stable. The results were consistent.

What changed was the K rate: 35.1% in 2024, 31.3% in 2025. A four-point drop sounds alarming in isolation. In context, it is workload normalization. Crochet had never thrown a full season before 2025. The strikeout rate settled. The underlying contact quality held. This is what a pitcher looks like when the surface stats tell the truth and the ball confirms it.

The consensus at rank 13 is reading him correctly. There is no hidden edge, no mispricing, no gap to exploit. And that information is just as valuable as the gaps in Ragans and Pivetta, because it tells you where not to spend your analytical energy. When the ball and the box score agree, the market price is probably right. Move on. Look for the divergences.

Reading the Gap Yourself

The four cases reduce to a process.

Start with the xERA gap. When xERA is significantly lower than ERA, the pitcher is better than his results. When it is significantly higher, the pitcher is worse. When the two align, the market is reading the pitcher correctly. Significantly means roughly half a run or more. Gaps smaller than that are noise. Gaps larger than a full run are almost always actionable.

Then check the xwOBA and xBA gaps. If they run the same direction as the xERA gap, the signal strengthens. Every expected stat is telling the same story. If they diverge, something more specific is happening. Skenes’ case showed what that looks like: xwOBA aligned, xERA did not, which pointed to run prevention rather than contact quality as the source of the discrepancy. That distinction changes the analysis.

Then check the multi-year trajectory. A gap that appears in one season and reverses the next is noise. A gap that persists or widens across seasons is a stronger signal. A gap that flips polarity, as Pivetta’s did, is the strongest signal of all, because it means the current results are running against the direction the contact data has historically pointed.

The xStats tab in the tool shows all of this for every pitcher in the Statcast database. Load a year, sort by the Reg column, and the largest contact gaps surface immediately. The batters table works the same way using xBA and xwOBA. The mechanism is identical: compare what happened to what the quality of contact predicted, and measure the divergence.

The box score is a story. It has a protagonist, a narrative arc, a final number that feels like a verdict. The ball doesn’t tell stories. It measures exit velocity in miles per hour and launch angle in degrees and produces an expected outcome stripped of everything that makes baseball feel dramatic.

The drama is fun. The measurements are useful. They are not the same thing, and knowing when to trust which one is most of the edge available in a fantasy draft.

The data is in the tool. Pull the xStats CSV, sort by regression score, and cross-reference with the Rankings tab. The pitchers where the columns disagree are the ones worth a closer look.

You know your roster. You drafted it, you’ve been managing it, you can probably recite your starting lineup from memory. But there’s a version of your roster you’ve never seen, and it looks different from the one you think you know.

The version you see is a list of names. The version the analytics engine sees is a collection of category contributions, positional replacement costs, and regression signals, each carrying a specific weight that shifts every time the player pool changes.

The gap between those two versions is where most leagues are won and lost. This is a walk through what the engine computes when it looks at your team, and what those computations surface that a box score never will.

The Balance You Can’t See

Every connected league gets a category balance profile. It measures your team’s average z-score per scoring category, weighted by roster slot. A starter counts full. A bench bat counts half. An IL stash counts zero.

This weighting matters more than it sounds. If you’re carrying two injured pitchers on IL and evaluating your ERA by looking at all your arms, you’re including guys who contribute nothing to your weekly score. The engine excludes them. The balance it shows you is what your lineup actually produces, not what your roster theoretically contains.

The balance profile often reveals something managers don’t expect: the category they think is fine is actually the one bleeding matchups.

LEAGUE AVG R +0.3 HR −0.2 RBI +0.1 SB +1.4 AVG +0.4 W −0.2 SV −0.8 K +0.6 ERA −0.3 WHIP +0.2
A team that feels balanced. The z-scores say otherwise. Home runs sit below league average despite four power hitters on the roster. Stolen bases are dominant but offer no more ground to gain. Saves are the real gap, and it’s invisible without the category view.

You have four guys who hit home runs, so power feels solid. But the z-score shows your HR production sits below the league average, because every other team also has four guys who hit home runs. Meanwhile, your stolen base z-score is well above average because you grabbed two elite base stealers and nobody else in the league has more than one.

The home run category is where you’re losing. The steal category is where you’re already winning and can’t gain more ground. Most managers do the opposite of what this suggests. They chase the category that feels weakest by name recognition rather than by the math, and they ignore the one where a single waiver move would flip a matchup.

Finding the Right Player, Not the Best Player

The FA tab operates on this directly. When you sort by roster fit, the engine doesn’t hand you a list of the best available players. It hands you a list of the players who would most improve your specific weaknesses.

Behind that sort, every free agent is tested against every position they’re eligible for on your roster. A player listed at 1B/OF gets evaluated at both positions. The engine finds the weakest player you currently roster at each eligible slot, computes the VORP differential, and returns the displacement that produces the biggest gain.

YOUR ROSTER OF1 +3.2 VORP OF2 +2.1 VORP OF3 +0.4 VORP 1B +2.8 VORP FREE AGENT 1B/OF eligible +1.8 VORP +1.4 gain −1.0 vs 1B: no upgrade
The engine tests every eligible position and picks the displacement that produces the biggest upgrade. A 1B/OF free agent might look like a first base pickup, but if your outfield is weaker, the fit score routes him there.

If your first baseman is solid but your fourth outfielder is replacement-level, the 1B/OF free agent shows up as an outfield upgrade, not a first base lateral move. The position assignment is the engine’s, not the platform’s default.

This is a different question than “who’s the best available player.” The best available player might be a shortstop, and your shortstop might already be your strongest position. Adding him improves your roster on paper and changes nothing in the standings.

Positional Value Isn’t What You Think

VORP measures how much better a player is than the freely available alternative at his position. Computing that replacement level requires knowing how many players at each position are worth drafting.

A 12-team league with one catcher slot has 12 draftable catchers. A league with three outfield slots has 36 draftable outfielders. The replacement-level catcher is much worse than the replacement-level outfielder, which means a league-average catcher carries more positional value than a league-average outfielder.

The engine handles this with a greedy claiming algorithm that processes positions from scarcest to deepest. Catchers first, then middle infield, then outfield. When a player is eligible at multiple positions, he gets claimed at the scarce position first. A 2B/SS can’t simultaneously inflate depth at both spots. Once he’s claimed at 2B, the SS pool is one player shallower.

DH and UTIL slots are computed last, from whatever hitters remain unclaimed after every real position is filled. This mirrors actual draft behavior: you fill positions with specific slots, and UTIL gets whatever’s left over.

Multi-position eligibility matters here more than most managers realize. A player who qualifies at catcher and outfield has genuinely different value than a pure outfielder with the same projected stats, because the catcher slot has a worse replacement baseline. The composite ranking might show them close together. The VORP tells a different story.

Where the Data Comes From

When you connect a league, the engine automatically loads FantasyPros consensus projections for hitters and pitchers, providing stat lines from an aggregate of industry forecasts. It then loads FantasyPros ECR, an overall ranking derived from expert consensus. ECR can be toggled off if you prefer projection-only rankings.

The two layers serve different purposes. The consensus projections provide the raw stat estimates: how many home runs, how many innings, what ERA. ECR provides the ranking authority. When ECR has coverage for a player, it drives the composite rank exclusively. The platform’s algorithmic ranking is excluded from the rank computation entirely. ESPN and Yahoo still contribute stat projections, ownership data, injury status, and roster information. They just don’t move the composite rank when ECR is active.

This is deliberate. ECR is already a consensus. Blending it with one platform’s algorithm dilutes signal with noise.

You can also import FanGraphs projection systems as additional stat sources. Each imported system adds an independent projection to the averaging pool. The engine blends them using denominator-weighted averaging for ratio stats: a projection based on 200 innings carries more weight than one based on 60. The same volume-weighting principle applies at the z-score level, where each player’s ratio stat contribution is scaled against the median playing time for their role. Starters are measured against starter workloads. Relievers are measured against reliever workloads. A closer’s 2.10 ERA over 60 IP isn’t penalized against a starter’s 180 IP baseline.

When Projections Disagree

The more independent projection systems you load, the more the engine trusts the projection-derived z-scores over the consensus rank. One source means the engine leans heavily on the rank as a safety net. Three or more means the projections drive the value and the rank becomes a gentle anchor.

This matters because projections and consensus don’t always agree. When they diverge, the engine applies empirical Bayes shrinkage: extreme estimates from noisy data get pulled toward a prior. The composite rank is the prior. The pull is adaptive. The further a projection deviates from what the rank predicts, the harder it gets corrected. A small disagreement barely moves.

LARGE GAP 0 1 2 3 4 5 Rank z = 2.0 Proj z = 3.5 Final: 2.8 SMALL GAP 0 1 2 3 4 5 Rank z = 2.0 Proj z = 2.5 Final: 2.3
The hollow dot is the final z-score after shrinkage. With a large gap between rank and projection, the final value lands closer to the rank. With a small gap, it barely moves. This prevents any single source from distorting the rankings while still letting genuine multi-source conviction show through.

This is what keeps the rankings stable when one projection system loves a player the rest of the industry doesn’t. It’s also what lets a genuine multi-source signal survive. If three independent systems all project a player higher than consensus, the shrinkage lets that conviction through. If only one does, it gets corrected.

Reading the Luck

For Statcast users, the xStats tab adds another layer. The regression score integrates expected-versus-actual gaps across multiple dimensions: xBA against BA, xSLG against SLG, xwOBA against wOBA, ERA against xERA.

These aren’t displayed as raw numbers. They’re converted to pool-based z-scores, so a regression signal of +1.5 means that player’s luck gap is 1.5 standard deviations larger than the typical gap in the current player pool.

This normalization matters because the size of the average luck gap changes as the season progresses. A 20-point wOBA gap in April is noise. The same gap in August is signal. The z-score conversion handles the calibration automatically.

The Decisions That Surface

The regression signals, category balance, positional needs, and projection confidence all flow into the insight cards that appear on each tab. Those cards aren’t static tips. Each one is generated from the intersection of multiple data layers.

A card that says your roster is weakest at saves and the best available closer has a positive xStats gap is synthesizing four independent computations. The confidence badge tells you how much projection depth supports the observation. Two independent stat projection sources plus ECR consensus reads as high confidence. Platform data alone reads as low.

The distinction matters because it tells you how much to trust the specificity of the suggestion versus treating it as directional.

None of this requires you to understand the math. The whole point of surfacing these computations through category bars, fit scores, and insight cards is that the decision becomes visible without the derivation. The z-scores and shrinkage coefficients and greedy claiming algorithms are the machinery. The output is a clear answer to a question most platforms never ask: given everything the data can see about your team, your league, and the available player pool, what is the single highest-leverage move you can make right now?

The first field note walked through the math. This one is about what happens when that math meets your specific roster. The numbers don’t play the game for you. But they see the board differently than you do, and the differences are where the edges live.

Your league’s best team isn’t the one with the most talent. It’s the one that understood what the numbers were actually measuring.

Fantasy baseball runs on projections. Every platform, every analyst, every draft kit produces a ranked list. Player A is better than Player B. Draft accordingly. The entire industry is built on this premise, and the premise has a problem: it skips a step. The step it skips is the one that matters.

A projection tells you what a player will do. It doesn’t tell you what that production is worth. Those are different questions, and confusing them is where most fantasy analysis goes wrong.

The Scarcity Problem

Consider two players. One is projected for 30 home runs. The other is projected for 15 stolen bases. Which projection is more valuable to your team?

You can’t answer that question without context. In a league where every team’s outfielders hit 25 home runs, the 30-homer guy is only five homers better than replacement. In a league where nobody runs, the 15-steal guy might be the only source of speed available. The raw number tells you the production. It doesn’t tell you the scarcity. And in a competitive league, scarcity is the entire game.

This is the first thing the analytics engine does that a simple ranked list doesn’t: it measures each player’s production relative to what’s actually available in your league, at your league size, with your scoring categories.

Z-Scores: Distance from the Middle

The mechanism is called a z-score. The name sounds technical. The concept isn’t.

Take every draftable player’s projected home runs. Find the average. Find how spread out the values are (the standard deviation). Now measure how far each player sits from that average, in units of spread. That distance is the z-score.

A player projected for 40 home runs in a pool where the average is 22 and the spread is 9 sits two units above the mean. His z-score is +2.0. A player projected for 30 stolen bases in a pool where the average is 12 and the spread is 8 sits 2.25 units above. His z-score is +2.25.

The stolen base guy is more valuable. Not because 30 steals is inherently better than 40 homers. That comparison doesn’t mean anything in the abstract. But because 30 steals is farther from what’s available than 40 homers is. The z-score converts every category to the same scale so you can actually compare across them. Home runs and stolen bases and ERA and WHIP, all measured the same way: distance from the middle of the pool, in units of spread.

z = +2.0 40 HR z = +2.25 30 SB POOL AVG BELOW AVG ABOVE AVG
Two players from different categories plotted on their respective distributions. The stolen base player sits farther from the pool average in his category than the home run player does in his. The z-score captures this. Raw counting stats cannot.

The critical detail: the pool isn’t some universal population. It’s calibrated to your specific league. A 12-team league and an 8-team league have different pools, different averages, different spreads, and therefore different z-scores for the same player. A hitter who’s elite in a deep league might be merely good in a shallow one because the replacement options are better. The z-score captures this automatically. Change the league size and every value recalculates from scratch.

This also means that different scoring categories produce different value landscapes. In a standard 5x5 league, stolen bases tend to have a wider spread than home runs, which means elite speed carries more z-score weight than elite power. That isn’t a subjective judgment. It’s arithmetic. The distribution determines the value, and the distribution is derived from the actual players available in your league format.

VORP: Value Above Replacement

Z-scores tell you how a player compares to the pool. They don’t tell you how a player compares to the alternative at his position. That’s the next step, and it’s the one that separates useful rankings from decorative ones.

A catcher projected for a .260 average with 20 homers looks ordinary. An outfielder with the same line looks replaceable. The difference isn’t the player. It’s the position. The best available catcher after the draft is significantly worse than the best available outfielder after the draft. That gap between what you have and what you’d have to replace him with is the actual value. Not the production. The surplus above the alternative.

CATCHER Your C: z = +1.5 Repl: z = -0.8 VORP 2.3 OUTFIELDER Your OF: z = +1.5 Repl: z = +0.4 VORP 1.1 Same z-score. Same production. Half the value.
Two players with identical z-scores of +1.5. The catcher’s replacement level is much lower (z = -0.8) than the outfielder’s (z = +0.4), giving the catcher more than double the surplus. VORP measures what matters: how much better you are than the next available option.

This is VORP. Value over replacement player. It takes the z-score and subtracts the z-score of the last player at that position who’d realistically be drafted. What remains is surplus. A catcher with a z-score of 1.5 in a position where replacement level is -0.8 has a VORP of 2.3. An outfielder with a z-score of 1.5 in a position where replacement level is 0.4 has a VORP of 1.1. Same production. Half the value.

Every time you’ve watched someone draft a catcher in the first three rounds and thought “that’s too early,” you were intuitively sensing VORP. The math just makes the intuition precise. And every time someone fell for a stacked outfield because the names looked impressive, they were ignoring VORP. The names were real. The surplus wasn’t.

There’s a subtlety here that matters for draft strategy and most tools miss it: multi-position eligibility. A player eligible at both second base and shortstop could be assigned to either position for VORP calculation. The naive approach assigns him to his primary position. The better approach asks: where does assigning him create the most total value across the full roster?

If second base is deep this year and shortstop is thin, assigning him to shortstop produces more surplus. Not because he’s better there, but because the replacement level is lower there. His VORP is higher at the scarcer position. Multiply this across a full roster of multi-position players and the effect compounds. The engine runs a greedy optimization across all eligible positions to maximize total roster VORP rather than assigning each player in isolation.

This is why two tools can use the same projections and produce different rankings. The projections are the input. The positional assignment is the mechanism. And the mechanism matters more than people realize.

Shrinkage: Honesty About Small Samples

One more thing the numbers can’t do, and being honest about it matters more than the numbers themselves.

A projection of .290 for a player with 3,000 career plate appearances and a projection of .290 for a player with 200 career plate appearances are not the same claim. The first is grounded in years of evidence. The second is a guess with decimal-point precision. The track record is too short for the confidence to be real.

Small-sample projections carry a specific kind of risk: they inherit the variance of the sample. A player who hit .340 in a 200-plate-appearance debut might be a .340 hitter. He might also be a .265 hitter who ran hot for two months. The projection system that takes the .340 at face value will rank him alongside players with thousands of plate appearances of evidence, and the ranking will look precise while being built on sand.

The engine handles this through a technique called empirical Bayes shrinkage. The principle is simple: pull extreme small-sample projections toward the population average, with the magnitude of pull inversely proportional to the sample size. A player with 200 plate appearances gets pulled substantially toward the league-wide batting average. A player with 3,000 plate appearances barely moves. The resulting projections are less dramatic but more honest.

The rookie who hit .340 in a half-season might show up as .285 after shrinkage. That’s not the engine being pessimistic. That’s the engine being accurate about what 200 plate appearances actually tell you, which is less than a batting average implies. The projection still has him above average. It just refuses to treat a small sample with the same confidence as a large one.

Shrinkage doesn’t punish young players. It protects you from overvaluing them based on insufficient evidence. The distinction matters. A genuine breakout will prove itself as the sample grows and the shrinkage effect diminishes. A fluke will regress, and the shrinkage will have been right. The question isn’t whether the player is good. The question is how much evidence exists for the claim, and shrinkage forces the answer to be proportional to the evidence.

Tier Breaks: Where the Real Gaps Live

The last piece corrects the most common mistake in fantasy baseball: treating adjacent ranks as meaningfully different.

Player 14 and Player 17 on a ranked list are almost certainly within the projection’s margin of error. The projections that produced those ranks can’t reliably distinguish between them. The difference is noise, not signal. Treating the gap as real produces bad decisions. Reaching for Player 14 when Player 17 would still be available next round. Rejecting a trade because it downgrades from 14 to 17 when the downgrade is imaginary.

VALUE TIER 1 interchangeable GAP TIER 2 interchangeable GAP TIER 3 RANK ORDER
Players cluster into tiers where the gaps within each group are smaller than the projection uncertainty. The real decisions happen at the tier boundaries, not between players inside the same tier.

Tier breaks are where the real gaps live. The gap between the last player in Tier 2 and the first player in Tier 3 is larger than the projection noise. That gap represents actual discrimination power in the data. Within a tier, the players are interchangeable by what the projections can see. Across tiers, they are genuinely different.

The practical implication: don’t agonize within tiers. Agonize across them. If you’re choosing between two players in the same tier, pick the one who fills a positional need or the one you like watching play. The data can’t meaningfully separate them. If you’re choosing between players in different tiers, pick the higher tier. The data can.

Tier awareness also changes how you evaluate trades. A trade that moves you from the top of Tier 3 to the bottom of Tier 2 is genuinely upgrading your roster, even if the rank number only changed by five spots. A trade that moves you from rank 14 to rank 17, both within the same tier, costs you nothing of substance even though the number moved. The tier boundary is the information. The rank number is the noise around it.

Most trade disagreements in fantasy baseball come from one owner thinking in ranks and the other thinking in tiers. The rank thinker sees a downgrade from 14 to 17 and rejects. The tier thinker sees lateral movement within the same cluster and accepts, because the other assets in the deal compensate at a different position. The tier thinker is playing a different game, and it’s the right game.

The mechanics of how those tiers get drawn matter more than they appear to. A simple gap-threshold algorithm divides the overall value range by some fixed number and treats each jump of that size as a tier break. The problem is outliers. One elite player at the top expands the range. The threshold scales to match. Real separations in the middle compress into a single tier because the outlier inflated the denominator. The same distortion that makes elite players look extraordinary makes ordinary gaps between solid contributors invisible.

The engine uses natural breaks instead: find the N largest actual gaps in the sorted value distribution and cut there, regardless of where they fall in the overall spread. The tier boundaries emerge from the data’s own structure. An outlier at the top gets its own tier. The separations that actually exist in the middle of the pool become boundaries. The tier thinker’s edge depends on the tiers being drawn correctly. That part isn’t philosophical.

Putting It Together

None of this is secret. Z-scores are standard statistics. VORP has been in baseball analysis for two decades. Shrinkage is textbook Bayesian reasoning. Tier clustering is how most serious analysts already think about rankings. The individual pieces are well understood.

The gap isn’t in the knowledge. It’s in the application. Most tools give you a ranked list and stop. The list is the conclusion. You either trust it or you don’t. What the list doesn’t show you is why Player 23 is ranked there, which categories drive the value, how the value changes if you adjust for your league’s specific settings, or what happens to the value landscape when you change one variable.

The analytical approach doesn’t produce a better list. It produces a transparent one. Every number has a derivation. Every ranking has a basis you can inspect. Every claim about value can be traced back to the projections, the league settings, the positional pool, and the replacement baseline that produced it. When the inputs change, the outputs change, visibly, in real time, and you can watch the effect propagate.

The ranked list is not the product. The ranked list is the last step of a process. The process is the product. And the process, once you understand it, is surprisingly simple: measure production relative to the pool, adjust for positional scarcity, discount for sample-size uncertainty, and cluster the results into honest groupings that reflect what the data can actually distinguish.

Four steps. Each one answerable to arithmetic. Each one inspectable by anyone who cares to look.

The numbers don’t play the game for you. They clarify the decision space. A z-score tells you where the value is concentrated. VORP tells you where the scarcity is. Shrinkage tells you where the evidence is thin. Tiers tell you where the real choices are. What you do with that information is the part that stays human.

The tool is free. The rankings are live. The math is visible. Go look.