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.