About OGILVIE

Parks, Leagues & Translations — how (and how we know it's right)

Every stat you see has been through a park and league translation. This page explains the machinery in plain English, and documents the full audit we ran in August 2026 — including the errors it found and fixed.

The one idea behind everything

A stat line is produced in an environment: a park (Coors inflates everything), a league (Triple-A pitching is not MLB pitching), and an era (the minors switched to the MLB ball; Triple-A adopted the automated strike zone in 2023). To compare players — or project them — every line is first translated to a neutral MLB-equivalent, and then, when we show you "what will actually happen," translated back into the player's real park. The basis chips on every player-page row (RAW / CTX / MLE) tell you which frame you're looking at.

Park factors, correctly applied

Each park has a hand-curated profile: per-stat (HR, singles, doubles+triples, triples share, strikeouts, walks) and per-batter-hand (the Crawford Boxes help righties; the Yankee Stadium porch helps lefties). Profiles are validated against ten-plus years of home/away splits — about 7,000 player-seasons.

Half-season math. A park factor measures how a park plays relative to the road — but a player only plays half his games at home. Stats are therefore adjusted by half the park effect, and the same half-effect is used in both directions (stripping context and re-applying it), so translating a line out of a park and back in returns exactly the original line. This holds for hitters and pitchers, majors and minors.

The Coors exception. Altitude adaptation genuinely hurts Rockies hitters on the road (~5%) — their road numbers understate their talent. Colorado is the one park whose translation credits road games back. Without this, every Rockies bat gets docked twice.

Parks change. The Rangers moved indoors in 2020. Camden Yards pushed its left field wall back in 2022 and pulled it back in for 2025. Arizona installed a humidor in 2018. The Braves left Turner Field in 2017, the A's moved to Sacramento in 2025, and the Rays spent 2025 in a Yankee-clone spring-training park. Each era gets its own factors — a 2019 Rangers line and a 2021 Rangers line are translated differently.

League & level translations (MLE)

Minor-league lines are converted with level factors calibrated from real promotion cohorts — hundreds of players who posted a Triple-A line and then an MLB line. The factors are era-aware: since the minors adopted the MLB ball, Triple-A home-run power translates far worse than it used to (a Triple-A homer is now worth ~70% of an MLB homer, not 84%), and since the robot strike zone arrived in Triple-A, gaudy walk rates there translate down hard — while pitchers' walk rates actually improve on promotion.

The August 2026 audit — what we found and fixed

Three independent deep audits: every application site in the code, every park profile against the empirical record, and every league constant against actual league rates. Findings, in order of severity:

All of it is enforced going forward by an automated test suite (round-trip identity in every park, both directions, both player types, every era boundary) that runs with every build, alongside the projection accuracy backtest that gates every model change.

Related: full methodology · glossary