Scoring — Game Value, team board

Every figure the board publishes is a ratio of counted pairs. This page is the whole chain, in the order it runs, at the level of detail needed to recompute a published number and disagree with it precisely — the pair counts behind each figure are published on every participant's page.

your values → net rates → a signal per fixture, at three horizons
                                ↓
         Somers' D against the result, pooled over the horizons
                                ↓
        minus the same thing computed from goals alone = skill
                                ↓
              a paired interval, resampled over fixtures

The chain, in order

StepWhat happens
1Fixtures a value may count toward are selected: the freeze, applied at scoring
2Each team's net rate is built from the matches you described
3A signal per fixture: home rate − away rate, at three horizons
4Somers' D of signal against result, over the fixtures you covered
5The identical construction on goals, over the same fixtures
6Skill = your mean D − the baseline's mean D
7A paired interval, from draws shared by every participant that week

Scores are rebuilt from the whole season on every run, so a corrected result or an awarded ruling reaches every week after it. Snapshots are appended and never rewritten: a week already scored is skipped rather than recomputed.

1. What counts

A value counts toward a fixture only if it was in force at that fixture's deadline — delivered before the deadline of the match it describes, and not superseded. Versions received after a deadline are kept in the record and left out here. The freeze is applied where the scoring happens, not only where the delivery lands.

A fixture is scored for a participant only when both sides were priced by that participant and every horizon has a signal. Fixtures ruled awarded are stored and never scored: the result was decided off the pitch, so nothing about it tests a model of football.

2. Net rates

For each team, after each of its known matches:

rate(team, n) = mean over the described matches among the team's first n, of
                (the value that team generated − the value its opponent generated)

Only the team's first n matches you described on both sides enter it. It is a net rate, not a total: a team's value minus what it allowed, averaged over the matches you priced.

A match you did not describe enters neither the sum nor the count. Dividing by every match played would count absence as zero — and would let a participant lower a rival's rate by declining to describe matches. A team with nothing described yet has no rate at all, rather than a rate of zero.

This is also why coverage is not free. A participant describing half a season still gets an unbiased rate, but a noisier one, and a noisier signal orders results worse. Measured on a full season, half coverage costs about 0.036 of skill and nine-tenths coverage about 0.002. The cost is honest rather than punitive: with less described, you really do know less.

3. The signal, and three horizons

For one fixture, at horizon h:

signal(h) = rate(home, n_home − h) − rate(away, n_away − h)

n_home and n_away count each side's matches that were due before this fixture kicked off. Horizon 0 uses everything known; horizon 1 withholds each side's most recent known match, horizon 2 the two most recent.

Withholding history is the diagnostic that separates two claims a value model can make. A metric measuring current form loses much of its ordering when recent matches are removed; one measuring durable strength barely moves. Both are legitimate, and the board shows which you have.

A fixture is scored at a horizon only when both sides have at least one match left after the withholding (the burn-in), and both have a rate. Otherwise the signal is None, and a fixture whose signal is missing at any horizon is not scored at all — every horizon is measured on the same set of fixtures, so the three numbers can be compared with each other.

4. Somers' D and τ-b

The outcome is the fixture's own goal difference, home minus away. Over the scored fixtures, every unordered pair is classified:

CountWhat it is
n₀All unordered pairs, n(n−1)/2
CPairs the signal and the result order the same way
DPairs they order oppositely
n_SPairs tied on the signal, counted by tie group
n_YPairs tied on the outcome — two fixtures with the same goal difference
Somers' D = (C − D) ÷ (n₀ − n_Y)
τ-b       = (C − D) ÷ √((n₀ − n_S) × (n₀ − n_Y))
ceiling   = √(1 − n_Y ÷ n₀)

Somers' D excludes drawn pairs from its denominator, so a pair the result itself does not order is not held against you, and a perfect ordering scores 1.

τ-b keeps ties in both halves, so it penalises a metric that hands many teams the same value — which Somers' D does not. It is published beside D so that being vague cannot look like being right. Because draws stay in its denominator, τ-b cannot reach 1 on real football: the ceiling is the most it could have been on that week's results, and is what lets you move between the two scales.

ceiling belongs to τ-b, not to D. D = τ-b ÷ ceiling is not an identity — it holds only when the signal has no ties at all.

Both statistics are undefined, and reported as no score, when n₀ − n_S = 0 or n₀ − n_Y = 0. The second is arithmetic. The first is a decision: a constant signal orders nothing, and returning 0.0 for it would be a claim — "level with the baseline" — rather than an absence of one.

