MLB · DraftKings Classic

Lineup builder

Classic Early · Main · Afternoon · Night — switch slate above, build GPP lineups (mostly 5|2|1), rank by ROI or top %, narrow pool, export DK upload CSV.

Not affiliated with DraftKings. Projections and own% are yours. Browser build supports up to 5,000 lineups (Web Worker, 5|2-heavy GPP); quick pass ~500 in 30–90s.

Premium members — same email as /picks and checkout. Lineup lab + daily picks + live +EV board.

Slate

DK Classic only (no showdown): Early · Main · Afternoon · Night. Pool shows DK $, position, team, opp, proj, own%.

Lock times: loading…

Players
SP
Games
Last build

Loading slate…

Fast · 150-max

Default 150 pool · worker for builds >50 lineups · ROI rank · auto-export top 150 DK CSV.

1 · Single entry (SE)

Builds a 150–500 lineup pool (default 150), ranks by Top 5% or ROI. Salary band $48,900–$50,000 on every lineup.

Contest

Giant Squid · Single entry · 200–500 lineups

Flagship SE workflow (anti-freeze): build 200–500 Giant Squid lineups on the Main slate (leverage on, set contest size above, 65% 5|2 · 35% 5|3 stacks), MC sim top slice in a Web Worker, then rank by Win % (top-1% finish) and review your top 10 win equity for DK upload #1.

  1. Reload Main slate
  2. Build 200–500 · Giant Squid · worker sim
  3. Top 10 by Win % (top-1%)
  4. Export #1 or top 10 CSV
Contest

Set Contest size (entries) to your DK field (e.g. Chin Music, Upper Deck), SE pool size to 500. Click ① Reload slate, then ② Giant Squid SE. Worker build + MC field sim, rank by Win % (top-1% finish) — top 10 board below (~45–90s). Re-run ② with a new field size for each contest.

2 · MME 150-max (Giant Squid style)

Fast 150–1,000 lineup pool for 150-max fields — leverage, diversity, low dupes. Rank by ROI by default.

150 MME · 70% 5/2/1: click Youdadao / Giantsquid MME (builds 1,000, sims, ranks ROI, auto-downloads top 150). Stack mix 70% 5|2 bring-back + 30% 5|3; on 5/2/1 the solo off-stack bat is ≥ $5k when the pool allows. Build MME 150 uses your MME pool size input with GiantSquid leverage.

Loading slate pool… need players · SP · games before build unlocks.

Lineup results

Click Build SE or Build MME 150 above. Results appear here.

Game schedule ·

Loading lock times…

Matchup Lock (ET) Vegas Pool
Load a slate…
All DK slates today (lock times)

Loading…

GPP plays · all slates (expand)

Loading tournament plays for all slates…

GPP: mix 5|2/1 and 5|3 only (4|4 blocked). Set % in stack settings. Every lineup uses $48,900–$50,000 salary. Sort by ROI, top 1%, or top 5% after build.

Cash presets

Cash: Quick Cash (50/100) one-click. Or set count (max 100). Each lineup differs by ≥3 players. Sets ≥30 use chunked async + progress.

Slate games · fade

Check Fade on a game to remove every hitter and both SP in that matchup from Cash and GPP builds. Fades stay until Reload slate.

Team stack ranks formula

Ranked by proj + own leverage (not TT alone). TT Δ = vs slate-average team total — bright TT = top run environment; muted = fade. Sneaky = strong TT with lower team own% (MME leverage). Faded games excluded.

