salary-cap-draft¶
Interactive salary-cap (auction) draft cockpit (V2). Loads your league
from Yahoo or Sleeper, or synthesizes a fully mock league with no
real platform (--platform generic, the default), builds a board
with VORP-driven dollar values + market inflation, and presents a
snake-parity REPL: nomination drain-score, hypothetical bid analysis,
per-team budget tracking, and an auto-pilot mock simulator. Persists
pick history to a CSV so you can pause and resume.
Usage¶
The first time it asks whether you want to use your Yahoo/Sleeper
team names or customize them (skipped for --platform generic, which
has no real team names to offer); subsequent resumes pick up team
names from the in-progress CSV.
Common recipes¶
# Live mock auction from scratch, default $200 cap (--platform generic,
# 12 teams, PPR scoring -- prompts for both if not passed)
salary-cap-draft --team "My Team"
# Custom cap and minimum bid
salary-cap-draft --team "My Team" --salary-cap 300 --min-bid 2
# Mock auction with a specific team count and scoring system
salary-cap-draft --team "My Team" --num-teams 10 --mock-scoring half_ppr
# Draft against your real Yahoo league instead of a mock
salary-cap-draft --team "My Team" --platform yahoo
# Pre-draft for an upcoming season (--platform yahoo)
salary-cap-draft --team "My Team" --platform yahoo --season 2026
# Draft against a Sleeper league instead
salary-cap-draft --team "My Team" --platform sleeper --sleeper-league-id 123456789
# Mock-draft against a Sleeper league that's already mid-season (its real
# rosters would otherwise look like keepers)
salary-cap-draft --team "My Team" --platform sleeper --sleeper-league-id 123456789 --fresh-draft
# Keeper league: CSV with name,fantasy_team,salary (last year's price)
# Final keeper price = salary + --keeper-surcharge (default $5)
salary-cap-draft --team "My Team" --keepers keepers.csv
# Resume a paused draft
salary-cap-draft --team "My Team" --inprogress DraftProgressSalaryCap.csv
Required flags¶
| Flag | Meaning |
|---|---|
--team |
Team to draft for — Yahoo team name (--platform yahoo), the Sleeper team/manager display name (--platform sleeper), or whatever you want to call your team (--platform generic) |
Common flags¶
| Flag | Default | Meaning |
|---|---|---|
--salary-cap |
200 | Per-team auction cap |
--min-bid |
1 | Minimum bid per player |
--season |
most recent completed | Yahoo season year. Pass explicitly before the season starts (e.g. --season 2026 in May 2026). Ignored with --platform sleeper/generic — neither is tied to a real, season-scoped league |
--platform |
generic |
Fantasy platform backend: yahoo, sleeper, or generic (fully synthetic mock draft, no real league — see issue #47) |
--sleeper-league-id |
— | Numeric Sleeper league ID (from the league URL). Required with --platform sleeper |
--num-teams |
12 | Number of teams for a --platform generic mock draft. Prompted for interactively if not given |
--mock-scoring |
ppr |
Scoring system for a --platform generic mock draft: standard, half_ppr, or ppr. Prompted for interactively if not given |
--roster-spots |
fixed default shape | Custom roster shape for a --platform generic mock draft, as comma-separated POSITION=COUNT pairs, e.g. QB=1,RB=2,WR=2,TE=1,W/R/T=1,K=1,DEF=1,BN=7 (flex codes: W/T, W/R/T, Q/W/R/T for superflex). Prompted for interactively if not given |
--fresh-draft |
off | Ignore each team's current roster and treat every player as available, instead of preserving it as a keeper — useful for mock-drafting a Sleeper league that already has real, mid-season rosters |
--keepers |
— | Path to keepers CSV. Columns: name, fantasy_team, salary (last year's winning price) |
--keeper-surcharge |
5 | Dollars added to each keeper's last-year salary. Set to 0 to treat the CSV salary as the final keeper price |
--exclude |
— | Comma-separated player names to filter out of views |
--inprogress |
— | Path to a DraftProgressSalaryCap.csv from a paused draft. Also accepts the legacy V1 format (salary column) |
--output |
DraftProgressSalaryCap.csv (or --inprogress path) |
Where to save the running pick log |
--payouts |
— | Comma-separated 1st/2nd/3rd payouts |
--refresh-cache |
off | Bypass the local nflreadpy cache and force a fresh download of stats/schedule/roster data for this run (see caching) |
View tuning¶
| Flag | Default | Meaning |
|---|---|---|
--limit-per-position |
5 | Rows per position in the best view |
--nominate-limit |
10 | Rows in the nominate drain-score view |
--simadd-limit |
3 | Default players per position simulated by simadd (also prompted per-run) |
Interactive commands¶
Once running, the prompt accepts:
| Command | What it does |
|---|---|
<player name> |
Tab-completes; starts a real nomination — prompts for winning team and bid |
best |
Top-N per position by need-adjusted VORP, with salary_value, inflated_value, and max_my_bid |
nominate |
Drain-score ranking: high market value, low fit for you (nominate these to drain opponents' budgets) |
whatif |
Re-rank best after a hypothetical bid on a given player |
lookup |
Detailed view of one player (drafted or available) |
roster |
My Team's picks with bids paid |
budgets |
Per-team budget status — remaining $, slots filled, max bid |
exclude |
Add a player to the per-session exclude list |
sim |
Run a full season simulation with current rosters |
simadd |
Sim top-N available per position, each at its max_my_bid; ranks by win/playoff/earnings delta from baseline |
random |
Auto-simulate one nomination + bidding round (Vickrey-style) |
random til full |
Auto-simulate the rest of the draft to completion |
go back |
Revert the previous pick |
help |
Full command list |
exit |
Quit (progress is already saved on every pick) |
Tab completion is on for player names and team names where applicable.
Keeper CSV format¶
salaryis last year's winning price. The actual keeper cost charged against the team's cap issalary + --keeper-surcharge(default+$5).fantasy_teamaccepts your original Yahoo team name as an alias forMy Team(the CLI renames your team during setup).- Cap validation fires at startup: if a team's total keeper spend
would leave fewer dollars than they need to fill remaining slots
at
--min-bid, the CLI hard-errors with a fix-up message before the draft begins.
Output¶
DraftProgressSalaryCap.csv is rewritten on every pick (columns:
name, fantasy_team, winning_bid). To resume after a crash, pass
it via --inprogress. The format is stable; rotating between
machines mid-draft works as long as you keep the file in sync.
Legacy V1 progress files (with salary instead of winning_bid) are
accepted automatically — the column is renamed transparently on load.
See also¶
snake-draft— snake-draft cockpit; the salary-cap side mirrors its UX.draft-prep— run before the draft for tiers, values, and VORP.- API:
fantasyfb.drafts—compute_salary_values,MockSalaryCapDraft,backtest_salary_values, salary-cap cockpit views.