Sign in

SportsDataverse

@sportsdataverse.org
176 followers 25 following 56 posts

Building the network of people and open-source sports data packages to foster diversity and inclusion in sports analytics. Visit our site (sportsdataverse.org) or check our GitHub (github.com/sportsdataverse). Contact @saiemgilani.bsky.social for q's

PostsRepliesMedia
SportsDataverse @sportsdataverse.org · 09/09/2026
Four calls end to end: load a schedule with cfbfastR, map it, compute standings, seed the field. Three articles and the full reference: 📖 cfbseedR.sportsdataverse.org Thanks to Lee Sharpe and Sebastian Carl — the design is theirs, and nflseedR (@nflverse.com) is worth your time.
cfbseedr.sportsdataverse.org
cfbseedR • Simulate College Football Seasons
Functions to efficiently simulate and evaluate college football seasons, including conference standings, championships, and College Football Playoff seeding. Adapted from nflseedR.
022
SportsDataverse @sportsdataverse.org · 09/09/2026
Or just run the season. 138 FBS teams, 761 games, 51 of them played. cfb_simulations() splits the run into chunks and dispatches them through future, so a parallel plan spreads it across your cores. summary() returns a gt table grouped by conference.
A ten-panel chart titled 'Who wins each conference?', one panel per conference, showing each league's top five teams by championship probability over 10,000 simulations. James Madison leads the Sun Belt at 70 percent and Liberty Conference USA at 70; Miami the ACC at 63, Indiana the Big Ten at 45, Texas Tech the Big 12 at 43, UNLV the Mountain West and Toledo the MAC at 34, Washington State the Pac-12 at 31, South Florida the American at 28, and Texas the SEC at 21.
132
SportsDataverse @sportsdataverse.org · 09/09/2026
Which lets you ask what a rule change is actually worth. Take 10,000 simulated 2026 seasons and seed the same ones twice, once under each policy. 10 teams helped, 12 hurt. Miami gains 14 points of playoff probability purely from the ACC's guaranteed bid.
A diverging bar chart titled 'What the CFP's 2026 auto-bid rule actually changes'. Ten teams gain playoff probability under the 2026 policy and twelve lose it, versus the 2024-25 rule, over identical simulated seasons. Miami gains the most at +14 percentage points; SMU +4; Liberty loses the most at -3, with Toledo, South Florida, Western Michigan and Penn State at -2.
131
SportsDataverse @sportsdataverse.org · 09/09/2026
The Playoff's auto-bid policy is season-keyed too. autobid = "2026": the ACC, Big 12, Big Ten and SEC champions are in regardless of ranking, the best Group-of-6 team is in champion or not, and Notre Dame is in when ranked inside the field. autobid = "2025" keeps the old rule.
120
SportsDataverse @sportsdataverse.org · 09/09/2026
And the procedures are season-scoped. The ACC threw out its cascade for 2026 and replaced it with three steps, so cfbseedR stores dated epochs and resolves the right one from the season you're ranking. A conference that has published nothing uses a documented fallback.
130
SportsDataverse @sportsdataverse.org · 09/09/2026
The part that isn't nflseedR: college football has no single rulebook. Nine conferences ship with their OWN published procedure. The Mountain West leads with a metric composite, not head-to-head. The SEC ends on a capped scoring margin. The Big 12 counts total wins.
A chart titled 'Nine conferences, ten rulebooks' showing each conference's tiebreaker ladder as a column of coloured steps, top rung first. Most start with head-to-head; the Mountain West starts with a metric composite instead, the SEC ends on a capped scoring margin, the Big 12 counts total wins, and Conference USA includes an APR rung. The ACC appears twice — a six-rung cascade before 2026 and a three-rung one from 2026.
121
SportsDataverse @sportsdataverse.org · 09/09/2026
It's adapted from nflseedR (@nflverse.com) by Lee Sharpe and Sebastian Carl (@mrcaseb.com). Same architecture — standings, then conference ranks, then seeds; a week-by-week simulation with a pluggable results generator — rebuilt in college football's semantics.
A dark code card titled 'The whole workflow is four calls', showing R code: load a 2026 schedule with cfbfastR::load_cfb_schedules(), map it with cfb_games_from_schedule(), compute cfb_standings(), seed the field with cfb_playoff_seeds(autobid = "2026"), then run cfb_simulations() over 10,000 seasons under a parallel future plan.
121
SportsDataverse @sportsdataverse.org · 09/09/2026
🏈 cfbseedR is on CRAN. An R package to simulate college football seasons: standings, conference champions, and a seeded 12-team Playoff field — using each conference's own published tiebreaker procedure. Pairs with cfbfastR. install.packages("cfbseedR") Built by @saiemgilani.bsky.social
The cfbseedR hex logo: a dark navy hexagon with a gold border, the name cfbseedR in white, and a symmetric twelve-team playoff bracket drawn in slate and pale blue below it, converging on a gold diamond at the centre.
132
SportsDataverse @sportsdataverse.org · 02/09/2026
Under the hood it moved to an httr2 HTTP stack, and every function now documents a column-level returns table plus its quota cost — you know the shape and the price before you call it. 📖 oddsapiR.sportsdataverse.org/news/i…
oddsapir.sportsdataverse.org
Changelog
031
SportsDataverse @sportsdataverse.org · 02/09/2026
Odds live on the Python side too — sportsdataverse.odds, reading the same market data into polars.
121
SportsDataverse @sportsdataverse.org · 02/09/2026
Quiet markets no longer look like broken code: an event with no bookmaker lines yet returns a zero-row tibble carrying the documented schema, and an API error returns an empty tibble with a clear message instead of throwing.
130
SportsDataverse @sportsdataverse.org · 02/09/2026
toa_quota() reports your usage credits from the most recent request — remaining, used, and what the last call cost. The same values ride along on every returned tibble and print with it, so you always know where you stand against your plan.
120
SportsDataverse @sportsdataverse.org · 02/09/2026
Five new wrappers complete the v4 surface: toa_sports_events(), toa_event_markets(), toa_sports_participants(), toa_sports_events_history() and toa_event_odds_history() — in-play events, per-bookmaker market keys, participants, and historical snapshots.
121
SportsDataverse @sportsdataverse.org · 02/09/2026
🎲 oddsapiR 1.0.0 is on CRAN — the R client for The Odds API hits its first major release, and the stability milestone for the betting-data layer of the SportsDataverse. install.packages("oddsapiR") 📖 oddsapiR.sportsdataverse.org @saiemgilani.bsky.social #rstats
oddsapir.sportsdataverse.org
oddsapiR
Access Sports Odds Data from the Odds API
172
SportsDataverse @sportsdataverse.org · 01/09/2026
Plus ESPN MLB (100+ functions), ESPN college baseball, Fox Sports MLB, FanGraphs projections, situational splits, 11 model loaders, ggpitchzone(), and era-aware B-Ref standings. 38 issues closed. billpetti.github.io/baseballr/news/…
billpetti.github.io
Changelog
011
SportsDataverse @sportsdataverse.org · 01/09/2026
Its Python counterpart, sportsdataverse-py, carries the same ~43-endpoint Baseball Savant surface and the matching model loaders — same Statcast work, same published datasets.
110
SportsDataverse @sportsdataverse.org · 01/09/2026
mlb_pbp() overhaul: pre-2010 games parse again, pre-pitch counts are actually pre-pitch, base runners no longer leak across at-bats, and opt-in per-pitch base state — validated 4,388/4,388 pitches against Statcast's own columns.
110
SportsDataverse @sportsdataverse.org · 01/09/2026
Also new to Statcast: minor-league and World Baseball Classic search (they live on separate Savant routes), plus Savant's own pitch-type color palette for charts.
110
SportsDataverse @sportsdataverse.org · 01/09/2026
Statcast search now trusts Savant's own CSV headers instead of renaming columns by position. That kills a bug class which silently shifted your data six separate times over two years.
110
SportsDataverse @sportsdataverse.org · 01/09/2026
⚾ baseballr 2.0.0 is on CRAN, and it's a big one. install.packages("baseballr") 📖 baseballr.sportsdataverse.org @saiemgilani.bsky.social @billpetti.bsky.social #rstats
baseballr.sportsdataverse.org
Acquiring and Analyzing Baseball Data
Provides numerous utilities for acquiring and analyzing baseball data from online sources such as Baseball Reference <https://www.baseball-reference.com/>, FanGraphs <https://www.fangraphs.com/>, and the MLB Stats API <https://www.mlb.com/>.
163
SportsDataverse @sportsdataverse.org · 01/09/2026
We added 125 ESPN NHL functions in this release. Every open issue on the repo is now closed, some dating back to 2022. Thanks for the patience — and for the community PR that sharpened the rate-limit handling. Read more on all the changes: fastrhockey.sportsdataverse.org/new…
fastrhockey.sportsdataverse.org
Changelog
041
SportsDataverse @sportsdataverse.org · 01/09/2026
sportsdataverse-py reads the same HockeyTech feed, covering the PWHL plus 19 junior and minor leagues from one registry.
121
SportsDataverse @sportsdataverse.org · 01/09/2026
Junior and minor leagues too: AHL, OHL, WHL and QMJHL wrappers with on-ice Corsi/Fenwick/TOI analytics. And 24 new season loaders (13 NHL + 11 PWHL) put every published hockey dataset one call away.
121
SportsDataverse @sportsdataverse.org · 01/09/2026
PWHL was rewritten and expanded — players, leaders, transactions, playoff bracket, shift charts, xG play-by-play — plus fixes so pwhl_stats() finally honors the season and team you asked for.
132
SportsDataverse @sportsdataverse.org · 01/09/2026
The NHL surface moved to the modern api-web.nhle.com (the old statsapi is gone upstream) and brought friends: EDGE player tracking (33 functions), the Records API (25), Stats REST (13), and integrated xG models.
131
SportsDataverse @sportsdataverse.org · 01/09/2026
🏒 fastRhockey 1.0.0 is on CRAN — API stability, and very nearly a total rebuild. install.packages("fastRhockey") 📖 fastRhockey.sportsdataverse.org @saiemgilani.bsky.social #rstats
fastrhockey.sportsdataverse.org
fastRhockey
fastRhockey v1.0.0: Data and Tools for Professional Women's Hockey League (PWHL) and NHL play-by-play data.
133
SportsDataverse @sportsdataverse.org · 01/09/2026
Another 172 ESPN functions were added since last release, while adding a full coverage wrapper for the CollegeBasketballData.com API (s/o @collegefootballdata.com), as well as a handful of other providers. Read more on all of the changes here: hoopr.sportsdataverse.org/news/inde…
hoopr.sportsdataverse.org
Changelog
022
SportsDataverse @sportsdataverse.org · 01/09/2026
NBA and MBB crosswalks link ESPN, NBA Stats, KenPom, Bart Torvik and Fox Sports on a shared key, so identities line up across every source hoopR touches. As with wehoop, the same engine and the same datasets are there in sportsdataverse-py if Python is where you work.
131
SportsDataverse @sportsdataverse.org · 01/09/2026
Expanded NBA Stats API coverage for every season type published to the data releases. Model-dataset loaders round it out: player impact across 30 seasons (including NBA RAPM), possession-engine outputs, and play-context filters. Very much a work in progress, do not go around quoting these values.
121
SportsDataverse @sportsdataverse.org · 01/09/2026
The full NCAA men's basketball family: play-by-play with lineups, possessions and stints, shots back to 2019, box scores, rosters and schedules. League-wide NCAA MBB RAPM across 17 published seasons.
131
SportsDataverse @sportsdataverse.org · 01/09/2026
🏀 hoopR 3.1.0 is on CRAN — men's basketball keeps pace with its sister package. install.packages("hoopR") 📖 hoopr.sportsdataverse.org @saiemgilani.bsky.social #rstats
hoopr.sportsdataverse.org
hoopR • Data and Tools for Men's Basketball
A collection of data and a R package designed for men's basketball!
173
SportsDataverse @sportsdataverse.org · 01/09/2026
We added 159 ESPN functions and a couple new data providers since the last release. Undoubtedly there will be kinks to smooth over in the API. There are a couple new articles to check out, too. Read more in-depth about all the changes here: wehoop.sportsdataverse.org/news/ind…
wehoop.sportsdataverse.org
Changelog
021
SportsDataverse @sportsdataverse.org · 01/09/2026
New crosswalks link ESPN, the WNBA Stats API, Fox Sports and Bart Torvik team/game/player identities on one key — the end of hand-mapping team names between sources.
121
SportsDataverse @sportsdataverse.org · 01/09/2026
The same NCAA engine — play-by-play to lineups to possessions to RAPM — runs in sportsdataverse-py, over the same published datasets.
121
SportsDataverse @sportsdataverse.org · 01/09/2026
Plus league-wide NCAA WBB RAPM: regularized adjusted plus-minus for all of Division I across 16 published seasons, and expanded WNBA Stats coverage with model-dataset loaders.
131
SportsDataverse @sportsdataverse.org · 01/09/2026
The full NCAA women's basketball family is here: play-by-play with reconstructed 5-player lineups, shot context, possessions, stints, on/off splits and box scores — 2010 to today, one loader call each.
121
SportsDataverse @sportsdataverse.org · 01/09/2026
🏀 wehoop 3.0.0 is on CRAN. Women's basketball data in R levels up. install.packages("wehoop") 📖 wehoop.sportsdataverse.org @saiemgilani.bsky.social #rstats
wehoop.sportsdataverse.org
wehoop • Data and Tools for Women's Basketball
A collection of data and a R package designed for women's basketball!
165
SportsDataverse @sportsdataverse.org · 29/08/2026
And if you'd rather just watch the numbers than compute them — next thread. 👇
020
SportsDataverse @sportsdataverse.org · 29/08/2026
All of it is in the next CRAN submission. Sorry for the split — enjoy Week 1. 🏈 📖 cfbfastR.sportsdataverse.org/news/i…
cfbfastr.sportsdataverse.org
Changelog
121
SportsDataverse @sportsdataverse.org · 29/08/2026
Or take everything now: remotes::install_github("sportsdataverse/cfbfastR") The GitHub build is now numbered 3.0.0.9000, so packageVersion() tells you which you're on — until today both reported 3.0.0 while returning different EPA/WPA.
120
SportsDataverse @sportsdataverse.org · 29/08/2026
What to do the next couple weekends: use the loaders. load_espn_cfb_pbp() already reads published data carrying the updated models and columns, and load_cfb_pbp() will soon. Hold off on compiling pbp from scratch unless you want the older model on purpose.
120
SportsDataverse @sportsdataverse.org · 29/08/2026
The bad news, and it's mine to own: I rushed the CRAN submission and the updated models didn't make it in. The CRAN build still computes the previous model generation. Compile pbp yourself right now and your EPA/WPA won't match what the loaders return.
120
SportsDataverse @sportsdataverse.org · 29/08/2026
That branch also adds cp/cpoe, spread-aware vegas_wp, xpass/pass_oe, fourth-down and two-point decision surfaces, and create_qbr() — plus a fix for the failure that made epa_wpa = TRUE unusable for 2006–2013.
120
SportsDataverse @sportsdataverse.org · 29/08/2026
🏈 Good news / bad news for anyone computing CFB EPA/WPA themselves this weekend. Worth two minutes before today's kickoffs. Good news: on GitHub, EP and WP now load from the shared cfb_model_artifacts bundle — the same artifact sportsdataverse-py scores with.
122
SportsDataverse @sportsdataverse.org · 29/08/2026
One caveat on the EPA/WPA models if you're building play-by-play yourself this weekend — next thread. 👇
020
SportsDataverse @sportsdataverse.org · 29/08/2026
Every one of those loaders has a twin in sportsdataverse-py reading the same published files — the R and Python loader surfaces were built to mirror each other.
120
SportsDataverse @sportsdataverse.org · 29/08/2026
Nothing is deprecated. Existing code keeps working, and you now choose from three play-by-play sources: classic (FBS 2014+), ESPN (2004+), and NCAA including FCS (2013+). 📖 cfbfastR.sportsdataverse.org
cfbfastr.sportsdataverse.org
cfbfastR • Data and Tools for College Football
A collection of data and a R package designed for college football!
121
SportsDataverse @sportsdataverse.org · 29/08/2026
48 new full-season loaders now cover every published release dataset: 27 ESPN datasets back to 2004, ratings, talent, recruiting and crosswalks, plus 10 stats.ncaa.org datasets — including FCS play-by-play.
120
SportsDataverse @sportsdataverse.org · 29/08/2026
The play-by-play EPA/WPA engine was rebuilt as one shared modular engine behind cfbd_pbp_data_v2() and espn_cfb_pbp_v2() — penalty enforcement resolution, player IDs, and output tiers all included.
120
SportsDataverse @sportsdataverse.org · 29/08/2026
ESPN college football coverage went from 8 wrappers to 73: players, teams, games, play-by-play, FPI, QBR, recruiting and futures. There's a new Fox Sports layer too (fox_cfb_*).
120