Expected Goals Lite: Goals a Match Should Have Had vs Reality
A crude shots-on-target model explains goal totals surprisingly well. Expected and actual agreed on over/under in 68.5% of matches, while pre-match prices barely moved across the bands.

- 0.31goals per shot on target in the fitted model
- 53.9%of matches within one goal of expected
- 68.5%expected and actual agreed on over/under
- 14.1%of matches deserved an over but stayed under
Every totals bettor eventually asks the same question after a match: did that scoreline reflect the game, or did the finishing lie? I wanted a blunt answer, so I built the simplest model I could, using only shots and shots on target, across 21 European divisions from 2016/17–2025/26 and 67,047 matches with full statistics.
The headline is that one shot on target is worth about 0.31 goals, and almost nothing else in the shot count matters. Most of the reasoning on my under 2.5 goals predictions page starts from that kind of process view, and this study shows why. A shots-based estimate of what a match deserved called over/under correctly in 68.5% of matches, yet the pre-match prices for these bands sat in a strikingly narrow range.
Q1Does a shots-on-target count actually track real goal totals?
The fit is almost embarrassingly simple. Across all 67,047 matches, goals line up with 0.31 per combined shot on target, while shots off target or blocked add essentially nothing. So expected goals lite is just that coefficient times the shots on target from both sides. The average match came out at 2.6 expected and 2.7 actual goals.
View the data: expected vs actual goals
| Expected goals | Actual goals | |
|---|---|---|
| <1.5 | 1 goals | 1.1 goals |
| 1.5-1.9 | 1.7 goals | 1.9 goals |
| 2.0-2.4 | 2.3 goals | 2.4 goals |
| 2.5-2.9 | 2.8 goals | 2.8 goals |
| 3.0-3.4 | 3.2 goals | 3.2 goals |
| 3.5-3.9 | 3.7 goals | 3.7 goals |
| 4.0+ | 4.5 goals | 4.3 goals |
Look at how closely the two lines hug each other band by band. In the 2.0-2.4 band matches averaged 2.3 expected and 2.4 actual, and only at the very top does reality fall slightly short, with 4.5 expected against 4.3 actual in the 4.0+ band. For me the lesson is that volume of shots is noise unless the keeper has to make a save.
Q2How often does the final score stray far from the shots?
Agreement on average hides plenty of individual chaos. Only 53.9% of matches finished within one goal of their expected total, and the average miss was 1.1 goals. That is a full goal of variance sitting on top of any read you make, which matters enormously in a market decided by a single goal either side of 2.5.
View the data: how far goals stray from expectation
| Share of matches by actual goals minus expected goals | |
|---|---|
| 2+ fewer | 6.6% |
| 1-2 fewer | 16.5% |
| 0-1 fewer | 28.0% |
| 0-1 more | 25.9% |
| 1-2 more | 15.0% |
| 2+ more | 8.0% |
The tails are not symmetrical either. 6.6% of matches produced two or more goals fewer than expected, while 8.0% produced two or more goals more. Blowouts above expectation are a touch more common than collapses below it, which fits how a late goal against a chasing side can snowball.
Q3How often does a match that deserved an over stay under?
This is the chart I return to most. When expected goals reached 2.5, the match went over 70.0% of the time; when it did not, the over still landed 32.8% of the time. Put across the whole sample, 14.1% of all matches deserved an over but stayed under, and 17.4% went over without deserving it.
One honest warning before you lean on this: the model is crude, ignoring shot location, penalties and big chances, and the shot counts are full-match totals recorded after the final whistle. It is a tool for judging what happened, not a pre-match forecast on its own.
View the data: deserved over vs actual over
| Went over 2.5 | Stayed under | |
|---|---|---|
| Expected 2.5+ | 70.0% | 30.0% |
| Expected under 2.5 | 32.8% | 67.2% |
That is why I log every result I settle with its shots on target beside it. A run of unders built on heavy shots-on-target totals is a very different thing from a run of unders where nobody tested the keeper.
Q4Do pre-match prices reflect how differently these bands behave?
Here the gap opens up. The over rate climbs from 8.8% in the lowest band to 84.2% in the 4.0+ band, but the priced probability from a major bookmaker only moved from 46.7% to 54.0% across the same bands. The market is pricing these matches as far more alike than they turned out to be.
| Expected goals | Matches | Priced | Over 2.5 | Fair odds |
|---|---|---|---|---|
| <1.5 | 6,139 | 46.7% | 8.8% | 11.36 |
| 1.5-1.9 | 12,369 | 48.1% | 27.8% | 3.60 |
| 2.0-2.4 | 17,029 | 49.4% | 45.1% | 2.22 |
| 2.5-2.9 | 7,970 | 50.3% | 57.5% | 1.74 |
| 3.0-3.4 | 12,180 | 51.3% | 67.6% | 1.48 |
| 3.5-3.9 | 3,943 | 52.4% | 76.0% | 1.32 |
| 4.0+ | 7,390 | 54.0% | 84.2% | 1.19 |
Of course, the market cannot see the shots in advance, which is exactly the point: the edge lies in projecting shot quality better than the price does. The fair odds column gives a reference, such as 1.74 for the 2.5-2.9 band, 11.36 below 1.5 and 1.19 at 4.0+, but those only help if your pre-match shot projection is genuinely sound.
The playbook
How we would use these numbers before the next Over/Under bet.
- Count shots on target only. When you review a team's recent matches, multiply combined shots on target by 0.31 and ignore the rest. Blocked and off-target efforts added essentially nothing to the fit.
- Audit unders that deserved overs. 14.1% of matches deserved an over but stayed under, so check whether a team's low-scoring run came with high shots-on-target totals. If it did, the public perception of a 'tight' side may be cheaper than the process suggests.
- Project shots before checking prices. Prices only spanned 46.7% to 54.0% while actual over rates ranged from 8.8% to 84.2%. Build your expected shots-on-target figure first, map it to a band, then compare the price with that band's fair odds.
Data & method
- Data: 21 European divisions, 2016/17–2025/26, 67,047 matches with full match statistics.
- Expected goals lite = least-squares fit (no intercept) of total goals on combined shots on target and combined other shots, fitted on all matches in the window.
- Other shots = total shots minus shots on target, so blocked and off-target efforts count here.
- Over 2.5 = three or more goals at full time.
- Priced over 2.5 = 1 / over price, scaled with the under price to sum to 100% (proportional margin removal), using a major bookmaker's pre-match prices.
- Fair odds = 1 / observed frequency; they contain no bookmaker margin.
- Caveat: This is a crude, count-based model: it ignores shot location, penalties and big chances, so it is far less precise than event-level expected goals.
- Caveat: The model is fitted and checked on the same matches, so its accuracy here is slightly flattering.
- Caveat: Shots, shots on target, corners, fouls and cards are full-match totals: they are recorded after the final whistle and say nothing about when they happened relative to the goals.
Quick Q&A
- How many goals is a shot on target worth?
- In this fit across 67,047 matches, each combined shot on target was worth about 0.31 goals. Shots that were blocked or missed the target added essentially nothing.
- How accurate is a shots-based model for over/under 2.5?
- Expected goals lite and the real over/under result agreed in 68.5% of matches. Matches whose expected goals reached 2.5 went over 70.0% of the time, against 32.8% for the rest.
- How often do low-chance matches still go over 2.5 goals?
- Rarely. With expected goals under 1.5, only 8.8% of matches went over 2.5, across 6,139 matches.
