Back to projects YSKM523 / 2025-26-UEFA-oracle

UEFA Champions League Oracle

AI predictions for the 2025-26 UEFA Champions League from quarterfinals onwards. Elo + xG + injury-weighted Elo + Poisson + Monte Carlo vs Polymarket.

Active · Research Sole author last updated: May 6, 2026

Context

The 2025-26 UEFA Champions League runs against a ~$252M Polymarket winner market. This is the sister project to worldcup-oracle — same modeling toolkit, but with a different conclusion about what actually adds skill on this specific problem.

Approach

Production stack — and what I dropped from it

Production: Club Elo + QF xG adjustment (both legs) + injury-weighted Elo + Poisson scoreline + Monte Carlo.

Behind a flag: the 3-model TSFM ensemble (Chronos-2 / TimesFM-2.5 / FlowState).

The honest version of why: I ran an 83-tie, 5-season backtest before going live. The TSFM ensemble added no point-prediction skill over pure Elo on this dataset. So Elo is the production engine; TSFMs stay in --with-tsfm as an ablation / research layer. This is the opposite finding from worldcup-oracle, where the TSFM ensemble is doing real work — and the difference (knockout games vs full tournament from group stage, much smaller sample) is itself the lesson.

Match-by-match modeling

  • Each tie is simulated as two legs with the Poisson model.
  • Injury data from FotMob is reweighted into team Elo (a Bayern starting XI with 4 starters out is not the team that scored their Elo rating).
  • xG from quarterfinal first legs is folded back into the Elo prior for the second leg.
  • 50K Monte Carlo runs per round produce win / advance / champion probabilities.

Current State (May 5, 2026)

Quarterfinals resolved. PSG, Bayern, Atletico, Arsenal advanced.

Semifinals partially played: Arsenal beat Atletico 2-1 on aggregate → locked into the final. PSG won the first leg 5-4 vs Bayern; second leg at the Allianz Arena tomorrow.

Live edges (Polymarket UCL winner market, $252M volume):

  • Arsenal — 61.4% AI vs 41.5% market = +19.9pp STRONG BUY (Half-Kelly 17.0%)
  • PSG — 21.7% AI vs 28.5% market = −6.8pp STRONG SELL
  • Bayern Munich — 16.9% AI vs 30.5% market = −13.6pp STRONG SELL

The model thinks the market hasn’t fully priced in Arsenal as a confirmed finalist with the highest adjusted Elo of any remaining team.

What I’m Learning

The interesting honest result here isn’t an edge — it’s the backtest that killed TSFMs as a production component. Sports forecasting at this small-sample scale is mostly about getting Elo + injuries + xG right. A foundation model that’s trained on energy demand or retail patterns doesn’t have a privileged signal over a well-tuned domain model on 83 ties.

This same model architecture does help on World Cup, where you have 104 matches and longer-horizon attacking-defensive trajectories to learn from. So the difference isn’t “TSFMs work / don’t work” — it’s “match it to the data regime.”

Stack: Python · Club Elo · Poisson · Monte Carlo · FotMob injury feed · xG blending. TSFMs (Chronos-2 / TimesFM-2.5 / FlowState) behind ablation flag.

Sister project: World Cup Oracle — where TSFMs do earn their seat.

Repo: github.com/YSKM523/2025-26-UEFA-oracle