ALLFAME
The Fame Report
MLBNBA
NFLSOONNHLSOON

Methodology

Version 1.2 · Last updated March 26, 2026

This document describes the complete technical methodology behind the AllFame HOF Score. Every formula, weight, and calibration decision is documented here. If you find an error or have a suggestion, contact data@allfame.co.

OVERVIEW

The HOF Score is a composite 0–100 measurement that assesses where an active player's current résumé stands against the historical bar for Hall of Fame induction in their sport. It is not a prediction of induction — it is a measurement of the statistical case as it exists today.

The score is built from five weighted dimensions, each scored independently 0–100, then combined using fixed weights. The dimensions and weights are identical across sports. The metrics within each dimension are sport-specific and calibrated against historical induction data.

THE Formula

HOF_Score = Career_Value × 0.30 // 30% weight + Milestones × 0.25 // 25% weight + Awards × 0.20 // 20% weight + Peak × 0.15 // 15% weight + Longevity × 0.10 // 10% weight

Why these weights? Career value (WAR/WS) is the strongest single predictor of induction across all sports, hence the highest weight. Milestones carry outsized influence in voter behavior despite being arbitrary thresholds. Awards validate excellence. Peak distinguishes inner-circle HOFers from compilers. Longevity is the lowest because talent matters more than tenure — but without it, injury-shortened careers can't be properly assessed.

Each dimension produces a score from 0–100 independently. The composite score is the weighted sum, which also falls in the 0–100 range. Scores are rounded to one decimal place.

DIMENSION 1: CAREER Value — 30%

The most comprehensive single measure of player value. We compare the player's current career value metric against the distribution of Hall of Famers at the same age and position.

MLB: Wins Above Replacement (WAR)

cv_score = percentile(player.war, hof_wars_at_same_age) // Position adjustments: if position == "C" cv_score += 8 // catcher scarcity if position == "SS" cv_score += 5 // shortstop premium if position == "CF" cv_score += 3 // center field if position == "DH" cv_score -= 3 // no defensive value if position == "1B" cv_score -= 3 // low defensive bar // Two-way player bonus (Ohtani rule): if HR > 50 AND pitching_wins > 20: cv_score += 15 // historic two-way value // Active production modifier: if consecutive_seasons_war_below_1 >= 2 (last 3 yrs): cv_score -= 10 // declining production penalty

We use bWAR (Baseball Reference WAR) as the primary source. For the top ~100 active players, WAR values are manually verified against Baseball Reference. For remaining players, WAR is estimated from available stats.

NBA: Win Shares + Box Plus/Minus

ws_normalized = (player.win_shares / max_hof_ws) × 100 bpm_score = map(player.bpm, { 10+ → 100, 030, -20 }) cv_score = ws_normalized × 0.6 + bpm_score × 0.4 // Position adjustments: if position == "C" cv_score += 5 if position == "PG" cv_score += 3 // 3PT leader bonus: if career_3pt_made > 3500 cv_score += 8

DIMENSION 2: Milestones — 25%

Round numbers carry disproportionate weight in HOF voting. This dimension measures proximity to key statistical thresholds that have historically served as unofficial induction gates.

SportMilestoneWeightHistorical Correlation
MLB500 Home Runs30100% induction (non-PED)
MLB3,000 Hits30100% induction (excl. Rose)
MLB75+ WAR2598% induction
MLB400 Home Runs2078% induction
MLB300 Wins (P)25100% induction
MLB3,000 Strikeouts (P)2083% induction
NBA30,000 Points30100% induction (eligible)
NBA25,000 Points2092% induction
NBA200+ Win Shares2595% induction
NBA10,000 Assists25100% induction
// For each relevant milestone: if crossed: points += weight × 1.0 if progress > 80%: points += weight × (pct / 100) if progress > 50%: points += weight × (pct / 100) × 0.7 if progress < 50%: points += weight × (pct / 100) × 0.3 mi_score = min(100, total_points / max_possible × 100) // Two-way players: evaluate BOTH hitting + pitching milestones

DIMENSION 3: AWARDS & Selections — 20%

Awards build the narrative case for induction. Each award is assigned a point value based on its historical correlation with induction in that sport.

AwardMLB PointsNBA Points
MVP (1st)2525
MVP (additional)+15 each+15 each
All-Star / All-NBA6 each (cap 60)6 each (cap 60)
Championship10 each12 each
Finals/WS MVP1218
Cy Young25 / +15
DPOY15
ROY88
Gold Glove / All-Defense4 each4 each
aw_score = min(100, total_award_points / sport_max × 100) // Sport max (inner-circle HOFer ceiling): MLB_MAX = 150 NBA_MAX = 180 // NBA multi-MVP multiplier: if mvp_count >= 2 AND sport == "nba": aw_score *= 1.15

DIMENSION 4: PEAK Performance — 15%

Peak distinguishes dominant players from accumulators. We measure the best consecutive 5-year stretch of production and compare it against Hall of Fame benchmarks.

best_5yr = max_consecutive_window(season_values, 5) // MLB: season WAR values // NBA: season Win Shares values pk_score = percentile(best_5yr, hof_best_5yr_values) // MVP-caliber season bonus: for each MVP award: pk_score += 5 (cap +20)

DIMENSION 5: Longevity — 10%

Longevity is the smallest weight because talent matters more than tenure. But durability determines whether talent converts into a Hall of Fame résumé.

