Posted by JWDixon over at Operation Sports.


Howdy everyone!

For the past three years, I headed the Franchise Fidelity to Reality roster — the most downloaded custom roster in MLB The Show over that same timeframe. That project no longer exists. I’ve decided to go my own way ratings wise, and build something from the ground up, taking everything I learned over the past few years and pushing it further with a fully data-driven, sim-calibrated approach to player ratings.

This document explains the full process behind how I generate every player attribute. Every rating is grounded in real MLB data, calibrated against the game’s sim engine, and adjusted for sample size and luck. Nothing is guessed.


SGR (SportsGamingRosters) PARTNERSHIP

All player likeness, equipment, CAPS (Created Players), and missing prospects are handled by SGR aka SportsGamingRosters. Every team will have all of their Top 30 prospects included, as long as they are 18 years old or older.

SGR has been one of the most dedicated and prolific creators in the sports gaming community for years. Beyond MLB The Show, SGR builds custom rosters, draft classes, and prospect databases across multiple sports titles including Madden NFL and NBA 2K. His work covers everything from player likeness and equipment accuracy to full draft class creation with scouted prospect ratings. He puts in an incredible amount of behind-the-scenes research to make sure created players look right, play right, and are placed on the correct teams. If you’ve downloaded a quality custom roster in any major sports game over the past several years, there’s a good chance SGR had a hand in it. The level of care he puts into likeness work and prospect coverage is unmatched, and this roster wouldn’t be complete without his contributions.

You can check out more of SGR’s work at sportsgamingrosters.com and on Twitter/X at @SprtsGmngRstrs.


DISCORD

All roster updates, release announcements, and discussion about this project and my other various tools will be posted on my Discord server:

Join the JWDixon’s Workshop Discord Server!

Check out the JWDixon’s Workshop community on Discord – hang out with 104 other members and enjoy free voice and text chat.

Come hang out, ask questions, report issues, or just talk baseball.


= = = = = = = = = = = = = = = = = = = = = = = = = = = = = = = = = = = = =


TABLE OF CONTENTS

1. Philosophy
2. Data Sources
3. Multi-Year Weighting
4. Sim Engine Calibration
5. Hitter Attributes
Contact vs RHP / LHP
Power vs RHP / LHP
Vision
Discipline
Clutch (Hitting)
Speed
Stealing
Baserunning Aggression
6. Fielding Attributes
Fielding Ability
Arm Strength
Arm Accuracy
Reaction (Forward / Backward / Left / Right)
7. Catcher-Specific Attributes
Blocking
Pop Time
Catcher Arm Strength
Catcher Framing
8. Pitcher Attributes
Stamina
H/9 vs RHB / LHB
HR/9
K/9 vs RHB / LHB
BB/9
Clutch (Pitching)
9. Pitch Repertoire
Pitch Classification
Per-Pitch Break and Control
10. Potential
11. Overall Rating
12. Small Sample Handling
13. Luck Adjustments (Actual vs Expected)
14. Prospect Ratings


= = = = = = = = = = = = = = = = = = = = = = = = = = = = = = = = = = = = =


1. PHILOSOPHY

The goal is to make the sim engine produce realistic results. That means ratings aren’t just about capturing what a player did in real life — they’re about making the game’s engine recreate those results when you simulate.

A .280 hitter should hit around .280 in franchise sims. A guy who strikes out 30% of the time should strike out 30% of the time in the game. That requires understanding how the game’s engine interprets each attribute, which is why sim testing comes first.

Key principles:

– Every attribute maps to specific real stats. Nothing is arbitrary.
– The stat-to-rating curves come from testing inside the game engine, not guesswork.
– Statcast expected metrics (xBA, xSLG, etc.) separate skill from luck.
– Ratings use a weighted multi-year window so one hot or cold stretch doesn’t swing everything.
– Luck corrections compare each pitcher to their own expected performance, not league averages.


= = = = = = = = = = = = = = = = = = = = = = = = = = = = = = = = = = = = =


2. DATA SOURCES

All data comes from public baseball sources.

FanGraphs API
What I pull: Hitting stats, pitching stats, fielding (DRS/UZR), platoon splits (vs LHP/RHP), RISP splits, pitch arsenal (Stuff+, Location+, usage, velocity, movement), catcher framing, wSB, Clutch metric
How: REST API with year-by-year queries

