The Fox’s Wire · Methodology

How the algorithm hunts value Bet of the Day

Not the most likely winner. The most valuable one.

pipeline bod_v1.3.0
stages 10 sequential + measurement flywheel
feature_axes Speed · Form · Class · Trainer · Going · Market · Draw
shared_ledger ai.PickOutcome · product_source='bod'

Stage 01 · Universe

Every runner. Every card. Every day.

The pipeline opens every morning against the full UK & Irish card — nothing pre-filtered by course or class. If it runs, it’s in the pool.

POOL 0 runners
100+ races per Saturday · 10,000+ runners a season

Stage 02 · Eligibility

Not every race is a candidate.

Quality gates strip out non-runners, dangerously short prices, and uncompetitive shapes before scoring ever begins.

10,000 RAW UNIVERSE Non-runners −180 Too short (<1.30) −420 Uncompetitive (<4) −1,240 Amateur / cond. −860 Data quality −510 6,790 QUALITY UNIVERSE

Stage 03 · Feature scoring

Seven scorers, running in parallel.

Every eligible runner gets scored by seven independent plugins. Deterministic, no LLM — each pipe emits a numeric contribution downstream.

COMPOSITE STAGE →
  • SpeedClass-adjusted figures
  • FormRecent runs, days since last
  • ClassUp/down vs today’s bar
  • TrainerStrike-rate over trip/month
  • GoingGround preference
  • MarketOvernight vs current move
  • DrawHistoric bias at course

Stage 04 · Composite

Add them up. Every contribution logged.

A weighted blend of all seven features produces a single 0-10 composite. Weights are hand-tuned and continuously calibrated against the ledger.

Example runner · feature contributions

  • Speed+1.42
  • Going+1.21
  • Trainer+0.84
  • Market+0.63
  • Form+0.41
  • Draw−0.36
  • Class−0.22
Composite 0.00 / 10

Stage 05 · Rank & shortlist

The top six-to-eight across the entire card.

All eligible runners ranked by composite. Only the strongest across the whole day cross the threshold into deeper evaluation.

#RunnerCompositeFate
  1. 1Runner A8.7PROMOTED
  2. 2Runner B7.9PROMOTED
  3. 3Runner C7.4PROMOTED
  4. 4Runner D6.8PROMOTED
  5. 5Runner E6.3PROMOTED
  6. 6Runner F5.9PROMOTED
  7. 7Runner G4.7CUT · below threshold
  8. 8Runner H4.2CUT · below threshold
  9. 9Runner I3.6CUT · weak composite
  10. 10Runner J2.9CUT · weak composite

6 promoted 4 cut threshold gate · 4ms

Stage 06 · Conviction

Confidence has to be earned.

Raw composite is not the final call. Four objective factors clamp conviction back into a sensible tier before publication.

Composite score

7.8 / 10

Above threshold — floor accepted

Gap to 2nd

0.9 pts

Reasonable margin — pass

Odds sanity

14/1 (cap: 10/1)

Clamped ↓ — price cap applied

Field size

18 runners (cap: 16)

Clamped ↓ — field cap applied

Landing tier Speculative Medium High

Stage 07 · Value edge β in progress

Where our probability beats the market’s.

The next iteration estimates a calibrated win-probability, removes the market’s overround, and blends the edge equally with the composite.

Low prob High prob market model edge

bet_score = ½ · composite + ½ · (win_prob × price)

Stage 08 · Narrative

Claude writes the reasoning.

The winning pick gets a final editorial pass — horse, race, price, conviction tier, and the two-to-three feature-driven reasons behind the call.

claude · bod narrative

  1. 0:00.3Selected pick: Runner A · composite 8.7, conviction MEDIUM after clamps.
  2. 0:01.4Top signal: Speed +1.42, best in-field by 12 lbs class-adjusted.
  3. 0:02.7Supporting: Going +1.21 — soft-ground record 4/6 in past 18 months.
  4. 0:04.1Risk called out: draw contribution −0.36 (widest berth) — hence Medium tier.
  5. 0:05.6Emit: Runner A · 14/1 · Medium conviction · publish.

Most recent BoD pick

Horse
Chosen Shant
Race / Time
Wexford
Price
3/1 (advised)
Conviction
Medium
Verdict
PLACED

Stage 09 · Flywheel

The loop that gets sharper every week.

Every settled bet becomes training signal. Six steps run continuously and feed back into feature weights and calibration thresholds.

PickOutcome ledger

Stage 10 · Verify

Same ledger. Same proof. Public.

Bet of the Day writes to the same ai.PickOutcome ledger as Pick Winner (tagged product_source='bod'). One honest record, one Merkle-committed proof chain.

ROOT bod01c…e42f H(1‖2) 7a2c…19bd H(3‖4) 83f0…c451 BoD 1 · 8c2a… BoD 2 · 4f10… BoD 3 · b71e… BoD 4 · 22a9…
17 BoD picks recorded
6 winners
14 placed (top-4)
87.5% placed hit-rate

Updated every race day. See the full breakdown on the Bet of the Day archive.

Read further

The receipts

Saturday Racing · Data. Algorithms. AI Reasoning. Human Insight.