Skip to contents

ffsimulator (development version)


  • Update available fantasypros rankings to include 2022
  • Require ggplot2 3.4.0 for plotting features
  • Draws from a slightly broader sample of players for season outcomes

ffsimulator 1.2.3

CRAN release: 2023-02-12

Zero changes from 1.2.2 except needed a version bump to put it back on CRAN after ffscrapr got back on CRAN.

ffsimulator 1.2.2

CRAN release: 2022-10-19

One line of documentation changed. Yay.

ffsimulator 1.2.1

CRAN release: 2022-08-14

Update to add 2021 data to ranking history, minor bug fixes, and resolve CRAN documentation issues.


  • Patch if all weeks are bye weeks as zero
  • Bump minimum nflreadr version to 1.2.0 because of data repo location change.
  • Reorganize repo to use github flow
  • typo corrections in custom simulations vignette
  • Redocument and fix spacing for CRAN issues

Thank you to all who’ve provided feedback and contributions on this release, including: @bcarancibia, @maatspencer, @rogers1000, and @topfunky.

ffsimulator 1.2.0

CRAN release: 2021-12-21

This release of ffsimulator adds an experimental wins added calculation with ff_wins_added(), some cleanups, and try-handling to examples because apparently donttest doesn’t exist.

New features

  • ff_wins_added() runs the simulation as desired once, then calculates the net wins added for each player over a replacement level player.
  • ffs_add_replacement_level() adds replacement level players to every team that are essentially the lowest player at each position that is not currently rostered.
  • ff_simulate() and ff_simulate_week() gains a “return” parameter that controls elements to return - this provides more data so that wins_added can be calculated efficiently.


  • verbose argument primarily refers to the package option now.
  • Fix bye week handling for summarising actual schedule weeks by using inner join.

Immensely grateful to everyone who shared and used ffsimulator this year, and especially to @JoeSydlowski for helping to build out the logic for wins added.

ffsimulator 1.1.0

CRAN release: 2021-09-11

This release of ffsimulator adds new features and refactors a lot of the backend for improved calculation efficiency.

New features

  • ff_simulate_week() is a new function (and supporting internal function family) that simulates upcoming inseason weeks with daily-updated upcoming week ranks.
  • ff_simulate() gains an actual_schedule argument to simulate actual schedule + unplayed games.
  • ff_simulate() and ff_simulate_week() gain a verbose argument that is set ON by default and can also be turned off with options(ffsimulator.verbose = FALSE)
  • ffs_copy_template() helps build custom simulations by copying a template of starter code to a desired filepath.
  • Simulations now support kickers (you can thank SFB for that!) and gain a pos_filter argument.

Backend changes

Many backend changes - some are breaking (grimaces and points at the experimental badge).

  • Parallel options removed in favour of data.table options. BREAKING - parallel is gone.
  • Column assertions should be clearer on each error message.
  • Many functions, including ffs_optimise_lineups(), ffs_score_rosters(), and more are now written in data.table - this helps improve speed for all sizes of simulations.
  • injury_model argument is now renamed to gp_model. BREAKING - argument name changed.
  • autoplot() refactored to hide legend and axis titles via geom/scale and not via theme - this allows for much easier theming (since you can apply a whole new theme via +).
  • ffs_build_schedules() now matches syntax from ffscrapr::ff_schedule() - team is now franchise_id and opponent is now opponent_id - BREAKING - output column names changed.
  • ffs_build_schedules() is now responsible for joining franchises to the schedule, and not ffs_summarise_week(), and now takes a franchises dataframe as created by ffs_franchises() BREAKING
  • ffs_repeat_schedules() supports the actual_schedule feature by repeating it by n_seasons.
  • Print methods cleaned up.

Immensely grateful to everyone who used and shared the first release of this package - it’s been very motivating! Special thanks to @JoeSydlowski, @topfunky, @mrcaseb for their contributions and feedback.

ffsimulator 1.0.0

CRAN release: 2021-07-20

The ffsimulator package uses bootstrap resampling to run fantasy football season simulations supported by historical rankings and nflfastR data, calculating optimal lineups, and returning aggregated results.

This initial release introduces two major functions:

and also introduces a suite of subfunctions that power the main simulation, mostly prefixed with ffs_

Finally, this first version includes two dataframes:

  • fp_rankings_history provides historical expert consensus rankings from 2012-2020
  • fp_injury_table calculates the odds of a player playing in any given game

Other features developed for initial release include:

Features postponed to subsequent versions:

  • Progress bar for verbose output
  • Investigating speedup packages for higher volumes
  • Using real ff_schedules rather than simulated schedules
  • Support for kicker scoring