How FairXG works
FairXG works out the chance of every outcome in a match from past results, then turns each chance into a fair price: the odds a bookmaker would offer if they took no margin. Here is what goes in, how good it is, and what it can't know.
One match, step by step
Romanian Liga 1, Fri 6 Nov-
Strength
UTA Arad are rated 1385 and Petrolul 1371. Every result moves a team's rating by how surprising it was, so beating a strong side counts for more than beating a weak one.
-
Goals
From each side's attack and defence, UTA Arad are expected to score 1.41 and Petrolul 0.97.
-
Scorelines
Those two numbers give the chance of every final score, in percent. Rows are UTA Arad's goals, columns Petrolul's. The stronger the colour, the likelier: blue cells are UTA Arad wins, orange Petrolul wins, grey draws.
012340 9.9 8.3 4.4 1.41 12.4 13.3 6.1 2.02 9.2 8.9 4.3 1.43 4.3 4.2 2.0 0.74 1.5 1.5 0.7 -
Prices
Add up the cells and you get every market. Home wins are the cells below the diagonal, and so on.
UTA Arad win47%fair odds 2.15Draw28%fair odds 3.54Petrolul win25%fair odds 3.97Over 2.5 goals42%fair odds 2.36Both teams score47%fair odds 2.11
Ratings
Every team and player has a rating, updated after each match from 67,835 football results in 50 competitions (Europe's top leagues down to England's fifth tier, the European cups, and leagues from Scandinavia to Brazil, the USA and Japan), and every ATP and WTA match. A win against a stronger side lifts a rating more than a win against a weaker one, and in football bigger winning margins count for a little more. Home sides get a fixed boost. Ratings drift back toward the average between seasons, because squads change.
Ratings only compare clubs from different countries through European matches, so clubs from lower divisions and from leagues outside the original set start below average, and promoted clubs keep their level rather than jumping to the new league's. For some leagues (Romania, Poland, Scandinavia, the Americas, Japan, China) the data has results only, so markets that need half-time scores, corners or cards aren't priced there.
Clubs new to European football start a little below their league rating, since a domestic rating says less about how a side will do against unfamiliar opponents. In tennis, each player also has a rating per surface, blended with their overall one, and ratings fade for players who haven't played for a while.
Domestic cups (FA Cup, Copa del Rey, DFB-Pokal and others) are covered when both clubs play in a league we rate. There are no past cup results in the data, so a tie between clubs from different divisions leans partly on the ratings, which compare clubs across leagues, and should be read with a little more caution.
Goals, corners and cards
Football matches also get a goals model: each team has an attacking and a defensive strength, updated after every match, which together give the expected goals for both sides. Those give the chance of every scoreline, so markets like over/under, both teams to score, team totals, Asian lines and draw no bet all come from the same numbers. A separate first-half version prices half-time and half-time/full-time markets.
Corners and cards work the same way, from how many each team tends to win and give away, allowing for the fact that these counts vary more from match to match than goals do.
Bookmakers' prices
Where bookmakers price a market, FairXG shows their average view with the margin taken out, alongside the model. Over thousands of past matches the bookmakers' average has been more accurate than the model, so the slip check judges a price against it wherever it exists, and against the model only for markets the odds feed doesn't cover.
We also checked whether bookmakers' prices move toward the model between the first odds and kick-off, which would mean the model spots something early. They move its way 53% of the time across 48,985 prices: no better than chance. So a gap between the model and the bookmakers is a reason to look closer, not a reason to bet.
In play
During a match, the goals still expected are scaled to the time left, including the usual stoppage time, and added to the current score. A red card cuts the side's expected goals by about a third and lifts their opponents'. Tennis is played out from the current set score. Live chances don't know how the match is going otherwise, such as which side is on top.
Slip check
Each selection on a slip is priced on its own, then the chances are multiplied to give the chance the whole slip wins. That is right for selections from different matches. Two selections from the same match are linked, so the slip check warns you when it sees them. Screenshots are read by an AI model to find the selections and odds; the image is not stored. If you tick "Share its prices", the odds and matches (nothing else) go into the bookmaker tracker, which shows how much each bookmaker pays below a fair price.
How accurate is it?
Lower log loss is better. It rewards confident predictions that come true and punishes confident ones that don't. "Always guess the usual" predicts each outcome as often as it has happened so far: a model that can't beat it knows nothing.
| Market | Matches | FairXG | Bookmakers | Always guess the usual |
|---|---|---|---|---|
| Football result | 59,583 | 1.021 | 0.998 | 1.073 |
| Over/under 2.5 goals | 59,583 | 0.679 | 0.676 | 0.693 |
| Both teams score | 59,583 | 0.686 | – | 0.691 |
| Half-time result | 35,894 | 1.053 | – | 1.081 |
| Tennis (ATP) | 16,825 | 0.626 | 0.590 | 0.693 |
| Tennis (WTA) | 15,675 | 0.624 | 0.588 | 0.693 |
Bookmakers are scored on the matches they had odds for. The model is clearly better than guessing and a little behind the bookmakers, who also know about injuries and team news. See the track record for predictions saved before kick-off.
What it can't know
The ratings only see results. Since November 2026 an AI web search also reads each side's injuries, suspensions and rotation before a match, shown as Team news on the match page. Turning that news into numbers can't be tested on past matches, because there's no record of what the news said before them, so the news-adjusted chance is shown and scored beside the prediction rather than replacing it. The ratings still don't know about a manager under pressure, the weather or what a match means to each side. Bookmakers do, which is most of why they are more accurate. Use the numbers as a starting point, not as advice. Betting is for adults over 18, and only with money you can afford to lose.