Formulas & provenance
About Sabr-Jev
OPS+ (Sabr-Jev)
Custom recipe, not Fangraphs/Baseball-Reference parity. League OBP/SLG are summed league-year counts; traded players use PA-weighted league context.
weighted_lg_OBP = sum(stint_PA * stint_league_OBP) / total_PA
weighted_lg_SLG = sum(stint_PA * stint_league_SLG) / total_PA
weighted_Teams_BPF = sum(stint_PA * Teams[year,team].BPF) / total_PA
park_adjustment = (1 + weighted_Teams_BPF/100) / 2
OPS+ (Sabr-Jev) = 100 * (OBP/(weighted_lg_OBP*park_adjustment)
+ SLG/(weighted_lg_SLG*park_adjustment) - 1)
Teams.BPF is Lahman's batting park factor; 100 is neutral in this custom half-schedule adjustment.
wOBA
wOBA = (wBB*(BB-IBB) + wHBP*HBP + w1B*1B + w2B*X2B + w3B*X3B + wHR*HR)
/ (AB + BB - IBB + HBP + SF)
Year weights come only from the frozen data/woba_weights.csv
(Fangraphs Guts constants export, cited). Missing year → wOBA unavailable.
No runtime scrape.
FIP + cFIP
IP = IPouts / 3 ERA = 27 * ER / IPouts component = (13*HR + 3*(BB+HBP) - 2*SO) / IP league_cFIP = league_ERA - league_component FIP = component + weighted_cFIP (outs-weighted for traded pitchers) K-BB% = (SO-BB) / BFP
cFIP is derived from Lahman aggregates, never from the weights file.
Counting rules
Sum counts across stints before dividing. Missing optional HBP/SF/IBB is assumed zero with a warning; missing core inputs or invalid denominators leave the metric unavailable, never invented.
Confidence latch (provisional thresholds)
Choice/Score: act ≥ 0.8, review ≥ 0.5, else escalate; “other” always escalates; insufficient sample cannot act. Noul derives max(p, 1-p): act ≥ 0.85, otherwise review — Noul never escalates a card alone. Thresholds are provisional (mini-labeled requires N≥30).
Provenance
- Formula version
- sabr-jev-v1
- Latest season
- 2025
- License
- Lahman database: CC-BY-SA-3.0 Unported; SABR, donated by Sean Lahman
- Scope
- AL/NL
- Oracle policy
- Retrospective only; both seasons must meet PA>=200 or IP>=50
- Manifest
eb3b3b9d52bd3af97d97bc29853607dc5d720bd2176b43419bbf1d8a1568908b
Evaluation status
Prospective evaluation: accuracy pending. No accuracy claim is made.
2024 → 2025 oracle joins are retrospective plumbing only. Capture must precede the outcome season (conservative January 1 cutoff). The local ledger is append-only and hash chained but cannot prove external capture time.