Background
Way back in 2014, I built a prospect comparison system called JAVIER on Beyond the Box Score. At this point it’s so old, you have to use archive.org to get to the pages. This was built on the back of my earlier work comparing the success rates for prospects based only on walk and strikeout rates. The originating idea behind it was to use very basic stats like strikeouts, walks, isolated power, stolen bases, triples, and runs scored to build a snapshot of a minor league player’s hit, eye, power, and speed. This profile can then be used to find similar players through the years who have passed through the same levels and either succeeded or failed. The beauty of using such basic counting stats over the more modern Statcast metrics is that these comparisons can extend back to 1978, when Minor League data is readily available.
Data Sources
The historical database underlying the website was purchased from The Baseball Cube and includes roughly 162,000 individual player-seasons spanning from 1978 through 2025, covering every level from complex-league rookie ball up through Triple-A. Once a new season gets underway, those same leagues’ stats are pulled straight from Major League Baseball’s API and appended to that historical pool in the same format.
Turning raw stats into rates
The first step in building a player’s profile is to turn the raw counting stats into rate stats that can be compared across players. For hitters, that means calculating strikeout rate, walk rate, isolated power, and a speed score. For pitchers, it’s strikeout rate, walk rate, home-run rate, and a starter-or-reliever role signal based on number of innings pitched per appearance.
Once calculated, those rates are massaged using sample size, league average, and player age into z-scores and turned into both level-based and career-to-date profiles that reflect how the player has performed across all of his minor league seasons so far.
Hitters
| Feature | Formula | Associated Tool |
|---|---|---|
| Isolated Power | (2B + 2·3B + 3·HR) / AB |
Power |
| Strikeout Rate | SO / PA |
Hit |
| Walk Rate | BB / PA |
Eye |
Speed, like power, is a distinct talent that creates a measurable difference between two players with an otherwise similar approach. This speed, or lack thereof, affects a player’s probability of success on offense. This site uses a form of Bill James’ speed score, modified by Brandon Heipp (aka Patriot) on Walk Like a Sabermetrician.
This statistic measures a player’s impact from speed in four ways, each from basic statistics: Stolen base percentage, stolen base attempts, triples, and runs. The assumption is that a player with good game-usable speed will attempt to steal bases and be safe more often, hit more triples, and score more runs than average, when accounting for the player’s overall offensive contribution.
Here are the equations I used which were leveraged from the work of James and Heipp.
| Feature | Formula |
|---|---|
| Stolen Base Percentage | (SB + 3)/(SB + CS + 7) |
| Stolen Base Attempts | (SB + CS)/(1B + BB + HBP + 1) |
| Triples Rate | 3B/(AB - HR - SO) |
| Runs Scored Rate | (R - HR)/(1B + 2B + 3B + BB + HBP + 1) |
The final speed score will be discussed in a later section, but it is a weighted average of these four components, calibrated to a 20-80 scale.
Pitchers
The raw data doesn’t include batters faced, so it needs to be estimated from the available stats. The formula used is:
TBF = IP*3 + H + BB
| Feature | Formula | Associated Tool |
|---|---|---|
| Strikeout rate | SO / TBF |
Stuff |
| Walk rate | BB / TBF |
Control |
| Home run rate | HR / TBF |
Pitchability |
There is one final signal included in a pitcher’s profile which accounts for his role, since a reliever and a starter can have very different expected outcomes with similar rate stats. This value is estimated from the number of innings pitched per appearance.
| Feature | Formula | Associated Tool |
|---|---|---|
| Role signal | IP_g = (IP / 3) / G |
Role |
Adjusting for context
But these raw rate stats are only the beginning. Each stat is adjusted in multiple ways to account for the context in which it was produced, so that a player’s profile reflects how he performed relative to the competition he faced and to how he might be expected to perform based on his age and experience.
League Average
Both hitting and pitching stats are adjusted to the rolling 3-year average and standard deviation for the season, level, and league, in which they were produced. This stabilizes league baselines against small-sample noise in any single year/level/league combination, but it might not account for any purposeful or accidental anomalies in a given season. For example, in 2023, Major League Baseball tested a pre-tacked baseball in the Double-A Southern League during the first half of the season.
Sample Size
Each rate stat is regressed toward league average using a PA/TBF weighting. This adds a given amount of league average production to a player’s line, with larger shrinkage constants meaning more regression for a given sample size using this formula:
Regressed Value = (Raw Stat Count + 3-year League Average Rate Stat * Regression PA/TBF) / (PA/TBF + Regression PA/TBF)
| Rate Stat | Regression PA |
|---|---|
| SO/PA | 35 |
| BB/PA | 65 |
| ISO | 85 |
For pitchers, the values are slightly different.
| Rate Stat | Regression TBF |
|---|---|
| SO/TBF | 40 |
| BB/TBF | 110 |
| HR/TBF | 350 |
Age
The final adjustment accounts for a player’s age relative to the average age of players at that level. Both hitters and pitchers who are younger than average for their level are given a boost, while only hitters who are older than average receive a discount.
Hitters
Gap = PA Weighted League Average Age - Player Age
Age Weight = min(1, 20 / Player Age)
If Younger Than Average: Effect = 0.1 * Gap
If Older Than Average: Effect = 0.08 * (-Gap)
Multiplier = (1 + Age Weight * Effect)
Pitchers
Age Ratio = max(TBF Weighted League Average Age / Player Age, 1)
This is then multiplied or divided by the player’s rate stat to produce the final age-adjusted value. For instance:
Age Adjusted SO/TBF = Regressed SO/TBF * Age Ratio.
Putting everyone on the same scale
Each regressed, age-adjusted rate is standardized against the league mean and standard deviation for that year/level/league group, producing a z-score that’s comparable across eras and levels.
z-score = (Age Adjusted Rate Stat - League Average Rate Stat) / Standard Deviation League Rate Stat
The four raw speed-component z-scores are calculated separately and then centered per year, level, and league group and then recombined into a speed score centered on the 20-80 scouting scale. The final formula is:
Speed = 50 + 4.25 * (zsbp + zsba + zsb_trip + zsb_runs)
Building a career profile
Rather than comparing single seasons in isolation, the site builds a running career-to-date profile for every player, updated as they climb each level. Seasons are weighted by recency as well as playing time: normalized against the oldest bucket, the weighting works out to roughly 3× / 2× / 1× / 1× (current season vs. one year back vs. two years back vs. an “older,” 3+-years-back season), so the picture reflects who a player is right now rather than treating every year of their career as equally telling.
Once a player has exceeded MLB’s rookie limits (130 career at-bats for hitters, 50 career innings for pitchers), any minor league seasons from that point forward are left out of his career profile and out of the comp pool entirely, even though they still show up in his season-by-season stat log on the site. Seasons up through the one in which he crossed that limit are still included.
For the same reason, a player only serves as a comp target once he’s 28 or older as of the previous season, old enough that his major league career (or lack of one) is treated as settled rather than still in progress. The site’s “Rookie-eligible” filter uses this same 28-year cutoff, alongside the rookie-limit check above, to narrow the matches list down to players who still read as active prospects.
Reading the scouting grades
The underlying database uses these z-scores to find similar players, but the site displays the scouting-scale version of each trait for easier interpretation.
Several of those standardized traits are also shown on baseball’s familiar 20-80 scouting scale (Hit, Power, and Eye for hitters; Stuff, Control, and Pitchability for pitchers), the same convention a traditional scout uses to grade a fastball or a swing. On that scale, 50 is league average and each 10 points represents roughly one standard deviation of separation from it, so a 60 is a solid tick above average and a 70-or-better (“plus-plus”) grade marks a genuinely elite tool. It’s a direct relabeling of the same standardized score described above, not a separate measurement. The scale is a nominal reference range rather than a hard ceiling or floor, so an unusually extreme player’s grade can land above 80 or below 20 instead of being clipped at those traditional endpoints.
The same 20-80 convention also carries the site’s headline ranking numbers, not just the individual scouting tools above: Spectral Index (introduced below, under “How players are ranked”), the Blind Spots page’s Outcome Grade and Eclipse Index, and the Teams page’s System Value. Each of those is put through the identical 50-average, 10-points-per-standard-deviation, unclamped map — measured against the actual population being graded rather than a fixed constant, so the scale stays true even as the underlying prospect pool changes from one rebuild to the next.
Finding the closest matches
With every player reduced to the same handful of standardized traits, comparing two players becomes a matter of measuring how far apart they are on each one, then combining those gaps into a single similarity score. Traits that tend to matter more for future success (like power and strikeout avoidance for hitters, or missing bats for pitchers) are weighted more heavily than traits that matter less. Those weights aren’t a guess: they’re fit against how real players’ minor league profiles actually predicted their major league outcomes, then checked against a separate stretch of real career history the fitting process never got to see, to make sure the fit was picking up a real pattern and not just noise. That process turned up something a little counterintuitive on the hitter side — once power and strikeout rate are accounted for, a hitting prospect’s walk rate carries noticeably less extra signal about his big-league outcome than it was previously given credit for, so it now counts for less in finding a hitter’s closest comps than it used to; his power and speed stayed close to where they already were. Ranked by how much weight each trait actually carries today, a hitter’s strikeout rate matters most (1.20), then power (1.01), then speed (0.83), with walk rate now the least influential of the four (0.42, down from 1.40). Pitchers went through the same fitting process, but it didn’t turn up a confident improvement over the original judgment-call weights, so those are unchanged: strikeout rate matters most (1.40), then walk rate (1.20), then home run rate (1.00), then a starter-or-reliever role signal (0.80), then pitching hand (0.50). That combined score is what determines a player’s list of closest comps. One more rule keeps the comparisons honest: a prospect is only measured against how other players performed up through that same point in their career, not against what those players went on to do later. A player currently in High-A is compared to other players’ High-A-and-below track records, never to a level they haven’t reached yet.
What the comps suggest for the future
Once a prospect’s closest comps are identified, the next question is simple: what did those comps actually go on to do? The site looks at each comp’s career major league performance, leaving aside any comp who never reached the majors at all (a bust has no big-league performance to measure, just an absence of one), and builds a realistic range of outcomes by weighting more-similar comps more heavily: a below-average case, a typical case, and an above-average case.
That range is built from a wider, more carefully calibrated pool than the twenty comps shown on the page. For most players the two line up closely — there are plenty of genuinely similar players to draw the range from. But for a player whose realistic pool of true peers is thin (most often an older-era player, since the game and the data both looked different decades ago), locking the range to a fixed twenty names can let one or two well-known players end up carrying more weight than they should, simply for lack of enough real competition to balance them out. To avoid that, the site instead looks only as far out as it needs to for a trustworthy sample: tightly for a player with plenty of close comps, and further out — occasionally much further — for a player whose true comp pool is genuinely shallow. How likely a player is to reach the majors at all isn’t affected by any of this; that’s still read directly from the same twenty closest comps shown on the page.
Alongside that range, the site separately shows what share of comparable players made the majors at all, since simply getting there is its own part of the story a stat-line range can’t tell on its own. The result is an honest picture of the range of paths players like this one have actually taken, not a single prediction.
How players are ranked
By default, the Matches list isn’t sorted by median comp outcome alone. That median is only calculated from the comps who actually reached the majors, so on its own it says nothing about how many of a player’s comps got there in the first place. A player whose few successful comps did very well, but whose pool is mostly players who never made the majors at all, can look identical by median outcome to a player whose comps almost all reached, even though those are very different levels of realistic risk.
So the default ranking blends how often a player’s comps actually reached the majors at all together with how good those comps turned out to be. For hitters, that second piece is the Comp MLB Outcome Grade — the same Outcome Grade the Blind Spots page uses to score real careers, averaged across all twenty comps, with a comp who never reached the majors counting as zero. Grading the whole pool rather than only the survivors matters more than it sounds: measured on the survivors alone, a player whose comps almost all reached could come out worse the more of them made it, because a pool full of real-but-unglamorous major league careers drags the survivors’ median down while a pool of mostly busts is judged on its two or three lucky standouts. For pitchers, it’s the best-case (90th-percentile) outcome instead of the typical one — checking the numbers against real outcomes showed a pitcher pool’s typical successful case actually points the wrong way on whether a similar pitcher reaches the majors at all: pools where most comps reach tend to include a lot of pitchers who got there in a modest, replacement-level role, while pools where few comps reach are more likely to have, among the rare ones who do make it, a real standout. Leaning on the typical outcome would end up penalizing exactly the pitchers who look most likely to actually get there, so the best-case outcome is used instead — it doesn’t have that problem and still rewards genuine quality. For pitchers specifically, the ranking also factors in whether a player profiles as a starter or a reliever, since a shutdown reliever and a solid full-workload starter can look similar by a rate stat alone despite very different real value.
Each of those signals is measured by comparing a player against other current prospects (specifically, the same “rookie-eligible” population the site’s own eligibility filter uses elsewhere), rather than against the full 45-plus years of players in the database. That keeps the ranking about how a player stacks up against today’s prospect pool, not diluted by decades of established major leaguers’ old minor league track records.
This blended ranking is what Spectral Index reflects, and it’s the list’s default sort. The individual numbers behind it (median outcome, best-case outcome, reach probability) are still shown on every player and can still be sorted on directly if you’d rather look at one in isolation — including median outcome for pitchers, even though it no longer factors into their default ranking. Note that for hitters the displayed median outcome is no longer the piece the ranking uses; the Comp MLB Outcome Grade above replaced it, and every player page shows that grade and its derivation in the Spectral Index breakdown.
Measuring big-league success: Career Score
To rank comps and build a range of outcomes, a comp’s entire major league career needs to be boiled down to one number, and that number needs to mean the same thing whether the comp was a hitter or a pitcher. That number is Career Score:
\[\text{Career Score} = \max\left(0,\; \text{career WAR} \;+\; 2 \times \text{seasons of playing time} \;+\; 5 \times \text{reached the majors}\right)\]
Career WAR is Baseball-Reference’s Wins Above Replacement, summed over a career. “Seasons of playing time” is real playing time rather than years on a roster — 502 plate appearances for a hitter, 162 innings for a pitcher, so a part-time decade counts as the playing time it actually was. The final term is a flat bonus for reaching the majors at all.
Those two extra terms exist because career WAR alone answers the wrong question for a prospect. WAR is measured against a replacement-level player, so a long, useful, unspectacular career can land near zero — the same number as someone who never played a major league game. That is plainly wrong: Chris Gomez was worth -1.4 WAR across a decade in the big leagues, and a decade in the big leagues is an outcome almost every minor leaguer would take. Career Score puts him at 24, well clear of zero, while Alex Rodriguez sits at 171, Michael Young at 64, and a player who never reached at exactly 0.
The same formula, with the same constants, is used for hitters and pitchers. WAR is already one currency across both, so unlike the runs-above-average measures this replaced, no separate scale or conversion is needed.
Because a Career Score means the same thing on both sides of the ball, a Median, 90th-percentile, or Ceiling comp value reads the same way no matter which side a player is on. It also cannot go negative, so a range that used to run below zero now has a floor at “never reached the majors.” Comps who never reached the majors are left out of that displayed range rather than counted as a zero-value outcome, since a bust has no big-league production to average in; he never got the chance to put one up. That risk stays visible separately, in the share of comps who reached the majors at all, so a strong comp pool with a real bust risk still reads as strong on outcome rather than having the outcome numbers silently dragged down. The ranking itself does not work that way — the Comp MLB Outcome Grade described under “How players are ranked” above grades all twenty comps, busts included at zero, precisely so that a pool’s failures and its successes are weighed in the same number.
How well does this actually work?
Numbers like these are only useful if they’re checked against reality, so here’s an honest accounting rather than a marketing claim, with the actual sample sizes and test names included for anyone who wants to check the work.
Note · 14 August 2026. The figures in this section were measured before the model’s internal settings were re-derived on 14 August 2026. That change added no new statistic and altered no input; it re-fit the settings against current data, having found that the previous ones had drifted badly out of date. The effect was concentrated in the percentages — how honest the reach numbers are — rather than in the ordering, so the reach/no-reach and career-length figures below are the ones most likely to have moved, and to have moved in the model’s favour. They have not yet been re-measured on the corrected model, and are left here as they were rather than quietly restated. See Worse Than Guessing for what was measured and by how much.
The check: take every hitter and pitcher whose minor league career had already ended between 2015 and 2019 (5,313 hitters, 809 of whom reached the majors; 6,443 pitchers, 834 of whom reached), old enough that seven to eleven years of real major league history has had a chance to play out. Run their Prospect Wavelength Spectrum and Spectral Index exactly as the site computes them today, and compare those numbers against what those players actually went on to do. Then repeat the same check on an older, disjoint cohort whose careers ended between 2000 and 2009 (7,384 hitters, 1,232 reached; 8,404 pitchers, 1,172 reached), to make sure the first result wasn’t a fluke of one window. Both cohorts are held out in the ordinary sense: nothing about a player’s real MLB outcome feeds into the comp-matching or scoring that produced his page.
Whether a player reaches the majors at all is where the site is strongest, measured the standard way a reach/no-reach ranking gets checked: the area under the ROC curve (AUC), the probability that a randomly chosen player who reached ranks above a randomly chosen player who didn’t. That comes out to 0.720 for hitters and 0.822 for pitchers in the 2015-2019 cohort (0.714 and 0.839 in 2000-2009), against 0.500 for a coin flip and 1.000 for a perfect ranking. How long a player’s career lasts once he’s there also holds up well, measured by Spearman rank correlation between a player’s ranking and his real career playing time among those who reached: +0.558 for hitters and +0.557 for pitchers in 2015-2019 (+0.490 and +0.534 in 2000-2009).
How good a player turns out to be, once he’s reached the majors, is the weak spot, and pitchers more than hitters. The same Spearman correlation, run against real career value (wRAA for hitters, FRAA for pitchers) instead of playing time, drops to +0.186 for hitters and -0.030 for pitchers in 2015-2019 (+0.223 and -0.099 in 2000-2009), essentially no relationship for pitchers in either era. On the hitter side, the floor-to-ceiling range shown on each player’s page was checked the way a probabilistic forecast’s quantiles are normally graded: coverage, the share of real outcomes that actually land below each displayed percentile line, which should match its label if the range is well calibrated. Across two further held-out cohorts of minor league seasons ending in 1990-2001 (8,766 scored, 1,331 with a real MLB outcome) and 2002-2013 (9,372 scored, 1,526 with a real outcome), only 4-7% of real outcomes fell below the displayed 10th-percentile “floor” and 39-43% fell below the displayed median, against target rates of 10% and 50%. Real careers, in other words, tend to run a bit better than the page’s range suggests, and more so at the low end than the middle. That specific coverage check hasn’t been run for pitchers yet.
That weak spot matters less than it might sound like, given what this site is actually trying to do. It was never built to identify who will be the best prospect; it’s built to show a realistic range of what happens to players like this one, since a lot of legitimately good prospects still wash out and the ones who don’t make it are more fungible than draft-day scouting reports suggest. Under that goal, correctly telling apart who reaches the majors from who doesn’t is the test that matters most, and it’s exactly where the numbers above are strongest.