Baseball Savant (Statcast)
What I pull: Directional OAA (per-play fielding data), sprint speed, bolts (30+ ft/s runs), catcher pop time, exchange time, arm strength, exit velocity, barrel rate
How: JSON endpoints and leaderboard scraping

Steamer Projections
What I pull: Projected WAR, projected rate stats for current season
How: FanGraphs projections API

Chadwick Bureau Register
What I pull: Player ID mapping (MLBAM ID, FanGraphs ID, Baseball Reference ID)
How: GitHub CSV data

All data joins through MLBAM ID as the universal key. The Chadwick Register maps between FanGraphs, Baseball Reference, and Statcast player IDs.


= = = = = = = = = = = = = = = = = = = = = = = = = = = = = = = = = = = = =


3. MULTI-YEAR WEIGHTING

Ratings are not based on a single season. I use a multi-year weighted average with geometric decay, where the most recent season carries the most weight and each prior year is worth progressively less.

How it works:

1. Counting stats (hits, home runs, strikeouts, innings pitched, etc.) are aggregated across years with weights applied.

2. Rate stats (BA, K%, ERA, etc.) are recalculated from those weighted counting stats — not averaged directly. This means a season with 600 PA properly outweighs a season with 200 PA within the same weight class.

3. Statcast metrics (xBA, Barrel%, Stuff+, Location+, etc.) use most recent year only. These metrics have more year-to-year variance and using only the latest data captures a pitcher’s current stuff better than blending with older data.

If a player missed a year entirely (injury, minors, etc.), the weights redistribute proportionally across the years that do have data.


= = = = = = = = = = = = = = = = = = = = = = = = = = = = = = = = = = = = =


4. SIM ENGINE CALIBRATION

This is the foundation everything else is built on. Before mapping any real stats to ratings, I needed to know what the game engine actually does with each attribute.


Testing Methodology

For each attribute (Contact, Power, Vision, Discipline, Clutch, and all pitcher attributes), I ran isolation tests inside MLB The Show:

1. Create a test player with one attribute varied across a range of values and all other attributes held constant.
2. Simulate multiple full 162-game seasons per configuration.
3. Record the averaged results (BA, HR, K%, BB%, H/9, etc.).
4. Repeat for every attribute that needed calibration.

This produces a calibration curve — a mapping from rating value to sim output that shows exactly how the game engine translates each attribute into on-field performance.


What I Learned/Confirmed from Sim Testing

The sim engine has some very specific behaviors:

– Contact is the primary driver of batting average. It does the vast majority of the work for BA output.
– Vision has a secondary effect on BA, primarily through its influence on strikeout rate. Higher Vision means fewer strikeouts, which modestly raises BA.
– Power has zero influence on BA. It purely controls HR output.
– Discipline directly controls walk rate. It operates independently from Contact.
– SP and RP behave differently even at the same attribute values, which is why starters and relievers have separate calibration curves.


The Calibration Curves

Each calibration curve is a set of known data points from sim testing. Between those points, I use linear interpolation to calculate the exact rating for any stat value. Every attribute in this system — hitting, pitching, fielding, catching — maps back to one of these curves.


= = = = = = = = = = = = = = = = = = = = = = = = = = = = = = = = = = = = =


5. HITTER ATTRIBUTES


Contact vs RHP / LHP

Stats used: BA and xBA (expected batting average from Statcast), by platoon split

How it works:
1. Pull the hitter’s BA vs RHP (or LHP) from their weighted multi-year stats.
2. Pull xBA vs RHP (or LHP) from the most recent season’s Statcast data.
3. Blend actual BA with xBA. The blend favors actual results but uses xBA as a stabilizer, rewarding hitters who make quality contact regardless of whether balls happened to fall in.
4. Interpolate the blended value against the Contact calibration curve.

Why xBA? Batting average is noisy. A hard-hit line drive can be caught, and a weak grounder can find a hole. xBA uses exit velocity and launch angle to estimate what the BA “should” have been, which helps separate real hitting ability from random variation.


Power vs RHP / LHP

