Hypotheses · story · H-448cb451
Rival: chase debutants after any heavy hurdle beating beat their price
falsified: IRE A/E 0.906
Part of the thread “H36: pulled up after being held up” 60 hypotheses
- Proposed
- Designed
- Discovery
- Promising
- Falsification
- Frozen
- Vault
- Provisional
- Shadow
- Validated
- Live
- Source
- Investigator agent, v1
- Made by
- rival-explanation
- Created
- 17 Oct, 02:31
- Tests logged
- 16
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-fbabeb50 (Sharpen: held-up hurdle pull-ups sent chasing next time) passed discovery as a niche: A/E 1.5 on 76 bets (p 0.17), same-race control 0.96. O-2b845062
- H-f0aa49df (Rival: any pull-up switching code beats its price, held-up or not) was predicted positive but came out the other way: A/E 0.87 on 161 bets (p 0.414 for the opposite direction). O-cd625e74
- AskedIs the hurdle-to-chase lift about the pull-up hiding a horse's ability, or does any heavily beaten last hurdle run before a first chase beat its price, pulled up or not? answered
- MechanismBig chasing types often run poorly over hurdles because they are too slow or too big for that game, then improve for fences. Any heavy defeat would hide that, not only a pull-up.
- Why the market misses itPunters price the debut off the recent hurdle figures, and a horse beaten 20 lengths or more looks out of form even though the fences are the point of the switch.
- Predictedpositive, A/E 1.15 to 1.30 on 300+ bets if the rival holds
- Falsified ifA/E at or below 1.05 or not above the same-race control. That would leave the held-up pull-up as the essential part of H-fbabeb50.
- Rule sketch
last_race_type = 'Hurdle' AND race_type = 'Chase' AND COALESCE(chase_runs, 0) = 0 AND last_pulled_up = 0 AND last_beaten_lengths >= 20
The question's answer so far: The evidence leans towards the broader effect: chase debutants after any hurdle beating of 20 lengths or more, pull-ups excluded, scored 1.24 on 335 (control 0.97). The pull-up is not needed, though the pull-up cut ran higher (1.50 on 76) and neither is conclusive.
Mechanism and rationale
Big chasing types often run poorly over hurdles because they are too slow or too big for that game, then improve for fences. Any heavy defeat would hide that, not only a pull-up.
The rule
last_race_type = 'Hurdle' AND race_type = 'Chase' AND COALESCE(chase_runs, 0) = 0 AND COALESCE(last_pulled_up, 0) = 0 AND last_beaten_lengths IS NOT NULL AND last_beaten_lengths >= 20
Reads: last_race_type, race_type, chase_runs, last_pulled_up, last_beaten_lengths
Pre-registration
- Spec hash (sha256 of the canonical pre-spec)
- b9ac72b4075012707c81364a051f0685363732fa2ea4683e72c6ea9f553b3d10
- Frozen
- not frozen
- The definition can still change.
- Confounders
- Novice chase field quality: debutants often meet small or weak novice fields, so a lift may come from the race type. The same-race control checks this.
- Trainer placement: strong NH yards may switch beaten hurdlers to fences on purpose, so the edge could be a trainer effect.
- Price-band concentration: heavily beaten hurdlers start at long prices, so a lift resting on a few 16/1+ winners is fragile. The 14/1-or-shorter refinement checks this.
- Season timing: debuts cluster in October to December, when novice chases are at their peak.
- chase_runs only counts runs from August 2020, so some older horses with earlier fence experience will be wrongly counted as debutants.
- Ground and trip change between the hurdle run and the chase debut (soft-ground beatings, a step up in trip).
- Control
{ "description": "The lab's same-race control (the other runners in these novice and handicap chases) should sit near 1.0. If the field as a whole beats its prices, the lift belongs to the races and not to the heavy hurdle beating. The control rule is a second comparison: chase debutants coming off a hurdle run where they were beaten under 10 lengths. If the mechanism is right ('a heavy beating hides a chaser'), the broad rule should beat this group clearly. If both groups score about the same, any lift is a general effect of chase debutants and has nothing to do with bad hurdle form.", "rule": "last_race_type = 'Hurdle' AND race_type = 'Chase' AND COALESCE(chase_runs, 0) = 0 AND COALESCE(last_pulled_up, 0) = 0 AND last_beaten_lengths IS NOT NULL AND last_beaten_lengths < 10" }
Discovery result
pass broad rule (niche) · 17 Oct, 02:35
- Bets
- 335
- 37 winners
- A/E
- 1.24
- 95%: 0.87 to 1.71
- SP return
- -8.0%
- level stakes
- Betfair SP return
- +11.7%
- 332 bets with a BSP
Strike rate 11.0%. p = 0.12. Same-race control: the other runners in these races had A/E 0.97, 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 6 survived.
- perturbation: Perturb heavy-beating cut down to 16 lengthspass
405 bets · A/E 1.09 (0.78 to 1.48) · control 0.99 · 17 Oct, 02:43
Breakdown
betsA/E0.71.01.32025-10-01 to 2026-04-272131.29after 2026-04-271920.91Bars grow from 1.00, the market. Faded bars have fewer than 40 bets. - perturbation: Perturb heavy-beating cut up to 25 lengthspass
272 bets · A/E 1.36 (0.91 to 1.96) · control 0.96 · 17 Oct, 02:43
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.
Other experiments
- neighbour: >= 20 -> 16 (-20%)pass
405 bets · A/E 1.09 (0.78 to 1.48) · control 0.99 · 17 Oct, 02:43
Breakdown
betsA/E0.71.01.32025-10-01 to 2026-04-272131.29after 2026-04-271920.91Bars grow from 1.00, the market. Faded bars have fewer than 40 bets. - neighbour: >= 20 -> 24 (+20%)pass
285 bets · A/E 1.28 (0.87 to 1.83) · control 0.97 · 17 Oct, 02:43
Breakdown
Lineage
Agent runs
designer v1ok · 34s · 17 Oct, 02:31
Output (schema-checked)
{ "rule": "last_race_type = 'Hurdle' AND race_type = 'Chase' AND COALESCE(chase_runs, 0) = 0 AND COALESCE(last_pulled_up, 0) = 0 AND last_beaten_lengths IS NOT NULL AND last_beaten_lengths >= 20", "refinements": [ { "label": "14/1 or shorter", "rule": "last_race_type = 'Hurdle' AND race_type = 'Chase' AND COALESCE(chase_runs, 0) = 0 AND COALESCE(last_pulled_up, 0) = 0 AND last_beaten_lengths IS NOT NULL AND last_beaten_lengths >= 20 AND sp_decimal < 16" }, { "label": "held up or midfield last time (does the H-fbabeb50 run style still matter among finishers?)", "rule": "last_race_type = 'Hurdle' AND race_type = 'Chase' AND COALESCE(chase_runs, 0) = 0 AND COALESCE(last_pulled_up, 0) = 0 AND last_beaten_lengths IS NOT NULL AND last_beaten_lengths >= 20 AND last_run_style IN ('held_up', 'midfield')" } ], "control": { "description": "The lab's same-race control (the other runners in these novice and handicap chases) should sit near 1.0. If the field as a whole beats its prices, the lift belongs to the races and not to the heavy hurdle beating. The control rule is a second comparison: chase debutants coming off a hurdle run where they were beaten under 10 lengths. If the mechanism is right ('a heavy beating hides a chaser'), the broad rule should beat this group clearly. If both groups score about the same, any lift is a general effect of chase debutants and has nothing to do with bad hurdle form.", "rule": "last_race_type = 'Hurdle' AND race_type = 'Chase' AND COALESCE(chase_runs, 0) = 0 AND COALESCE(last_pulled_up, 0) = 0 AND last_beaten_lengths IS NOT NULL AND last_beaten_lengths < 10" }, "pass_criteria": { "min_bets": 300, "min_ae": 1.1, "max_p": 0.05 }, "forward_bar": { "min_bets": 100, "min_ae": 1.05, "max_p": 0.2 }, "confounders": [ "Novice chase field quality: debutants often meet small or weak novice fields, so a lift may come from the race type. The same-race control checks this.", "Trainer placement: strong NH yards may switch beaten hurdlers to fences on purpose, so the edge could be a trainer effect.", "Price-band concentration: heavily beaten hurdlers start at long prices, so a lift resting on a few 16/1+ winners is fragile. The 14/1-or-shorter refinement checks this.", "Season timing: debuts cluster in October to December, when novice chases are at their peak.", "chase_runs only counts runs from August 2020, so some older horses with earlier fence experience will be wrongly counted as debutants.", "Ground and trip change between the hurdle run and the chase debut (soft-ground beatings, a step up in trip)." ], "mechanism": "Big, staying chasing types are often too slow or too big for hurdles and get well beaten over them, then improve once they go over fences. If that is right, a heavy beating at a completed hurdle run (20 lengths or more) should hide chasing ability just as a pull-up does. The held-up pull-up in H-fbabeb50 would then be just one example of a wider effect: chase debutants coming off bad hurdle form are under-rated.", "market_miss": "Punters price the chase debut off the most recent hurdle figures. A horse beaten 20 lengths or more looks out of form, so its price drifts, even though the switch to fences is the whole point of the change and the hurdle run says little about how it will jump and stay over fences.", "prediction": { "direction": "positive", "size": "A/E 1.15 to 1.30 on 300+ bets, above both the same-race control and the beaten-under-10-lengths debutant control", "falsified_if": "A/E at or below 1.05, or not above the same-race control, or no better than chase debutants beaten under 10 lengths last time. Any of these leaves the held-up pull-up as the essential part of H-fbabeb50." }, "notes": "I kept the rule sketch with two safety changes. last_pulled_up is wrapped in COALESCE so that rows where it is NULL are not dropped. last_beaten_lengths IS NOT NULL is stated outright, which limits the rule to horses that finished their last race. I raised discovery to 300 bets and A/E 1.10 to match the predicted sample and size. The run-style refinement is there to answer the question: if only held-up or midfield runners carry the lift, the rival explanation fails." }
Timeline
Job 2477 finished
· engine:compute-1
hypothesis note H-448cb451
· engine:perturb
perturbation result for H-448cb451 (neighbour: drop: COALESCE(last_pulled_up, 0) = 0): pass
· engine:perturb
perturbation result for H-448cb451 (neighbour: drop: COALESCE(chase_runs, 0) = 0): pass
· engine:perturb
perturbation result for H-448cb451 (neighbour: drop: race_type = 'Chase'): pass
· engine:perturb
perturbation result for H-448cb451 (neighbour: drop: last_race_type = 'Hurdle'): pass
· engine:perturb
perturbation result for H-448cb451 (neighbour: >= 20 -> 24 (+20%)): pass
· engine:perturb
perturbation result for H-448cb451 (neighbour: >= 20 -> 16 (-20%)): pass
· engine:perturb
compute-1 took job 2477 (mutate, attempt 1)
· compute-1
Job 2500 finished
· engine:compute-1
H-448cb451 Falsification → KILLED falsified: IRE A/E 0.906
· engine:falsification
falsification result for H-448cb451 (partition: Partition: non-handicap (novice/beginners) chases only): pass
· engine:evaluator
compute-1 took job 2500 (attack, attempt 1)
· compute-1
Job 2499 finished
· engine:compute-1
falsification result for H-448cb451 (partition: Partition: handicap chases only): pass
· engine:evaluator
compute-1 took job 2499 (attack, attempt 1)
· compute-1