// Sub-metric 1: Games played ratio (40%) games_ratio = games / (seasons × full_season_games) × 100 // full_season: MLB=155, NBA=75 // Sub-metric 2: Quality seasons (40%) quality_count = seasons where WAR >= 3.0 (MLB) or WS >= 6.0 (NBA) // 12+ = 100, 8-11 = 75-99, 5-7 = 50-74, <5 = proportional // Sub-metric 3: Active seasons (20%) seasons_score = scale(seasons, { 18: 100, 14: 80, 10: 50 }) // Injury penalty: penalty = injured_seasons × 12 (cap 40) // Recent availability modifier: recent_pct = games_last_4_seasons / possible_last_4_seasons if recent_pct < 0.50: penalty += 15 if recent_pct < 0.30: penalty += 25 // replaces 15 lo_score = (games_ratio × 0.4 + quality × 0.4 + seasons × 0.2) - penalty lo_score = clamp(0, 100)

TIER Classification

Score RangeTierMeaning
90 – 100HOF LockCould retire today with a strong induction case. First-ballot candidate.
75 – 89On TrackCurrent trajectory leads to HOF. Needs 2–4 more productive seasons.
50 – 74BorderlineHOF-caliber talent but case is incomplete. Could go either way.
0 – 49UnlikelyWould need dramatic career resurgence to build a viable case.
Tier boundaries are fixed and not adjusted per sport. A 90 in MLB means the same thing as a 90 in NBA: “this player's statistical case for induction is very strong.”

Calibration

The algorithm went through 3 calibration iterations before launch. Key adjustments made:

  • Two-way player bonus: Added +15 career value bonus for players with significant batting AND pitching stats (triggered by Ohtani scoring too low at 76.5 pre-calibration).
  • Injury penalty increase: Raised from 8pts/season to 12pts/season with additional “recent availability” modifier for players missing 50%+ of games in last 4 seasons.
  • NBA championship weight: Increased from 10 to 12 points. Finals MVP increased from 15 to 18. NBA multi-MVP multiplier of 1.15× added.
  • All-Star value: Increased from 5 to 6 points per selection with cap raised from 50 to 60.
  • MVP peak bonus: Added +5 per MVP season to peak score (cap +20).

Post-calibration validation targets: LeBron 97.5 (Lock), Curry 90.6 (Lock), Ohtani 89.9 (On Track), Trout 79.0 (On Track), Wembanyama 40.8 (Unlikely). All within acceptable range.

DATA Sources

SourceData ProvidedUpdate Method
Baseball ReferencebWAR, career stats, HOF benchmarks (MLB)Manual verification for top 100 players
MLB Stats APIReal-time game stats, rosters, awards (MLB)Daily automated ingestion
Basketball ReferenceWin Shares, BPM, VORP, HOF benchmarks (NBA)Manual verification for top 60 players
NBA Stats APIReal-time game stats, rosters, awards (NBA)Daily automated ingestion
HOF Voting RecordsHistorical voting data for calibrationUpdated annually after voting results
Transparency note: WAR (MLB) and Win Shares (NBA) for the top ~100 active players are hardcoded from verified sources. For remaining players, these metrics are estimated from available API stats. This is documented in our Data Policy.

UPDATE Frequency

  • Daily during season: Scores recalculate after each day's games using updated stats from league APIs.
  • Award events: Immediate recalculation when MVP, Cy Young, All-Star, All-NBA, or similar awards are announced.
  • HOF voting: Annual recalibration against actual voting results to validate and tune the model.
  • Off-season: Scores are static unless roster moves, injuries, or award announcements occur.

KNOWN Limitations

  • Voter behavior is unpredictable. The HOF Score measures the statistical case, not the political or narrative dynamics of actual voting. Jack Morris was inducted with a middling résumé; Barry Bonds was not inducted with a historic one.
  • Young players score low by design. A 22-year-old with 2 elite seasons will score in the 40s-50s because the algorithm rewards accumulated value. This is intentional — it measures where you ARE, not where you COULD BE.
  • Cross-sport comparison is approximate. While we calibrate so that 90 in MLB ≈ 90 in NBA, different sports have different HOF selection dynamics. The NBA Hall is easier to enter than the MLB Hall by historical standards.
  • WAR/WS are imperfect. These are the best available composite metrics but they have known biases (WAR undervalues catchers and relievers, Win Shares has era adjustments that can distort).
  • No “narrative” dimension. Factors like being the face of a franchise, postseason heroics beyond stats, and cultural impact are real influences on voting but are not captured in our model.
  • Two-way players are structurally unusual. The Ohtani bonus is a manual calibration for a genuinely unprecedented situation. If more two-way players emerge, this dimension will need rethinking.

Changelog

All algorithm changes are documented here with dates and rationale.

Mar 26, 2026
Calibrationv1.2
3-iteration calibration pass. Two-way bonus (+15 CV), injury penalty increase (8→12/season), recent availability modifier, NBA championship weight increase (10→12), multi-MVP multiplier 1.15×, All-Star value 5→6.
Mar 25, 2026
Newv1.0
Initial algorithm implementation. 5 dimensions, calibrated against MLB + NBA HOF benchmarks. 1,139 players scored (929 MLB, 210 NBA).
Mar 24, 2026
New
Data ingestion pipeline for MLB Stats API and NBA API. HOF benchmarks seeded for 20 MLB and 15 NBA Hall of Famers.
Questions about our methodology? We welcome feedback, corrections, and suggestions. Contact data@allfame.co or visit our Data Policy for more information about data accuracy and sources.