The Signal Gap
A club pays a hitter for what he did. We measure what he is doing. This is the distance between the two, for every qualified hitter in the league: where his salary ranks him among the men on his own service clock, against where our engine ranks him among the same men. Positive means we read him above what his cohort pays him. Negative means his cohort is paying for a season our instrument does not see.
This number is measured on two different clocks
What we see — batted balls through . It moves every night.
What he’s paid — club sheets as old as , on a decision made last winter. It cannot move until the next one.
That distance is not a defect in the number. It is the number — and it is why this is the only figure on the site the registry marks as carrying two as-ofs at once.
201 hitters ranked across 2 cohorts · 386 of 406 on the Baseline carry a contract
Arbitration
95 hitters · ranked within this cohort only
| What the market pays | What the engine sees | The gap | ||||
|---|---|---|---|---|---|---|
| Hitter | Club | Salary | Pay %ile | EV95 | Engine %ile | Gap |
| Garrett Mitchell | MIL | $0.95M | 11 | 110.5 | 93 | +82.0owed |
| Taylor Trammell | HOU | $0.82M | 5 | 110.4 | 81 | +75.6owed |
| Nathaniel Lowe | CLE | $0.51M | 1 | 107.8 | 76 | +74.4owed |
| Lars Nootbaar | AZ | $1.57M | 28 | 108.8 | 97 | +69.1owed |
| Jo Adell | CLE | $1.53M | 25 | 110.1 | 94 | +69.1owed |
| Tyler Heineman | LAA | $0.68M | 4 | 99.3 | 72 | +68.0owed |
| Logan O'Hoppe | TEX | $0.84M | 6 | 106.2 | 73 | +67.0owed |
| Jonah Heim | ATH | $0.98M | 12 | 104.4 | 78 | +66.0owed |
| Luke Raley | SEA | $2.05M | 34 | 108.5 | 99 | +64.9owed |
| JJ Bleday | CIN | $1.40M | 20 | 105.7 | 82 | +61.7owed |
| Francisco Alvarez | NYM | $2.40M | 39 | 109.2 | 96 | +56.3owed |
| Amed Rosario | NYY | $2.50M | 40 | 108.9 | 86 | +45.8owed |
| · · · 71 in the middle · · · | ||||||
| Luis Arraez | PHI | $3.53M | 59 | 98.1 | 3 | −55.3priced |
| Gleyber Torres | DET | $22.02M | 98 | 102.5 | 40 | −58.0priced |
| Jeremy Peña | HOU | $9.47M | 87 | 106.2 | 26 | −61.7priced |
| Mauricio Dubón | ATL | $6.10M | 80 | 102.9 | 18 | −61.7priced |
| Jazz Chisholm Jr. | NYY | $10.20M | 91 | 106.1 | 28 | −63.3priced |
| CJ Abrams | WSH | $9.75M | 88 | 106.5 | 22 | −66.0priced |
| Seiya Suzuki | CHC | $19.00M | 96 | 108.7 | 30 | −66.5priced |
| Ernie Clement | TOR | $4.60M | 71 | 100.0 | 4 | −67.0priced |
| Andrew Vaughn | MIL | $7.65M | 83 | 105.0 | 14 | −69.2priced |
| Brendan Donovan | SEA | $5.80M | 77 | 101.2 | 2 | −74.5priced |
| Randy Arozarena | SEA | $15.65M | 94 | 106.5 | 16 | −77.6priced |
| Steven Kwan | CLE | $7.72M | 85 | 97.0 | 6 | −78.7priced |
Showing the 12 largest and 12 smallest gaps of 95 · — Left of the first rule is what his club decided, last winter, on last season. Right of the second is what the engine measures off this season’s batted balls. The gap is the distance between his rank on each, in percentile points, inside this cohort and no other. Teal means we read him above what his cohort pays him; oxide means below. The word prints too, so the read never travels on color alone.
Under contract
106 hitters · ranked within this cohort only
| What the market pays | What the engine sees | The gap | ||||
|---|---|---|---|---|---|---|
| Hitter | Club | Salary | Pay %ile | EV95 | Engine %ile | Gap |
| Samuel Basallo | BAL | $1.63M | 7 | 109.5 | 87 | +80.0owed |
| JJ Wetherholt | STL | $0.78M | 1 | 104.4 | 76 | +75.7owed |
| Roman Anthony | BOS | $2.65M | 13 | 109.3 | 84 | +70.5owed |
| Ke'Bryan Hayes | CIN | $7.00M | 32 | 104.8 | 100 | +67.6owed |
| Luis Robert Jr. | BAL | $2.89M | 16 | 110.5 | 83 | +66.7owed |
| Jackson Merrill | SD | $2.11M | 9 | 107.2 | 75 | +66.6owed |
| Brent Rooker | ATH | $8.00M | 36 | 108.7 | 98 | +62.4owed |
| Lawrence Butler | ATH | $3.68M | 17 | 107.8 | 70 | +52.4owed |
| Salvador Perez | KC | $10.45M | 41 | 107.3 | 93 | +52.3owed |
| Victor Caratini | MIN | $4.00M | 19 | 103.8 | 66 | +47.1owed |
| Bobby Witt Jr. | KC | $14.11M | 52 | 110.7 | 96 | +43.8owed |
| Gary Sánchez | MIL | $1.50M | 5 | 107.5 | 47 | +41.5owed |
| · · · 82 in the middle · · · | ||||||
| Rafael Devers | SF | $23.81M | 76 | 108.8 | 31 | −45.7priced |
| Mookie Betts | LAD | $25.17M | 83 | 104.1 | 35 | −47.7priced |
| Matt Chapman | SF | $25.17M | 82 | 109.2 | 30 | −52.4priced |
| Jung Hoo Lee | SF | $23.25M | 75 | 102.6 | 16 | −59.0priced |
| Trea Turner | PHI | $27.27M | 88 | 105.5 | 28 | −60.0priced |
| Javier Báez | DET | $24.00M | 77 | 103.8 | 12 | −64.7priced |
| Dansby Swanson | CHC | $28.00M | 90 | 104.7 | 24 | −65.7priced |
| Trevor Story | BOS | $25.00M | 80 | 104.6 | 7 | −73.3priced |
| Cody Bellinger | NYY | $42.50M | 99 | 104.1 | 22 | −77.1priced |
| Nolan Arenado | AZ | $24.40M | 79 | 103.8 | 0 | −79.0priced |
| Alex Bregman | CHC | $26.29M | 86 | 103.0 | 5 | −80.9priced |
| Jose Altuve | HOU | $33.00M | 94 | 103.6 | 2 | −91.9priced |
Showing the 12 largest and 12 smallest gaps of 106 · — Left of the first rule is what his club decided, last winter, on last season. Right of the second is what the engine measures off this season’s batted balls. The gap is the distance between his rank on each, in percentile points, inside this cohort and no other. Teal means we read him above what his cohort pays him; oxide means below. The word prints too, so the read never travels on color alone.
Pre-arbitration
169 hitters · no pay rank
No Signal Gap for this cohort — a pre-arbitration salary is set by rule rather than by a market, every figure here is the source's own estimate, and it is PRORATED by time on the roster — across this cohort it correlates 0.43 with games played. Ranking it would rank playing time.
What is left is still worth printing: these are the men the engine reads highest who are still being paid on the scale rather than by a market. The surplus every club has, in the order we see it. The salaries below are facts, not ranks.
| Hitter | Club | EV95 | Engine %ile | Salary |
|---|---|---|---|---|
| Carlos Narváez | BAL | 105.6 | 100 | $0.24Mest |
| Jahmai Jones | BOS | 109.0 | 99 | $0.33Mest |
| Patrick Bailey | CLE | 106.0 | 99 | $0.61Mest |
| Henry Davis | PIT | 106.9 | 98 | $0.80Mest |
| Hunter Feduccia | LAD | 106.1 | 98 | $0.23Mest |
| Cam Smith | HOU | 109.2 | 97 | $0.81Mest |
| Brett Baty | NYM | 108.6 | 96 | $0.81Mest |
| Moisés Ballesteros | LAA | 106.9 | 96 | $0.23Mest |
| Tommy White | ATH | 104.5 | 95 | $0.30Mest |
| Coby Mayo | BAL | 110.9 | 95 | $0.79Mest |
| Nick Kurtz | ATH | 112.0 | 94 | $0.79Mest |
| Drake Baldwin | ATL | 107.7 | 94 | $0.80Mest |
Free agent after this season
11 hitters · no pay rank
No Signal Gap for this cohort — 11 men is too few for a percentile to mean anything — under 20 it is a handful of coarse buckets wearing a decimal point.
| Hitter | Club | EV95 | Engine %ile | Salary |
|---|---|---|---|---|
| Ramón Laureano | SD | 106.0 | 100 | $6.50Mest |
| Jorge Mateo | TB | 107.4 | 90 | $0.19Mest |
| Luis Rengifo | SD | 103.3 | 80 | $0.34Mest |
| Dominic Smith | ATL | 104.3 | 70 | $1.25Mest |
| Elias Díaz | TEX | 106.9 | 60 | $1.22Mest |
| Brandon Lowe | PIT | 107.2 | 50 | $11.50Mest |
| Paul Goldschmidt | NYY | 105.0 | 40 | $4.00Mest |
| Austin Hedges | CLE | 103.8 | 30 | $4.00Mest |
| Christian Vázquez | HOU | 101.0 | 20 | $1.00Mest |
| Ozzie Albies | ATL | 103.2 | 10 | $7.00Mest |
| Nicky Lopez | TEX | 99.7 | 0 | $0.66Mest |
Not stated
5 hitters · no pay rank
No Signal Gap for this cohort — this cohort's pay is not a market price we can rank a man against his peers on.
| Hitter | Club | EV95 | Engine %ile | Salary |
|---|---|---|---|---|
| William Contreras | MIL | 107.8 | 100 | $9.40Mest |
| Eugenio Suárez | CIN | 106.8 | 75 | $15.00Mest |
| Victor Robles | SEA | 102.1 | 50 | $5.13Mest |
| Isaac Paredes | HOU | 103.3 | 25 | $9.35Mest |
| Taylor Walls | TB | 100.3 | 0 | $2.45Mest |
What this instrument does not measure
The engine rank is built from top-of-range exit velocity and the luck gap. It is a measure of how hard a hitter strikes a baseball when he really connects, and of whether his results have run ahead of that. It is not a measure of how good he is.
A contact hitter with a low ceiling and a high average will rank near the bottom of this board and may be an excellent major-league player. So will a man whose value is on the bases or in the field — neither is in this number at all. When the board says a hitter is priced above what we see, it means precisely that and nothing wider: the thing we measure does not support the price. It is a reading, and it is one reading.
We print it anyway, and we say what it cannot do, because a number whose limits are hidden is a number a reader cannot check.
The formula, in full
engine score = 0.1458 × z(EV95)
-0.2781 × z(luck gap, park-adjusted)
z standardized over 2015, 2016, 2017, 2018, 2019, 2021
EV95 mean 105.763 sd 2.931
luck gap mean 0.00509 sd 0.03422
engine %ile = rank of that score within his service cohort
pay %ile = rank of his cash salary within the same cohort
Signal Gap = engine %ile − pay %ileThose two coefficients are not ours to change. They were frozen in git before the seasons that judged them were examined, and the confirmatory run is published as a receipt. Frozen at pre-registration and applied here, never refitted. This board is a wider POPULATION for a closed formula, not a new study.
The luck gap’s coefficient is negative on purpose, and it is the one sign nobody should infer from English: a positive luck gap means a hitter’s results have outrun his contact, which is the engine liking him less. Every direction on this site is declared rather than guessed, because reading one of them backwards is how our fourth issue went to print.
The whole board as JSON, protocol block included — because a claim you cannot recompute is a claim you have to take our word for.