Tony ElHabr
@tonyelhabr.bsky.social
data person, mostly #rstats and ⚽️
An interesting iteration on something I also wrote about a while ago tonyelhabr.rbind.io/posts/xg-rat...
October 22, 2025 at 7:09 PM
An interesting iteration on something I also wrote about a while ago tonyelhabr.rbind.io/posts/xg-rat...
per requested, an update to my gamestate xGD plots ahead of this weekend's MLS matches
reasons for changes from the prior version:
1. more data
2. the 8th and 9th place teams in the West have changed
1. more data
2. the 8th and 9th place teams in the West have changed
October 18, 2025 at 9:55 PM
per requested, an update to my gamestate xGD plots ahead of this weekend's MLS matches
MLS playoffs are coming soon, so here's my cheat sheet to digest how every team has performed this season
October 3, 2025 at 3:05 PM
MLS playoffs are coming soon, so here's my cheat sheet to digest how every team has performed this season
@cata-bush.bsky.social is actually insane for this… this seems really easy to use, has great aesthetics, and includes just about every kind of plot you can imagine
Love the ASA data but wish you had a helping hand in turning it into fancy plots and graphics?
Introducing the ASA Viz Hub from @cata-bush.bsky.social
www.americansocceranalysis.com/home/2025/9/...
Introducing the ASA Viz Hub from @cata-bush.bsky.social
www.americansocceranalysis.com/home/2025/9/...
A Guide to the ASA Vizhub — American Soccer Analysis
What to know about the newest ASA platform Catalina Bush Have you ever wished that you could picture the game in front of you? Not as a broadcast, or a highlight video, but on a sheet of paper? ...
www.americansocceranalysis.com
September 16, 2025 at 4:10 PM
@cata-bush.bsky.social is actually insane for this… this seems really easy to use, has great aesthetics, and includes just about every kind of plot you can imagine
Which Big 5 teams improved the most over the summer in the eyes of odds-makers? And which teams fell out of favor?
(Ratings from PitchRank)
(Ratings from PitchRank)
August 17, 2025 at 2:15 PM
Which Big 5 teams improved the most over the summer in the eyes of odds-makers? And which teams fell out of favor?
(Ratings from PitchRank)
(Ratings from PitchRank)
Reposted by Tony ElHabr
That's it, folks, #VizBuzz has come to an end and we've crowned @tonyelhabr.bsky.social champion 👑👑👑
The finals was FILLED with ties, which give me life, including a tie for second between @johnbedwards.io and the mighty @qntkhvn.bsky.social
It's the end of VizBuzz, but it lives in our ❤️
#databs
The finals was FILLED with ties, which give me life, including a tie for second between @johnbedwards.io and the mighty @qntkhvn.bsky.social
It's the end of VizBuzz, but it lives in our ❤️
#databs
June 27, 2025 at 2:55 AM
That's it, folks, #VizBuzz has come to an end and we've crowned @tonyelhabr.bsky.social champion 👑👑👑
The finals was FILLED with ties, which give me life, including a tie for second between @johnbedwards.io and the mighty @qntkhvn.bsky.social
It's the end of VizBuzz, but it lives in our ❤️
#databs
The finals was FILLED with ties, which give me life, including a tie for second between @johnbedwards.io and the mighty @qntkhvn.bsky.social
It's the end of VizBuzz, but it lives in our ❤️
#databs
An annual must read. Happy to see my own writing linked here.
Continuing the tradition, I have compiled an end-of-year overview of the soccer analytics content that I liked the most in the past year. The 2024 edition includes pointers to over 160 resources, including research papers, blog posts, articles, podcasts, and books.
janvanhaaren.be/posts/soccer...
janvanhaaren.be/posts/soccer...
Soccer Analytics 2024 Review – Jan Van Haaren
Collection of the soccer analytics content that I liked the most in 2024!
janvanhaaren.be
December 30, 2024 at 3:47 PM
An annual must read. Happy to see my own writing linked here.
memes in 2014 vs. 2024
December 6, 2024 at 3:40 PM
memes in 2014 vs. 2024
Fun hypothetical: How would the EPL table look right now if the result of every 1-score match was flipped?
Biggest risers:
1. Wolves: +9 pts, 17th -> 5th
2. Crystal Palace: +9 pts, 19th -> 8th
Biggest fallers:
1. Brighton: -12 pts, 2nd -> 18th
2. Aston Villa: -9 pts, 8th -> 19th
#rstats
Biggest risers:
1. Wolves: +9 pts, 17th -> 5th
2. Crystal Palace: +9 pts, 19th -> 8th
Biggest fallers:
1. Brighton: -12 pts, 2nd -> 18th
2. Aston Villa: -9 pts, 8th -> 19th
#rstats
November 30, 2024 at 2:43 PM
Fun hypothetical: How would the EPL table look right now if the result of every 1-score match was flipped?
Biggest risers:
1. Wolves: +9 pts, 17th -> 5th
2. Crystal Palace: +9 pts, 19th -> 8th
Biggest fallers:
1. Brighton: -12 pts, 2nd -> 18th
2. Aston Villa: -9 pts, 8th -> 19th
#rstats
Biggest risers:
1. Wolves: +9 pts, 17th -> 5th
2. Crystal Palace: +9 pts, 19th -> 8th
Biggest fallers:
1. Brighton: -12 pts, 2nd -> 18th
2. Aston Villa: -9 pts, 8th -> 19th
#rstats
Game state xGD table of truth for the MLS 2024 playoff teams
November 23, 2024 at 3:42 PM
Game state xGD table of truth for the MLS 2024 playoff teams
❤️ the references to public studies on finishing
Video #6 for the Footy Insights channel is live, and it's on Nicolas Jackson. He's been the source of much conversation as Chelsea's #9, so I did a deep-dive on his game and the idea of finishing skill. I believe it's the best piece of football content I've ever done
www.youtube.com/watch?v=VrZk...
www.youtube.com/watch?v=VrZk...
Nicolas Jackson Profile, 2024: Wasteful Shooter, or a Future Star?
YouTube video by Footy Insights
www.youtube.com
November 10, 2024 at 4:05 PM
❤️ the references to public studies on finishing
the great bsky migration may be enough to get me to blog again
October 31, 2024 at 6:41 PM
the great bsky migration may be enough to get me to blog again
Finally got around to trying out Observable JS in depth. It's really nifty! I used it to make some sick ⚽ plots in this post: tonyelhabr.rbind.io/posts/ball-p...
#rstats
#rstats
April 21, 2024 at 1:33 PM
Finally got around to trying out Observable JS in depth. It's really nifty! I used it to make some sick ⚽ plots in this post: tonyelhabr.rbind.io/posts/ball-p...
#rstats
#rstats
where is my GitHub achievement badge 😈
February 5, 2024 at 2:05 PM
where is my GitHub achievement badge 😈
i'm about to have a bad time, aren't i
February 4, 2024 at 1:58 PM
i'm about to have a bad time, aren't i
Should we account for team quality (Elo) in xG models? While I'm against this in principle, I tried it out.✍️⚽
Featuring #rstats, tidymodels, SHAP values, and calibration curves.
🔗: tonyelhabr.rbind.io/posts/xg-tea...
Featuring #rstats, tidymodels, SHAP values, and calibration curves.
🔗: tonyelhabr.rbind.io/posts/xg-tea...
Tony’s Blog - Should we account for team quality in an xG model?
Finnicking around (with an xG model) and finding out
tonyelhabr.rbind.io
December 30, 2023 at 4:34 PM
Should we account for team quality (Elo) in xG models? While I'm against this in principle, I tried it out.✍️⚽
Featuring #rstats, tidymodels, SHAP values, and calibration curves.
🔗: tonyelhabr.rbind.io/posts/xg-tea...
Featuring #rstats, tidymodels, SHAP values, and calibration curves.
🔗: tonyelhabr.rbind.io/posts/xg-tea...
ordering an americano at a starbucks in a mall in europe is the most patriotic i’ve ever been
November 13, 2023 at 12:59 PM
ordering an americano at a starbucks in a mall in europe is the most patriotic i’ve ever been
✍️ New blog post
A guide to identifying whether a team is "parking the bus 🚌" when they have a lead. I show that game state stats can be pesky to calculate, but they can lead to novel insights. ⚽
#rstats
tonyelhabr.rbind.io/posts/fbref-...
A guide to identifying whether a team is "parking the bus 🚌" when they have a lead. I show that game state stats can be pesky to calculate, but they can lead to novel insights. ⚽
#rstats
tonyelhabr.rbind.io/posts/fbref-...
October 26, 2023 at 12:18 AM
✍️ New blog post
A guide to identifying whether a team is "parking the bus 🚌" when they have a lead. I show that game state stats can be pesky to calculate, but they can lead to novel insights. ⚽
#rstats
tonyelhabr.rbind.io/posts/fbref-...
A guide to identifying whether a team is "parking the bus 🚌" when they have a lead. I show that game state stats can be pesky to calculate, but they can lead to novel insights. ⚽
#rstats
tonyelhabr.rbind.io/posts/fbref-...
✍️new blog post on using the tidymodels probably package to calibrate model predictions. #rstats
tonyelhabr.rbind.io/posts/probab...
tonyelhabr.rbind.io/posts/probab...
September 13, 2023 at 12:27 PM
✍️new blog post on using the tidymodels probably package to calibrate model predictions. #rstats
tonyelhabr.rbind.io/posts/probab...
tonyelhabr.rbind.io/posts/probab...
✍️New blog post on "meta-metrics" in soccer, replicating part of a 2017 JQAS article from Franks, D’Amour, Cervone and Bornn.
⚖️Does a metric reliably differentiate between players?
📈Does a metric measure a quantity that is stable over time?
tonyelhabr.rbind.io/posts/soccer...
#rstats
⚖️Does a metric reliably differentiate between players?
📈Does a metric measure a quantity that is stable over time?
tonyelhabr.rbind.io/posts/soccer...
#rstats
Tony’s Blog - Meta-Analytics for Soccer
To what extent does a state differentiate between players? How much does the stat's value change over time?
tonyelhabr.rbind.io
September 9, 2023 at 2:24 PM
✍️New blog post on "meta-metrics" in soccer, replicating part of a 2017 JQAS article from Franks, D’Amour, Cervone and Bornn.
⚖️Does a metric reliably differentiate between players?
📈Does a metric measure a quantity that is stable over time?
tonyelhabr.rbind.io/posts/soccer...
#rstats
⚖️Does a metric reliably differentiate between players?
📈Does a metric measure a quantity that is stable over time?
tonyelhabr.rbind.io/posts/soccer...
#rstats
"it's giving 2015" he said as he opened a script starting with `library(plyr)`
August 30, 2023 at 9:18 PM
"it's giving 2015" he said as he opened a script starting with `library(plyr)`
Reposted by Tony ElHabr
For the latest entry in our Replication Series,
@tonyelhabr.bsky.social takes a look at EightyFivePoint's seminal "Exceeding Expected Goals" to revisit the age-old question of "finishing" in soccer.
www.americansocceranalysis.com/home/2023/8/...
@tonyelhabr.bsky.social takes a look at EightyFivePoint's seminal "Exceeding Expected Goals" to revisit the age-old question of "finishing" in soccer.
www.americansocceranalysis.com/home/2023/8/...
August 28, 2023 at 9:13 PM
For the latest entry in our Replication Series,
@tonyelhabr.bsky.social takes a look at EightyFivePoint's seminal "Exceeding Expected Goals" to revisit the age-old question of "finishing" in soccer.
www.americansocceranalysis.com/home/2023/8/...
@tonyelhabr.bsky.social takes a look at EightyFivePoint's seminal "Exceeding Expected Goals" to revisit the age-old question of "finishing" in soccer.
www.americansocceranalysis.com/home/2023/8/...
new blog post from yours truly: replicating a soccer analysis from 5 years ago, featuring Gamma-Poisson empirical Bayes estimation 🤓🤠
#rstats
tonyelhabr.rbind.io/posts/xg-rat...
#rstats
tonyelhabr.rbind.io/posts/xg-rat...
August 28, 2023 at 2:11 PM
new blog post from yours truly: replicating a soccer analysis from 5 years ago, featuring Gamma-Poisson empirical Bayes estimation 🤓🤠
#rstats
tonyelhabr.rbind.io/posts/xg-rat...
#rstats
tonyelhabr.rbind.io/posts/xg-rat...