Stats used: ISO (Isolated Power = SLG minus AVG), Barrel%, Max Exit Velocity

How it works:
1. Base rating comes from ISO, interpolated against the Power calibration curve.
2. Barrel% adjustment: Elite barrel rates boost the rating, poor barrel rates penalize it.
3. Max Exit Velocity adjustment: Elite max EV adds a smaller bonus, poor max EV subtracts.

ISO is the cleanest power stat because it strips out singles, isolating extra-base hit ability. Barrel% and Max EV capture the raw batted ball quality that ISO sometimes misses due to park factors or luck.


Vision

Stats used: K% (strikeout rate), SwStr% (swinging strike rate)

How it works:
1. Blend K% with SwStr%. SwStr% is normalized to the K% scale so both metrics are comparable.
2. Interpolate against the Vision calibration curve. Lower is better — fewer strikeouts = higher Vision.

Why SwStr% in addition to K%? K% captures outcomes, but SwStr% captures the underlying swing-and-miss tendency. A hitter who makes contact on 2-strike counts despite a high SwStr% has a different profile than one who simply doesn’t swing and miss. The blend accounts for both.


Discipline

Stats used: BB% (walk rate)

How it works: Direct interpolation of BB% against the Discipline calibration curve. Walk rate is the purest measure of plate discipline, so this is a straightforward mapping.


Clutch (Hitting)

Stats used: BA with RISP (runners in scoring position), xBA with RISP

How it works:
1. Pull BA with RISP from the player’s weighted stats.
2. Pull xBA with RISP from the most recent season.
3. Blend actual BA with RISP and xBA with RISP using the same ratio as Contact.
4. Interpolate against the Contact calibration curve.

I treat clutch performance as a real skill, not noise. The data is not regressed toward the mean. If a player consistently hits well with RISP across multiple years, his Clutch reflects that.


Speed

Stats used: Sprint Speed (ft/sec from Statcast), Bolts (number of runs at 30+ ft/sec)

How it works:
1. Base rating from sprint speed using a custom interpolation curve.
2. If the player has any bolts (runs clocked at 30+ ft/sec), a bonus is applied.

Why bolts matter: Sprint speed is an average. A player nursing a leg injury all year might have a depressed average speed but still show several bolts proving they can turn it on when needed. Bolts capture peak speed capability, which is what Speed in the game represents.


Stealing

Stats used: wSB (Weighted Stolen Base runs from FanGraphs)

How it works: Direct interpolation of wSB against the Stealing calibration curve.


Baserunning Aggression

Stats used: SB Attempts per times on base (H + BB)


= = = = = = = = = = = = = = = = = = = = = = = = = = = = = = = = = = = = =


6. FIELDING ATTRIBUTES

Fielding attributes use a percentile-based approach rather than sim calibration. Every fielder is ranked against the population at their position, and their rating reflects where they fall in the distribution.


Fielding Ability

Stats used: OAA (Outs Above Average), DRS (Defensive Runs Saved), Fielding Errors

How it works:
1. OAA and DRS are each converted to a percentile rank among all fielders.
2. Error count applies a penalty — more errors = lower rating.
3. All three components are blended into a final rating.

DH-only players receive a flat minimum rating.

Why both OAA and DRS? OAA (from Statcast) uses tracking data and is the most modern fielding metric. DRS uses a different methodology and provides a stability check. Blending them reduces the noise inherent in any single fielding metric.


Arm Strength

Stats used: Max throwing velocity (mph) from Baseball Savant

How it works: Percentile rank among all players at the same position. Straightforward — max throwing velocity is an objective measurement.


Arm Accuracy

Stats used: Arm Run Value (from Statcast), Throwing Errors

How it works:
1. Arm Run Value converted to percentile rank. This metric measures how much value the player’s arm adds or costs on throws.
2. Throwing error penalty applied — more throwing errors = lower rating.
3. Both components blended into a final rating.


Reaction (Forward / Backward / Left / Right)

Stats used: Directional OAA (Outs Above Average by direction)

This is one of the more unique data pulls. I scrape Baseball Savant’s per-play fielding data and aggregate it by direction of the batted ball for each fielder:

