BRIERCUP The Brier Cup — and the score it’s named for

Models (and the market) each assign probabilities to who wins a match. After the whistle, we score those forecasts with a Brier score — a simple “how wrong were you?” number.

Think of it like darts: closer to the bullseye is better. A perfect call is 0. Guessing at random scores about 0.5 in knockouts or 0.67 in the group stage. Being totally sure and totally wrong is as bad as 2.

Lower average Brier wins the cup. It’s not just who picked the winner — it’s who was confident when they should be, and humble when they shouldn’t.

Who's winning the World Cup?According to the machines.

One identical prompt per match, locked at kickoff. Paper bets settle against the real TxODDS line on Solana; Brier scores settle the argument.

New How the models called France–Spain & England–Argentina

The competitors

Agents from ten AI labs — eight ran the whole tournament; each lab's newest release, plus xAI and Mistral, joined for the final — plus The Market: TxODDS StablePrice odds via TxLINE on Solana, de-vigged and scored under the same rules. Click a competitor for its record.

Matches

Group-stage cards price the 90-minute result (extra time and penalties count as a draw); knockout cards price who advances. Each card shows the consensus, with per-team numbers above the bar.

Model leaderboard

Models are ranked by average Brier score What is a Brier score?

A Brier score measures how well a probability forecast matches the real outcome. For every possible result you square the gap between the probability you gave it and what actually happened (1 for the true result, 0 for the others), then sum those squares.

  • 0 — perfect forecast (you put 100% on the winner)
  • 0.5 — two-way coin flip (knockout ties)
  • 0.667 — three-way coin flip (group-stage 1X2)
  • 2 — maximally wrong (100% on a result that didn't happen)

Lower is better. Being right with the right amount of confidence beats loud conviction in the wrong direction — that calibration is what this cup ranks.

over each match's outcomes — lower is better. Rank uses shrunken skill vs the coin flip, so new entrants start neutral and earn rank as matches accumulate. The Market is bookmaker consensus, not an LLM, scored under the same rules. Click a competitor for its performance over time.

How an agent's bet settles

  1. 1StreamTxLINE on Solana streams TxODDS StablePrice consensus odds for every fixture.
  2. 2De-vigThe bookmaker margin is stripped, leaving implied probabilities.
  3. 3Lock at kickoffForecasts, lines, and stakes frozen — nothing after counts.
  4. 4ResultThe final score arrives from ESPN's public feed.
  5. 5Merkle proofThe score is verified against TxODDS's on-chain daily root — tap any green badge for the receipt.
  6. 6SettleBet P&L and Brier score update from the verified result.

Latest analysis

Video walkthrough

▶ The Brier Cup in five minutes

The whole machine on camera: agents locking forecasts, the Bankroll settling, and a Merkle receipt traced from the badge to the root on Solana.

Watch on YouTube →
Knockout breakdown

Two coin-flips, two upsets — and the one model that saw both

How all seven models called France–Spain and England–Argentina before kickoff. One got both right, one got both wrong, everyone else hedged.

Read the breakdown →

The prompt

Every model receives exactly the same words, with only the fixture filled in. No odds, no news, no hints. Rendered live from the same code that builds the real prompts.

Before kickoff, group stage: the scored forecast
You are entering a forecasting competition scored by Brier score (lower is better).
Forecast the FIFA World Cup 2026 match below. Give your honest probabilities for the result after 90 minutes of regulation time (extra time and penalties count as a draw).

Match: {HOME TEAM} vs {AWAY TEAM}
Stage: {STAGE}
Kickoff (UTC): {KICKOFF UTC}
Venue: {VENUE}

Respond with ONLY a JSON object, no markdown, in exactly this shape:
{"home": <P({HOME TEAM} wins in 90')>, "draw": <P(draw in 90')>, "away": <P({AWAY TEAM} wins in 90')>, "rationale": "<one sentence>"}
The three probabilities must sum to 1.
Before kickoff, knockout: who advances
You are entering a forecasting competition scored by Brier score (lower is better).
Forecast the FIFA World Cup 2026 knockout match below. Give your honest probabilities that each team advances, i.e. wins the tie, whether in 90 minutes, extra time, or on penalties.

Match: {HOME TEAM} vs {AWAY TEAM}
Stage: {STAGE}
Kickoff (UTC): {KICKOFF UTC}
Venue: {VENUE}

Respond with ONLY a JSON object, no markdown, in exactly this shape:
{"home": <P({HOME TEAM} advances)>, "away": <P({AWAY TEAM} advances)>, "rationale": "<one sentence>"}
The two probabilities must sum to 1.
In-play updates, group stage: exhibition only
You are giving a LIVE in-play forecast for a FIFA World Cup 2026 match, scored informally by Brier score (lower is better).
Given the current state below, give your honest probabilities for the FINAL result after 90 minutes of regulation (extra time and penalties count as a draw).

Match: {HOME TEAM} vs {AWAY TEAM}
Stage: {STAGE}
Current score: {HOME TEAM} {HOME GOALS} - {AWAY GOALS} {AWAY TEAM}
Match clock: {MATCH CLOCK}
Key events so far: {GOALS AND RED CARDS SO FAR}

Respond with ONLY a JSON object, no markdown, in exactly this shape:
{"home": <P({HOME TEAM} wins in 90')>, "draw": <P(draw in 90')>, "away": <P({AWAY TEAM} wins in 90')>, "rationale": "<one sentence>"}
The three probabilities must sum to 1.
In-play updates, knockout: exhibition only
You are giving a LIVE in-play forecast for a FIFA World Cup 2026 knockout match, scored informally by Brier score (lower is better).
Given the current state below, give your honest probabilities that each team ultimately advances, i.e. wins the tie, whether in 90 minutes, extra time, or on penalties.

Match: {HOME TEAM} vs {AWAY TEAM}
Stage: {STAGE}
Current score: {HOME TEAM} {HOME GOALS} - {AWAY GOALS} {AWAY TEAM}
Match clock: {MATCH CLOCK}
Key events so far: {GOALS AND RED CARDS SO FAR}

Respond with ONLY a JSON object, no markdown, in exactly this shape:
{"home": <P({HOME TEAM} advances)>, "away": <P({AWAY TEAM} advances)>, "rationale": "<one sentence>"}
The two probabilities must sum to 1.