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.
DK Classic only (no showdown): Early · Main · Afternoon · Night. Pool shows DK $, position, team, opp, proj, own%.
Lock times: loading…
Loading slate…
Default 150 pool · worker for builds >50 lineups · ROI rank · auto-export top 150 DK CSV.
Builds a 150–500 lineup pool (default 150), ranks by Top 5% or ROI. Salary band $48,900–$50,000 on every lineup.
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.
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.
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.
Click Build SE or Build MME 150 above. Results appear here.
DK upload: After build + ROI rank, use DK upload · top ROI (MME) or DK upload · #1 (SE). In DraftKings: Lobby → Upload Lineups → MLB Classic → your slate → choose the file.
Loading lock times…
| Matchup | Lock (ET) | Vegas | Pool |
|---|---|---|---|
| Load a slate… | |||
Loading…
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: Quick Cash (50/100) one-click. Or set count (max 100). Each lineup differs by ≥3 players. Sets ≥30 use chunked async + progress.
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.
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.
No sneaky teams on this slate yet — load ownership% or rebuild from FTN.
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 Σ)
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
Load a slate, then click Sim all games or Sim on a row.
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).
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: —
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.
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.
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).
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.
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.
Name, Team, Opp, Salary, Projection, Ceiling, Floor · optional Own%
players[] with position: "P", is_starter: true
Name, Team, Pos, Salary · optional Order / BO, TeamTotal, Own%
Sharp: chalk anchor (≥12% own), target avg own ~7–26%. Standard: softer own rules. Stack mix is set in Stack settings, not here.
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% |
|---|
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.
{ "players": [{ "name", "dk_points" }] } or { "Aaron Judge": 12.5 }
Name, FPTS or Name, Points