WinPIQKnow Before You Pick.
Sign in
🇺🇸 Showing content for United States · by location · Change21+ only · analysis and probability estimates, not financial advice · help: 1-800-GAMBLER
WinPIQ · Methodology

How every figure in the record is computed

Every definition below is rendered from the specification the product computes from, not written out again here. If a formula changes in code, it changes on this page in the same commit.

Advanced adds the exact expression, the rows it runs over and the denominator to every definition.

How forecasts are selected

A record is a claim about a population, so the population is named before anything is counted. Each named cohort carries an id that travels with every figure computed under it, and the id spells out what it narrows by — so two numbers can be checked against each other rather than assumed comparable.

CohortId
ALL_LIVE_PUBLISHED_SIGNALSlive_record_v1
ALL_1X2_LIVE_SIGNALSlive_record_v1:market=1X2
TIER1_FOOTBALLlive_record_v1:competitionCode=D1+E0+F1+I1+SP1
H24_48_SIGNALSlive_record_v1:horizonBucket=H24_48

Demo fixtures and stand-in models are outside the live record entirely: a match that never happened is not a record of anything. The archive cohort keeps every version ever published, which is what makes the live record's exclusions inspectable rather than merely asserted.

How markets are settled

A forecast can be republished as news arrives, so a match with three versions has three opinions and only one of them can be the record. For each match and market, the LAST version published before kickoff is the one that is graded; every earlier version is written VOID and is removed from every figure beside it.

Strictly before kickoff: a version stamped at the whistle is not a pre-match call. The row that seals the price is not a forecast and is never counted as the final version of anything.

Voids

How many rows were voided and therefore removed from every figure beside this one.

Settled signals

How many published signals have a graded result behind the figures beside it.

Unique fixtures

How many distinct matches the rows cover — the honest sample size, since several markets are predicted per match.

What a unit return means

Every return figure assumes one notional unit on every priced signal, at the price shown when it published. It is a measure of the signal, not of an account: it assumes each signal was taken, at that price, for the same stake.

Net units

The total profit or loss in units, at one unit staked per priced signal.

Return on the published signal

What one unit staked on every published signal, at the price shown when it published, would have returned.

Yield

The same return expressed as a percentage of the staked units.

Priced signals

How many settled signals carried a captured price and could therefore contribute a return.

Signals without a price

How many settled signals had no captured price, and were therefore excluded from every money figure.

How the price is chosen

One authorised operator, and the price recorded at the moment of publication. A single operator is what makes the figure checkable: a best-of-many price is one nobody was offered, and it flatters every return computed from it.

A row published where no price was recorded is kept and counted, labelled PRICE DATA UNAVAILABLE. It is not a failure and it is not a zero. Defaulting an absent price to evens would silently turn those wins into break-evens and move the published return; hiding them would present the priced subset as the whole record.

Average price

The mean decimal price across the signals that carried one — the break-even rate it implies is 1 ÷ this.

Closing line value

This is measured from the price WinPIQ published at, not from a price any reader obtained. Labelled plainly it would read as a claim about what a customer captured, which is a different reality and is reported separately below.

The line must not have moved. A price taken on one line compared against a close on another produces a figure that looks like timing skill while measuring a different bet, so that row is not comparable and enters neither the coverage count nor the mean.

Closing-price coverage

What share of the rows carried a captured closing price — the limit on every CLV figure beside it.

Closing line value

On average, how much better or worse the published price was than the price at kickoff.

Brier score

The published convention is the PER-OUTCOME MEAN — the sum over outcomes divided by the number of outcomes — and not the textbook multiclass sum. Brier is averaged across markets, and some markets carry three outcomes where others carry two, so under the sum convention a three-outcome market would sit on a scale half again as large and the headline would average two different scales.

Brier score

How close the whole probability distribution was to what actually happened. Lower is better.

Calibration error

How far stated confidence sat from observed frequency, averaged over the bins and weighted by how many rows each holds.

Calibration ladder

Predicted against observed across the confidence bands the product actually publishes in, so a reader can see where the model is trustworthy rather than only how it scores overall.

