nflseedR (development version)
- Added new function
nfl_regular_season()which computes regular season matchups based on previous season standings and NFL regular season rules. (#64) - Changed home field elo point adjustment in
nflseedR_compute_results()from 20 points to 45 points, which reflects roughly 1.8 actual points in home field advantage. (#65) -
nfl_simulations(),nfl_standings(), andnflseedR_compute_results()are significantly faster thanks to efficiency optimization. (#66) -
nfl_simulations()gains the argumentreturn_games. Set it toFALSEto drop the tablesgamesandgame_summaryfrom the output and save a lot of memory if you only need standings. -
nfl_simulations()starts faster and sends much less data to parallel workers, so small simulations no longer spend most of their time preparing chunks and parallel plans scale better. It also checks team abbreviations andplayoff_seedsbefore it starts simulating. -
nfl_standings()computes standings with a new C++ engine. It is 18 to 46 times faster than before and no longer aborts with “Entered infinite loop in draft tiebreaking procedure” when many teams are tied for draft picks. Ties decided by coin toss use R’s random number generator differently, so results with a givenset.seed()differ from previous versions. -
nfl_standings()follows the NFL tiebreaking rules more closely: only one team advances per tiebreaking step in division ties, the remaining teams restart at the first step; conference and draft ties use common games only if the tied teams have at least four common opponents; draft ties go on to combined points ranking and net points after strength of victory and respecttiebreaker_depth; two separately tied groups in one division are no longer mixed in the combined points ranking step. -
nfl_standings()ranks teams with the same win percentage by net wins (wins minus losses) while teams have played a different number of games, like the official NFL standings during the season (e.g. 2-0 ahead of 1-0, 0-0 in division games ahead of 0-1). After the final regular season week, only win percentages count. -
nfl_standings()always returns the*_tie_broken_bycolumns of the requestedranksand no longer returns a straytied_forcolumn withtiebreaker_depth = "RANDOM". -
nfl_standings()ignoresplayoff_seedsifranks = "DRAFT"because draft ranks need all conference ranks. -
nfl_standings()returnsNAdivision, conference and draft ranks for a season until every team has played a game. -
nfl_standings()errors on team abbreviations other than the 32 current ones (e.g."STL","SD","OAK","LAR"). Usenflreadr::clean_team_abbrs()to convert old abbreviations. -
nfl_standings()errors iftiebreaker_depth = "POINTS"butgameshas no scores.
nflseedR 2.0.2
CRAN release: 2025-11-16
- Changed css styling of images in package documentation by CRAN request. (#61)
nflseedR 2.0.1
CRAN release: 2025-08-18
-
nflseedR_compute_results()correctly adjusts Elo difference for postseason games. (#54) -
nfl_standings()returnsexitvalue consistent withnfl_simulations()if argumentranks = "DRAFT". (#56) -
nfl_standings_prettify()showsexit(if available). (#56) -
nfl_standings()now warns the user when thegamesargument includes both"season"and"sim"to avoid confusion. (#58)
nflseedR 2.0.0
CRAN release: 2025-03-24
This is a major release that introduces a new generation of high efficient standings and simulation code
New Features
- New function
nfl_standings()for high efficient standings calculation. The functionscompute_division_ranks(),compute_conference_seeds(), andcompute_draft_order()will be deprecated in a future release. (#45) - New function
nfl_simulations()for a new, highly efficient approach to season simulations. This is a completely new design of the simulator, with the aim of achieving significantly faster run times and eliminating weaknesses in the old approach (insimulate_nfl()). The introduction of this function is supplemented by the two new utility functionsnflseedR_compute_results(), andsimulations_verify_fct(). These functions form the new standard for computing results (if the user does not have their own function for this) respectively allow verification of the functionality of their own functions instead ofnflseedR_compute_results(). It is planned thatsimulate_nfl()will be deprecated in a future release so that the dependencies of nflseedR can be significantly reduced. (#47) - New function
nfl_standings_prettify()computes agt::gt()table of the output created withnfl_standings(). (#49)
Bug Fixes and Minor Improvements
-
nfl_standings()now supportstiebreaker_depth = "POINTS"which breaks ties using combined point ranks and point differentials. This means that all tiebreakers except net touchdowns are now implemented. (#47) - Fixed a bug in
nfl_standings()where the tie breaking procedure didn’t restart correctly after some teams were eliminated while some others remained tied. (#47) - The
summarymethodsummary.nflseedR_simulation()explicitly sets the columns width of the logo column because those columns are hidden in some unclear scenarios. - The
summarymethodsummary.nflseedR_simulation()now requires gt version v0.9.0 or higher to avoid warnings about deprecated arguments. - Fixed error in
simulate_nfl()where it crashes because the “fake schedule” isn’t a tibble. (#43) - The function
load_sharpe_gameshas been deprecated. It was replaced a fairly long time ago bynflreadr::load_schedules(). (#47) - nflseedR now requires R 4.1 to allow the package to use R’s native pipe
|>operator. This follows the Tidyverse R version support rules. (#48)
nflseedR 1.2.0
CRAN release: 2023-01-05
-
simulate_nfl()gained the new argumentsim_includeto allow more access to what is actually being simulated. This makes it possible skip playoff simulation or the (possibly heavy) computation of draft order. (#34) - The
summarymethodsummary.nflseedR_simulation()now hides columns where all values areNA. This is useful ifsimulate_nfl()skips the postseason or draft order. The method also re-formats the number of simulations in the subtitle, e.g. from “10000” to “10k” (this requires scales >= 1.2.0, but it is a good idea to update scales anyways). (#35) -
simulate_nfl()now uses data.table to combine simulation rounds data. This is a significant performance improvement. The returned list"sim_params"now includes the package version of nflseedR (for debugging) and the current system time when the simulation was finished. (#36) - Lots of internal improvements to reduce package dependencies and messaging. (#36)
- The
summarymethodsummary.nflseedR_simulation()now usesfmt_pct_special()to format probability strings to avoid the impression of overconfidence by rounding to integer percentages. (#37)
nflseedR 1.1.0
CRAN release: 2022-07-07
- Added the data frame
game_summaryto the output ofsimulate_nfl()which aggregates matchups across all simulated seasons (#24) - Updated the description of some variables in
load_sharpe_games()(#24) - The output of
simulate_nfl()is now of classnflseedR_simulationwhich allows the implementation of asummary()method that computes agt()table of the simulation summary data frame. (#26) - The standings data frame calculated by
compute_division_ranks()now outputs losses and ties as well. (#27)
nflseedR 1.0.2
CRAN release: 2021-04-10
- Improved error handling of the function
load_sharpe_games()for CRAN tests
nflseedR 1.0.1
CRAN release: 2021-03-31
Added support for a fake schedule for simulating the upcoming season before the NFL has released the official schedule.
updated the documentation of the function
load_sharpe_games()with the new columnsaway_qb_id,home_qb_id,away_qb_nameandhome_qb_name.
