fantasyfbFantasy football league simulation and optimization toolkit. Pulls projections from nflverse data, syncs roster state from a Yahoo Fantasy league, and runs Monte Carlo season simulations to value pickups, trades, and draft picks. |
Docs: https://tefirman.github.io/fantasyfb/
Install
pip install fantasyfb
For local development:
git clone https://github.com/tefirman/fantasyfb.git
cd fantasyfb
pip install -e ".[dev]"
Python 3.10+ is required.
Quickstart
import fantasyfb as fb
league = fb.League(name="My Team")
schedule_sim, standings_sim = league.season_sims(postseason=True)
print(standings_sim[["team", "wins_avg", "playoffs", "winner"]])
fb.League(name=...) reads from the Yahoo Fantasy API, so you'll need
oauth2.json (and .env with CONSUMER_KEY / CONSUMER_SECRET) set
up alongside the script. See the
yahoo_oauth docs for a
walkthrough.
Command-line tools
After install, four entry points are on your PATH:
| Command | Source | Use |
|---|---|---|
fantasyfb |
fantasyfb.league:main |
Weekly projections + lineup analysis |
snake-draft |
fantasyfb.drafts.snake:main |
Live snake-draft cockpit |
salary-cap-draft |
fantasyfb.drafts.salary_cap:main |
Live salary-cap (auction) draft tool |
draft-prep |
fantasyfb.drafts.prep:main |
Pre-draft tiers / VORP / mocks |
# Weekly run for a team
fantasyfb --team "My Team" --sims 1000 --adds --drops
# Pre-draft analytics
draft-prep tiers --team "My Team"
draft-prep mock --team "My Team" --adp ADP.csv --my-pick 7 --sims 50
# Draft-day cockpit
snake-draft --team "My Team" --adp ADP.csv
salary-cap-draft --team "My Team"
Run any command with --help for the full option list.
NFL data (stats, schedules, rosters) is cached to disk for 24 hours, so
repeated runs within that window work offline. Past the 24h mark you'll
need a live connection again to refresh the cache — see
nflreadpy caching for details
and the --refresh-cache flag.
Public API
from fantasyfb import (
League, # main entry point
FantasyScorer, # scoring rules -> points
MatchupModel, ProjectionEngineV2, # projection internals
LineupOptimizer,
SeasonSimulator, ScheduleManager,
NflreadpyProvider, # default data backend
)
Lower-level utilities live in submodules and can be imported directly:
from fantasyfb.drafts.tools import compute_vorp, assign_tiers, MockDraft
from fantasyfb.drafts.snake_cockpit import build_board, view_best
from fantasyfb.sim.backtest import run_backtest, evaluate
from fantasyfb.io.excel_exporter import FantasyExcelExporter
| Subpackage | Purpose |
|---|---|
fantasyfb.league |
Top-level League class |
fantasyfb.configs |
League / scoring presets |
fantasyfb.drafts |
Snake, salary-cap, prep, shared draft math |
fantasyfb.data |
Yahoo client + nflverse providers |
fantasyfb.scoring |
Scoring, lineup optimization, matchups |
fantasyfb.projections |
V2 projection engine, walk-forward fitter |
fantasyfb.sim |
Season simulation, backtests, schedule |
fantasyfb.analysis |
WAR, move analysis |
fantasyfb.io |
Excel export |
Development
pip install -e ".[dev]"
pytest # full test suite
python -m build # produce sdist + wheel under dist/
The tests/ directory pulls a small slice of nflverse parquet data on
first run; subsequent runs are cached locally.
License
MIT. See LICENSE.
Metadata
Release files for fantasyfb 0.9.0
For a detailed explanation of source distributions (sdists) and built distributions (wheels), please see the package formats documentation.
Source distribution (sdist)
| File | Size | Uploaded | |
|---|---|---|---|
| fantasyfb-0.9.0.tar.gz | 210.9 kB | Details |
Built distribution (wheel)
| File | Interpreter | ABI | Platform | Reset |
|---|---|---|---|---|
| fantasyfb-0.9.0-py3-none-any.whl | Python 3 | none | any | Details |
Total release size: 360.6 kB
Release files / fantasyfb-0.9.0.tar.gz
| Download URL | fantasyfb-0.9.0.tar.gz |
|---|---|
| Size | 210.9 kB |
| Tags | Source |
|
SHA-256 checksum How to use checksums |
81bc6a5ad041c7ba3a03716835a8b3e83d73f6c86eaf16169ec120fa7db8c5ed
|
|
BLAKE2b-256 checksum How to use checksums |
0df21a1e25d7e4f43bb53563ac7ef987cc440eb662a98f4cc7a182bbbd76b495
|
| Upload date | |
|
Uploaded using Trusted Publishing? What is trusted publishing? |
Yes |
| Uploaded via |
twine/7.0.0 CPython/3.13.14
|
Provenance
Provenance describes where a file came from. On PyPI, provenance is shared via attestations, which provide a verifiable record of the build or publishing details. View details, limitations and caveats.
PyPI Publish Attestation
PyPI verified that this artifact, at this checksum, originated from the publisher listed below.
Signed by GitHub Actions, verified by PyPI on Sep 16, 2026.
Transparency logRelease files / fantasyfb-0.9.0-py3-none-any.whl
| Download URL | fantasyfb-0.9.0-py3-none-any.whl |
|---|---|
| Size | 149.7 kB |
| Tags | Python 3 |
|
SHA-256 checksum How to use checksums |
9d0b3f1c2f805249d2742b02ec4f31d36ae048785c8fef2adfbfdf1d06c97de0
|
|
BLAKE2b-256 checksum How to use checksums |
0e9afe2d4f480af225bde78fb5b7a1b426e5144594f52a9e9caa0ffb27606474
|
| Upload date | |
|
Uploaded using Trusted Publishing? What is trusted publishing? |
Yes |
| Uploaded via |
twine/7.0.0 CPython/3.13.14
|
Provenance
Provenance describes where a file came from. On PyPI, provenance is shared via attestations, which provide a verifiable record of the build or publishing details. View details, limitations and caveats.
PyPI Publish Attestation
PyPI verified that this artifact, at this checksum, originated from the publisher listed below.
Signed by GitHub Actions, verified by PyPI on Sep 16, 2026.
Transparency log