Tony ElHabr
@tonyelhabr.bsky.social
data person, mostly #rstats and ⚽️
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:53 PM
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
lmk if this is along the lines of what you're looking for. happy to iterate
October 3, 2025 at 7:45 PM
lmk if this is along the lines of what you're looking for. happy to iterate
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
i believe the author’s name is Tyson Ni. (not sure if he is on bsky.)
i was made aware of these rankings from a @rwohan.bsky.social article
i was made aware of these rankings from a @rwohan.bsky.social article
August 19, 2025 at 6:27 PM
i believe the author’s name is Tyson Ni. (not sure if he is on bsky.)
i was made aware of these rankings from a @rwohan.bsky.social article
i was made aware of these rankings from a @rwohan.bsky.social article
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)
memes in 2014 vs. 2024
December 6, 2024 at 3:40 PM
memes in 2014 vs. 2024
xGD is live from Opta here (including the ongoing matches)
November 30, 2024 at 4:48 PM
xGD is live from Opta here (including the ongoing matches)
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 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
Yep, I’d say that’s right (at least the shot volume part). Lars Maurath identified that relationship in his post
December 30, 2023 at 6:13 PM
Yep, I’d say that’s right (at least the shot volume part). Lars Maurath identified that relationship in his post
✍️ 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 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...
real ones say "dahta"
July 25, 2023 at 5:06 PM
real ones say "dahta"