Methodology
Every Diamond DFS projection is a transparent, weighted sum of public inputs. Nothing is a black box — you can tune every weight, see every input, and rebuild the projection from scratch.
Inputs
- Hitter rate stats — singles, doubles, triples, HR, BB, HBP, SB, R, and RBI per plate appearance. Season totals blended with last-14-day form (~35% weight on L14) and Empirical-Bayes shrunk toward league average for small samples. Source: MLB Stats API.
- Expected PA — lineup-slot table (slot 1 ≈ 4.6 PA, slot 9 ≈ 3.7 PA) scaled by the team's Vegas implied total. Pulled from official starting lineups on game day.
- Pitcher rate stats & role — K/IP, BB/IP, H/IP, ER/IP, HBP/IP from season totals. Recent gamelog usage classifies role (SP, Opener, Bulk, RP) and sets projected IP. Source: MLB Stats API.
- vs SP composite — pitcher dominance (K rate, last-30d WHIP, BAA, home/away, rest, quality starts) blended with opposing team vulnerability (team K%, on-base quality, BA L14, R/G L14, lineup strength). Hitter side adds platoon hand-OPS split and a K-rate mismatch adjustment.
- Park factor — multi-year runs, HR, and hits factors per venue. Coors boosts hitter ceilings; Petco suppresses them. See the full parks table.
- Weather — temperature, wind speed and direction relative to home plate, plus dome, turf, and day/night flags. Wind blowing out adds materially to HR expectation; domes are flat-flagged. Source: OpenWeather.
- Vegas implied team total — derived from moneyline and over/under, refreshed when lines move. Drives the team-total factor and feeds expected PA + pitcher win probability. Source: The Odds API.
Projection formula (simplified)
hitter_points =
Σ over events {singles, doubles, triples, HR, BB, HBP, SB, R, RBI} of
rate_per_PA(event)
× expected_PA(lineup_slot, team_total)
× event_multiplier(vsSP, recentTrend, parkFactor,
weather, teamTotal, environmentalSplits)
× DK_points(event)
pitcher_points =
Σ over events {K, ER, H, BB, IP} of
rate_per_IP(event)
× projected_IP(role: SP | Opener | Bulk | RP)
× event_multiplier(vsSP, recentTrend, parkFactor,
weather, teamTotal)
× DK_points(event)
+ win_probability(team_total, opp_total, isHome) × W_bonusWeights
The six factors (vs SP, recent trend, park, weather, team total, environmental splits) are controlled by integer sliders that sum to a budget. Each factor's effective impact is its slider value divided by the total — moving one slider up automatically pulls impact away from the others. Defaults give every factor a roughly equal share; users can rebalance to lean harder on weather, downweight park, or change how aggressively the SP matchup fires.
Optimizer
Given projections, the optimizer solves the salary-cap problem with integer linear programming to maximize total projected points under DraftKings' roster constraints ($50,000 cap, 2 SP, 1 C, 1 1B, 1 2B, 1 3B, 1 SS, 3 OF). Locks, excludes, and stack rules are first-class constraints. A single solve runs in <100ms; multi-lineup portfolios run in 1–3s.
Data refresh cadence
- DraftKings player pool & salaries: every 15 minutes
- Probable pitchers & starting lineups: hourly until first pitch
- Weather: hourly, plus 90 minutes before each first pitch
- Vegas lines / implied totals: on line move (push from The Odds API)
- Season-to-date rate stats: nightly
Frequently asked
How are Diamond DFS projections calculated?
Each projection multiplies a player's per-PA (hitter) or per-IP (pitcher) event rates by expected playing time, applies six tunable matchup multipliers (vs SP, recent trend, park, weather, team total, environmental splits), and scores the resulting event line with official DraftKings classic MLB scoring. Rates come from the MLB Stats API (season + last 14 days, Empirical-Bayes shrunk to league average).
How often does data update?
Player pools and salaries pull from DraftKings every 15 minutes. Probable pitchers, starting lineups, and weather refresh on cron. Implied totals update when Vegas lines move.
What stat sources does Diamond DFS use?
MLB Stats API for player rate stats, gamelogs, lineups, and probable pitchers; DraftKings for the player pool and salaries; OpenWeather for venue-level forecasts; The Odds API for moneylines, totals, and implied team totals. Park factors are bundled multi-year values.