See plans

Methodology

How xG PRO calculates every match

Everything the app shows comes from a single calculation: each side's expected goals become a scoreline matrix, and every market is a sum of cells in that matrix. Here's the whole calculation, with what it does well and what it can't see.

1. The data

The foundation is the match history of 55 leagues and more than a thousand teams, maintained by HT FT Stats since 2022 and updated every matchday. For each team, we store the averages of goals scored and conceded at home and away, separately, for the full match and the first half, plus the spread of those averages. For each league, we store the average goals of the home and away sides.

xG PRO's xG is not the shot-based xG you see on broadcasts (that one measures the quality of each shot). Ours is the expected goals of the matchup, calculated from goals. It's simpler, it exists for all 55 leagues, including those with no shot data, and it's the right input for the scoreline matrix.

2. From matchup to match xG

One team's attack is crossed with the other's defense, always relative to the league average and accounting for home advantage:

  • Home attack strength = goals the home team scores at home ÷ the league's average home goals.
  • Away defensive weakness = goals the away team concedes on the road ÷ the same average.
  • Home xG = attack strength × the opponent's defensive weakness × the league's average home goals.

The away xG is the same calculation with the sides swapped. The first half has its own version, using first-half averages. In Precision mode, each factor is discounted by the team's own spread, which makes the xG more conservative for inconsistent teams. xG never drops below 0.05.

3. The scoreline matrix

With each side's xG, the engine uses the Poisson distribution to calculate the chance of each team scoring 0, 1, 2, 3… goals, and multiplies one by the other to get the chance of every scoreline, from 0-0 to 5-5. That's what the app shows in the Scenarios tab.

Example, with 1.62 xG for the home side and 0.88 for the away side: 1-0 has 13.3%, 1-1 has 11.7% and 0-0 has 8.2%.

4. Any market, and fair odds

Every market is a sum of cells in the matrix. In the same example:

MarketCells addedProbabilityFair odds
Home winscorelines where the home side scores more54.2%1.85
Drawthe diagonal (0-0, 1-1, 2-2…)24.8%4.03
Over 2.5 goalsscorelines with 3 or more goals44.9%2.22
Both teams to scorescorelines where both teams score46.5%2.15

Fair odds are 1 ÷ probability, with no bookmaker margin. When the bookmaker's odds are above the fair odds, the price is in your favor according to the model. For favorites (odds under 3.00), the app highlights the card with a gold border. Market combinations use the joint probability of each half's goals, not the product of each market's probability.

5. Live

Once the ball is rolling, the engine reruns the calculation for the time remaining: each side's remaining xG starts from the pre-match figure and is recalibrated by the score, the minute and red cards (a sending-off favors the opponent). The calculation reruns every 3 minutes of play and instantly on every goal and red card.

6. The Radar

The Radar applies 12 rules to the live match. Examples: the “lying 0-0” fires on a 0-0 between the 25th and 59th minute when the model expected 2.5 goals or more; “favorite conceded first” fires when the underdog opens the scoring and the favorite still has at least a 25% chance of scoring. Every alert is checked against the final result. Each rule's hit rate, including the ones that perform badly, is on the calibration page.

7. What the model can't see

  • Lineups, absences and motivation. The number is based on history. The AI analysis of each match covers the news, but doesn't change the xG.
  • Draws. Poisson treats each team's goals as independent, and this kind of model tends to underestimate draws, especially low-scoring ones. The calibration shows the size of that bias, market by market.
  • Early season and newly promoted teams. With few matches, the averages swing more.
  • No model guarantees results. A 60% chance misses 4 times out of 10. Use the numbers as a price reference, not as a certainty.

8. How we check

Before every match, the app freezes the forecast (fair odds for the 1X2, over 2.5 goals and both teams to score) and, after the final whistle, checks it against the score. That's the basis for the public model calibration, published in full, bad months and bad rules included.

See the math done for every match of the day.

Fair odds, a scoreline matrix and a live Radar across 55 leagues. 7-day guarantee.

See plans