Methodology

A benchmark is worth only as much as its verifiability. This page documents in full how scoring works here — generated directly from the code that computes the numbers.

Proof: submitted before the event

Every prediction stores its submission time. If it precedes the event, the entry is marked “✓ ahead” in the event list. Where the timestamp is missing, no marker is shown — only what can be proven is claimed.

The datasets are public JSON files and their change history is openly visible. It is therefore externally verifiable that a prediction existed before the event and was not altered afterwards.

The competition harness HARNESS_V2

FutureBench scores the deployed product, not the bare model — every model answering from what it already knows, under one identical protocol: same prompt, same information, same time window, same validation, same retry budget. No model may look anything up. Nothing is ever backfilled, coerced, or reinterpreted after the lock.

  • One versioned template. Every model receives the same system and user prompt; only the mechanism for structured output differs. Each prediction stores a SHA-256 hash of the prompt it was given, so any change to the wording is visible in the data.
  • The scoring rule is disclosed. Each model is told how its answer will be scored. With proper scoring rules this is methodologically required: a model that does not know the rule would be penalised for ignorance rather than for a poor forecast.
  • The output is the stored format. The requested JSON is exactly the value that ends up in the public data files. It is checked by the same validators the site uses and stored unchanged — there is no cleanup step in between.

Limits enforced by the runner

20
tool calls per prediction (none available in this version)
5
minutes per attempt
2
retries on transport errors
2
format repair turns (format only, never the value)

System prompt, verbatim

This text is read from the same file the runner sends. It cannot drift from what the models actually received.

You are competing in FutureBench, a public prediction benchmark for language models.

Real events are scored publicly. Your prediction is committed to a public git repository BEFORE the event begins, so it cannot be changed afterwards. Other frontier models answer the exact same question under the exact same protocol, and the leaderboard is citable.

You have NO access to the internet, to search, or to any tool. Every competitor runs under this same restriction, so nobody can look anything up. The only external information anyone gets is what appears in this message: the question, how it will be resolved, and the context block below. Everything else must come from what you already know.

How to compete well:
- Your knowledge has a cutoff and this event lies after it. Reason from durable structure — relative strength, base rates, historical distributions, how such things usually resolve — rather than from any specific recent report you think you remember.
- Use the context block as the anchor when it gives you one. A stated last known value is the single most informative number you have.
- Do not invent sources, headlines or figures to justify an answer. A confident fabrication scores no better than an honest guess and is visible in the published record.
- Commit to the single answer that maximises your expected score under the stated scoring rule.
- Be calibrated, not brave. Overconfidence is punished by the scoring rule; so is refusing to commit.
- Answer even when uncertain. A missing answer scores nothing at all and is recorded publicly as a failure to answer.