Balls hit in front of the fielder = Forward Reaction
Balls hit behind the fielder = Backward Reaction
Balls hit toward the 3B line = Left Reaction
Balls hit toward the 1B line = Right Reaction

Each direction is independently rated using percentile rank among all fielders at the same position.


= = = = = = = = = = = = = = = = = = = = = = = = = = = = = = = = = = = = =


7. CATCHER-SPECIFIC ATTRIBUTES

Catchers get specialized ratings using Statcast catching metrics instead of the standard reaction ratings.


Blocking

Stats used: Blocks Above Average (from Statcast)

How it works: Direct interpolation against a custom calibration curve. More blocks above average = higher rating.


Pop Time

Stats used: Average pop time to 2nd base (seconds)

How it works: Direct interpolation against a custom calibration curve. Lower is better — faster pop time = higher rating.


Catcher Arm Strength

Stats used: Arm velocity (mph) from Statcast catcher metrics

How it works: Direct interpolation against a catcher-specific arm strength curve. Catchers have their own scale separate from outfielders, since the throwing context is different.


Catcher Framing

Stats used: Framing Runs per Pitch (from FanGraphs CFraming metric)

How it works: This contributes to the catcher’s overall Fielding rating. Better framing (more runs saved per pitch) results in a higher rating.


= = = = = = = = = = = = = = = = = = = = = = = = = = = = = = = = = = = = =


8. PITCHER ATTRIBUTES

Pitcher ratings use separate calibration curves for starters (SP) and relievers (RP). This is critical because the same raw stats mean different things for a guy throwing 200 innings vs. a guy throwing 60. Relievers also face batters in higher-leverage situations and shorter outings, producing different distributions.

SP vs RP classification: If a pitcher started the majority of their games, they’re classified as an SP and use starter curves. Otherwise, they use reliever curves.


Stamina

Starters — Stats used: IP per Game Started

Workhorse starters who go deep into games rate at the top of the scale.

Relievers — Stats used: IP per Appearance

Most single-inning relievers rate very low on Stamina. Pitchers who have some starting experience get a bonus to reflect their ability to stretch out.


H/9 vs RHB / LHB

Stats used: H/9 (hits per 9 innings) by batter handedness, xBA against, BABIP, Hard Hit%

How it works:
1. Base rating from H/9 vs the platoon split, interpolated against the SP or RP calibration curve.
2. Pitcher-relative luck adjustment:
– Compare the pitcher’s actual BA against to their xBA against.
– If actual BA is greater than xBA: the pitcher has been unlucky (more balls falling in than expected), so the rating gets boosted.
– If actual BA is less than xBA: the pitcher has been lucky (fewer hits than expected), so the rating gets penalized.
– This comparison is against the pitcher’s own expected metrics, not league averages.
3. If xBA isn’t available, a secondary adjustment compares BABIP to what the Hard Hit% suggests it should be.

All luck adjustments are capped to prevent overcorrection.


HR/9

Stats used: HR/9, Barrel% against

How it works:
1. Base rating from HR/9, interpolated against the calibration curve (same for SP and RP).
2. Luck adjustment: Compares actual HR/9 to expected HR/9 derived from barrel rate against. If a pitcher’s barrels are leaving the park at a higher-than-expected rate, they get a boost.


K/9 vs RHB / LHB

Stats used: K% (strikeout percentage) by batter handedness

Higher K% = better rating. I use K% rather than raw K/9 because K% accounts for how many batters the pitcher actually faced, not just innings pitched.


BB/9

Stats used: BB% (walk percentage)

Lower is better. Elite command pitchers with very low walk rates approach the ceiling.


Clutch (Pitching)

Stats used: H/9 with RISP, BA with RISP vs overall BA, BABIP with RISP vs overall BABIP, FanGraphs Clutch metric

How it works:
1. Base rating from H/9 with RISP (using the same H/9 calibration curve).
2. Pitcher-relative clutch adjustment: Compare RISP batting average against to the pitcher’s overall batting average against. If RISP BA is lower than overall BA, the pitcher elevates in high-leverage spots.
3. BABIP luck correction: Compare RISP BABIP to overall BABIP. If the pitcher’s RISP BABIP is inflated relative to their overall BABIP, they’ve been unlucky with RISP.
4. FanGraphs Clutch metric: This is already a pitcher-relative stat measuring performance vs expectation in high-leverage situations.

