Veredus Analytics

VPR — the Veredus Performance Rating

VPR is our own performance rating for UK & Irish racing, computed from the results archive we hold outright and documented here in full: every constant the engine uses appears on this page with its provenance — fitted, measured, or conventional-and-labelled-so. VPR is a retrospective measurement of performances already run, on a 0–140 scale. It is not a prediction, and it is not RPR — it is computed independently of any proprietary rating and will differ.

Sources

VPR is computed from 534,000+ races since 1988, of which 420,989 are the GB & IRE races VPR rates — the remainder are international runs kept as unrated context in horses' histories. Decimal beaten margins (nose = 0.05 …) exist for every race the source still serves (2005 onwards — 358,830 races across all regions re-pulled at decimal precision in August 2026, 266,340 of them GB & IRE); race-level winning times are parsed for 99.5% of the archive; going allowances ride on ~85% of races. Populations are stated explicitly wherever a number appears on this page. Two permanent data limitations are inherited and flagged rather than papered over:

The formula

Every race is rated in three steps, processed in strict chronological order so no figure can ever see the future.

1. The par. Each race gets a par — the estimated ability level of its field — from a priority cascade: the runners' own current VPRs where they exist, then the field's mean official rating, then the handicap rating-band top minus 10, then a class prior fitted once on pre-2015 data and frozen (so the prior can never absorb later drift), then prize money. Lower tiers only fill the confidence the higher tiers left unfilled — and the official-rating component always keeps a floor weight of 0.30 × OR coverage regardless of how much field-VPR evidence exists (the drift fix, below). Where a confident course/distance/going standard time exists, the winner's time against it (net of the day's going allowance) adjusts the par; standards are point-in-time medians and thin standards adjust nothing.

2. The performance figure. Each finisher's figure is par + weight adjustment + weight-for-age − beaten margin × lbs-per-length, with the margin capped at 30 lengths on the flat / 50 over jumps (capped figures are flagged). Weight-for-age applies to 3-year-olds against older horses on the flat only. Non-finishers and unknown margins produce no figure — never a fabricated one.

3. The update. A horse's VPR moves toward its new figure by an exponentially-weighted update: gain = 0.35 × par confidence × margin quality (whole-length and capped margins earn less). Confidence accumulates with rated runs and decays with a 730-day half-life of inactivity. A horse with no rated history bootstraps at its first figure with low confidence. On each 1 January the versioned annual anchor (below) applies its published par trim.

Every constant above lives in one options class in the engine source; none are tuned per-year or per-course.

Empirical scales

Seconds-per-length: measured

1.7M runner observations give a seconds-per-length of 0.167 on the flat in every distance band — precisely the classic six-lengths-per-second — and 0.222 over jumps. The flat figure is so exactly constant that it reveals something about the source data itself: per-runner finish times are clearly derived from margins at fixed constants, not independently timed. We therefore treat winner's time plus margin as the primitive quantity throughout, and never present runner times as independent measurements.

Lbs-per-length: why we publish the conventional scale

We tried to measure lbs-per-length from the archive twice, and we publish both attempts because the failures are more instructive than a clean number would have been.

Decision. v1 uses the conventional scale — ≈3 lbs/length at 5f, ≈2 at a mile, ≈1.5 at 12f, ≈1 staying and over jumps — labelled as conventional, with both measurement attempts published above it. "Measured, not quoted" cuts both ways: it also means not quoting your own broken measurement. The clean design (within-horse weight changes across runs) is scheduled for the next calibration round.

The drift, and how it was removed

The first full build of the series carried a defect the year-by-year audit caught immediately: within definitionally-pinned handicap bands (0–65 and 0–70), VPR figures rose about 16 lbs over 2009–2024 while the official ratings of the same runners rose 3. A rating that inflates against a fixed yardstick is not measuring anything. We publish the whole investigation because how a rating fails — and how its failure was diagnosed — is exactly what a reader should demand before trusting it.

The diagnosis ran three discriminating tests. Drift inside pinned strata eliminated composition change; external official-rating movement left ~13 lbs unexplained; net per-race rating updates turned out to be negative every year (the update rule is a sink, not a pump), acquitting the core formula; and the VPR-vs-OR gap drifted uniformly in every rating band, ruling out band-relative distortion. What remained was a survivor pump: declining horses leave the population carrying low ratings, new horses enter at figures referenced to the field's own level, and because the par blend prioritised the field's own VPRs, the scale could ratchet upward with nothing external holding it still.

The fix has two published parts:

The acceptance results on the final series: pinned-band drift 0.10–0.14 lbs/yr — less than official ratings' own 0.17–0.20 over the same window; the discrimination edge over OR preserved (0.172 vs 0.130 mean per-race correlation with finishing order, 2022–2025); VPR-vs-OR residual spread intact (sd 14.8); the gap flat in every rating band; and drift in unrated-heavy races (maidens, novices — where the anchor's yardstick barely reaches) of 0.02 lbs/yr.

Confidence

Every VPR carries a companion confidence in [0, 1]. It is evidence accounting, not a probability: it grows with each rated run (scaled by how well-anchored that race's par was and by the margin quality — capped or whole-length margins earn less), and it decays with time off the track on a 730-day half-life. A horse with no rated run has no VPR at all — confidence is never used to dress up a guess.

On the web the numeric value is banded for display: High ≥ 0.6, Medium 0.3–0.6, Low < 0.3. The API serves the raw 0–1 value. The market cross-check below shows the banding is informative — where VPR reports High or Medium confidence it out-agrees official ratings with the market; where it reports Low, it trails them.

Validation

Every claim in the drift section is enforced as a standing regression gate, not a one-off measurement: a validation harness re-runs the exact acceptance diagnostics against the production series and fails our release pipeline on any breach.

Market cross-check, by confidence band

On identical runners (both a pre-race VPR and an official rating, 2022–2025), within-race rank agreement with the starting-price market:

Confidence bandRacesVPR vs marketOR vs market
High21,8160.3450.256
Medium8,2380.3280.278
Low2,2990.2990.397

Raw agreement does not rise with confidence band and is not asserted to: tightly handicapped fields compress every rating's spread, which attenuates rank correlation (restriction of range — the Low band's wide ability gaps make ordering easy for any signal). The well-posed comparison is VPR against OR on the same runners — which VPR wins exactly where it claims confidence, and loses exactly where it reports it knows little.

Coverage

Every runner row reconciles to exactly one bucket. Population: the 4,288,578 GB & Irish runner rows (420,751 races, 1988–2026) processed by the rating build.

pre-20052005 onwards
Runner rows1,659,1432,629,435
With a performance figure598,794 (36.1%)2,457,285 (93.5%)
No figure: non-finisher143,325172,014
No figure: margin unknown917,024136
With a pre-race VPR1,318,247 (79.5%)2,426,435 (92.3%)
No pre-race rating: first career run137,496193,639
No pre-race rating: no rated prior run203,4009,361
Figures on floored margins (cap 30/50)45,866223,366
Figures on whole-length margins444,0880

The pre-2005 era is structurally sparser: decimal margins begin 2005-01-02, so earlier figures lean on whole-length margins (flagged low-precision) and margins beyond the winner's reported chain are unrecoverable. Non-finishers never receive a figure by design — there is no honest margin for a faller. A runner can lack a figure for its own run yet still carry a pre-race VPR from earlier runs, which is why the two coverage lines differ.

Known limitations

VPR fields are available on every runner through the API and throughout the site's race and profile pages. Changes to the rating are recorded in the changelog; each series rebuild is versioned together with its anchor table.