Sneaky stacks
Sneaky value tonight sub $4k · proj/own leverage

    Load Main slate to rank sneaky GPP pivots.

    Stack score: (Σ proj ÷ TT) × ownPenalty + lev · lev = proj/Vegas edge + log-own studs − chalk (top-5 own Σ)

    Game-by-game simulation

    Slate date

    Monte Carlo team runs from Vegas away_total / home_total (or total_runs). Sim all games or click Sim per row — each matchup on the active slate (Main / Turbo / Night). After games finish, paste final scores to compare Actual vs Sim μ. User guide

    Sort:

    Load a slate, then click Sim all games or Sim on a row.

    Player exposure (MME)

    Target how often each player appears across your batch. 50% min on Aaron Judge in a 150-lineup set ≈ at least 75 lineups with Judge. Set max to cap chalk (e.g. Judge 40% max). Leave pool column blank for no rule. Applied when you Build GPP (MME).

    Stack settings (GPP)

    Percent of batch as 5|2/1 (bring-back) vs 5|3. 4|4 is blocked. Normalized to 100% on build. Salary band $48,900–$50,000 on every lineup.

    Mix total: —

    GPP presets

    Fast path only (min 200): 200 ~30–60s · 500 ~1–2m · 1k few min · 5k max MME. Stack mostly 5|2/1.

    ROI score: (sim_mean ÷ salary) × own_leverage × 1000 after MC; builds ≥200 rank by projection + stack score (no MC). Sim top 50 runs 25-draw MC async. Deep sim top 20 export uses 1000 draws.

    DK Classic scoring (high level)

    Hitters: singles, doubles, triples, HR, RBI, runs, walks, HBP, SB — plus small bonuses for multi-hit games. Pitchers: innings, strikeouts, wins, ER — quality start and complete-game bonuses where applicable. DraftKings publishes the full rubric; this lab optimizes on your proj / ceiling columns, not live stat scoring.

    Slate & uploads

    Use Classic Early | Main | Afternoon | Night above. Deploy refresh fills JSON from FTN/DK — no paste required when slates are current. If a slate is empty or wrong pool, paste the FTN optimizer table below (Salary + Proj Pts columns).

    FTN / optimizer paste (current slate)

    Copy the full player grid from FTN or your optimizer (Player Name, Salary, Pos, Team, Opp, Proj Pts, Proj Own). Applies to the active slate button only — does not auto-save to server.

    Nightly games[] (optional but recommended): away_total, home_total (implied team runs / Vegas TT), spread (away line, e.g. −1.5), total_runs (game O/U). Shown in Slate games panel; hitters still use per-row team_total for stacks.

    Nightly slate refresh (Mac / deploy host)

    After lock, prep tomorrow (games + empty player pools). When DK posts, paste exports and rebuild:

    node scripts/prep-mlb-dk-slate.mjs
    # then paste DK → SLATE_TYPE=all node scripts/build-mlb-dk-slate.mjs

    Paste/refresh each classic contest file directly: data/mlb-dk-slate-early-main.json, data/mlb-dk-slate-main.json, data/mlb-dk-slate-afternoon.json. Env: SLATE_DATE, SLATE_TYPE. Commit JSONs, deploy, Reload slate.

    SP (CSV) Name, Team, Opp, Salary, Projection, Ceiling, Floor · optional Own%

    SP (JSON) players[] with position: "P", is_starter: true

    Hitters (CSV) Replaces hitters · Name, Team, Pos, Salary · optional Order / BO, TeamTotal, Own%

    Optimizer rules & GPP preset

    Sharp: chalk anchor (≥12% own), target avg own ~7–26%. Standard: softer own rules. Stack mix is set in Stack settings, not here.

    Player pool

    Full DK Classic pool for the selected slate. * = probable SP. Columns: DK $ (DraftKings salary), Opp, projection, ownership. Builds target $48,900–$50,000 when the pool allows.

    Name Pos (DK) Team Opp DK $ Proj Ceil Own% TT BO Exp min% Exp max%
    Score lineups vs yesterday actuals

    Upload DK fantasy points from a finished slate (JSON or CSV), then score your built lineups. Optional: paste a sharp/optimal lineup (one name per line) for a baseline row.

    Yesterday DK points (JSON) { "players": [{ "name", "dk_points" }] } or { "Aaron Judge": 12.5 }

    Yesterday DK points (CSV) Name, FPTS or Name, Points