Hypotheses · story · H-551aa0a1
Test-mechanism: chase debutants beaten heavily last time over hurdles but close up earlier
falsified: IRE A/E 0.735; fewer than two periods with enough bets to compare (thin: the forward record will judge)
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
- test-mechanism
- Created
- 17 Oct, 02:39
- 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-448cb451 (Rival: chase debutants after any heavy hurdle beating beat their price): the country 'GB' carries the effect (A/E 1.43) while the rest score IRE 0.91. O-69d892e9
- H-448cb451 (Rival: chase debutants after any heavy hurdle beating beat their price) passed discovery as a niche: A/E 1.24 on 335 bets (p 0.116), same-race control 0.97. O-7628ef4c
- AskedIf the debutant lift comes from the market over-reading one bad hurdle run, is it strongest when the horse finished close within its last three runs? testing
- MechanismA horse that was beaten heavily last time but finished within a few lengths in one of the two runs before it has shown ability that the last run hid. The move to fences gives it new conditions in which that ability can come out again.
- Why the market misses itThe race card and punters lead with the last run, so a 20-length beating dominates the price, while the closer run two or three back is discounted. Fit, winning hurdlers (H124, 0.924) are priced correctly, so the error is specific to bad recent form.
- Predictedpositive, A/E 1.30 to 1.50 on 150+ bets, above the debutants with no close recent run
- Falsified ifA/E below 1.15, or no higher than heavily beaten debutants whose best of the last three runs was also beaten more than 10 lengths
- Rule sketch
last_race_type = 'Hurdle' AND race_type = 'Chase' AND COALESCE(chase_runs, 0) = 0 AND last_beaten_lengths >= 20 AND best_last3_beaten IS NOT NULL AND best_last3_beaten <= 6
Mechanism and rationale
A horse that was beaten heavily last time but finished within a few lengths in one of the two runs before it has shown ability that the last run hid. The move to fences gives it new conditions in which that ability can come out again.
The rule
last_race_type = 'Hurdle' AND race_type = 'Chase' AND COALESCE(chase_runs, 0) = 0 AND last_beaten_lengths IS NOT NULL AND last_beaten_lengths >= 20 AND best_last3_beaten IS NOT NULL AND best_last3_beaten <= 6
Reads: last_race_type, race_type, chase_runs, last_beaten_lengths, best_last3_beaten
Pre-registration
- Spec hash (sha256 of the canonical pre-spec)
- 9bbacdc29b5838deb6a01c12a541a0cb9aa78c77991dcf54a61fd44514083659
- Frozen
- not frozen
- The definition can still change.
- Confounders
- Yard skill with chase debutants: a few trainers who school novices well could supply most of the winners. Check the spread of winners across trainers.
- GB race mix: the parent effect was GB-heavy (1.43 GB against 0.91 IRE, from a scan). Report the regions separately but do not slice on region.
- Handicap mark dropping after the bad run: a 20-length beating can bring the mark down, so a handicap chase debut may be well treated. Compare handicap with non-handicap.
- Price band: earlier story lifts sat entirely under 16/1. The lift may be a price-band effect and not a form-reading error.
- Short data window: last_beaten_lengths and best_last3_beaten start on 2025-11-01, so the discovery sample is roughly one jumps season. Season-specific noise cannot be ruled out.
- Excuse runs: the heavy beating may have had a known excuse (bad ground, trouble), so it is the same 'one bad run' story by another route.
- Pull-ups and fallers are left out on purpose: their last_beaten_lengths is NULL. This test covers finishers only.
- Control
Discovery result
pass broad rule (niche) · 17 Oct, 02:43
- Bets
- 86
- 14 winners
- A/E
- 1.30
- 95%: 0.71 to 2.17
- SP return
- +29.9%
- level stakes
- Betfair SP return
- +59.5%
- 84 bets with a BSP
Strike rate 16.3%. p = 0.20. Same-race control: the other runners in these races had A/E 0.95, 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.
- control: Mechanism control: heavily beaten debutants with no close run in last threepass
218 bets · A/E 1.29 (0.80 to 1.97) · control 0.97 · 17 Oct, 02:44
Breakdown
betsA/E0.71.01.32025-10-01 to 2026-04-271381.55after 2026-04-27800.91Bars grow from 1.00, the market. Faded bars have fewer than 40 bets. - price_band: Under 16/1 only: remove the two long-shot winnerspass
64 bets · A/E 1.16 (0.60 to 2.02) · control 0.97 · 17 Oct, 02:44
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 · 46s · 17 Oct, 02:39
Output (schema-checked)
{ "rule": "last_race_type = 'Hurdle' AND race_type = 'Chase' AND COALESCE(chase_runs, 0) = 0 AND last_beaten_lengths IS NOT NULL AND last_beaten_lengths >= 20 AND best_last3_beaten IS NOT NULL AND best_last3_beaten <= 6", "refinements": [ { "label": "under 16/1", "rule": "last_race_type = 'Hurdle' AND race_type = 'Chase' AND COALESCE(chase_runs, 0) = 0 AND last_beaten_lengths IS NOT NULL AND last_beaten_lengths >= 20 AND best_last3_beaten IS NOT NULL AND best_last3_beaten <= 6 AND sp_decimal < 17" }, { "label": "genuinely close earlier (within 3 lengths or won)", "rule": "last_race_type = 'Hurdle' AND race_type = 'Chase' AND COALESCE(chase_runs, 0) = 0 AND last_beaten_lengths IS NOT NULL AND last_beaten_lengths >= 20 AND best_last3_beaten IS NOT NULL AND best_last3_beaten <= 3" } ], "control": { "description": "Two comparisons. (1) The lab's same-race control: the other runners in these chases should score close to 1.0 (the parent debutant pool had a same-race control of 0.97). If they come out well above 1.0, the lift belongs to the races and not to these horses. (2) The comparison that tests the mechanism, as the prediction requires: chase debutants beaten 20 lengths or more over hurdles last time whose best run in the last three was also beaten more than 10 lengths, so they have no close recent run. The mechanism says this group scores clearly below the test rule, at about par or only slightly above. If it scores as high as the test rule, the lift belongs to the 'heavily beaten debutant' pool as a whole and the close earlier run adds nothing.", "rule": "last_race_type = 'Hurdle' AND race_type = 'Chase' AND COALESCE(chase_runs, 0) = 0 AND last_beaten_lengths IS NOT NULL AND last_beaten_lengths >= 20 AND best_last3_beaten IS NOT NULL AND best_last3_beaten > 10" }, "pass_criteria": { "min_bets": 150, "min_ae": 1.15, "max_p": 0.05 }, "forward_bar": { "min_bets": 100, "min_ae": 1.05, "max_p": 0.2 }, "confounders": [ "Yard skill with chase debutants: a few trainers who school novices well could supply most of the winners. Check the spread of winners across trainers.", "GB race mix: the parent effect was GB-heavy (1.43 GB against 0.91 IRE, from a scan). Report the regions separately but do not slice on region.", "Handicap mark dropping after the bad run: a 20-length beating can bring the mark down, so a handicap chase debut may be well treated. Compare handicap with non-handicap.", "Price band: earlier story lifts sat entirely under 16/1. The lift may be a price-band effect and not a form-reading error.", "Short data window: last_beaten_lengths and best_last3_beaten start on 2025-11-01, so the discovery sample is roughly one jumps season. Season-specific noise cannot be ruled out.", "Excuse runs: the heavy beating may have had a known excuse (bad ground, trouble), so it is the same 'one bad run' story by another route.", "Pull-ups and fallers are left out on purpose: their last_beaten_lengths is NULL. This test covers finishers only." ], "mechanism": "A hurdler beaten 20 lengths or more last time that finished within 6 lengths in one of the two runs before it has shown ability that the last run hid. A first run over fences changes the conditions (jumping, pace, often trip), so that earlier ability can come out again. The lift should therefore depend on the close earlier run. It should be bigger here than for heavily beaten debutants with no close recent run.", "market_miss": "Race cards and punters put the last run first, so a 20-length beating dominates the price, while a close run two or three back is discounted. Chase debutants also have no fences form to correct that reading. Fit, winning hurdlers making a chase debut are priced correctly (0.924), so the error is specific to one bad recent run hiding better form just before it.", "prediction": { "direction": "positive", "size": "A/E 1.30 to 1.50, clearly above the comparison group of heavily beaten debutants with no close run in their last three", "falsified_if": "A/E below 1.15, or A/E no higher than the control group (debutants beaten 20+ lengths last time whose best of the last three runs was beaten more than 10 lengths)" }, "notes": "The rule sketch is kept, with one change: an explicit last_beaten_lengths IS NOT NULL, which makes it plain that pull-ups and fallers are excluded. best_last3_beaten includes the last run. Because the last run is 20 lengths or more, the close run must be one of the two before it (a win counts as 0). chase_runs is kept rather than prior_chase_runs so the pool matches the parent debutant finding (335 bets), which used it and must therefore count runs before today. Expect the bet count to be thin. The parent pool of 335 runs from 2025-11-01, and this is a subset, so falling short of 150 bets is likely. That will not kill it; the lab sends a thin positive result on to falsification and forward tracking. The 'under 16/1' refinement (sp_decimal < 17) comes from the repeated finding that story lifts sit under 16/1. The 'within 3' refinement tests the dose-response the mechanism implies: the closer the earlier run, the bigger the lift. Region is not sliced, because the GB/IRE split came from a scan." }
Timeline
Job 2536 finished
· engine:compute-1
H-551aa0a1 Falsification → KILLED falsified: IRE A/E 0.735; fewer than two periods with enough bets to compare (thin: the forward record will judge)
· engine:falsification
falsification result for H-551aa0a1 (partition: Handicap chase debuts only (mark-drop confounder)): info
· engine:evaluator
compute-1 took job 2536 (attack, attempt 1)
· compute-1
Job 2535 finished
· engine:compute-1
falsification result for H-551aa0a1 (perturbation: Perturb thresholds tighter: last beaten 24+, best of last three within 5): pass
· engine:evaluator
compute-1 took job 2535 (attack, attempt 1)
· compute-1
Job 2534 finished
· engine:compute-1
falsification result for H-551aa0a1 (perturbation: Perturb thresholds looser: last beaten 16+, best of last three within 7.5): pass
· engine:evaluator
compute-1 took job 2534 (attack, attempt 1)
· compute-1
Job 2533 finished
· engine:compute-1
falsification result for H-551aa0a1 (price_band: Under 16/1 only: remove the two long-shot winners): pass
· engine:evaluator
compute-1 took job 2533 (attack, attempt 1)
· compute-1
Job 2532 finished
· engine:compute-1
falsification result for H-551aa0a1 (control: Mechanism control: heavily beaten debutants with no close run in last three): pass
· engine:evaluator
compute-1 took job 2532 (attack, attempt 1)
· compute-1
Job 2516 finished
· engine:ai-1
Queued attack on the compute lane: attack: Handicap chase debuts only (mark-drop confounder)
· engine:scheduler
Queued attack on the compute lane: attack: Perturb thresholds tighter: last beaten 24+, best of last three within 5
· engine:scheduler