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 10,000 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 3.93 / 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

SCORING runner 2,847 · Sea Charger · composite 8.7 2.1ms

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
L B Double U
Race / Time
Southwell (AW)
Price
10/1 (advised)
Conviction
Medium
Verdict
LOST

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.

ITERATION 1,247 · learning rate 0.034 · last update 3s ago
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…
18 BoD picks recorded
6 winners
14 placed (top-4)
82.4% 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.