This page describes the simple attack–defence model we use on the football data page and in worksheet question 11. It is for teaching probability and averages only—not betting advice.
Important: Predictions are generated from cached past results and a fixed formula. They do not use team news, injuries, or live odds. Treat every figure as a classroom illustration.
How the model works
- Data: Finished league matches from our API-Football cache (
fixtures_ft_PL.json / fixtures_ft_ELC.json), refreshed with the rest of the football quiz data.
- Next fixtures: The same next-match list as elsewhere on the site—official ECAL calendars when we have a usable map for the league, otherwise a merge of API-Football and The Odds API caches—so each club’s “next match” matches the predictions table and question 11.
- Team strength: For each club we look at goals for and against at home and away. We blend 70% from the last five games at that venue with 30% from the full season at that venue (constants
BLEND_RECENT / BLEND_SEASON in code).
- League context: We compare each side to league-average goals at home and away, then combine home attack × away defence (and vice versa) to get expected goals for the fixture. Expected goals are capped before display.
- Scoreline display: We show mean expected goals (two decimal places) and a rounded integer scoreline for easy table-updates in class.
- Win / draw / loss: We use a simple Poisson model on a 0–8 goals grid for each side, then normalise to percentages.
- Notes column: Short text flags which factors (e.g. strong home attack, leaky away defence) nudged the forecast—again for discussion, not tipping.
Premier League
Finished matches in model: cache from 23 April 2026.
Next fixtures: ECAL calendar. Official league calendar (ECAL), first kick-off after now (UK), when available.
| # |
Club |
Next opponent |
H/A |
Kick-off |
Predicted score (mean → rounded, club first) |
Win / draw / loss (club) |
Model note |
| 1 |
Manchester City FC |
Burnley FC |
Away |
Sun, 26 Apr 2026, 14:00 |
— |
— |
— |
| 2 |
Arsenal FC |
Newcastle United |
Home |
Sat, 25 Apr 2026, 17:30 |
— |
— |
— |
| 3 |
Manchester United FC |
Brentford FC |
Home |
Mon, 27 Apr 2026, 20:00 |
— |
— |
— |
| 4 |
Aston Villa |
Fulham FC |
Away |
Sat, 25 Apr 2026, 12:30 |
— |
— |
— |
| 5 |
Liverpool FC |
Crystal Palace FC |
Home |
Sat, 25 Apr 2026, 15:00 |
— |
— |
— |
| 6 |
Brighton & Hove Albion |
Chelsea FC |
Home |
Sun, 26 Apr 2026, 16:30 |
— |
— |
— |
| 7 |
AFC Bournemouth |
Leeds United |
Home |
Sat, 25 Apr 2026, 15:00 |
— |
— |
— |
| 8 |
Chelsea FC |
Brighton & Hove Albion |
Away |
Sun, 26 Apr 2026, 16:30 |
— |
— |
— |
| 9 |
Brentford FC |
Manchester United FC |
Away |
Mon, 27 Apr 2026, 20:00 |
— |
— |
— |
| 10 |
Everton FC |
West Ham United FC |
Away |
Sat, 25 Apr 2026, 15:00 |
— |
— |
— |
| 11 |
Sunderland AFC |
Nottingham Forest |
Home |
Fri, 24 Apr 2026, 20:00 |
— |
— |
— |
| 12 |
Fulham FC |
Aston Villa |
Home |
Sat, 25 Apr 2026, 12:30 |
— |
— |
— |
| 13 |
Crystal Palace FC |
Liverpool FC |
Away |
Sat, 25 Apr 2026, 15:00 |
— |
— |
— |
| 14 |
Newcastle United |
Arsenal FC |
Away |
Sat, 25 Apr 2026, 17:30 |
— |
— |
— |
| 15 |
Leeds United |
AFC Bournemouth |
Away |
Sat, 25 Apr 2026, 15:00 |
— |
— |
— |
| 16 |
Nottingham Forest |
Sunderland AFC |
Away |
Fri, 24 Apr 2026, 20:00 |
— |
— |
— |
| 17 |
West Ham United FC |
Everton FC |
Home |
Sat, 25 Apr 2026, 15:00 |
— |
— |
— |
| 18 |
Tottenham Hotspur FC |
Wolverhampton Wanderers |
Away |
Sat, 25 Apr 2026, 15:00 |
— |
— |
— |
| 19 |
Burnley FC |
Manchester City FC |
Home |
Sun, 26 Apr 2026, 14:00 |
— |
— |
— |
| 20 |
Wolverhampton Wanderers |
Tottenham Hotspur FC |
Home |
Sat, 25 Apr 2026, 15:00 |
— |
— |
— |
Championship
Finished matches in model: cache from 23 April 2026.
Next fixtures: ECAL calendar. Official league calendar (ECAL), first kick-off after now (UK), when available.
| # |
Club |
Next opponent |
H/A |
Kick-off |
Predicted score (mean → rounded, club first) |
Win / draw / loss (club) |
Model note |
| 1 |
Coventry City FC |
Wrexham AFC |
Home |
Sat, 25 Apr 2026, 15:00 |
— |
— |
— |
| 2 |
Ipswich Town FC |
West Bromwich Albion |
Away |
Sat, 25 Apr 2026, 15:00 |
— |
— |
— |
| 3 |
Millwall FC |
Leicester City FC |
Away |
Sat, 25 Apr 2026, 15:00 |
— |
— |
— |
| 4 |
Southampton FC |
Blackburn Rovers |
Home |
Sat, 25 Apr 2026, 15:00 |
— |
— |
— |
| 5 |
Middlesbrough FC |
Watford FC |
Home |
Sat, 25 Apr 2026, 15:00 |
— |
— |
— |
| 6 |
Wrexham AFC |
Coventry City FC |
Away |
Sat, 25 Apr 2026, 15:00 |
— |
— |
— |
| 7 |
Hull City AFC |
Charlton Athletic |
Away |
Sat, 25 Apr 2026, 15:00 |
— |
— |
— |
| 8 |
Derby County |
Queens Park Rangers FC |
Away |
Sat, 25 Apr 2026, 15:00 |
— |
— |
— |
| 9 |
Norwich City FC |
Swansea City AFC |
Home |
Sat, 25 Apr 2026, 15:00 |
— |
— |
— |
| 10 |
Birmingham City FC |
Bristol City FC |
Home |
Sat, 25 Apr 2026, 15:00 |
— |
— |
— |
| 11 |
Swansea City AFC |
Norwich City FC |
Away |
Sat, 25 Apr 2026, 15:00 |
— |
— |
— |
| 12 |
Bristol City FC |
Birmingham City FC |
Away |
Sat, 25 Apr 2026, 15:00 |
— |
— |
— |
| 13 |
Queens Park Rangers FC |
Derby County |
Home |
Sat, 25 Apr 2026, 15:00 |
— |
— |
— |
| 14 |
Sheffield United FC |
Preston North End FC |
Home |
Sat, 25 Apr 2026, 15:00 |
— |
— |
— |
| 15 |
Watford FC |
Middlesbrough FC |
Away |
Sat, 25 Apr 2026, 15:00 |
— |
— |
— |
| 16 |
Preston North End FC |
Sheffield United FC |
Away |
Sat, 25 Apr 2026, 15:00 |
— |
— |
— |
| 17 |
Stoke City FC |
Portsmouth FC |
Home |
Sat, 25 Apr 2026, 15:00 |
— |
— |
— |
| 18 |
West Bromwich Albion |
Ipswich Town FC |
Home |
Sat, 25 Apr 2026, 15:00 |
— |
— |
— |
| 19 |
Blackburn Rovers |
Southampton FC |
Away |
Sat, 25 Apr 2026, 15:00 |
— |
— |
— |
| 20 |
Portsmouth FC |
Stoke City FC |
Away |
Sat, 25 Apr 2026, 15:00 |
— |
— |
— |
| 21 |
Charlton Athletic |
Hull City AFC |
Home |
Sat, 25 Apr 2026, 15:00 |
— |
— |
— |
| 22 |
Oxford United FC |
Sheffield Wednesday FC |
Home |
Sat, 25 Apr 2026, 15:00 |
— |
— |
— |
| 23 |
Leicester City FC |
Millwall FC |
Home |
Sat, 25 Apr 2026, 15:00 |
— |
— |
— |
| 24 |
Sheffield Wednesday FC |
Oxford United FC |
Away |
Sat, 25 Apr 2026, 15:00 |
— |
— |
— |