All adjustment components are individually capped to keep things stable.


= = = = = = = = = = = = = = = = = = = = = = = = = = = = = = = = = = = = =


9. PITCH REPERTOIRE


Pitch Classification

Every pitcher’s arsenal is classified from FanGraphs pitch data into MLB The Show pitch types based on movement profiles (horizontal and vertical movement in inches).

Here’s how FanGraphs pitch types map to game pitch types:

Fastballs:

4-Seam Fastball — All FanGraphs FF (four-seam fastballs). Straight mapping.

Sinker vs 2-Seam — FanGraphs SI (sinkers) split by sink differential compared to the pitcher’s fastball. Higher sink differential = Sinker. Lower sink differential = 2-Seam Fastball.

Cutter — All FanGraphs FC (cutters). Straight mapping.

Breaking Balls:

Slider vs Sweeper — FanGraphs SL (sliders) split by horizontal movement. Wide horizontal break = Sweeper. Tighter break = traditional Slider.

Curveball variants — FanGraphs CU (curveballs) are classified by their movement shape:

12-6 Curveball: Minimal horizontal movement with heavy vertical drop — the classic straight-down overhand curve.

Sweeping Curve: Heavy horizontal movement with less vertical drop — more lateral break than vertical.

Screwball: The horizontal movement goes to the arm side (same direction as the pitcher’s fastball) with significant horizontal break. Only about 10 pitchers qualify — guys whose curveballs move in the “wrong” direction.

Curveball: Everything else that doesn’t fit the above categories.

Knuckle Curve — All FanGraphs KC. Straight mapping.

Offspeed:

Changeup vs Circle Change vs Vulcan Change — FanGraphs CH (changeups) split by movement:

Vulcan Changeup: Vertical movement drops below the release point.

Circle Changeup: Very heavy arm-side fade.

Changeup: Everything else.

Splitter — All FanGraphs FS (splitters), with occasional manual overrides for pitchers whose signature pitch is misclassified by FanGraphs.

Specialty:

Knuckleball — Any pitcher with significant knuckleball usage.

This system classifies thousands of pitch arsenal entries across the league into 17 distinct pitch types.


Per-Pitch Break and Control

Each individual pitch in a pitcher’s arsenal gets its own Break and Control rating based on FanGraphs’ pitch-level plus stats.

Break is derived from Stuff+, which measures the quality of a pitch’s movement profile relative to the league. Higher Stuff+ = higher Break rating.

Control is derived from Location+, which measures command and location quality relative to the league. Higher Location+ = higher Control rating.

A league-average pitch (100 Stuff+/Location+) maps to an above-average rating on the game’s scale. This is intentional — the median MLB pitch should feel competent in the game, not mediocre. Elite pitches with well-above-average Stuff+ or Location+ approach the ceiling.


= = = = = = = = = = = = = = = = = = = = = = = = = = = = = = = = = = = = =


10. POTENTIAL

Stats used: WAR (actual + projected), Age, Position

Potential represents how good a player could become in franchise mode. The system blends projected WAR with weighted actual WAR, maps that to a potential rating using position-specific thresholds, and applies an age adjustment.

Position-specific thresholds exist because different positions have different WAR ceilings. Elite relievers rarely exceed 3.0 WAR, while a premium defensive shortstop can accumulate WAR from both sides of the ball. The thresholds reflect these realities so a 4.0 WAR reliever and a 4.0 WAR shortstop don’t end up with the same potential.

Age adjustments account for where a player is in their career arc. Young players get a boost for upside. Players in their prime years get a smaller boost. Players in their decline phase get penalized. Veterans 36+ get a deliberate boost to counter the game’s harsh built-in regression — without it, MLB The Show’s franchise mode tanks veteran ratings unrealistically fast.

Potential can never be lower than a minimum floor to keep things reasonable.


= = = = = = = = = = = = = = = = = = = = = = = = = = = = = = = = = = = = =


11. OVERALL RATING

The overall rating is calculated using position-specific attribute weights that match how MLB The Show’s engine computes OVR internally. Each position values different attributes differently — a shortstop’s Fielding matters far more to their OVR than a first baseman’s does.

