Saturday, 24/10/2026 at 13:30
Full timePortsmouth 2:1 Millwall
Portsmouth were the model's likeliest winner before kick-off at 37%. They won 2–1. The biggest difference was Millwall's attack: 0.67 xG against 1.19 projected (−0.52). Portsmouth produced 0.82 xG against 1.31 projected (−0.49).
Goals
- 6' Jenson Metcalfe Millwall · 0.19 xG chance 0–1
- 16' Lyndon Dykes (o.g.) Portsmouth 1–1
- 82' Thomas Waddingham Portsmouth · 0.19 xG chance 2–1
The model against the result
- Portsmouth
- 37% What happened
- Draw
- 32%
- Millwall
- 31%
Data coverage Both teams have the full 20-match model window available.
Projected vs produced
Millwall produced 0.52 xG less than projected
Projected before kick-off Produced on the night
The shots behind it
- Shots
- 8
- 10
- On target
- 2
- 1
- Inside the box
- 5
- 5
- xG per shot
- 0.10
- 0.07
- Open play xG
- 0.63
- 0.61
- Set-piece xG
- 0.20
- 0.07
- Penalties
- —
- —
Shot-level xG may differ from the published match total
The provider publishes the match total separately from its shot-by-shot values. Those values are rounded to two decimals and, leaving out penalties and own goals, add up to its non-penalty xG: 0.82 for Portsmouth and 0.68 for Millwall.
Shot map
Both teams shown attacking the same goal for comparison.
All shots
18 shots · 1.51 xG
Hover or tap a shot, or step through them with the arrows.
- Portsmouth
- Millwall
- Filled = goal
- Dot area = xG (the smallest chances drawn at a minimum size)
Recent form
1.21 xG created 1.00 xGA
- D 0.40 created, 0.82 conceded against Charlton Athletic
- D 1.60 created, 0.59 conceded against Blackburn Rovers
- L 1.18 created, 1.28 conceded against Southampton
- W 2.22 created, 2.01 conceded against Sheffield United
- W 1.19 created, 0.29 conceded against Norwich City
- D 0.65 created, 1.01 conceded against Wolverhampton
1.67 xG created 1.31 xGA
- L 1.67 created, 1.23 conceded against Blackburn Rovers
- D 1.69 created, 1.52 conceded against Middlesbrough
- D 2.68 created, 1.87 conceded against West Ham United
- W 1.09 created, 0.65 conceded against Preston North End
- L 1.05 created, 1.83 conceded against Swansea City
- D 1.84 created, 0.73 conceded against Lincoln City
xG created xG conceded (xGA) W / D / L: the match result
Head to head
Pre-match model & market record
1 qualified edge flagged0 won1 lost
- Lost
View pre-match record Hide pre-match record
| Selection | Price | Edge | Result |
|---|---|---|---|
| Draw | 3.25 | +2.7% | Lost |
Pre-match model vs market
| Outcome | Model | Market | Difference | Fair odds |
|---|---|---|---|---|
| Portsmouth | 37.1% | 39.2% | −2.1 pp | 2.69 |
| Draw | 31.6% | 28.7% | +2.9 pp | 3.16 |
| Millwall | 31.3% | 32.1% | −0.8 pp | 3.20 |
Other markets
| Outcome | Model | Market | Difference | Fair odds |
|---|---|---|---|---|
| Portsmouth to score | 75.7% | 73.1% | +2.6 pp | 1.32 |
| Portsmouth not to score | 24.3% | 26.9% | −2.6 pp | 4.12 |
| Millwall to score | 72.6% | 72.3% | +0.2 pp | 1.38 |
| Millwall not to score | 27.4% | 27.7% | −0.2 pp | 3.65 |
| Both teams to score | 56.8% | 53.7% | +3.2 pp | 1.76 |
| Both teams not to score | 43.2% | 46.3% | −3.2 pp | 2.32 |
| Portsmouth 2+ goals | 38.5% | 39.2% | −0.7 pp | 2.60 |
| Portsmouth at most 1 goal | 61.5% | 60.8% | +0.7 pp | 1.63 |
| Millwall 2+ goals | 34.1% | 37.5% | −3.4 pp | 2.94 |
| Millwall at most 1 goal | 65.9% | 62.5% | +3.4 pp | 1.52 |
| Over 1.5 goals | 75.7% | 72.9% | +2.7 pp | 1.32 |
| Under 1.5 goals | 24.3% | 27.1% | −2.7 pp | 4.11 |
| Over 2.5 goals | 46.8% | 47.4% | −0.6 pp | 2.14 |
| Under 2.5 goals | 53.2% | 52.6% | +0.6 pp | 1.88 |
Prices and probabilities are the ones stored before kick-off; nothing here is recalculated. Edge is the model's probability times the price, minus one, so a flagged outcome that lost is the ordinary case rather than a contradiction.
Model details
Show Hide
- Fit window
- the last 20 matches, recency weighted (a match 107 days old counts half)
- Portsmouth sample
- 20 matches
- Millwall sample
- 20 matches
- Computed
- 59 minutes before kick-off
- Prices taken
- 1 hour before kick-off
Limitations
The model reads expected goals and nothing else. It does not know the lineups, who is injured or suspended, what either side has to play for, the weather, or how congested the schedule around this match is.