Hypotheses · age-stamina · H-3518afc1
The higher-weight marathon lift holds at prices under 16/1
falsified: driven by one price band (up to 7/1): the rest score 0.94; fewer than two periods with enough bets to compare (thin: the forward record will judge)
Part of the thread “H175: young horse in a marathon chase” 20 hypotheses
- Proposed
- Designed
- Discovery
- Promising
- Falsification
- Frozen
- Vault
- Provisional
- Shadow
- Validated
- Live
- Source
- Investigator agent, v1
- Made by
- sharpen
- Created
- 16 Oct, 14:09
- Tests logged
- 9
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-d473ec0f (Rival: higher-weighted runners of all ages beat their price in maratho) passed discovery as a niche: A/E 1.21 on 338 bets (p 0.155), same-race control 0.6. O-4afbccc8
- AskedDoes the higher-weight lift rest on a handful of 16/1+ winners (4 wins from 125 bets at 1.28)? answered
- MechanismIf the market is too wary of big weights over a marathon, that wariness is a price error on fancied, better-class runners. It should show at shorter prices too, not only in a few longshot wins. This is a robustness check that the mechanism requires; it does not try to find a stronger slice.
- Why the market misses itThe fear of big weights is strongest for horses with obvious class at single-figure prices, which are exactly the horses punters let drift.
- Predictedpositive, A/E 1.08 to 1.18 on 200+ bets
- Falsified ifA/E at or below 1.0 on 180+ bets, which would mean the lift is longshot luck
- Rule sketch
race_type = 'Chase' AND is_handicap = 1 AND distance_yards >= 6160 AND weight_lbs > bottom_weight_lbs + 7 AND sp_decimal < 17
Mechanism and rationale
If the market is too wary of big weights over a marathon, that wariness is a price error on fancied, better-class runners. It should show at shorter prices too, not only in a few longshot wins. This is a robustness check that the mechanism requires; it does not try to find a stronger slice.
The rule
race_type = 'Chase' AND is_handicap = 1 AND distance_yards >= 6160 AND weight_lbs > bottom_weight_lbs + 7 AND sp_decimal < 17
Reads: race_type, is_handicap, distance_yards, weight_lbs, bottom_weight_lbs, sp_decimal
Pre-registration
- Spec hash (sha256 of the canonical pre-spec)
- 0b1469ade29007f6023d799c4728911a61dc683f940acd282a40ad69cfd8b35b
- Frozen
- not frozen
- The definition can still change.
- Confounders
- Small sample: about 210 discovery bets are expected (338 in the parent minus 125 at 16/1+), so the 95% CI will be wide
- Festival and big-race marathon handicaps (Grand National type, Welsh/Scottish/Irish Nationals) are clustered at a few meetings and may carry their own pricing quirks
- Young-horse share: horses aged 7 or under are already a known lift and may be over-represented in the higher weights; refinement 2 (age 8+) checks this
- Higher-weighted horses are better class. The lift may come from class or rating rather than from the market's wariness of weight
- Period drift: the parent young-stayer edge is weakening by period, so check that both periods point the same way
- Price band choice: the 17.0 cut is set by the parent's longshot split, not optimised, but nearby cuts could change the answer
- Control
{ "description": "The lab's default control is the other runners in the same races. I expect them below par, near the 0.60 the lighter runners showed in the parent result, because the lift is meant to belong to weight position, not to the race. That control mixes in longshots, so I add a price-matched one: runners within 7 lb of bottom weight, also under 17.0 decimal, in the same kind of race. If the higher weights beat their prices and the price-matched lighter runners do not, the effect is about weight position. If both are above par, it is a price-band or race-type effect.", "rule": "race_type = 'Chase' AND is_handicap = 1 AND distance_yards >= 6160 AND weight_lbs <= bottom_weight_lbs + 7 AND sp_decimal < 17" }
Discovery result
pass broad rule (niche) · 16 Oct, 14:13
- Bets
- 213
- 31 winners
- A/E
- 1.20
- 95%: 0.81 to 1.70
- SP return
- -15.0%
- level stakes
- Betfair SP return
- +0.6%
- 213 bets with a BSP
Strike rate 14.6%. p = 0.18. Same-race control: the other runners in these races had A/E 0.73, 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. 4 of 5 survived.
- perturbation: Weight cut raised to more than 10 lb above bottom weightpass
173 bets · A/E 1.35 (0.90 to 1.94) · control 0.67 · 16 Oct, 14:17
Breakdown
betsA/E0.71.01.32025-10-01 to 2026-04-271601.36after 2026-04-2713–Bars grow from 1.00, the market. Faded bars have fewer than 40 bets. - perturbation: Distance cut lowered 10% to 5544 yards (about 3m1.5f+)pass
681 bets · A/E 1.06 (0.88 to 1.28) · control 0.91 · 16 Oct, 14:17
Breakdown
Sealed holdout (vault)
Not queried. Only a frozen idea can spend its one query against the 2020-25 holdout.
Forward record
No forward record. Shadow tracking starts after the vault and counts only races run after the freeze.
Lineage
Agent runs
designer v1ok · 38s · 16 Oct, 14:11
Output (schema-checked)
{ "rule": "race_type = 'Chase' AND is_handicap = 1 AND distance_yards >= 6160 AND weight_lbs > bottom_weight_lbs + 7 AND sp_decimal < 17", "refinements": [ { "label": "single-figure prices (the market_miss names fancied horses at single-figure prices)", "rule": "race_type = 'Chase' AND is_handicap = 1 AND distance_yards >= 6160 AND weight_lbs > bottom_weight_lbs + 7 AND sp_decimal < 10" }, { "label": "aged 8+ only, to remove the young-horse share inside the higher weights", "rule": "race_type = 'Chase' AND is_handicap = 1 AND distance_yards >= 6160 AND weight_lbs > bottom_weight_lbs + 7 AND sp_decimal < 17 AND age >= 8" } ], "control": { "description": "The lab's default control is the other runners in the same races. I expect them below par, near the 0.60 the lighter runners showed in the parent result, because the lift is meant to belong to weight position, not to the race. That control mixes in longshots, so I add a price-matched one: runners within 7 lb of bottom weight, also under 17.0 decimal, in the same kind of race. If the higher weights beat their prices and the price-matched lighter runners do not, the effect is about weight position. If both are above par, it is a price-band or race-type effect.", "rule": "race_type = 'Chase' AND is_handicap = 1 AND distance_yards >= 6160 AND weight_lbs <= bottom_weight_lbs + 7 AND sp_decimal < 17" }, "pass_criteria": { "min_bets": 150, "min_ae": 1.05, "max_p": 0.05 }, "forward_bar": { "min_bets": 100, "min_ae": 1, "max_p": 0.2 }, "confounders": [ "Small sample: about 210 discovery bets are expected (338 in the parent minus 125 at 16/1+), so the 95% CI will be wide", "Festival and big-race marathon handicaps (Grand National type, Welsh/Scottish/Irish Nationals) are clustered at a few meetings and may carry their own pricing quirks", "Young-horse share: horses aged 7 or under are already a known lift and may be over-represented in the higher weights; refinement 2 (age 8+) checks this", "Higher-weighted horses are better class. The lift may come from class or rating rather than from the market's wariness of weight", "Period drift: the parent young-stayer edge is weakening by period, so check that both periods point the same way", "Price band choice: the 17.0 cut is set by the parent's longshot split, not optimised, but nearby cuts could change the answer" ], "mechanism": "Over 3m4f+ in handicap chases, punters and odds-compilers over-penalise big weights: they treat each extra pound as more costly over a marathon than it really is. Horses more than 7 lb above bottom weight are the better-rated, better-class runners, and the price error should sit on them. If the error is real, it must show among fancied runners (under 17.0 decimal), not only in a few 16/1+ wins. This spec is a robustness check on the parent all-age higher-weight lift (A/E 1.21 on 338), not a search for a stronger slice.", "market_miss": "The 'weight stops trains over marathon trips' rule of thumb is widely repeated, so punters let classy top-weights drift in exactly the races where stamina and class matter more than the handicapper's extra pounds. The drift is most costly at single-figure prices, where the horse's class is obvious but the weight scares money off.", "prediction": { "direction": "positive", "size": "A/E 1.08 to 1.18 on about 200+ bets at under 17.0 decimal", "falsified_if": "A/E at or below 1.0 on 180+ bets under 17.0 decimal, which would mean the parent lift was longshot luck. A second falsifier: the price-matched lighter-weight control matches or beats the higher weights." }, "notes": "I kept the rule sketch unchanged. Every column in it was used by earlier measured rules in this family. The 17.0 decimal cut is the complement of the parent's 16/1+ band (sp_decimal >= 17), so together the two bands split the parent exactly. The refinements come from the reasoning: the market_miss points at single-figure prices, and the confounder list names the young-horse share. Expect the discovery result to be underpowered for p 0.05. A right-direction thin result should go to falsification and forward tracking, not be killed for its size." }
Timeline
Job 1783 finished
· engine:compute-1
H-3518afc1 Falsification → KILLED falsified: driven by one price band (up to 7/1): the rest score 0.94; fewer than two periods with enough bets to compare (thin: the forward record will judge)
· engine:falsification
falsification result for H-3518afc1 (partition: Fields of 15 or fewer, which excludes the National-type big-field handicaps): pass
· engine:evaluator
compute-1 took job 1783 (attack, attempt 1)
· compute-1
Job 1782 finished
· engine:compute-1
falsification result for H-3518afc1 (partition: Aged 8+ only, to remove the known young-stayer lift): pass
· engine:evaluator
compute-1 took job 1782 (attack, attempt 1)
· compute-1
Job 1781 finished
· engine:compute-1
falsification result for H-3518afc1 (control: Price-matched control: within 7 lb of bottom weight, under 17.0): fail
· engine:evaluator
compute-1 took job 1781 (attack, attempt 1)
· compute-1
Job 1780 finished
· engine:compute-1
falsification result for H-3518afc1 (perturbation: Distance cut lowered 10% to 5544 yards (about 3m1.5f+)): pass
· engine:evaluator
compute-1 took job 1780 (attack, attempt 1)
· compute-1
Job 1779 finished
· engine:compute-1
falsification result for H-3518afc1 (perturbation: Weight cut raised to more than 10 lb above bottom weight): pass
· engine:evaluator
compute-1 took job 1779 (attack, attempt 1)
· compute-1
Job 1772 finished
· engine:ai-1
Queued attack on the compute lane: attack: Fields of 15 or fewer, which excludes the National-type big-field handicaps
· engine:scheduler
Queued attack on the compute lane: attack: Aged 8+ only, to remove the known young-stayer lift
· engine:scheduler