Skip to main content
Methodology

Perf+: Prospect Analytics for Hitters and Pitchers

The goal is simple. One metric that I can glance at next to a Bowman 1st auto price and know whether the on-field production justifies what the market is paying. Same scale for hitters and pitchers, same direction (higher is better), same color ramp across the site.

Why one number

The math here isn't new. Baseball already has rate stats that compare a hitter to league average on a 100-is-average scale, and similar stats that do the same for pitchers with the direction flipped so higher is still better. The conventions are familiar to anyone who's read a stat leaderboard.

What's missing is the daily-use prospect version that pairs with the price. Minor league rate stats exist if you go looking, but they're spread across many pages, the pitcher and hitter versions aren't named the same thing, and none of them are sitting next to the Bowman 1st auto price that collectors actually care about.

I've been using the same family of inputs internally to compute HobbyMonitor's Value Score. Now I've surfaced it directly. One number, same name, lives next to the Bowman badge on every prospect surface.

How to read it

100 is league average at the prospect's level. Every point above is a percentage point above average. Every point below is a percentage point below.

130+
Elite
110-129
Above avg
90-109
Around avg
70-89
Below avg
<70
Poor

The level tag matters. A 140 Perf+ at AA is doing it against more advanced pitching than a 140 at A. I show the level next to the score so you can read both at once.

The math, briefly

Hitters. Value each event a hitter produces (singles, doubles, triples, home runs, walks, hit-by-pitch) using the 2025 linear weights. Convert that to runs above average per plate appearance, then rescale so 100 equals the level's average runs-per-PA. Park factors aren't baked in yet. See tradeoffs below.

Pitchers. The score is built from the four outcomes a pitcher most controls without his defense: strikeouts, walks, hit-by-pitch, and home runs allowed. Convert those into a runs-allowed rate, calibrate the per-level constant so the league average lines up with league ERA, then flip the polarity so a lower rate turns into a higher score. Same 100-is-average scale.

The league baseline is computed from every tracked prospect at that level for that season, not from a static national average. So a 130 at the Eastern League is calibrated against the actual Eastern League cohort, not against MLB's environment.

Sample size states

The bottom of the prospect pool is messy. Twenty-game samples produce wild numbers. I show four states so you know what you're looking at:

  • SoonThe prospect is within striking distance of the sample floor (30-49 PA for hitters, 36-59 batters faced for pitchers). No number yet, but they're close enough that the next two weeks of play will produce one.
  • P+ 142 (small)Sample is past the floor but still thin. The number is shown with reduced opacity to signal you should weight it lower.
  • P+ 142 (partial)Mid-sized sample. Treat as a real read but expect movement.
  • P+ 142 (full)Stable sample. This is the number to trust for a calibrated comparison.

The Perf+ value you see is also Bayesian-shrunk toward league average by sample size. At full sample the shift is a few points. Small samples get honestly pulled toward the mean. That avoids the trap of a hot 60-PA stretch reading as elite when it's actually noise.

The score is capped at 300 for display. An MLB closer with near-zero peripherals across a small workload can mathematically produce a 2,500+ Perf+. The math isn't wrong but the number is useless. Anyone past the cap shows as P+ 300+ and you know it's elite without staring at a number that broke the readability budget.

Using it alongside Bowman price

This is the whole point. A single rate stat next to a single price gives you the value-hunting tool I built the site around.

A prospect with a 140 Perf+ and a $7 raw auto is producing two tiers above the market's price. Either the market hasn't caught the line yet, or there's a profile knock that's holding back the price despite the production. Either way it's worth a closer look.

A prospect with a 70 Perf+ and a $30 raw auto is the opposite. The market is paying for upside the on-field line isn't backing. That's the kind of name I'd want to see clear evidence on before adding.

The site's Bowman dashboard and the main prospect list both let you sort and filter by Perf+. Pair it with the raw auto price and you'll find the names that deserve attention before the market does.

Honest tradeoffs

No park factors yet. Coors-of-the-PCL hitters look better than they are. Pitcher's-park guys look worse. About 5-10 points of swing for extreme parks. Adding park factors needs game-log data we don't fully ingest at the minor league level. It's on the list.

Cohort-relative baselines. League averages come from the prospects we track, not from every minor leaguer at that level. That biases lower-level baselines a touch high. It also means the metric is internally consistent across the site, which I'd rather have than chase someone else's decimal point.

Current level wins on the display. If a player just got promoted and the new-level sample is forming, I show their current-level state, not a back-leveled value from before the promotion. The leaderboard works the same way. A player whose current placement hasn't accumulated a full sample doesn't appear in the top-10s, even if they put up huge numbers at a lower level last week.

Defense and baserunning aren't included. Perf+ is a bat number for hitters and an arm number for pitchers. A glove-first shortstop with a 95 Perf+ may still be a real prospect because of his defense, but Perf+ won't reflect that. Same on the other side for a basestealing center fielder. I'll surface those separately when the data supports it.

Perf+ is updated daily after the prospect stats sync. Values reflect data through the most recent compute.