Fixture360 only lists fixtures from a curated set of leagues, chosen specifically to keep our prediction model accurate.
Shock result as Charlton defy the odds to beat Middlesbrough 0-1.
📝 Match Report
How It Unfolded
Charlton beat Middlesbrough 0-1 at Riverside Stadium, Regular Season - 37, in the Championship. That is the final score; the rest of this report grades it against what the data forecast beforehand.
The Model vs The Result
The Poisson model went into this projecting Middlesbrough 1.60 xG and Charlton 0.67 xG, a combined 2.26. The scoreboard read 0-1 for 1 actual goal. Middlesbrough fell 1.6 short of their projected output. Those figures were built on strength ratings of Middlesbrough attack 1.08 / defence 0.70 against Charlton attack 0.78 / defence 1.14, drawn from 82/36 games (CurrentSeason).
On the result, the model split it Middlesbrough 59% | Draw 27% | Charlton 14%, with Middlesbrough to win its most likely call at 59%. Instead the game produced a Charlton win, an outcome the model had rated at just 14% — a clear break from expectation and a genuine upset by the numbers.
Goals & Markets
The model rated Over 2.5 goals at 39%. The game delivered 1, so it stayed under — the model's lean was correct. Over 1.5 had been 67% and missed. On both teams to score, the model sat at 40% and the match did not — another call in the model's favour. Historically the two sides average 48% Over 2.5 across their same-competition games (Middlesbrough 50%, Charlton 45%), a base rate that agreed with today's under. Their combined BTTS history runs at 49%, which matched the one-sided outcome.
Trading Patterns vs Reality
Middlesbrough's trading profile (82 games, 40 home) set some clear expectations: BTTS lands in 52% of their matches — today it did not; they fail to score in 26% of games, a blank that repeated today.
Charlton's trading profile (82 games, 40 away) set some clear expectations: BTTS lands in 45% of their matches — today it did not; they keep a clean sheet 39% of the time, and duly kept one.
Form vs Result
The form lines were close — Middlesbrough 1.62 PPG, Charlton 1.55 PPG — offering no strong steer, and the Charlton win broke the near-deadlock. Middlesbrough (home/away splits) managed 0 against a 1.42 scoring average — below par going forward. Charlton (home/away splits) conceded 0 against a 1.27 average — tighter than their form line.
Verdict
Grading the result against the stored data, 2 of 3 pre-match signals came in: result (miss), Over 2.5 (hit), BTTS (hit). A mixed scorecard — the data caught the broad shape of the game but not every market.
💡 Key Insights
⚠️ This match report is generated algorithmically from the final score, our prediction model, and each team's historical form and trading data. Analysis is for informational purposes only.