A calibration band holding fewer than 20 rows shows its count only; its rate is computed but not printed, because over a sample that size it is noise.

Log loss

The score is the negative log of the probability given to what actually happened, and that probability is floored at 1e-12 before the log is taken. It is a floor on the probability and not a cap on the score: without it a single forecast that assigned zero to the outcome would make a whole cohort's mean infinite rather than affecting one row.

Log loss

How much probability the model put on what actually happened, punishing confident mistakes hardest. Lower is better.

VERIFIED USER EXECUTION SAMPLE

What users actually did is a separate reality from what was published, and the two are never merged into one figure. A published signal has one price and one moment; a ticket has whatever price that person got, whenever they placed it.

The sample is self-selected: people submit winning tickets far more readily than losing ones. That is why it is always labelled a sample, why it is reported apart from the published record, and why a return over it is withheld unless losing tickets are present in it.

Verified tickets

How many submitted tickets passed verification and entered this sample.

Verified winning tickets

How many verified tickets in the sample won.

Verified losing tickets

How many verified tickets in the sample lost — the figure whose absence makes an execution ROI unpublishable.

Verified execution return

What the verified ticket sample returned per unit staked — published only when the sample can support the claim.

Verified execution CLV

How the prices users actually got compared to the closing price — separate from the model's own CLV.

Corrections

Nothing is edited after publication. A correction is recorded as its own entry with the reason it was made and the date it was applied, and the row it corrects keeps its original version — so the change is visible rather than absorbed.

A correction that moves something a reader could have acted on advances a version counter that travels with every export, so a reader holding an older copy can tell that it is older and see exactly what changed since.

Why two counters can differ

Locked, settled, published and displayed answer different questions, so they are explained rather than forced to agree. Each rule below compares two numbers that must match, and a difference is surfaced with the rule that caught it rather than as a figure someone has to interpret.

RuleWhat it compares
COHORT_MISMATCHThe published aggregate and the shared cohort rule are counted separately and compared. They must admit the same rows.
ORPHANED_SETTLEMENTEvery graded row must point at a publication the policy layer counted. A grade with nothing behind it is reported.
DUPLICATE_MEMBERSHIPA deduping rule must name exactly one publication per match and market. Two means the dedup is failing quietly.
SETTLED_BEFORE_KICKOFFA result stamped before its own kickoff cannot be a grade of that match.
UNPRICED_SHAREHow many graded rows carry a price at lock is reported rather than asserted, because it is the denominator behind every return figure.
MANIFEST_CHAINEach sealed day carries the previous day's hash, and the whole chain is re-verified rather than trusted.

What we may republish

WinPIQ publishes its own predictions and derived records; it does not hold rights to redistribute every underlying source field.

Every column is classified, and a field reaches a public surface only if its class permits it. A field nobody classified is refused rather than defaulted, because silence is not permission.

  • PUBLICLY_REDISTRIBUTABLE: observable facts about the fixture, competition or result that WinPIQ neither generated nor licensed, and may republish without restriction.
  • DERIVED_PUBLIC_VALUE: figures WinPIQ computed and already publishes on /record or /proof, including the model probability, the price recorded at lock, CLV as a percentage and the proof hash.

What these figures cannot support

  • Several markets are forecast per match, so rows are not independent observations. Every published rate therefore carries the count of distinct matches behind it, and the display floors count matches rather than rows.
  • A proof hash shows a payload is unchanged since it was sealed. It does not show WHEN it was sealed: the timestamp is our own server's, in a table that cannot be edited, and there is no outside time attestation. Nothing here is described as fully verified on the strength of a hash match.
  • The daily chain raises the cost of a retroactive edit from changing one row to rewriting every day since. It is still ours: someone who rewrote history and recomputed every later day would produce a chain that agrees with itself. What defeats that is a copy held by somebody who is not us.
  • Reproducing our arithmetic proves the figures follow from the published rows. It says nothing about whether those rows describe what happened — that is a different question, and a clean recomputation cannot answer it.

Definitions on this page are rendered from packages/core/src/performance/metric-spec.ts, which currently specifies 24 published figures.