The OVR formula and exact position weights come from a separate reverse-engineering project where I isolated and tested the game’s internal calculations.

= = = = = = = = = = = = = = = = = = = = = = = = = = = = = = = = = = = = =


12. SMALL SAMPLE HANDLING

Not every player has multiple years of full-season data. Rookies, injured players, and guys who bounced between the majors and minors need special treatment.

Regression logic:

1. If sample is sufficient (above a minimum threshold for PA or IP): Use actual weighted stats as-is.
2. If sample is below threshold: Blend toward the player’s career stats. The blend weight is proportional to sample size — the less data you have, the more the career baseline fills in.

For current-season ratings, Steamer projections take the role of the baseline — a rookie with limited playing time gets heavily blended with their Steamer projection.


= = = = = = = = = = = = = = = = = = = = = = = = = = = = = = = = = = = = =


13. LUCK ADJUSTMENTS (ACTUAL VS EXPECTED)

One of the most important features of this system is separating what a player did from what they deserved. Statcast expected metrics make this possible.


For Hitters

Contact and Power blend actual stats with Statcast expected stats. This means a hitter who underperforms his xBA or xSLG due to bad luck won’t get stuck with a deflated rating — the expected metrics pull it up, recognizing the quality of contact was better than the results showed. The reverse is also true — a player who outperformed his expected stats gets pulled back down.


For Pitchers

Rather than comparing pitchers to league averages, each pitcher is compared to their own expected performance:

H/9: If a pitcher’s actual BA against exceeds their xBA against, they’ve been unlucky (balls dropping in despite quality pitching). The rating gets boosted. If the reverse is true, the rating gets penalized.

HR/9: If actual HR/9 is higher than expected based on barrel rate, the pitcher has been unlucky on fly balls leaving the yard.

Clutch: If RISP BA against is inflated relative to overall BA against, the pitcher may have been unlucky with RISP.

All luck adjustments are capped to prevent overcorrection. The goal is nudging ratings toward true talent, not swinging them wildly based on one season’s variance.


= = = = = = = = = = = = = = = = = = = = = = = = = = = = = = = = = = = = =


14. PROSPECT RATINGS

Every team in this roster includes their full Top 30 prospects, as long as the prospect is 18 years old or older. Prospect ratings follow a completely different pipeline than established MLB players. There’s no multi-year statistical track record to draw from, so ratings are built from scouting grades, age, projected ETA, and minor league performance data.


Scouting Data Sources

Prospect grades come from two professional scouting sources:

MLB Pipeline — Top 100 overall prospects plus Top 30 per team. Provides 20-80 scouting grades on the traditional five tools (Hit, Power, Run, Field, Arm for hitters; individual pitch grades plus Control for pitchers) along with detailed written scouting reports.

FanGraphs Prospect Board — Independent scouting evaluations with present and future grades on the 20-80 scale. Provides additional granularity including Future Value (FV) scores, velocity ranges, contact style, athleticism assessments, risk/variance ratings, and detailed scouting summaries.

These two sources often disagree on individual players, which is actually useful. When Pipeline has a guy at a 55 Hit and FanGraphs has him at 50, that tells you something about the range of outcomes. Both sets of grades feed into the analysis.


Grade Breakdown

Hitter prospects are graded on 15 individual attributes:

Core five tools: Hit, Power, Fielding, Arm, Run
Plate discipline: Vision (bat-to-ball, K avoidance) and Discipline (walks, pitch selection)
Defensive detail: Arm Strength, Arm Accuracy, Reaction (first-step quickness), Fielding (glove reliability)
Baserunning: Steal ability and Baserunning Aggression
Catcher only: Blocking
Overall composite grade

Pitcher prospects are graded on:

Command (20-80 scale)
Stamina (role-dependent — starters rate higher, short-inning relievers rate lower)
Full pitch arsenal
Overall composite grade



Minor League Stats

Raw scouting grades don’t tell the full story. Minor league performance data is also pulled to add context:

Hitters: wRC+ (park-adjusted offensive value) from FanGraphs, plus platoon split data (BA and SLG vs RHP and vs LHP) aggregated across recent minor league seasons.

