The Fox’s Wire · Methodology
How the algorithm hunts value Bet of the Day
Not the most likely winner. The most valuable one.
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.
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.
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.
- 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
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.
- 1Runner APROMOTED
- 2Runner BPROMOTED
- 3Runner CPROMOTED
- 4Runner DPROMOTED
- 5Runner EPROMOTED
- 6Runner FPROMOTED
- 7Runner GCUT · below threshold
- 8Runner HCUT · below threshold
- 9Runner ICUT · weak composite
- 10Runner JCUT · 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
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.
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
- 0:00.3Selected pick: Runner A · composite 8.7, conviction MEDIUM after clamps.
- 0:01.4Top signal: Speed +1.42, best in-field by 12 lbs class-adjusted.
- 0:02.7Supporting: Going +1.21 — soft-ground record 4/6 in past 18 months.
- 0:04.1Risk called out: draw contribution −0.36 (widest berth) — hence Medium tier.
- 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.
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.
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.