A running changelog for the trade-grading model. We'd rather show our work than silently move the numbers.
Both the trade grader and the live pricing model lean on a player's full track record, discounted for age and recency — which is the right default, but it had a blind spot: a player who has genuinely improved over two or three consecutive seasons wasn't being priced much differently from one who simply had a single hot year in an otherwise unremarkable record. The two look similar in the raw numbers, but they aren't the same signal — one is early-career struggle followed by real development, the other is closer to noise.
Fixed by teaching the model to recognize the difference: when a player's improvement is genuine and has held for multiple seasons (not just his most recent one), that gets real weight instead of being smoothed away by the rest of his track record. We tested this against real historical outcomes before shipping it — real, sustained improvement predicts what a player does next meaningfully better than treating every season as equally uncertain evidence.
Two changes to how undebuted prospects are priced, both aimed at the same problem: a single point-estimate expected WAR was quietly underpricing exactly the players it matters most to get right.
Convexity-aware pricing. The $/WAR tier table is a convex curve — a star's production is priced meaningfully higher per win than a replacement player's. Running one shrunk point estimate through that curve once prices the average outcome's tier, but a real prospect isn't one outcome — he's a distribution, most of it below that average, a real minority well above it. Pricing off the point estimate misses the upside entirely. Fixed by pricing every historically realized outcome for a prospect's pedigree tier through the same aging-curve/tier/salary math and averaging the dollars, not the WAR — the mathematically correct way to price a convex payoff. The effect is larger for the highest-pedigree prospects specifically, where the outcome spread is widest.
Combined BA + MLB Pipeline rankings. Previously, when a prospect was ranked by both Baseball America and MLB Pipeline, only BA's rank counted — Pipeline's was silently dropped, even when the two disagreed. We tested whether one source is more predictive of what a prospect actually becomes and found no reliable difference between them — so when both rank a player, we now price off the average of what each ranking implies, and the site shows both ranks side by side instead of just one.
The tier-adjusted $/WAR curve was calibrated on all roles pooled together — fine for hitters, but it systematically mispriced pitchers by role. A dominant closer's θ (expected WAR/yr) tops out around 0.5-1.5 simply because he throws 60-70 innings a year, not because he's replacement-level — so the pooled curve was pricing elite closers like part-time role players. Added a role-specific correction on top of the existing tier table, calibrated the same way (real FA-signing AAV vs. θ, empirical-Bayes shrunk by sample size):
Full table and methodology: Grading Trades. The correction only applies once a player has a real, games-evidenced role — an unproven pitching prospect isn't defaulted into the starter premium just because he hasn't been used in relief yet.
The original model: WAR delivered by a star prices at a real premium over WAR delivered by a replacement-level player (0.65× to 1.60× the league-average $/WAR, by talent tier), calibrated against FA-signing AAV data. See Grading Trades for the full tier table.
Fit on full team-seasons (≥100 games), 1985–2024/25. All figures are franchise-level outcomes credited to the decision-maker in the relevant year — see the GM profiles for per-executive numbers.