Methodology
How the BAX Performance score, sample-size reliability, and STX pricing are actually computed — the real formulas, not a summary.
Overview
BAX Performance & STX price rulesEvery number on Baxeball — the BAX Performance score, a player's STX price, the Win Tracker gap — is computed directly from public MLB statistics through a fixed set of rules below. Nothing on this page is adjusted by hand, and nothing is influenced by how much a player is bought or sold. This page documents the actual formulas the site runs, not a marketing summary of them.
1. The BAX Performance score
Every hitter and pitcher gets a single 0–100 BAX Performance score. It isn't a prediction of future performance — it's a percentile-based summary of real production this season, rebuilt from scratch after every settlement so it always reflects the current season-to-date stat line. A player is ranked against every other qualified player in the same pool (all hitters, or all pitchers), not against a fixed historical scale, so the same raw stats can score slightly differently as the league-wide distribution shifts over the season.
Hitters
Component weights
Discipline sub-weights
Each of the three inputs is first converted to a percentile rank (0–100) within the current hitter pool, then blended by the weights above. wOBA uses the standard linear-weights formula:
Pitchers
Quality composite — 82% of raw score
Workload — 18% of raw score
FIP (fielding-independent pitching) isolates what a pitcher directly controls — strikeouts, walks, home runs — and removes results that depend on the defense behind them:
Role (SP / RP / CL) is detected automatically from season usage, not self-reported: a pitcher is SP with 5+ starts and a 50%+ start share, CL with 5+ saves and a 20%+ save share of appearances, otherwise RP. Players who both hit and pitch at genuine two-way volume (50+ PA and 10+ IP) get a single blended score, weighted by how reliable each side of their game is — this keeps a position player's mop-up relief appearance from being scored as a pitcher.
2. Sample-size reliability
A raw percentile score can be misleading early in a stretch — three hot games can look like an elite season. Every score is pulled toward the league-average midpoint (50) in proportion to how much of a full season's workload the player has actually accumulated:
A player at reliability 1.0 (a full season's workload) shows their raw percentile score untouched. A player at reliability 0.2 — a recent call-up, for example — has 80% of the gap between their raw score and 50 shrunk away, so an early hot or cold streak can't single-handedly put someone at the top or bottom of the board.
3. From score to price
STX prices are repriced once per day, after that day's games are all final — never during a game, and never in response to how many users are buying or selling. This is deliberate: with virtual currency, letting demand move price would let users pump-and-dump a name by trading it among themselves. The only input to price is the day-over-day change in a player's BAX Performance score.
4. Win Tracker: Actual vs. Expected win%
The Win Tracker answers a different question than the score/price system — not "how good has a team been," but "how good should this team be, based on its underlying scoring rates, regressed toward the mean?" Three lines are shown per team:
- Actual win% — season wins ÷ season games played, no adjustment.
- Expected win% (official) — a regression-smoothed Pythagorean estimate built only from runs scored/allowed per game.
- BAX Expected win% (beta) — an experimental version that also factors in team and active-roster wOBA/xwOBA. Not promoted to official status — see below.
Official model
Runs per game are pulled toward the league mean using a regression fit on the 2018–2019 and 2021–2024 seasons (2020's shortened season is excluded as a distorted sample), then converted to a win percentage with a fitted Pythagorean exponent:
Validated with leave-one-season-out cross-validation across the training seasons, then checked once against the fully held-out 2025 season (never used in fitting): mean absolute error of 0.098 and RMSE of 0.122, holding up almost identically out-of-sample.
Beta model
An experimental version blends in team season wOBA/xwOBA and a recency-weighted active-roster wOBA/xwOBA. In the same 2025 holdout test it did not outperform the official model (RMSE 0.1228 vs. 0.1216), so it stays labeled Beta rather than replacing the official Expected line.
5. Rookie status
The rookie flag checks a player's actual MLB rookie eligibility rule — status is voided once a player passes 130 career at-bats or 50 career innings pitched — rather than a simplified season-only approximation. It does not yet enforce the separate 45-day active-roster clause in the official rule, since that requires day-by-day roster history that isn't available from a single stats query; the at-bat/innings thresholds cover the large majority of real cases correctly on their own.
6. Data sources & update cadence
| Source | Used for |
|---|---|
| MLB Stats API (unofficial, statsapi.mlb.com) | Season stats, standings, live box scores, career stats for rookie eligibility |
| MLB.com & MLB Trade Rumors RSS | News headlines (headline + link only, no article text) |
| Open-Meteo | Ballpark weather conditions |
Standings, live scores, and market status refresh every 30 seconds while games are in progress. BAX Performance scores and STX prices only settle once per day, after every game on the slate has gone final — this keeps a player's price from swinging mid-game on unfinished stats.
7. Known limitations
- Descriptive, not predictive (score/price). The BAX Performance score and STX price summarize production that already happened. Only the Win Tracker gap above has an actual backtest behind it.
- Relative, not absolute. Percentiles are computed against the current player pool each run, so a 70 today isn't guaranteed to mean exactly the same thing as a 70 a month ago if the league-wide distribution has shifted.
- BAX Expected win% is still Beta. It hasn't beaten the official Simple Expected model on held-out data, so it's shown as a secondary, experimental line, not the primary Expected win%.
- Rookie flag gap. The 45-day active-roster clause of MLB's rookie rule isn't enforced (see above) — a small number of edge cases may be mislabeled.
- Unofficial data source. MLB's Stats API has no formal terms of service for outside developers and could change or restrict access without notice.