Display-only is the safe default. EV-live activates only after
ship gates pass (see below). Operator flips
MLB_PITCHER_EV_LIVE=1 manually after audit clears.
Calibration by xwOBA-against quartile
MLB calibration by xwOBA-against quartile.
Quartile
N picks
Mean cal gap (pp)
Q1 (best xwOBA)
0
—
Q2
0
—
Q3
0
—
Q4 (worst xwOBA)
0
—
Ship gates for EV-live promotion (all must pass):
N ≥ 200 pitcher-priced picks total
Brier ≤ closing no-vig + 0.005 on moneyline AND F5 (separately)
|Cal gap| ≤ 4pp in all 4 xwOBA-against quartiles, n ≥ 30 each
One-quartile-fails → stay display-only
Calibration data is populated by the audit_predictions.py pipeline
as v2-enriched picks accumulate. Quartile bucketing uses xwOBA-against
ranges from the most-recent mlb_pitcher_stats snapshot.