Pitchers: xFIP (expected Fielding Independent Pitching) and GB% (ground ball rate) from FanGraphs. Platoon pitching splits.

Platoon splits are calculated as a bias score — the difference between performance vs RHP and vs LHP. This directly informs how the split ratings (Contact vs RHP vs LHP, Power vs RHP vs LHP) are distributed. A hitter who mashes righties but struggles against lefties will have that reflected in the split.


Grade-to-Rating Conversion

This is where it gets different from the MLB player side. Scouting grades on the 20-80 scale don’t map 1:1 to MLBTS attribute ratings. The conversion is a custom system that accounts for:

The scouting grade itself — A 60-grade Hit tool is going to produce a higher Contact rating than a 45-grade Hit tool. That much is straightforward.

Age — Younger prospects are further from their ceilings. An 18-year-old and a 23-year-old with the same scouting grade will not get the same attribute rating. The 23-year-old is closer to what he’s going to be.

ETA — A prospect expected to debut soon is closer to MLB-ready than one projected several years out. The further out the ETA, the more the current ratings are scaled back. An 18-year-old with a distant ETA will rate noticeably lower across the board than a 20-year-old with an imminent ETA, even if their scouting grades are identical.

The penalty is applied as a flat adjustment across all attributes. Technical tools like hitting, will be scaled back but Fielding and Athleticism traits won’t be scaled back as harshly.

The end result is that prospect ratings are compressed into a lower band than MLB players. The general range for most prospects falls well below established big leaguers, which is how it should be. These guys haven’t proven anything at the MLB level yet.


OVR Caps

This year, elite prospects cap out at around 72-75 OVR. That’s a deliberate scale-back from last year’s approach, where top guys could touch 80. The problem with letting prospects rate that high is that it distorts franchise mode — a high-OVR prospect with elite potential develops into a superstar within 2-3 seasons, and when you have a dozen of those across the league, franchise mode gets flooded with unrealistically stacked rosters very quickly.

Keeping elite prospects in the low-to-mid 70s means they still have a real development curve ahead of them. A consensus Top 5 overall prospect will rate as a solid big leaguer on Day 1, but not as a star. They need to develop in franchise mode the same way they would in real life.

Mid-tier prospects generally fall in the 60s. Lower-ranked organizational prospects in the 50s. The spread is wide enough to clearly differentiate a generational talent from a fringe prospect, but compressed enough that nobody is walking into franchise mode as an All-Star before they’ve thrown a pitch in the majors.


Prospect Potential

Potential for prospects is derived from a combination of factors:

FanGraphs Future Value (FV) — The primary driver. FV is FanGraphs’ overall projection of what a prospect will become. Higher FV = higher potential ceiling.

MLB Pipeline ranking/grade — Pipeline’s overall future grade serves as a secondary input and a cross-reference against FanGraphs.

Age — Younger prospects get a boost. A 19-year-old has more projection remaining than a 24-year-old with the same FV.

ETA — Prospects closer to the majors have more certainty baked in, while further-out ETAs carry more variance.

The potential distribution is intentionally conservative to protect franchise mode longevity:

Most prospects land in the 70-79 potential range. This is the bulk of the population — solid future contributors, everyday regulars, back-end rotation guys.

A smaller group reaches the 80-89 range. These are the prospects with All-Star upside — consensus Top 50 types with multiple plus tools or frontline pitching ability.

Only a few prospects per year reach 90+ potential. These are the consensus elite — top overall prospects with high FV grades.

95+ potential is reserved for a very small handful — the generational or near-generational prospects. In any given year, you might see 2-4 prospects in the entire game at 95+.

This tiered approach prevents the franchise mode problem where every team’s farm system is loaded with elite potential guys who all develop into superstars within a few years. In real baseball, most prospects don’t hit their ceiling. The potential distribution reflects that reality.


= = = = = = = = = = = = = = = = = = = = = = = = = = = = = = = = = = = = =


That’s pretty much my whole write-up. I was on the fence about creating a roster in 26, but with the development of my Franchise Tracker, I figure it only makes sense to get 26 in order to put it out for the community.

Remember, if you have any questions, want to talk about the roster or any of my other tools, join the Discord: https://discord.gg/8QMRy7NcWW

I’m much more active over there!