u/Striking-Lock-4937

I built a percentile-normalized performance score for MLB players (wOBA/ISO/FIP/K9/WHIP/BB% weighted composite) — feedback welcome

I've been building a composite performance metric for MLB players — calling it "BAX Score". The goal is a single number that reflects "how good is this player playing right now," built only from real performance stats (no market/demand signal in the mix at all — this matters because the score also drives pricing in a fantasy stock market I'm building, and I didn't want volume to be able to move it).

Methodology, roughly:

  • Pull wOBA, ISO, FIP, K/9, WHIP, BB% (hitters and pitchers get separate axis   weightings)
  • Percentile-normalize each stat against the current league sample
  • Apply sample-size shrinkage so a guy with a hot two weeks doesn't swing the   score around
  • Weighted composite across the normalized axes → single score, updated daily   after games finalize

Pulled today's top-of-leaderboard hitters and plotted wOBA (the single most correlated input) against the full composite score to see how much the extra axes actually move things:

https://preview.redd.it/teo8si5wbqjh1.png?width=1350&format=png&auto=webp&s=227db2fe111ca9c6d4f33caba6aafafccf85d26b

A few things stand out:

  • Caminero, Harper, and Alvarez score noticeably ABOVE where wOBA alone would put them — power/ISO and BB% are dragging the composite up past what a wOBA-only ranking would suggest
  • Kurtz, Soto, and Ohtani score BELOW their wOBA-implied line — despite great wOBA, other axes (BB%/K% mix, sample shrinkage) pull them down relative to the trend

Basically: if I'd just ranked by wOBA, the order would look meaningfully different from the composite. Curious whether this sub thinks that's a feature or a red flag — is baking in ISO/BB%/K% on top of wOBA adding signal, or just re-weighting the same underlying skill twice?

Also still going back and forth on:

  • How much weight FIP vs xFIP should get for pitchers with small sample IP
  • Whether BB% deserves its own axis or should just feed into wOBA indirectly

Happy to share more of the pipeline if useful and your feedback :)

(Side project — baxeball.com — mostly posting here because I want the methodology stress-tested, not to plug it.)

reddit.com
u/Striking-Lock-4937 — 4 days ago