Hypotheses · race-betting · H-659f3a37
Big-yard runners at the front of the market in big handicaps beat their price
forward A/E 0.0 on 0 bets, SP ROI None%, BSP ROI None% (p None)
Part of the thread “H199: favourite at a big price in a big handicap” 12 hypotheses
- Proposed
- Designed
- Discovery
- Promising
- Falsification
- Frozen
- Vault
- Provisional
- Shadow
- Validated
- Live
- Source
- Investigator agent, v1
- Made by
- rival-explanation
- Created
- 16 Oct, 15:55
- Tests logged
- 18
Reasoning
Why this hypothesis exists: what the lab saw, the question it asked, the mechanism it proposed, what it predicted, and the result that would prove it wrong. Written before the test was run.
- Observed
- H-caaeaf8e (Rival: Irish par is a big-yard effect, not a country effect): the country 'GB' carries the effect (A/E 1.37) while the rest score IRE 0.88. O-35669ef1
- H-caaeaf8e (Rival: Irish par is a big-yard effect, not a country effect) pointed the predicted way but failed the bar: A/E 1.03 on 468 bets (p 0.43), control 1.01. O-a921f96e
- AskedDo big-yard top-two runners at 5/1+ in 14+ runner handicaps (trainer_runs >= 1500) beat their price, as the arithmetic implies, and is that true in Ireland as well as GB? answered
- MechanismBig yards often aim their handicappers at the big-field targets and often run several horses in the same race. Stable money and the market's attention are split across those entries, so the one that ends up near the top of the betting is still backed less than its chance deserves.
- Why the market misses itWith several stable entries, the form book cannot show which one the yard is targeting. The price is set against a horse's own exposed form rather than how the yard plans its season, and the 5/1+ price makes it look like 'just another' entry from a big string.
- Predictedpositive, A/E 1.10 to 1.25 on 700+ bets, with IRE above 1.0
- Falsified ifA/E 1.05 or below on 500+ bets, or IRE at 1.00 or below while GB stays high (which would make it the same country effect again)
Mechanism and rationale
Big yards often aim their handicappers at the big-field targets and often run several horses in the same race. Stable money and the market's attention are split across those entries, so the one that ends up near the top of the betting is still backed less than its chance deserves.
The rule
is_handicap = 1 AND sp_rank <= 2 AND sp_decimal >= 6 AND field_size >= 14 AND trainer_runs >= 1500
Reads: is_handicap, sp_rank, sp_decimal, field_size, trainer_runs
Pre-registration
- Spec hash (sha256 of the canonical pre-spec)
- 19972ef189b94e55eabb311b32f4bcbd1fc1f4dd43bfa6f0ac66a8d32bca887c
- Frozen
- 16 Oct, 16:00
- Nothing in the definition can change after this.
- Confounders
- GB/Ireland country split: every prior big-handicap short-end pool lifted in GB (~1.4) and sat at par in IRE (~0.95-0.99); a big-yard result carried by GB alone is the same country effect, not a yard effect
- trainer_runs is cumulative from the 2020-07-01 data start, so the >=1500 filter is time-varying: early on only the very largest yards qualify and the qualifying set grows later. The pool is therefore weighted to the later period, where the parent lift faded (0.97); read by period and by trainer
- Irish festival handicaps (Galway, Punchestown, Leopardstown, Fairyhouse) where big Irish yards run many entries and the market is heavily informed
- Concentration: a handful of the largest yards (e.g. one or two Irish/GB mega-stables) may supply most bets; check per-trainer contribution
- Pool overlaps heavily with the second-favourite rival (H-601a8566) and favourite rule (H199); not an independent replication
- Price basis: A/E measured at BSP may not survive at SP
- Control
{ "description": "Same-race other runners (lab default) should sit near par (~1.00-1.02, as in earlier big-handicap controls at 1.008-1.011); if they are also lifted, the effect is a race/overround property, not a big-yard one. The decisive comparison is the complementary small-yard pool with the identical market filter (already seen at 1.03 on 468): the mechanism requires the big-yard pool to clearly beat it. Every result must be read split by GB vs IRE and early vs late period.", "rule": "is_handicap = 1 AND sp_rank <= 2 AND sp_decimal >= 6 AND field_size >= 14 AND trainer_runs < 1500" }
Discovery result
pass broad rule · 16 Oct, 15:56
- Bets
- 386
- 58 winners
- A/E
- 1.33
- 95%: 1.01 to 1.71
- SP return
- +1.6%
- level stakes
- Betfair SP return
- +27.4%
- 371 bets with a BSP
Strike rate 15.0%. p = 0.022. Same-race control: the other runners in these races had A/E 0.96, so the selection beat its own races. Zone: discovery. Evaluator eval-1.0, data 6a4e98be18e83933
By period
Falsification
Each attack is a deliberate attempt to kill the idea. 5 of 6 survived.
- perturbation: Yard-size cut raised to 1800 runspass
345 bets · A/E 1.38 (1.04 to 1.80) · control 0.96 · 16 Oct, 16:00
Breakdown
betsA/E0.71.01.32025-10-01 to 2026-04-271571.65after 2026-04-271881.17Bars grow from 1.00, the market. Faded bars have fewer than 40 bets. - perturbation: Yard-size cut lowered to 1200 runspass
451 bets · A/E 1.30 (1.01 to 1.66) · control 0.97 · 16 Oct, 16:00
Sealed holdout (vault)
- Bets
- 1,003
- 16 Oct, 16:00
- A/E
- 1.14
- p = 0.075
- BH threshold then
- 0.0022
- over every vault test so far
- Outcome
- Failed
- vault query (supportive)pass
1,003 bets · A/E 1.14 (0.95 to 1.35) · control 1.00 · 16 Oct, 16:00
Breakdown
betsA/E0.71.01.32020-221990.932023 to Sept 20258041.19
Forward record
- forward vs bar {'min_bets': 150, 'min_ae': 1.0, 'max_p': 0.2}info
0 bets · · 16 Oct, 16:00
Breakdown
betsA/E0.71.01.3forward0–Bars grow from 1.00, the market. Faded bars have fewer than 40 bets.
Other experiments
- neighbour: <= 2 -> 1 (-20%)pass
54 bets · A/E 1.06 (0.43 to 2.19) · control 1.01 · 16 Oct, 15:56
Breakdown
betsA/E0.71.01.32025-10-01 to 2026-04-2722–after 2026-04-2732–Bars grow from 1.00, the market. Faded bars have fewer than 40 bets. - neighbour: <= 2 -> 3 (+20%)pass
887 bets · A/E 1.15 (0.94 to 1.39) · control 0.99 · 16 Oct, 15:56
Breakdown
bets
Lineage
Agent runs
designer v1ok · 1m 9s · 16 Oct, 15:55
Output (schema-checked)
{ "rule": "is_handicap = 1 AND sp_rank <= 2 AND sp_decimal >= 6 AND field_size >= 14 AND trainer_runs >= 1500", "refinements": [ { "label": "multiple stable entries (direct test of the split-attention mechanism)", "rule": "is_handicap = 1 AND sp_rank <= 2 AND sp_decimal >= 6 AND field_size >= 14 AND trainer_runs >= 1500 AND n_stable >= 2" }, { "label": "yard's market choice among multiple entries", "rule": "is_handicap = 1 AND sp_rank <= 2 AND sp_decimal >= 6 AND field_size >= 14 AND trainer_runs >= 1500 AND n_stable >= 2 AND stable_rank = 1" } ], "control": { "description": "Same-race other runners (lab default) should sit near par (~1.00-1.02, as in earlier big-handicap controls at 1.008-1.011); if they are also lifted, the effect is a race/overround property, not a big-yard one. The decisive comparison is the complementary small-yard pool with the identical market filter (already seen at 1.03 on 468): the mechanism requires the big-yard pool to clearly beat it. Every result must be read split by GB vs IRE and early vs late period.", "rule": "is_handicap = 1 AND sp_rank <= 2 AND sp_decimal >= 6 AND field_size >= 14 AND trainer_runs < 1500" }, "pass_criteria": { "min_bets": 300, "min_ae": 1.08, "max_p": 0.05 }, "forward_bar": { "min_bets": 150, "min_ae": 1, "max_p": 0.2 }, "confounders": [ "GB/Ireland country split: every prior big-handicap short-end pool lifted in GB (~1.4) and sat at par in IRE (~0.95-0.99); a big-yard result carried by GB alone is the same country effect, not a yard effect", "trainer_runs is cumulative from the 2020-07-01 data start, so the >=1500 filter is time-varying: early on only the very largest yards qualify and the qualifying set grows later. The pool is therefore weighted to the later period, where the parent lift faded (0.97); read by period and by trainer", "Irish festival handicaps (Galway, Punchestown, Leopardstown, Fairyhouse) where big Irish yards run many entries and the market is heavily informed", "Concentration: a handful of the largest yards (e.g. one or two Irish/GB mega-stables) may supply most bets; check per-trainer contribution", "Pool overlaps heavily with the second-favourite rival (H-601a8566) and favourite rule (H199); not an independent replication", "Price basis: A/E measured at BSP may not survive at SP" ], "mechanism": "Big yards target their handicappers at big-field handicaps and often run several horses in the same race (n_stable >= 2). Stable money and market attention are split across those entries, so the runner that still ends up first or second in the betting at 5/1+ is backed less than its true chance. If this is the mechanism, the lift should be in big-yard runners (not the small-yard complement), strongest where the yard has multiple runners, and present in Ireland as well as GB.", "market_miss": "With several stable entries the form book cannot show which one the yard is targeting; prices are set off each horse's own exposed form rather than the yard's season plan, and at 5/1+ a big-string runner reads as 'just another' entry, so the targeted horse is under-bet.", "prediction": { "direction": "positive", "size": "A/E 1.10 to 1.25 on 700+ bets, above the small-yard control (1.03), with IRE above 1.00", "falsified_if": "A/E 1.05 or below on 500+ bets; or A/E not clearly above the small-yard control; or IRE at 1.00 or below while GB stays high (the same country effect again); or the lift confined to the early period" }, "notes": "I checked the columns: trainer_runs, sp_decimal, sp_rank, n_stable and stable_rank are all pre_off from 2020-07-01 for GB and IRE. I kept the broad rule exactly as sketched. Refinements use n_stable and stable_rank because they test the multiple-entry part of the mechanism directly. Since the small-yard complement (trainer_runs < 1500) scored 1.03 on 468, the parent pool would have to be roughly 1.25+ on the big-yard side for the blend to match the parent figures (around 1.2). So a sizeable broad-rule A/E is expected even without a yard effect. That makes the GB/IRE split, the period split and the per-trainer split the real test. I set the pass bar stricter than the lab floor (300 bets, A/E 1.08) because the overlap with already-measured pools leaves little new information." }
Timeline
Job 1953 finished
· engine:compute-1
forward result for H-659f3a37 (forward vs bar {'min_bets': 150, 'min_ae': 1.0, 'max_p': 0.2}): info
· engine:evaluator
compute-1 took job 1953 (forward_check, attempt 1)
· compute-1
Queued forward_check on the compute lane: daily forward check of a shadow system
· engine:scheduler
Job 1952 finished
· engine:compute-1
H-659f3a37 Vault → SHADOW vault SUPPORTIVE: A/E 1.14 on 1003 bets, p 0.07478 against BH threshold 0.002174 over 46 vault tests
· engine:orchestrator
vault result for H-659f3a37 (vault query (supportive)): pass
· engine:orchestrator
H-659f3a37 Frozen → FROZENvault vault query started
· engine:orchestrator
compute-1 took job 1952 (vault, attempt 1)
· compute-1
Job 1951 finished
· engine:compute-1
Queued vault on the compute lane: frozen: one sealed vault query
· engine:scheduler
H-659f3a37 Falsification → FROZEN survived falsification
· engine:falsification
falsification result for H-659f3a37 (partition: Jumps-only handicaps (Hurdle/Chase)): fail
· engine:evaluator
compute-1 took job 1951 (attack, attempt 1)
· compute-1
Job 1950 finished
· engine:compute-1
falsification result for H-659f3a37 (control: Big-yard second favourites in 14+ runner handicaps vs the yard-blind rival): pass
· engine:evaluator
compute-1 took job 1950 (attack, attempt 1)
· compute-1
Job 1949 finished
· engine:compute-1
falsification result for H-659f3a37 (partition: Big-yard favourites only (strip out second favourites)): pass
· engine:evaluator