惯性聚合 高效追踪和阅读你感兴趣的博客、新闻、科技资讯
阅读原文 在惯性聚合中打开

推荐订阅源

Y
Y Combinator Blog
博客园_首页
量子位
让小产品的独立变现更简单 - ezindie.com
让小产品的独立变现更简单 - ezindie.com
H
Help Net Security
The Cloudflare Blog
钛媒体:引领未来商业与生活新知
钛媒体:引领未来商业与生活新知
A
About on SuperTechFans
腾讯CDC
H
Hackread – Cybersecurity News, Data Breaches, AI and More
D
DataBreaches.Net
L
LangChain Blog
Stack Overflow Blog
Stack Overflow Blog
Jina AI
Jina AI
月光博客
月光博客
云风的 BLOG
云风的 BLOG
博客园 - 聂微东
Hugging Face - Blog
Hugging Face - Blog
雷峰网
雷峰网
C
Check Point Blog
V
V2EX
T
Tailwind CSS Blog
freeCodeCamp Programming Tutorials: Python, JavaScript, Git & More
Microsoft Security Blog
Microsoft Security Blog

DEV Community

Authentication Security Deep Dive: From Brute Force to Salted Hashing (With Java Examples) Why AI Systems Don’t Fail — They Drift Spilling beans for how i learn for exam😁"Reinforcement Learning Cheat Sheet" I Replaced Chrome with Safari for AI Browser Automation. Here's What Broke (and What Finally Worked) How Python Borrows Other People's Work The $40 Architecture: Processing 1 Billion API Requests with 99.99% Uptime Vibe Coding: A Workflow Guide (From Zero to SaaS) Most webhook security guides protect the wrong side. The scary part is delivery. Headless CMS for TanStack Start: Build a Blog with Cosmic EU Age Verification App "Hacked in 2 Minutes" — What Actually Happened Comfy Cloud’s delete function does not actually remove files Running AI Models on GPU Cloud Servers: A Beginner Guide Event-driven media intelligence with AWS Step Functions and Bedrock I scored 500 AI prompts across 8 quality dimensions — here's what broke How to Call Google Gemini API from Next.js (Free Tier, No Backend Needed) The Portal Protocol: Reclaiming Human Connection in the Age of AI How to Fix Your Team's Scattered Knowledge Problem With a Self-Hosted Forum Intro to tc Cloud Functors: A Graph-First Mental Model for the Modern Cloud Designing Multi-Tenant Backends With Both Ownership and Team Access I Built a Neumorphic CSS Library with 77+ Components — Here's What I Learned PostgreSQL Performance Optimization: Why Connection Pooling Is Critical at Scale Cómo construí un SaaS multi-rubro para gestionar expensas en Argentina con FastAPI + Vue 3 🚀 I Built an Ethical Hacking Scanner Tool – Open Source Project I Replaced /usage and /context in Claude Code With a Single Statusline A Pythonic Way to Handle Emails (IMAP/SMTP) with Auto-Discovery and AI-Ready Design I Collected 8.9 Million Polymarket Price Points — Here's What I Found About How Markets Really Move EcoTrack AI — Carbon Footprint Tracker & Dashboard Everyone's Using AI. No One Agrees How. 5 self-hosted ebook managers worth trying in 2026 Building Your First AI Agent with LangChain: From Chatbot to Autonomous Assistant
How we predict the FIFA World Cup 2026 with a Dixon-Coles...
Waqas R · 2026-06-23 · via DEV Community

Waqas R

We're building Onside Arena — an open AI football analytics platform for the FIFA World Cup 2026 and FPL. Live model record: 75% of MD1 winners called correctly. Here's the technical core.

TL;DR

  • Dixon-Coles bivariate Poisson on team goal expectations
  • Bayesian-shrunk ratings learned from 12 past World Cups + 8 Premier League seasons (~32K matches)
  • Live recalibration after every played match in the tournament
  • Outputs per-match win/draw probabilities, scoreline distributions, and Monte Carlo simulations of the bracket
  • Receipts published live at onsidearena.com/world-cup-2026/model-record

Why Dixon-Coles

A standard independent-Poisson model assumes home and away goal counts are independent given attack/defence rates. That's wrong for football — 0-0 and 1-1 are over-represented vs Poisson, and 1-0 / 0-1 are under-represented. Dixon-Coles (1997) introduces a low-score correction term that down-weights the independence assumption near origin.

The rho parameter is learned from data. For our WC + PL training set, rho is approximately -0.13, which materially shifts predicted draw probabilities by 4-6 percentage points on average.

Where the team ratings come from

Attack/defence rates are not observed — they're estimated. We use a hierarchical Bayesian shrinkage model:

  • Each team has a latent attack strength and defence strength
  • Priors centered on confederation mean (UEFA, CONMEBOL, etc.) so newly-qualified nations aren't extreme outliers
  • Likelihood: every observed match score in our 32K-match corpus contributes evidence
  • MAP estimation via Stan-style sampler, but we cache point estimates per nation pair for fast scoring

Home advantage is a single global parameter (~0.31 log-goals), with a learned multiplier for neutral-venue WC matches (~0.83x of league home advantage).

Live recalibration

This is the part most public models don't do. After every WC 2026 match plays out:

  1. Compute the model's pre-match attack/defence rates and the actual scoreline
  2. Compute the Bayesian update to that team-pair's posterior
  3. Propagate the update to the team's confederation-cluster prior
  4. Re-score all future matches involving either team

Net effect: a side like Iraq, which had a wide posterior because of limited recent international form, sharpened ~2x faster than a side like France whose prior was already tight.

Sanity-check: what we got right and wrong

From MD1:

  • Argentina to top Group H @ 73% -> 2-0 vs Austria (correct)
  • France to top Group K @ 81% -> 3-0 vs Iraq (correct)
  • England to win Group C @ 68% -> won 2-0 (correct)
  • Germany draw @ 64% -> lost (model was too confident in Germany's defensive solidity vs current form)

Live accuracy: 24/32 calls correct = 75%. Brier score on win-probability: 0.179 (lower is better, 0.25 is naive baseline).

What's in the API

We publish the model's outputs as free JSON via MCP and REST:

  • GET /api/v1/wc/probabilities — per-match win/draw probabilities
  • GET /api/v1/wc/champions — current Monte Carlo champion distribution (10K sims)
  • GET /api/v1/wc/upsets — biggest projected upsets in upcoming 7 days
  • npm: onside-football-mcp — drop-in for Claude / Cursor / ChatGPT App Directory

Full docs at onsidearena.com/llms.txt.

What we'd love feedback on

Things we're still tuning:

  1. Squad-rotation prior: We don't yet condition on starting XI announcements — model still uses pre-tournament team ratings. Fix is in progress.
  2. Set-piece specialist weighting: A team's set-piece goal share is volatile and we under-weight it.
  3. Tail risk in knockouts: The model is conservative on extra-time and penalty shootouts. We use a separate logistic mixture there.

If you build prediction models for sports, or are interested in Bayesian methods applied to live recalibrating systems, would love to hear how you handle these problems.


Live model record (we update it after every match): https://onsidearena.com/world-cup-2026/model-record

Follow @onsidearena on X for daily picks and post-match receipts.