Sign in

Nils Mackay

@nilsmackay.bsky.social
3.4K followers 70 following 143 posts

Data Science at Opta

PostsRepliesMedia
Reposted by Nils Mackay
cata @catabush.com · 23/07/2026
The newsletter may be a day late, but it's here. In this edition of The Post-Match Report, alongside the updates, we're looking at momentum (with a more level-headed approach this time). Where does it come from? What does it mean? Who did it first??
post-match-report.leaflet.pub
July 23: Momentum
Plus some fun research papers
12115
Reposted by Nils Mackay
John Muller @johnspacemuller.com · 17/07/2026
Yeah @eliotmckinley.com has been doing these for a while www.americansocceranalysis.com/home/2018/10... But I think this Hungarian one from 1927 still wins
2132
Nils Mackay @nilsmackay.bsky.social · 17/07/2026
As ever, from the replies it's humbling to see you are _never_ the first one to do anything. Apparently: - @unravelsports.bsky.social was doing these around the same time in 2018/2019 - @visualisingdata.com was making these for Wenger in 2016 - Charles Reep (who else) already made these in the 1800s
2121
Nils Mackay @nilsmackay.bsky.social · 17/07/2026
Talked a bit about the origin story of the "Momentum" graphic you might have seen during this World Cup with the @sport.nos.nl (Dutch). Got to be honest, when we made this in 2019 I _really_ didn't expect this to become a 'thing' ha.
nos.nl
Wat is dat 'match momentum' dat we tijdens het WK telkens in beeld zien?
Hoe wordt nou bepaald welk team het ongrijpbare 'momentum' heeft? En spelen de drinkpauzes tijdens het WK hierin nog een rol?
3116
Reposted by Nils Mackay
Pieter Robberechts @probberechts.bsky.social · 22/05/2026
What if you could simply “prompt” a model with a few shots and get accurate xG predictions? #TabPFN is making waves on academic benchmarks. We tested how it handles a real-world sports analytics problem. w/ Timo Martens & @jessejdavis.bsky.social dtai.cs.kuleuven.be/sports/blog/...
dtai.cs.kuleuven.be
Tabular Foundation Models for xG: Can TabPFN Score Without Training?
For years, the answer to “what’s the best model for expected goals (xG)?” has been boringly consistent: a carefully tuned XGBoost model…
0208
Nils Mackay @nilsmackay.bsky.social · 29/01/2026
🇳🇱 Netherlands is going to drop to 7th, losing a Champions League ticket to 🇵🇹 Portugal. While technically they are still ahead, League Stage bonus points will change this. 🇳🇱 will likely see 5/6 (!) teams eliminated in the group stage, 🇵🇹 instead, will see 4/4 teams qualify.
181
Nils Mackay @nilsmackay.bsky.social · 22/01/2026
Just to drive home what a great format the new Champions League is — with 1 game to go 30 out of 36 teams still have something to play for.
182
Reposted by Nils Mackay
Daniel Dinsdale @dannydinsdale.bsky.social · 16/01/2026
A great opportunity to showcase your skills to the wider sports analytics industry! We've had multiple recent presenters go on to join the Opta data science group. ⚽📐🐍
012
Reposted by Nils Mackay
Martin Eastwood @martineastwood.co.uk · 08/01/2026
Bayesian goal models are back in penaltyblog v1.8.0 - and this time, they’re dependency-free! ⚽️📈
A dark-themed code editor window showing Python code using the penaltyblog library. It demonstrates initializing a HierarchicalBayesianGoalModel with home/away goals and teams, fitting the model using MCMC sampling with parameters like 2000 samples and 4 chains, and finally predicting match probabilities for an Arsenal vs. Manchester City fixture
1133
Reposted by Nils Mackay
Nils Mackay @nilsmackay.bsky.social · 16/12/2025
We are hiring! Are you a data scientist and looking for a career in football? Come work in our Data Science team at Stats Perform: tinyurl.com/statsperformds (India-based only for now, EU-people stay tuned)
tinyurl.com
Data Scientist II
Overview Stats Perform is the market leader in sports tech. We provide the most trusted sports data to some of the world's biggest organizations, across sports, media, and broadcasting. Through the la...
165
Nils Mackay @nilsmackay.bsky.social · 16/12/2025
We are hiring! Are you a data scientist and looking for a career in football? Come work in our Data Science team at Stats Perform: tinyurl.com/statsperformds (India-based only for now, EU-people stay tuned)
tinyurl.com
Data Scientist II
Overview Stats Perform is the market leader in sports tech. We provide the most trusted sports data to some of the world's biggest organizations, across sports, media, and broadcasting. Through the la...
165
Reposted by Nils Mackay
Michael Cox @zonal-marking.bsky.social · 14/12/2025
The Oxford word of the year is RAGE BAIT. After calming myself down, I tried to work out what the football word of the year would be, 2000-25. www.nytimes.com/athletic/687...
nytimes.com
The football word of the year, 2000-2025: Park the bus, raumdeuter, prawn sandwich brigade
With 'ragebait' the Oxford English Dictionary word of the year, here's a look at what footballing equivalents might have been since 2000
5285
Nils Mackay @nilsmackay.bsky.social · 02/10/2025
Champions League update! 🔹 Arsenal still on top! PSG joins the fight for first after an away win at Barca. 🔹 Qarabağ with 2 wins! Now 75% likely to make the next round. 🔸 Both Dutch teams in bottom 6 teams — heading towards elimination. 🔸 Athletic Club with 2 losses heading towards an early exit.
092
Nils Mackay @nilsmackay.bsky.social · 26/09/2025
Had a chat with @sport.nos.nl about the dire start of the European season for the Netherlands, and how it affects their chances of maintaining 6th on the UEFA Coefficients ranking.
010
Nils Mackay @nilsmackay.bsky.social · 26/09/2025
Battle for Top 10, good for direct UCL ticket: 78% —🇹🇷 Turkey (-12%) 60% —🇵🇱 Poland (+5%) 36% —🇨🇿 Czechia (-1%) 26% —🇬🇷 Greece (+8%) Battle for Top 15, good for 1 extra European ticket: 51% — 🇨🇾Cyprus (+18%) 37% —🇦🇹Austria (-13%) 8% —🇨🇭Switzerland (-7%) 5% —🏴󠁧󠁢󠁳󠁣󠁴󠁿Scotland (-2%)
030
Nils Mackay @nilsmackay.bsky.social · 26/09/2025
🇩🇪 Germany climbing up the ranks of the yearly Coefficients ranking — good for a bonus Champions League ticket. Two wins this week sees them rise from 5th to 3rd most likely to grab a ticket. England and Italy still favourites.
040
Nils Mackay @nilsmackay.bsky.social · 26/09/2025
Here's the consequences for 🇳🇱 the Netherlands after 5 losses in 5 games. 🔹 From 80% of 6th down to almost 50%. 🔹 Even chances of dropping below Belgium, up from <0.1% to now 1.7%. All that while the Netherlands still have 6/6 teams, while Portugal have lost 1 and Belgium already lost 2!
061
Nils Mackay @nilsmackay.bsky.social · 02/09/2025
New year, new coefficients simulation! ⚠️This year is the first time I've seen where the Big 4 might actually be challenged, as 🇫🇷 France _could_ overtake 🇩🇪 Germany. Being Top 4 gives you 4 direct UCL spots, which are now at risk for Germany, after some poor seasons in Europe.
2143
Nils Mackay @nilsmackay.bsky.social · 01/09/2025
Finally, here's our Conference League predictions. Again an English team favourites to win the League Stage — just like Chelsea was last year. Top 24 achievable for all, even lowest rated teams Shelbourne/Aberdeen with a ±20% chance!
071
Nils Mackay @nilsmackay.bsky.social · 01/09/2025
In the Europa League, English teams are once again favoured to make an impression. Here's how we estimate each teams' likelihood of Top 8 and Top 24 in the League Stage.
0101
Nils Mackay @nilsmackay.bsky.social · 01/09/2025
A new #ChampionsLeague season is upon us! Here's each team's likelihood of qualifying for Top 8 or 24, according to our predictions:
1247
Nils Mackay @nilsmackay.bsky.social · 15/05/2025
First place is lava!
3151
Reposted by Nils Mackay
Lorenzo Cascioli @lorenzocascioli.bsky.social · 24/04/2025
🚨The third and final blog post in our series on possession value models design decisions🔍: Can the features chosen to represent the game state inadvertently bias player ratings? w/ @probberechts.bsky.social @jessejdavis.bsky.social Lode Van Tente dtai.cs.kuleuven.be/sports/blog/...
dtai.cs.kuleuven.be
An experimental analysis of possession state value models: part 3
Conceptually, possession value approaches such as VAEP, PV, OBV, and g+ are all identical: they estimate the chances of scoring (and…
2166
Nils Mackay @nilsmackay.bsky.social · 19/04/2025
I love using em dashes (—) whenever I write something, but now it seems people will just think I'm using an LLM. 💀
050
Nils Mackay @nilsmackay.bsky.social · 11/04/2025
Not many changes on the coefficients table: 🇳🇴 Bodo/Glimt win means Norway overtakes Greece 🇵🇱 Both Polish teams lose, and 🇦🇹 Rapid Wien with a win, which means places 13-15 look mostly set. 🇸🇪 Djurgården lose and thus Sweden less like to overtake Croatia or Cyprus.
050
Nils Mackay @nilsmackay.bsky.social · 11/04/2025
After Lazio's 2-0 loss last night, the battle for the Champions League bonus ticket is just about over. 🏴󠁧󠁢󠁥󠁮󠁧󠁿 England's #5 is guaranteed a CL ticket 🇪🇸 Spain's #5 is 99.8% sure For 🇩🇪 and 🇮🇹 having 8 teams didn't help, but in the end they also didn't perform at the level needed.
172
Reposted by Nils Mackay
Nils Mackay @nilsmackay.bsky.social · 01/04/2025
[NEW] First blog in a long time! In which I show a pretty straightforward way to derive teams' attacking and defensive strengths from bookmaker odds. This method is not only easy to implement, but also very accurate compared to results-based models. mackayanalytics.nl/2025/04/01/g...
2347
Nils Mackay @nilsmackay.bsky.social · 01/04/2025
[NEW] First blog in a long time! In which I show a pretty straightforward way to derive teams' attacking and defensive strengths from bookmaker odds. This method is not only easy to implement, but also very accurate compared to results-based models. mackayanalytics.nl/2025/04/01/g...
2347
Nils Mackay @nilsmackay.bsky.social · 31/03/2025
I've been catfishing you all for too long — I've actually been bald for quite some years now so figured it was time to update my profile picture accordingly as well...
1160
Reposted by Nils Mackay
Orbinho @orbinho.bsky.social · 25/03/2025
We're expanding our team of Data Analysts so if you want to work for Opta and create new visualisations, dive into the data to find insights for clients and chat about sport all day, apply here. We're open to remote workers to get the best candidates. eobe.fa.em2.oraclecloud.com/hcmUI/Candid...
eobe.fa.em2.oraclecloud.com
Data Analyst
Overview: Stats Perform is the market leader in  sports tech. We provide the richest and most trusted sports data available and are at the forefront of the latest advancements in AI and machine learni...
12213
Reposted by Nils Mackay
Martin Eastwood @martineastwood.co.uk · 16/03/2025
⚽ New blog post - which football prediction model is the best? Poisson, Weibull, or Negative Binomial — each has its strengths and weaknesses. Learn how to optimise them for accurate match predictions using my penaltyblog Python package. pena.lt/y/2025/03/10... #FootballAnalytics #DataScience
pena.lt
Football Prediction Models: Which Ones Work the Best?
Comparing football goals models — Poisson, Dixon-Coles, and more — to see which predicts best and how to optimize them...
0257
Nils Mackay @nilsmackay.bsky.social · 14/03/2025
The battle for Top 15 in the UEFA Coefficients ranking is done! 🇵🇱 Poland overtakes Denmark into 15th. At the same time, both 🇩🇰 Denmark and 🇨🇭Switzerland lose their final teams, meaning they can't retake 15th. This also guarantees Top 15 for both 🇦🇹 Austria and 🏴󠁧󠁢󠁳󠁣󠁴󠁿 Scotland.
030
Nils Mackay @nilsmackay.bsky.social · 14/03/2025
🇨🇿 Czechia ends the season in 9th, after Fenerbahçe's exit on penalties last night means 🇹🇷 Türkiye can no longer overtake them. 🇳🇱 Netherlands ends this year with the 8th highest coefficient, behind 🇵🇹 Portugal and 🇧🇪 Belgium — but maintains 6th in the 5-year ranking for now.
130
Nils Mackay @nilsmackay.bsky.social · 14/03/2025
🏴󠁧󠁢󠁥󠁮󠁧󠁿 England need 1 more win (or 2 draws), in any of the 3 leagues, to be mathematically sure of a bonus Champions League ticket next season. 🇪🇸 Spain also very close after Bilbao eliminated Roma in a direct match-up. Some really weird results need to happen for Spain to miss out.
050
Reposted by Nils Mackay
Javier Fernández @javiondata.bsky.social · 13/03/2025
🚨 We're hiring at Chelsea FC!🔵 🚨 This is a unique opportunity to join our analytics team and be at the heart of decision-making at a fantastic club. Full Stack Web Developer: linkedin.com/jobs/view/41... Data Engineer: linkedin.com/jobs/view/41... Full post: www.linkedin.com/posts/javion...
linkedin.com
Chelsea Football Club hiring Full Stack Web Developer in London Area, United Kingdom | LinkedIn
Posted 2:14:09 PM. JOB TITLE: Full Stack Web DeveloperLOCATION: Flexible (Stamford Bridge Onsite/ Hybrid or Fully…See this and similar jobs on LinkedIn.
22313
Nils Mackay @nilsmackay.bsky.social · 07/03/2025
Poland getting even closer to Top 15 finish, which gives 2 UCL tickets. Only one extra win away from overtaking Denmark. Likelihood of Top 15: 99.8% — 🇦🇹 Austria (+0.1%) 99.4% — 🏴󠁧󠁢󠁳󠁣󠁴󠁿Scotland (+5.4%) 80.0% — 🇵🇱 Poland (+15.0%) 16.9% — 🇩🇰Denmark (-11.6%) 3.9% — 🇨🇭Switzerland (-8.9%)
090
Nils Mackay @nilsmackay.bsky.social · 07/03/2025
Both 🇨🇿 and 🇹🇷 lose their only game, which is great news for Czechia. A 1-0 win for Fenerbahçe next week will NOT be enough for 🇹🇷. It will put both countries on 43.9, but 🇨🇿 has the better year coefficient which is the next tiebreaker. Only a Fenerbahçe comeback can save 🇹🇷
080
Nils Mackay @nilsmackay.bsky.social · 07/03/2025
Bonus Champions League ticket update: 🇮🇹 Italy grabs the last lifeline with 3/4 wins, among one a win against a Spanish team. 🇪🇸 Spain still favoured however with 6 teams still playing for now. England can start partying, only a miracle collapse can see them miss out.
0123
Nils Mackay @nilsmackay.bsky.social · 24/02/2025
The race for the UCL bonus ticket as it has progressed so far. While 🇮🇹 Italy messed up in the KO-round of the Champions League, it was always an uphill battle, having 8 teams playing rather than 7 for Spain/England. Hence, 🏴󠁧󠁢󠁥󠁮󠁧󠁿 England / 🇪🇸 Spain were favourites from the start.
031
Nils Mackay @nilsmackay.bsky.social · 21/02/2025
🇮🇹 THREE Italian teams got eliminated this week, in matchups they were expected to win or at least have a good shot. This has significantly hurt their chances of ending in the yearly Top 2 Coefficients Ranking, which gets you a bonus UCL ticket next year.
050
Nils Mackay @nilsmackay.bsky.social · 21/02/2025
Post-draw update for the Coefficients Ranking. 🇳🇱 Netherlands has all but successfully held off Portugal and maintains 6th. Twente's exit (and Ajax' missed points) mean it's unlikely they will overtake 🇫🇷 France. 🇨🇿 Plzen makes a comeback and keeps Czechia in the race for 9th.
060
Nils Mackay @nilsmackay.bsky.social · 14/02/2025
🇪🇸 Spain overtakes 🇮🇹 Italy in the battle for the Champions League bonus ticket (although barely...) Spain with a measly 0.3 point lead over Italy — and about as many expected points in the remainder of the season. This could really go either way at this point.
062
Nils Mackay @nilsmackay.bsky.social · 14/02/2025
Three spots remaining for Top 15 (and 2 UCL tickets): 🇵🇱 Jagiellonia with a big win, putting Poland on track for Top 15, at the cost of Denmark. Odds: 99.8% — 🇦🇹 Austria (+0.8%) 94.6% — 🏴󠁧󠁢󠁳󠁣󠁴󠁿Scotland (+1.4%) 65.5% — 🇵🇱 Poland (+33.4%) 25.9% — 🇩🇰Denmark (-40.4%) 14.3% — 🇨🇭Switzerland (+4.8%)
041
Nils Mackay @nilsmackay.bsky.social · 14/02/2025
Time for some "coëfficiëntenpolonaise" for the Dutch 🇳🇱! 4W1L in the first round of knockouts, puts them in a great spot and it's unlikely 🇵🇹 Portugal will overtake them before the end of the season. Still an outside shot of overtaking 🇫🇷 France, though very unlikely.
161
Nils Mackay @nilsmackay.bsky.social · 04/02/2025
Knockout stage season is upon us! Here's the countries most likely to get a bonus Champions League ticket for next season. 🏴󠁧󠁢󠁥󠁮󠁧󠁿 England already 3+ points ahead of the rest, and 7/7 teams remaining. They'll likely get the 1st ticket. Other ticket between 🇮🇹 Italy and 🇪🇸 Spain, who both lost 1 team.
1143
Nils Mackay @nilsmackay.bsky.social · 04/02/2025
With the League Phases out of the way, things are beginning to become clearer in the UEFA Coefficients Ranking. 🇳🇱 Netherlands favoured for #6 over 🇵🇹 Portugal 🇹🇷 Türkiye slightly favoured for #9 over 🇨🇿 Czechia. They've got 0.8 points to make up but 2 teams still playing vs 1 from Czechia.
140
Nils Mackay @nilsmackay.bsky.social · 30/01/2025
So I made this plot back in September. It stated that 10 points would be enough to qualify for Top 24 in 99% of the simulations. Clearly this didn't materialise — Dinamo Zagreb got knocked out with 11 points. Some thoughts 👇
2187
Nils Mackay @nilsmackay.bsky.social · 29/01/2025
Manchester City are through! But... In the next round they'll face one of: 🔸 Real Madrid 🔸 Bayern Munich Yikes.
050
Reposted by Nils Mackay
Joris Bekkers @unravelsports.bsky.social · 29/01/2025
⚽ 𝐌𝐈𝐓 𝐒𝐥𝐨𝐚𝐧 𝐒𝐩𝐨𝐫𝐭𝐬 𝐀𝐧𝐚𝐥𝐲𝐭𝐢𝐜𝐬 𝐂𝐨𝐧𝐟𝐞𝐫𝐞𝐧𝐜𝐞 𝐑𝐞𝐬𝐞𝐚𝐫𝐜𝐡 𝐏𝐚𝐩𝐞𝐫𝐬 In case you missed it (I did), the MIT Sloan Sports Analytics Research Papers have been released! This year there are 3 football papers, find all of them below. 📎 tinyurl.com/ssac25
33412