Where fixtures fall in several competitions, the five counts are accumulated per competition and summed, and the statistic is formed once from the totals. Averaging per-competition statistics would give a twelve-fixture stratum the weight of a two-hundred-fixture one.

5. The baseline: the scoreline itself

The baseline runs the identical construction with one substitution: where you supply the value a team generated, it supplies the goals that team scored. Same net rates, same three horizons, same statistic, same fixtures.

So zero means: I know every result so far, and nothing about how any of them were produced.

A participant that echoes the scoreline scores exactly zero — not "is flagged", not "is detectable": zero, because the thing it copied is the thing being subtracted. That property holds only because the baseline goes through the same assembly and the same scorer as everyone else.

There is one baseline. Shots are a rival cheap signal rather than the outcome a model claims to see past, so the Arena enters shots as a participant — its own model, delivering through the public API before the same deadlines — which puts that comparison on the same skill scale as every other row rather than making it a second zero.

6. Skill

skill = mean over h of  Somers' D(your signal at h,  goal difference)
      − mean over h of  Somers' D(goals signal at h, goal difference)

One number across all five competitions, not five numbers. The per-competition spread reaches 0.109 and is not stable between seasons, so five columns would invite a reading none of them supports.

If any horizon is unscoreable for either series, no skill score is published for that week. A partial average over whichever horizons happened to work would not be the same quantity from one week to the next.

7. The interval, and why it is paired

The point estimate alone invites a ranking the data cannot support. Every published skill score carries a 95% interval, and the interval decides how the row reads: a row counts as separated from the scoreline only when the interval excludes zero.

The bootstrap resamples fixtures, stratified within competition, drawing as many fixtures per competition as that competition contributed. Fixtures are the resampling unit — never (fixture, horizon) pairs, which share an outcome and are not independent.

It is paired: for each draw, both your signal and the baseline's are scored on the same resampled fixtures and the difference taken. Participant and baseline see the same football, so the noise common to both cancels and the difference is resolved far better than either number alone.

The draws are shared by every participant in the week, then restricted to each participant's own scored fixtures. Since participants enter whole competitions and the draws are stratified by competition, a shared draw restricted this way is still that participant's own within-competition bootstrap — and no participant gets a luckier resampling than another.

Low and high are the 2.5th and 97.5th percentiles of the resampled differences.

What the interval means in practice

A season of five leagues resolves roughly five hundredths of skill for a participant whose signal is genuinely its own. Most first-season rows will therefore read as level with the scoreline, and the board says so in words. That is the honest result, not a failure — and a participant a little above the scoreline across two seasons has shown something a participant at +0.08 for one week has not.

8. Determinism

The same week, scored again, produces the same numbers.

  • The week's seed is sha256 of the task slug and the ISO week joined by a pipe — game_value_team|2026-W41 — truncated to 63 bits. One seed per week, shared by every participant, from a cryptographic hash rather than a salted one — so a rerun of week 9 draws week 9's replicates on any machine.
  • The replicate count drawn is recorded beside the seed. Those two reproduce the resampling exactly.
  • replicates_used is published separately: a draw can miss a participant's fixtures entirely, and the gap between drawn and used says so rather than hiding it.
  • The pair counts are computed in O(n log n) and continuously tested against the O(n²) definition, so the fast path can never quietly disagree with the definition it stands for.

Every snapshot records the contract version it was scored under.

9. Edge cases

CaseWhat happens
A constant signalNo score. It orders nothing, and 0.0 would be a claim that it matched the baseline
A value delivered lateStored, never scored
A fixture priced on one sideRefused at delivery; it would have no net value for either team
A team with nothing describedNo rate, so no signal — not a rate of zero
An awarded resultValues stored, fixture never scored
A corrected resultThe next run rebuilds the season, so every week after it changes
A week already scoredSkipped. Snapshots are appended, never recomputed
Fewer matches than the burn-inNot scored at that horizon, so not scored at all

10. Recomputing a published figure

Open any published participant's page on the board. For each horizon it publishes the five counts — n₀, C, D, n_S, n_Y — for that participant and for the goals baseline on the same fixtures, plus the statistics derived from them.

From those alone:

  1. recompute Somers' D and τ-b with the formulas above;
  2. average each series over the three horizons;
  3. subtract: that is the skill score on the board.

If your arithmetic disagrees with ours, the counts say where: a difference in n₀ is a difference about which fixtures were scored, and a difference in C or D with the same n₀ is a difference about the ordering itself. That is the point of publishing them — a disagreement about a score should be a question with an answer, not an argument.

  • Onboarding — how to enter and start being scored.
  • Delivery contract — the deadlines and the freeze that decide what counts.
  • Overview — why agreeing with the scoreline is not evidence.