cfbseedR

Functions to efficiently simulate and evaluate college football seasons: standings with a documented tiebreaker cascade, conference champions, College Football Playoff (CFP) seeding, and week-by-week season simulation with a pluggable results generator.

cfbseedR is adapted from nflseedR (MIT) by Lee Sharpe and Sebastian Carl of the nflverse, and is part of the SportsDataverse.

Data freshness and pipeline status for every SportsDataverse dataset: sportsdataverse.org/status.

Installation

Install the released version of cfbseedR from CRAN with:

install.packages("cfbseedR")

Or install the development version from GitHub with:

# install.packages("remotes")
# remotes::install_github("sportsdataverse/cfbseedR")
install.packages("cfbseedR", repos = c('https://sportsdataverse.r-universe.dev', 'https://cloud.r-project.org'))

Quickstart

library(cfbseedR)

# Bundled toy season (9 teams, 2 conferences + 1 independent)
games <- cfb_games_example
teams <- cfb_teams_example

# Standings with conference ranks and champions
standings <- cfb_standings(games, teams, tiebreaker_depth = "POINTS")

# Simulate a season 100 times (blank results are simulated)
games$result[games$week >= 3] <- NA
set.seed(42)
sim <- cfb_simulations(games, teams, simulations = 100, playoff_seeds = 4)
sim$overall

# Pretty gt summary, grouped by conference.
# Needs the optional presentation packages: install.packages(c("gt", "scales"))
summary(sim)

# Spread the simulations across cores
# future::plan("multisession")
# sim <- cfb_simulations(games, teams, simulations = 10000, chunks = 8)

# Real data via cfbfastR (Suggests; the engine itself needs no cfbfastR)
# sched <- cfbfastR::load_cfb_schedules(2024)
# games <- cfb_games_from_schedule(sched)

See the Getting started article for a full walkthrough and Simulating seasons for custom compute_results functions, the tiebreaker ladder, and CFP-12 seeding rules.

Function naming convention

Following the SportsDataverse convention, the engine’s user-facing exports are prefixed with cfb_: cfb_standings(), cfb_playoff_seeds(), cfb_simulations(), and cfb_games_from_schedule(). Two helpers mirror their nflseedR namesakes instead: cfbseedR_compute_results() (the default results generator, after nflseedR_compute_results()) and simulations_verify_fct() (the custom-generator contract checker).

CFB semantics

Documented simplifications vs. real CFB / nflseedR

Attribution

The architecture (standings init → conference ranks → seeds; week-loop simulation with pluggable compute_results; ELO-based default results generator) is a direct adaptation of nflseedR (MIT), Copyright (c) Lee Sharpe and Sebastian Carl. Huge thanks to them and the broader nflverse team for the original design.

Our Authors

Cheat sheet

A printable one-page reference covering cfbplotR, cfb4th and cfbseedR — the function families, the loaders, and what each one returns.

📄 Download the cfbseedR cheat sheet (PDF)

Free to download, print and hand out; light and dark, US Letter landscape. Every SportsDataverse package has one — browse them all at sportsdataverse.org/cheatsheets.

Citations

To cite the cfbseedR R package in publications, use:

BibTeX Citation

@misc{gilani_cfbseedR,
  author = {Saiem Gilani and Sebastian Carl and Lee Sharpe},
  title = {cfbseedR: The SportsDataverse's R Package to Simulate and Evaluate College Football Seasons.},
  url = {https://cfbseedR.sportsdataverse.org/},
  year = {2026}
}

If you use the season-simulation methodology, please also cite nflseedR by Sebastian Carl and Lee Sharpe.

Follow the SportsDataverse

cfbseedR is part of the SportsDataverse.

Related packages:

X Follow

GitHub stars

Star history of sportsdataverse/cfbseedR