Sign in

Sebastian Carl

@mrcaseb.com
1.6K followers 282 following 590 posts

Football 🏈 in the #nflverse | #rstats | #dataviz | #engineering | Justin Herbert is Elite mrcaseb.com

PostsRepliesMedia
Sebastian Carl @mrcaseb.com · 22/09/2026
Also released minor update nflplotR v1.7.0 with the latest rebrandings of the Rams and Titans.
030
Sebastian Carl @mrcaseb.com · 22/09/2026
Full changelog nflfastr.com/news/index.h...
nflfastr.com
Changelog
010
Sebastian Carl @mrcaseb.com · 22/09/2026
🚨🚨 UPDATE RELEASED 🚨🚨 nflfastR package 📦 v6.0.0 is now live on CRAN. Updates include -- a completely revamped database function update_pbp_db, -- full support for 2026 pbp data, -- various bugfixes, and -- lots of improvements to the stats function calculate_stats()
nflfastR 6.0.0
CRAN release: 2026-09-18

New
Added new function update_pbp_db(), a fresh approach to the database helper. (#544)
Breaking changes and deprecation
nflfastR stopped supporting the 1999 and 2000 seasons because of inconsistent data sources. Data is still available through load_pbp() but we will not fix any issues related to those old seasons anymore. It’s possible to install nflfastR v5.2.0 (with pak::pak("nflverse/nflfastR@v5.2.0")) to parse those seasons if necessary. (#568)
nflfastR now loads raw play-by-play data from season based releases in the nflverse/nflverse-pbp GitHub repository. The legacy repository nflverse/nflfastR-raw is deprecated and won’t update in future seasons. This means that previous nflfastR versions won’t be able to download 2026+ seasons! (#589)
The legacy player stats functions calculate_player_stats*() have been deprecated in 2024 with the release of nflfastR 5.0. They are now defunct and calling them will throw an error. (#590)Minor changes and improvements
Added "game_id" to the output calculate_stats() if summary_level == "week". (#566)
Fixed a bug where fixed_drive did not increment after a muffed blocked field goal attempt. Yes this happened in "2025_10_NO_CAR", play id 2504. (#567)
Implemented a fresh approach to compute play_type based on play_type_nfl for faster and more consistent output. (#568)
Fixed a bug where nflfastR overwrote the kickoff_attempt variable in the event of a penalty on a kickoff. (#569)
Added various definitions of ‘explosive’ plays to the output of calculate_stats(). It counts passes, runs, and receptions with 10+, 20+, 40+ yards gained as well as 12+ yard runs and 16+ yard passes. (#573)
Added several punting stats to the output of calculate_stats(). (#574)
Added overall fumble counters to the output of calculate_stats() because it was missing some edge case fumbles on offense. (#575)
The play_type variable now possibly shows "pass" or "run" on 2 point conversion plays with a post-snap penalty enforced between downs. This is different from play_type_nfl (which will show "PENALTY" in these cases). (#579)
Fixed bug where calculate_stats() counted fumble recoveries in fumble_recovery_yards_own and fumble_recovery_yards_opp instead of the corresponding yards. (#584)
Fixed bug where calculate_stats() counted some blocked punts as punt attempts that officially do not count as punt attempts. (#584)
Fixed bug where calculate_stats() overcounted first downs in some edge cases. (#587)
Updated teams_colors_logos after 2026 Titans and Rams rebrandings. (#592)
Added defensive blocked kicks and 2 point attempts to the output of calculate_stats(). (#596)
Fixed bug that led to missing pbp related team stats in calculate_stats() because an internal function did not standardize team abbreviations. (#599)
Thank you to @jdpretorius123, @JoeMarino2021, @lancejames35, @naymikm, @rayrosales66, and @TheMathNinja for their questions, feedback, and contributions towards this release.
172
Sebastian Carl @mrcaseb.com · 22/09/2026
I wonder where the Saints will be in this in a couple weeks
020
Sebastian Carl @mrcaseb.com · 13/09/2026
It's so beautiful tbh
010
Sebastian Carl @mrcaseb.com · 13/09/2026
Almost 100% series conversion rate, sounds like you are right
120
Sebastian Carl @mrcaseb.com · 09/09/2026
And to all nflfastR users: you’ll need the current development version to access 2026 data! The CRAN version won’t work. We didn’t release to CRAN because we‘d like to fix potential 2026 issues before a new release.
011
Sebastian Carl @mrcaseb.com · 09/09/2026
PSA: The first game of the year is always a wildcard for #nflverse. Please be patient if you try to access play-by-play data. I am fairly confident that our pipeline works but I can’t guarantee.
283
Sebastian Carl @mrcaseb.com · 09/09/2026
It does account for neutral site games but nothing else.
010
Sebastian Carl @mrcaseb.com · 09/09/2026
Using the market implied team strength, we can also plot each team's opponent team strength over their schedule. I know this viz is overkill but it's fun to look at
081
Sebastian Carl @mrcaseb.com · 09/09/2026
Happy #NFL kickoff day! I looked at the betting markets and determined the implied probabilities of season outcomes, team ratings and strength of schedule. For more details and full text see mrcaseb.com/posts/nfl_te...
A table of implied NFL betting market probabilities of season outcomes, team ratings and strength of schedule before the start of the 2026 season.
282
Reposted by Sebastian Carl
Sebastian Carl @mrcaseb.com · 04/09/2026
🏈 2026 NFL Cap Texture 🏈 @overthecap.bsky.social flipped the switch to 53 player rosters and I summarized their cap texture breakdowns. I like this viz because it shows how teams spread their money. The viz is sorted by cap space. For more details and full text see mrcaseb.com/posts/nfl_ca...
A stacked bar chart where the differently colored bars show how much percent of the salary cap each NFL team spends on rookie, low figure, middle, high, and elite figure contracts as well as dead cap and cap space.A table shows how much percent of the salary cap each NFL team spends on rookie, low figure, middle, high, and elite figure contracts as well as dead cap and cap space.
0122
Sebastian Carl @mrcaseb.com · 04/09/2026
I wonder how this year's Dolphins stack up historically. It can't have happened very often that 60% of the cap is taken up by dead money, can it? #NFL
040
Sebastian Carl @mrcaseb.com · 04/09/2026
🏈 2026 NFL Cap Texture 🏈 @overthecap.bsky.social flipped the switch to 53 player rosters and I summarized their cap texture breakdowns. I like this viz because it shows how teams spread their money. The viz is sorted by cap space. For more details and full text see mrcaseb.com/posts/nfl_ca...
A stacked bar chart where the differently colored bars show how much percent of the salary cap each NFL team spends on rookie, low figure, middle, high, and elite figure contracts as well as dead cap and cap space.A table shows how much percent of the salary cap each NFL team spends on rookie, low figure, middle, high, and elite figure contracts as well as dead cap and cap space.
0122
Sebastian Carl @mrcaseb.com · 28/08/2026
The post-it is killing me. You set up temperature and humidity sensors and then stick a paper on it to remind yourself when you started it 😂
260
Sebastian Carl @mrcaseb.com · 20/08/2026
Is this a joke I don’t get? 20+ feels impossible to do
100
Sebastian Carl @mrcaseb.com · 14/08/2026
I think you are talking about the updates @rbsdm.com made to the stats sites. The boxscore app is still a quite old shiny app we didn’t really touch in years haha. But still working.
010
Sebastian Carl @mrcaseb.com · 14/08/2026
Nobody: Me: here are NFL preseason stats
140
Sebastian Carl @mrcaseb.com · 14/08/2026
Testing the boxscore site on rbsdm.com/stats/box_sc... with 2026 preseason play-by-play data. Looks good. So I think we are back for the next season!
0111
Sebastian Carl @mrcaseb.com · 09/08/2026
@davisvaughan.bsky.social do you know if tidyverse/funs is a dead end? Seems like it’s not maintained anymore and you were the last active dev. One of my dplyr Feature requests has been moved to that repo and I wonder what happens with all the ideas.
000
Sebastian Carl @mrcaseb.com · 02/08/2026
At some point I was annoyed by the speed of RStudio‘s preview pane that I wrote this function. Later I noticed that a variant of this exists in various packages haha nflplotr.nflverse.com/reference/gg...
nflplotr.nflverse.com
Preview ggplot in Specified Dimensions — ggpreview
This function previews a ggplot in its actual dimensions in order to see how it will look when saved. It is also significantly faster than the default preview in RStudio for ggplots created using nflp...
110
Sebastian Carl @mrcaseb.com · 02/08/2026
2 minutes of rendering sounds like a lot. Did you render it directly in the preview pane of the ide or did you save it on disc?
210
Sebastian Carl @mrcaseb.com · 26/07/2026
This is 100% true. You are doing the lord’s work
060
Sebastian Carl @mrcaseb.com · 26/07/2026
I don’t know why but I feel insulted
1130
Sebastian Carl @mrcaseb.com · 30/06/2026
The print out part is killing me to be honest
090
Sebastian Carl @mrcaseb.com · 21/06/2026
Oh yes, I was hoping you would take care of it, haha. Thanks again!
020
Sebastian Carl @mrcaseb.com · 21/06/2026
A question I wanted to ask you @henrikbengtsson.bsky.social: would it make sense for futurize (or furrr for example) to use mori for shared memory objects?
110
Reposted by Sebastian Carl
Henrik Bengtsson @henrikbengtsson.bsky.social · 21/06/2026
🚀 Want to run lapply() in #parallel? Use y <- lapply(x, fcn) |> futurize() from the futurize package #rstats futurize.futurever.se
The 'futurize' hexlogo - Magic Touch Parallelization
2243
Sebastian Carl @mrcaseb.com · 21/06/2026
Oh yes, thank you, Henrik
110
Reposted by Sebastian Carl
Bluesky @bsky.app · 11/06/2026
What's up, chat! Group chats are rolling out today in the new v1.124 update. This is our first feature built for communities, and there's more to come.
A group chat staffed entirely by the Bluesky team's pets, who are very excited to tell each other that group chats now exist.
31742981041
Sebastian Carl @mrcaseb.com · 03/06/2026
My market implied team strength model doesn‘t line up perfectly but also not bad bsky.app/profile/mrca...
000
Sebastian Carl @mrcaseb.com · 18/05/2026
Based on all 272 spread lines provided by DKSports, I have computed implied team strengths of all teams (in points above average on neutral field) and plotted them against their average opponent strength (i.e. strength of schedule, adjusted for home field advantage).
NFL team strength vs. schedule strength for the 2026 season, based on DraftKings lookahead spreads. Teams higher on the chart are rated stronger by the betting market, while teams further right are projected to face tougher opponents. The Rams, Bills and Seahawks rate among the strongest teams; the Cardinals and Dolphins face the hardest schedules.
090
Sebastian Carl @mrcaseb.com · 12/05/2026
New nickname "AI Cowboy",,,
040
Sebastian Carl @mrcaseb.com · 11/05/2026
I think it’s the same idea. But Mike (the site owner) updates during the season and extracts signal from the upcoming two weeks. What I described above only works prior to the start of the season because that’s when books offer spreads for all games.
010
Sebastian Carl @mrcaseb.com · 11/05/2026
I don’t have the numbers in front of me but I guess the difference is that I use a blend of multiple books and adjust the totals for over/under odds.
110
Sebastian Carl @mrcaseb.com · 11/05/2026
There is an even better way doing this by analyzing lookahead spread lines of the complete season and reverse engineering the implied team strength. I usually post this at some point before regular season starts.
140
Sebastian Carl @mrcaseb.com · 11/05/2026
We are close to the 2026 NFL schedule release so let's look at the strength of schedule based on Vegas win totals. (Data from DKSportsbook, FDSportsbook, and BetMGM via RotoWireNFL)
Chart showing the 2026 NFL strength of schedule based on Vegas win totals: the Arizona Cardinals are projected to face the toughest schedule (.547), followed by the Miami Dolphins and Carolina Panthers. The Detroit Lions are projected to have the easiest schedule (.464). Bar chart ranks all 32 NFL teams from easiest to toughest schedule.
4114
Sebastian Carl @mrcaseb.com · 08/05/2026
Convert ggplots to interactive graphics around the svelte framework
020
Sebastian Carl @mrcaseb.com · 27/04/2026
It's R release season, which makes it the perfect time to revisit my article on how to perform R upgrades and restore your libraries. #rstats mrcaseb.com/posts/upgrad...
mrcaseb.com
Upgrade R! – mrcaseb
And how you should do it in my opinion.
070
Sebastian Carl @mrcaseb.com · 23/04/2026
Final draft pick probabilities of the picks 1-10. Percentages are the vig removed probabilities according to DraftKings that a player will be picked at the corresponding position. Data as of now. Sorted by highest remaining probability per pick.
A table shows 2026 NFL draft prospects along with pick probabilities according to DraftKings Sportsbook for picks 1-10.
032
Sebastian Carl @mrcaseb.com · 21/04/2026
Wow. Jemma looks exactly like my dog. I was completely confused for a second.
Laika. A mixed-breed female dog whose exact lineage is unknown. Her sisters look like Golden Retrievers
010
Sebastian Carl @mrcaseb.com · 15/04/2026
Today's update of market implied odd of draft picks 1-10. Percentages are the vig removed probabilities according to DraftKings that a player will be picked at the corresponding position. Data as of today and subject to change.
A table shows 2026 NFL draft prospects along with pick probabilities according to DraftKings Sportsbook for picks 1-10.
030
Reposted by Sebastian Carl
Sebastian Carl @mrcaseb.com · 10/04/2026
The #NFL draft comes closer so here is what the market thinks who will be drafted at picks 1-10. Percentages are the vig removed probabilities according to DraftKings that a player will be picked at the corresponding position. Data as of today and subject to change.
A table shows 2026 NFL draft prospects along with pick probabilities according to DraftKings Sportsbook for picks 1-10.
2173
Sebastian Carl @mrcaseb.com · 10/04/2026
The #NFL draft comes closer so here is what the market thinks who will be drafted at picks 1-10. Percentages are the vig removed probabilities according to DraftKings that a player will be picked at the corresponding position. Data as of today and subject to change.
A table shows 2026 NFL draft prospects along with pick probabilities according to DraftKings Sportsbook for picks 1-10.
2173
Sebastian Carl @mrcaseb.com · 08/04/2026
Smart move! I like it
010
Sebastian Carl @mrcaseb.com · 08/04/2026
Looks cool! I have something similar in my ggpath package mrcaseb.github.io/ggpath/#imag...
mrcaseb.github.io
Robust Image Rendering Support for ggplot2
A ggplot2 extension that enables robust image grobs in panels and theme elements.
140
Sebastian Carl @mrcaseb.com · 28/03/2026
I can send you some GitHub issues while you are on fire,,,
130
Sebastian Carl @mrcaseb.com · 23/03/2026
Basically, you only need this if you want to run simulations or estimate SOS before the schedule is released. I actually only did this for the challenge. Since the schedule rotates, you first have to analyze a whole bunch of past seasons. But since I now had the code, I published it right away.
011
Sebastian Carl @mrcaseb.com · 23/03/2026
I've added a very nerdy function to the #rstats package nflseedR. Using nfl_regular_season(), you can determine each team's matchups for the following season (including home teams) based on the standings of a completed season. Fully implemented in data.table nflseedr.com/reference/nf...
nflseedr.com
Compute NFL Regular Season Matchups — nfl_regular_season
Use standings of a completed season to compute all matchups (including location) of the following season based on NFL regular season schedule rules.
161
Sebastian Carl @mrcaseb.com · 11/03/2026
Here’s my workflow that I use for several years without any issue. mrcaseb.com/posts/update...
mrcaseb.com
Keep your Packages Up to Date – mrcaseb
I like to keep the packages in my library up to date. At the same time, I would like to know what has changed in a package before I install an update. Furthermore, I do not want to build packages from...
000