Methodology

The maths, written out.

This page is part of the product, not a footnote. Every number Hindcast shows you is defined here, so you can disagree with it precisely rather than vaguely.

Hindcast never tells you what to predict. It only tells you how well you have predicted — including when the honest answer is that your record cannot yet tell.
1

Calibration and the Brier decomposition

For each settled forecast you stated a probability p, and the outcome is 1 if it happened and 0 if it did not. The Brier score is the mean squared error of those probabilities:

Brier = (1/N) · Σ (p_i − y_i)²

Lower is better, and the Murphy decomposition splits it into three parts that mean different things:

Brier = reliability − resolution + uncertainty

reliability  = Σ_b (n_b / N) · (f_b − p̄_b)²     lower is better
resolution   = Σ_b (n_b / N) · (f_b − ō)²        higher is better
uncertainty  = ō · (1 − ō)                       a property of the sample, not of you

Reliability is how far your stated probabilities sat from what actually happened — it is the diagonal in the reliability diagram. Resolution is how much your forecasts separated the outcomes away from the base rate. Uncertainty is the base rate's own variance; you cannot change it and it is not a compliment. The Brier skill score compares your Brier against always quoting the base rate, 1 − Brier / uncertainty.

2

The Wilson score interval

Each bin on the diagram holds n forecasts of which k came in, giving a raw frequency p̂ = k/n. A raw frequency swings wildly at small n, so the diagram draws a 95% Wilson score interval, which behaves sensibly near 0 and 1 where the textbook normal interval does not:

denom  = 1 + z²/n
centre = (p̂ + z²/(2n)) / denom
half   = z · √( p̂(1−p̂)/n + z²/(4n²) ) / denom
interval = [centre − half, centre + half],  z = 1.96 for 95%

A bin is scored only if it holds at least 8 forecasts. Thin bins are drawn hollow and amber and are labelled unscored — never merged into a neighbour, because merging would make the line look tidier than the data.

3

Closing line value, and removing the margin

The raw figure is the one almost everyone quotes, and it is biased:

Raw CLV = (odds_taken − closing_odds) / closing_odds

Every price in a market carries the bookmaker's margin. When a book widens before an event, all of the prices drift out together, so raw CLV turns positive for every outcome in that market — including the ones that lost. The honest version removes the margin across the whole market first. Write each closing price as an implied probability, q_i = 1/odds_i, and the overround is their sum minus one.

Proportional de-margining

p_i = q_i / Σ_j q_j

Proportional removes the margin in proportion to each price. It is simple and it systematically understates favourites and overstates longshots.

Shin de-margining

p_i(z) = ( √( z² + 4(1−z)·q_i² ) − z ) / ( 2(1−z) )

Solve for z ∈ [0, 0.5] such that Σ_i p_i(z) = 1

Shin's model corrects for the favourite–longshot bias, so it pushes more of the margin off longshots and less off favourites. The toggle between the two is offered wherever a full market exists.

True CLV is then measured against the fair closing probability of the selection:

True CLV = odds_taken · fair_closing_probability − 1

Where the closing odds for every outcome of the market were not supplied, the margin cannot be removed. Those rows are marked margin not removable, true CLV is reported as unavailable with a count, and nothing is ever imputed.

4

The bootstrap

To ask whether a result is distinguishable from luck, Hindcast resamples the record itself — no distributional assumption, no appeal to a formula that assumes a tidy world:

Repeat 10,000 times:
   draw N rows from the record, with replacement
   recompute the statistic on the drawn sample
     · ROI      = Σ profit / Σ stake
     · mean CLV = mean of true CLV over rows with a full market

Take the 2.5th and 97.5th percentiles → a 95% bootstrap interval.

The resampling runs in a background worker, so the interface stays responsive while ten thousand samples are drawn. The point estimate is the statistic on your actual record; the interval is where the resamples fell.

The sample-size figure inverts the interval's own width. If the half-width scales as 1/√n, then n* = n · (half-width / point estimate)² is the size at which the interval would just stop containing zero, holding your observed edge fixed. It is an arithmetic statement about this sample, not a forecast that the edge will persist.

5

What this cannot tell you

The short version, with the full page linked below.

Survivorship in self-reported records

A record you compiled yourself contains the forecasts you chose to write down. If you logged the ones you felt good about and quietly forgot the rest, no amount of arithmetic here can recover the missing rows — the maths is only ever as honest as the ledger it is handed. Publish in advance and each row is stamped before the event; that is the only structural defence, and it is why the Record tier exists.

Beating the closing line is not beating the market

Closing line value measures whether you took a better price than the market settled at. It is a stronger signal than profit, and it is still not the same as a bankable edge: you can consistently beat the close and still be restricted, limited, or closed, and you can beat the close on a market where the price you actually got was available to everyone for a minute. A positive true CLV is evidence about your pricing, not a promise about your P&L.

A good Brier score on a soft market is not evidence of anything

Calibration is scored against the outcomes, never against a market. A well-run forecast on a market that nobody prices sharply can be beautifully calibrated while proving nothing about skill — there was no competition to beat. Calibration answers "did you mean what you said"; it does not answer "were you right in a way that could have been wrong".

Read what this cannot tell you in full