MLB Player Props — Strategy Specification

Version 3.0 | Updated: 2026-04-03

Status: DEPLOYED — 8 scanners (4 producing edges), 36 dashboard sources, all green


Overview

The MLB Player Props desk prices Kalshi player prop alt-line rungs using probability curves derived from FanDuel/DraftKings de-vigged anchor lines. For markets without sportsbook coverage (home runs), a model-only approach using Zero-Inflated Poisson with EWMA baselines is used. Edges are detected when model probability diverges from Kalshi price by more than 4 cents after the 7% fee.

Current production: 8,260 prop edges stored across 4 active prop types. 1,083 executable edges. Scanner runs 4x daily.

Kalshi Series (8)

Series Description Scanner Status
KXMLBKS Pitcher Strikeouts Active — 1,384 edges, 246 executable
KXMLBHIT Batter Hits Active — 2,176 edges, 705 executable
KXMLBTB Batter Total Bases Active — 2,294 edges, 126 executable
KXMLBHR Batter Home Runs Active (model-only) — 2,406 edges, 6 executable
KXMLBHRR Hits+Runs+RBIs combo Collecting prices
KXMLBSTAT Season Stats Collecting prices
KXMLBSTATCOUNT Season Stat Count Collecting prices
KXMLBSEASONHR Season HRs Collecting prices

Sportsbook Anchor Coverage (Odds API)

Market FanDuel DraftKings Anchor Used
pitcher_strikeouts Yes Yes FanDuel (primary)
pitcher_outs Yes Yes FanDuel (primary)
batter_stolen_bases Yes No FanDuel
batter_hits No Yes DraftKings (FD unavailable)
batter_total_bases No Yes DraftKings (FD unavailable)
batter_rbis No Yes DraftKings (no Kalshi market)
batter_runs_scored No Yes DraftKings (no Kalshi market)
batter_home_runs No No Model-only (ZIP + EWMA baselines)

Distribution Models (Council Ruling 2026-04-01)

Prop Type Distribution EWMA Span Key Driver
Pitcher Strikeouts Negative Binomial 8 games K/9 x projected IP x opp K rate x umpire zone
Pitcher Outs Truncated Normal 12 games Avg outs/start, manager hook probability
Batter Hits Beta-Binomial 12 games Hit rate x PA x platoon split
Batter Home Runs Zero-Inflated Poisson 20 games HR/PA x PA x park factor; pi=0.85 (model-only)
Batter Total Bases Multinomial per PA 15 games P(1B), P(2B), P(3B), P(HR) per PA
Batter RBIs Monte Carlo (10K sims) 15 games Lineup simulation — deferred (no Kalshi market)
Batter Runs Monte Carlo (10K sims) 15 games Subsequent batter quality — deferred (no Kalshi market)
Stolen Bases Bernoulli per opportunity 25 games P(attempt) x P(success) — deferred (no Kalshi market)

Edge Detection Workflow

Standard (FD/DK anchor available)

  1. Retrieve FanDuel prop lines (sharp anchor, DraftKings fallback)
  2. De-vig over/under odds (multiplicative 2-way)
  3. Fit distribution curve to de-vigged probabilities
  4. Compare against Kalshi contract prices at each threshold
  5. Calculate net edge after 7% Kalshi fee
  6. Min edge: 4 cents. Min sample: 10 GP (pitcher), 20 GP (batter)
  7. Cross-validate against DraftKings (flag >5 cent divergence)

Model-Only (no sportsbook anchor — HR props)

  1. Get batter EWMA HR rate from baselines (span ~20 games)
  2. Apply Zero-Inflated Poisson (lambda=HR_rate, pi=0.85)
  3. Calculate P(X >= threshold) for each Kalshi HR rung
  4. Compare model probability against Kalshi ask price
  5. Calculate net edge after 7% fee

Per-Scanner Unique Logic