Output discipline:
- End your reply with exactly one fenced ```json code block containing your answer.
- The JSON schema is fixed and given below. No extra fields, no comments, no trailing text after the block.
- Your reasoning may precede the block in plain prose; only the JSON block is stored as your prediction.
Score prediction scoreline
PREDICTION TYPE: scoreline (final score of a two-sided match)

SCORING RULE (Kicktipp scheme, higher is better):
- 4 points: exact score
- 3 points: correct goal difference (but not the exact score)
- 2 points: correct outcome only (home win / draw / away win)
- 0 points: wrong outcome

Both goal counts must be non-negative integers. Predict the score at the end of the
period the question names — do not add extra time or penalties unless the question
explicitly asks for the result after them.

OUTPUT SCHEMA:
{
  "prediction": { "kind": "scoreline", "home": <integer >= 0>, "away": <integer >= 0> },
  "rationale": "<optional, max 500 characters>"
}
Numeric estimate numeric
PREDICTION TYPE: numeric (a single point estimate)

SCORING RULE (lower is better): absolute error |your value − actual value|.
Aggregated across events as MAE, MAPE and RMSE, and compared against a reference
baseline via a skill score.

Because absolute error is minimised by the MEDIAN of your belief distribution — not
by the mean and not by a dramatic outlier — state the value you consider equally
likely to be too high as too low. Use the exact unit and precision the question
states. Give a plain number: no thousands separators, no currency symbols, no ranges.

OUTPUT SCHEMA:
{
  "prediction": { "kind": "numeric", "value": <number> },
  "rationale": "<optional, max 500 characters>"
}
Probability (yes/no) binary
PREDICTION TYPE: binary (probability that the statement turns out TRUE)

SCORING RULE (lower is better): Brier score (p − outcome)², plus log loss and
accuracy at the 0.5 threshold as secondary metrics.

These are proper scoring rules: your expected score is best when you report your
TRUE probability. Note that 0 and 1 are almost never optimal — under log loss a
confident wrong answer at exactly 0 or 1 is catastrophic. Do not round to 0.5 to
play safe either; that discards what you do know.

OUTPUT SCHEMA:
{
  "prediction": { "kind": "binary", "probability": <number between 0 and 1> },
  "rationale": "<optional, max 500 characters>"
}

No model can search, browse or call a tool, and every model is told so plainly. The only external information anyone receives is the question, the resolution rule and a short context block from the data feed — for a market, that includes the last known value. Everything else has to come from what the model already knows.

This is a deliberate narrowing. Letting each model use its provider’s own search would measure the search index as much as the model, and those indexes differ in ways nobody outside the labs can inspect. Removing retrieval costs realism and buys comparability: whatever separates two models here, it is not that one had a better search engine.

Sampling settings are left at each provider’s default. Fixing a temperature would suggest a control we do not have, because several reasoning APIs ignore the parameter.

Time window

Predictions are collected in a window that closes at the event’s lock time. All models of one event are queried in the same batch at the same moment, so no model gets fresher information than another.

An answer that arrives after the lock is discarded and never exported. A daily check verifies this invariant against the whole database, because the citability of the leaderboard rests on it.

Missing answers

A refusal is a result. If a model produces no valid answer within its budget, the gap is published with its reason instead of being quietly filled. Values are never corrected: an impossible probability of 1.3 stays invalid rather than becoming 1.0.

Published reason codes

refusal
the model declined to answer
invalid-output
no valid value even after the repair turns
timeout
no reply within the time limit
api-error
the provider’s API returned an error
rate-limited
rate limit not cleared before the lock
late
answer arrived after the lock

How events are resolved

The resolution source and the rule for reading it are fixed when the event is created, before anyone has predicted. The models see that rule verbatim in their prompt — they read exactly what the operator will read later.

There is no operator discretion after the lock. Where the rule cannot produce exactly one value, the event is voided — it stays visible with its reason and scores nothing for anyone. Voiding is the only possible outcome of a dispute; a resolution is never rewritten.

An event is voided when

  • the stated rule does not yield exactly one value
  • the source is unavailable or contradicts itself
  • the event is cancelled, postponed, or started early
  • the reported value violates the event type’s contract

Model versions

One leaderboard row is one model version. Every prediction records the model id the API reported back, so a silent change behind a floating alias becomes visible. When that happens the row is frozen and a new one starts — results from two versions are never mixed.

A model that leaves the competition keeps its row and its history. Nothing is deleted — removing weak results afterwards would be exactly the selection effect a benchmark has to rule out.

Kinds of prediction

Score prediction scoreline
Input format: 2-1
Numeric estimate numeric
Input format: 4512.30
Probability (yes/no) binary
Input format: 0.70 / 70%

Metrics

Each category decides which metrics it displays. For error measures, lower is better.

Points

kicktipp-points higher is better

Total points under the Kicktipp scheme: 4 for the exact score, 3 for the correct goal difference (draws excluded), 2 for the correct outcome. Only comparable when models were scored on the same number of events — otherwise use points per event.

applies to: scoreline

Points/event

points-per-event higher is better

Average Kicktipp points per scored event. Fair comparison when models submitted different numbers of predictions.

applies to: scoreline

Exact

exact-acc higher is better

Share of events whose exact score was predicted correctly.

applies to: scoreline

Outcome

tendency-acc higher is better

Share of events where the direction was right (home win, draw or away win) — exact hits included.

applies to: scoreline

MAE

mae lower is better

Mean absolute error: the average distance between estimate and actual value, in the unit of the target. Robust against outliers.

applies to: numeric

RMSE

rmse lower is better

Root mean squared error. Penalises individual large misses far more heavily than the MAE does.

applies to: numeric

MAPE

mape lower is better

Mean absolute percentage error: the deviation relative to the actual value. Makes categories of different magnitudes comparable. Events with an actual value of zero are skipped.

applies to: numeric

Brier

brier lower is better

Brier score: the mean squared distance between the stated probability and the actual outcome (0 = perfect, 0.25 = uninformative 50/50, 1 = confidently wrong). A proper scoring rule — it rewards honest probabilities instead of overconfidence.

applies to: binary

Log loss

log-loss lower is better

Negative log-likelihood: penalises confidently wrong forecasts far more sharply than the Brier score. Probabilities are clipped marginally away from 0 and 1 so that a single total miss cannot drive the value to infinity.

applies to: binary

Hit rate

accuracy-50 higher is better

Share of correct yes/no calls at a 50 % threshold. Shown for orientation only — the ranking uses Brier and log loss, because hit rate does not penalise overconfidence.

applies to: binary

Skill

skill-score higher is better needs baseline

Skill score against the baseline: 1 − loss(model) / loss(baseline). Above 0 means better than the reference (bookmaker consensus, random walk or latest poll), 0 means equal, negative means worse. The ratio cancels out the unit, which makes this figure comparable across categories and the basis of the overall leaderboard.

applies to: all kinds of prediction

Prediction Score

prediction-score higher is better needs baseline

The headline figure (SCORE_V1): 100 × (1 − loss(model) / loss(reference)). 0 means as good as the naive reference, 100 means perfect, negative means worse than the reference. The loss ratio cancels the unit, so the score is comparable across categories; the overall board aggregates it via the geometric mean of the ratios.

applies to: all kinds of prediction

Baselines by category

The key question is not “how good is the value?” but “does the model beat the established reference?”. Categories without a solid reference deliberately show no skill score rather than inventing a baseline.

FIFA World Cup 2026

Scored: Score after 120 minutes (penalty shootouts excluded)

Ranked by Points

No baseline — therefore no skill score in this category.

Football leagues

Scored: Score after 90 minutes

Ranked by Points/event

No baseline — therefore no skill score in this category.

Crypto

Scored: Closing price at 00:00 UTC

Ranked by MAPE

Random walk: forecasts the last known closing price unchanged. Hard to beat for crypto, where volatility is high and predictability is low.

Stock index

Scored: Friday closing price

Ranked by MAE

Random walk: forecasts the last known closing price unchanged. The classic yardstick for financial forecasts.

Elections & politics

Scored: Probability that the event occurs

Ranked by Brier

Latest poll: the most recent published survey before the event, carried over unchanged as a probability.

Mixed sports

Scored: Score after 90 minutes

Ranked by Points/event

Bookmaker consensus: the most likely score implied by the odds. Usually right on the outcome, rarely on the exact score.

Limits of interpretation

  • Sample size. Every table shows a “Scored” column. With few events, chance matters more than skill, so rankings are not reliable. Confidence intervals are planned for a later stage.
  • Points are not comparable across categories. A points total depends on the number of events, an error measure on the unit. Only the skill score against the baseline is dimensionless and therefore transferable.
  • Proper scoring rules instead of hit rate. For probabilities we rank by Brier score and log loss. A plain hit rate would reward models that always state extreme probabilities.
  • Prototype status. Apart from the completed 2026 World Cup, all categories currently hold sample data. They serve to build the interface, not to assess models.