How to expect more from xG
Getting from shot probabilities to team performance metrics
This is the fourth article in a series of futi model explainers. Read the others here:
Your kids will never believe you that expected goals used to be controversial.
In the last decade we’ve gone from jowly TV men getting red-faced at the thought of decimals in their game to a world where broadcasts routinely show goal probabilities on replays. Nowadays there’s xG in articles, xG on your phone, xG sponsored by the Whisper-Quiet Maytag Dishmaster on the post-game show.
In a sport where the ball goes in the net a few times a game if you’re lucky, it turns out to be pretty useful to measure half chances. Shots are ten times more frequent than goals, and the fractional goal probabilities attached to shots give us a lot more information than an all-or-nothing outcome. That makes expected goals a more delicate instrument than goals or points for getting at the question fans care about most: is my team actually any good?
To answer that kind of question, a plain old expected goals model that tells you how likely each shot is to score isn’t enough. Futi will show you shot xG like other live score apps, sure, but it also has several models built on top of that to turn shot probabilities into purpose-built tools for measuring team performance.
Meet a few of futi’s ways to do more with xG:
Team xG
One well-known quirk of expected goals is that adding up the value of all of a team’s shots can give you a number that doesn’t quite make sense.
To understand why, imagine a sequence where a team misses a penalty but earns a couple of rebound shots in the ensuing scuffle in front of goal. Since penalties are scored three times out of four and shots in the six-yard box have similar conversion rates, those three consecutive shots could easily add up to more than 2.0 expected goals.
Would we actually expect a team to score two goals in the span of a few seconds? Of course not. If any one of the shots had gone in, the players would have been showing off a new TikTok dance by the corner flag instead of hunting for follow-up chances on the rebound. To prevent a team’s expected numbers from getting artificially inflated by multiple shots taken close together, team-level xG should reflect the impossibility of scoring more than one goal in a single attack.
The popular way to deal with this problem is to discount each shot’s xG value by the probability that the chance would happen in the first place. If the rebound shot after our penalty had an 80% chance of scoring (considered independently) but only a 25% chance of occurring (since the penalty that came before it is expected to score about 75% of the time), then the shot’s value for purposes of calculating the team’s total xG in the match is just 0.8 * 0.25 = 0.2 xG. After applying that discount, the two shots have a team-level expected goal value of 0.95, meaning they were very likely to score from one of the two shots but obviously couldn’t score both.
Futi’s team xG follows this familiar method with a small twist: while most team xG models discount shots by others earlier in the same possession, our model looks at any shots in the previous 30 actions of the same half.
That makes better football sense, since turnovers don’t really end the conditional probability chains that team xG is worried about. If a defender gets to our penalty rebound first, ending the possession, but plays a bad clearance that leads to a goal shortly afterward, the same logic still applies — the second shot couldn’t have happened if the penalty had gone in.
We tested both cutoff methods for team xG and found that the more intuitive 30-action approach produces xG totals that are slightly closer to real scorelines without sacrificing any predictive strength, so that’s the method futi uses.
Deserved result
You know how the losing team’s manager loves to say they were “the better side” and “deserved more”? Futi has a stat for that.
The deserved result1 model simulates each match thousands of times based on both sides’ team xG. Over enough of these runs, a shot with an xG of 0.2 will score in about 20% of simulated games and miss in 80%, but sometimes a team might score three low-percentage shots and other times it’ll score none. Simulating every shot in the match by both teams gives a simulated scoreline for that run, and the percentages of match results across all simulations — home win, draw, or away win — are what the model will tell you the teams “deserved.”
The futi mobile app will show you the deserved result percentages for every match, but since the interactive tables use season-level stats, for today’s data release we’ve converted deserved results into more familiar expected points, which work like real points by multiplying deserved wins by three and deserved draws by one.
Projected points
Expected points are backward-looking: they describe how many points a team deserved to earn from games it’s already played. But why live in the past? Projected points look ahead to predict how many points a team will have at the end of the season based on the real points they’ve earned so far plus the number of points they’re expected to earn in the future.
Using the team strength numbers behind futi’s team ratings (which we’ll describe in detail in the next explainer in this series) the projected points model simulates every fixture left in a competition, adjusted for team strengths and home advantage. Add those simulated points to a team’s current point total and you get the projected points for the season.
Projected finish
Projected finish is based on projected points, but instead of a single number it’s a distribution — displayed as a small chart in the competition table with one bar per finishing place, like FiveThirtyEight’s old tables used to have — that shows the percentage of simulations in which each team finishes in each spot. This distribution not only tells you if your team is most likely to finish third but also the relative likelihood that they’ll finish first, second, fourth and so on. The numbers behind projected finish can be used to calculate the probability of things like a club’s chances of winning a trophy, qualifying for a tournament or being promoted or relegated.
Today’s data release in futi’s interactive tables includes team expected goals for and against, expected points (derived from deserved result) and some more conventional goal and shot stats.

The idea isn’t really to help you figure out which MLS teams were good last season — you pretty much know that by now — but to give you various team strength stats to compare against team style and phase of play data. As the Austin FC journalist Phil West and I talked about in a podcast conversation about futi last week, futi’s style models are agnostic to quality and teams can be good playing any kind of football. Still, combining style and quality metrics can reveal interesting things.
In the next newsletter, we’ll tell you about futi’s team ratings, which go beyond expected or projected points to measure underlying team strength directly.
futi in the wild
We hoped that releasing some team style data during the MLS preseason would help fuel some season previews, and you guys delivered in spades.
Our friends at American Soccer Analysis made creative use of futi data in almost every team preview in their annual series. Kieran Doyle looked at “style variety,” or how varied teams’ futi playing styles were from match to match:
Eliot McKinley visualized how the Columbus Crew’s style has evolved over the last three years:
Not to be outdone by their Hell is Real rivals, Nate Gilman did the same for FC Cincinnati:
Lucas Morefield combined futi style data with goals added, American Soccer Analysis’s possession value model, to make team radars within each dominant style:
And Sounder at Heart produced not one but two deep dives on futi data. Jake Burgess did a data investigation into Schmetzer ball:
And Josh Lovseth looked at styles by MLS conference:
Finally, futi’s founders made a joint appearance on American Soccer Analysis’s podcast for the most in-depth conversation yet about what we’ve been building:
We’ve got more podcast appearances coming up, but if you want to talk to us for a show or article about futi data, give us a shout in the comments, on Bluesky or in the futi Discord.
This stat owes a debt to Cannon Stats’ ‘Deserve’ to Win-o-Meter, although the methods are slightly different.


Not a data expert; writing with what has always seemed to me to be the most confounding thinig about xG as a measure of team performance, which is the question of whether a shot happens in the first place. Your winger plays a ball across the six-yard box while a teammate makes a run into the box for a tap-in. If they touch the ball, it's a shot with a very high xG value; if they miss the ball by half an inch, there's no shot, and zero xG. That may be an extreme case, but if the underlying question you're getting at with xG is something like "Based on the quality of the chances it created, how many goals was team x likely to score in this game?" it seems to me that the space between "shots" and "chances created" is real and important. How do you deal with this, if at all?