💪
Batter quality
Season HR rate blended with Statcast barrel rate, hard-hit %, and expected slugging — Bayesian-shrunk to per-metric priors so April noise doesn't dominate the projection.
🥎
Pitcher matchup
Decomposed: sticky contact-quality (HR/FB regressed to a league prior) plus heavily-shrunk season HR/TBF, with handedness splits and starter→bullpen blending by lineup slot.
🏟
Park factor
3-year Statcast HR factor for the actual ballpark plus a humid-air-density physics adjustment from temperature, humidity, pressure — Coors at 50% humidity ≠ Coors at 80%.
💨
Live weather
Wind decomposed onto pull / center / oppo axes per batter handedness (not just 'tail-wind to CF'), temperature carry effect, rain-suppression flag — pulled at first-pitch time.
📊
Market consensus (Shin-devigged)
Every book's price stripped of vig using Shin (1991) two-way recovery, sharpness-weighted across the market. Anchors the model so we don't beat the crowd from scratch — we model only where the market is wrong.
🎯
v3 residual calibration
A logistic regression fitted on 78,409 settled HR-prop closing lines. Learns book-specific bias (MyBookie overprices, Bovada underprices) and park-specific HR residuals (Houston, Washington over expectation; Detroit, LAA under) and applies them before the consensus median.
The output:a per-plate-appearance HR probability, compounded over expected PAs given the batter’s lineup slot, then compared against the v3-calibrated market consensus. A positive gap means the model sees edge the books haven’t priced in. Brier lift over a no-skill baseline:
+2.34%. Every input the model saw is visible on the pick — no black box.
See the full variant comparison →