Scanner Unique Inputs
Pitcher Ks Opp team K rate, umpire K zone, pitch count projection, SP pitch mix vs lineup handedness
Pitcher Outs SP quality trend, opp team contact rate, opener detection (outs capped low)
Batter Hits SP WHIP vs hand, batter contact rate, BABIP luck adjustment, park hits factor
Batter HRs ZIP model, park HR factor (hand-specific), EWMA baseline, pi=0.85 zero-inflation
Batter TB Multinomial outcomes per PA, ISO power, park dimensions, SP pitch mix weakness

Position Sizing

Parameter Value
Single prop max 3% bankroll
Per-player max 5% bankroll
Per-game max 8% bankroll
Daily prop exposure 15% bankroll
Kelly fraction 1/4

Cross-Prop Correlation Limits

Correlation Reduction
Pitcher K-over + Outs-over (rho ~ 0.6) -20% combined
Batter Hits-over + TB-over (rho ~ 0.7) -25% combined
Batter HR-over + RBI-over (rho ~ 0.4) -15% combined

Key Constants

Constant Value
Kalshi fee 7% on profit
Min net edge 4 cents
Min sample (pitcher) 10 games
Min sample (batter) 20 games
EWMA alpha: K 0.08 (span ~8)
EWMA alpha: hits/TB 0.12 (span ~12)
EWMA alpha: HR 0.05 (span ~20)
EWMA alpha: SB 0.04 (span ~25)
ZIP pi (HR) 0.85
FD-DK divergence flag >5 cents
Opener IP threshold < 3.0 avg IP

Collection Schedule

Data Frequency Time (ET) Status
Kalshi prop prices Every 30 min Continuous DEPLOYED
FanDuel prop lines 2x daily + pre-close Synced with scanner DEPLOYED
DraftKings props 2x daily + pre-close Cross-validation DEPLOYED
Prop edge scanners 4x daily 8AM/10AM/2PM/6PM DEPLOYED
Steam detection Every 30 min With collector DEPLOYED
Pitcher game logs Daily 11 AM DEPLOYED
Batter game logs Daily 11 AM DEPLOYED
SP/Batter baselines Daily 11 AM DEPLOYED
Platoon splits (team + individual) Daily 11 AM DEPLOYED
Statcast team batting Daily 11 AM DEPLOYED
Statcast pitcher stats Daily 11 AM DEPLOYED
Baseball Reference Daily 11 AM DEPLOYED
Park factors (static + dynamic) Daily 11 AM DEPLOYED
Weather Daily Pre-game DEPLOYED
Ump scorecards Daily 11 AM DEPLOYED
Lineups Game day Pre-game DEPLOYED
Schedule/Transactions Daily 11 AM DEPLOYED
Opener detection Daily 11 AM DEPLOYED
Player ID crosswalk Daily 11 AM DEPLOYED

Data Sources

Source Purpose Cost
FanDuel (Odds API) Sharp prop anchor (K, outs, SB) Shared sub
DraftKings (Odds API) Anchor for hits, TB, RBI, runs Shared sub
Kalshi REST API Exchange prices Free
MLB Stats API Game logs, rosters, lineups, schedule, handedness Free
Baseball Savant Statcast — team batting + pitcher stats (401 pitchers) Free
Baseball Reference Season batting/pitching stats Free
UmpScorecards Umpire K zone adjustments Free
NWS API Game-day weather Free
ESPN Schedule, park factors Free

Future / TODO

  1. Catcher framing + pop time — Savant endpoint returns 0 rows early season; will activate mid-season
  2. Manager hook probability model — Logistic regression for pitcher pull points (needs more game data)
  3. Retractable roof status integration — Column added to weather table, auto-zero adjustment for dome/closed games (needs weather scraper update to use it)
  4. RBI/Runs Monte Carlo — Deferred: no Kalshi market for these props yet. Build when KXMLBRBI/KXMLBRUNS appear.
  5. Stolen bases scanner — Deferred: no Kalshi stolen base market yet. FD has SB lines ready.
  6. Pitcher outs scanner — Deferred: no Kalshi outs market yet. FD has outs lines ready.
  7. Opener detection wired to scanner — Flags exist (4 openers detected), need to cap pitcher outs projection when opener flagged
Source: ~/edgeclaw/results/spec-panel/mlb-desk/mlb-player-props-strategy.md