Hypotheses · story · H-1a646ca5
Generalise: jumps handicappers beaten 20 lengths or more last time beat their price
forward A/E 0.0 on 0 bets, SP ROI None%, BSP ROI None% (p None)
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
- generalise
- Created
- 17 Oct, 03:06
- 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-cc72aea8 (Rival: the debutant lift is handicap marks after heavy hurdle beatings) passed discovery as a niche: A/E 1.25 on 225 bets (p 0.155), same-race control 0.98. O-40119b5d
- H-cc72aea8 (Rival: the debutant lift is handicap marks after heavy hurdle beatings): the country 'GB' carries the effect (A/E 1.38) while the rest score IRE 0.37. O-b183d4a0
- AskedDo horses beaten 20 lengths or more last time over hurdles beat their price when running in a jumps handicap next, in both countries? Is the chase-debutant lift just a slice of that? answered
- MechanismA beating of 20 lengths or more often has a cause that has nothing to do with ability: wrong ground, wrong trip, a hard pace, or a horse already beaten and then eased. The handicapper then drops the mark. The horse runs next off a lower mark with whatever caused the beating gone.
- Why the market misses itThe form figures show a big distance beaten, and punters count it twice: once as lack of ability, and again by ignoring the mark drop that already allows for it. The excuse behind the beating rarely shows in the bare result.
- Predictedpositive, A/E 1.06 to 1.13 on 2500+ bets, both GB and IRE at or above 1.03
- Falsified ifA/E below 1.03, or IRE below 1.0, or the lift only at 16/1 or bigger (A/E under 1.0 for the bands up to 14/1 combined)
Mechanism and rationale
A beating of 20 lengths or more often has a cause that has nothing to do with ability: wrong ground, wrong trip, a hard pace, or a horse already beaten and then eased. The handicapper then drops the mark. The horse runs next off a lower mark with whatever caused the beating gone.
The rule
race_type IN ('Hurdle', 'Chase') AND is_handicap = 1 AND last_race_type IN ('Hurdle', 'Chase') AND last_beaten_lengths IS NOT NULL AND last_beaten_lengths >= 20Reads: race_type, is_handicap, last_race_type, last_beaten_lengths
Pre-registration
- Spec hash (sha256 of the canonical pre-spec)
- 7fcccee0d84e6ec3bade36aabd44d984dae7a258fdd34d24f9f60945aced9dff
- Frozen
- 17 Oct, 03:10
- Nothing in the definition can change after this.
- Confounders
- Longshot bias: most qualifiers are 16/1 or bigger, where SP returns are poor and A/E is noisy and driven by a few winners. Check the bands up to 14/1 combined, and the 16/1-plus band, separately.
- Class drops after a heavy beating: the lift may come from dropping in grade rather than from the lower mark
- Days since the last run: a long break after the beating may carry its own effect (freshness, a wind operation, a change of yard)
- Period decay: the neighbouring population scored 1.18 in the first period and 1.06 later. Report the split by period.
- Country and handicap status overlap among chase debutants: report GB and IRE separately. The prediction needs both at 1.03 or above, with IRE at least 1.0.
- Overlap with the published H36 pull-up system and the chase-debutant lift. Pull-ups are excluded automatically because last_beaten_lengths is NULL for non-finishers. Report the share of chase debutants and check the lift without them.
- Data window: last_beaten_lengths (and rating_change, used in the refinements) are only populated from 2025-11-01, so the sample covers about one season
Discovery result
pass broad rule · 17 Oct, 03:09
- Bets
- 6,743
- 518 winners
- A/E
- 1.08
- 95%: 0.99 to 1.18
- SP return
- -21.1%
- level stakes
- Betfair SP return
- +7.8%
- 6,736 bets with a BSP
Strike rate 7.7%. p = 0.041. Same-race control: the other runners in these races had A/E 0.99, 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. 6 of 6 survived.
- perturbation: Loosen beaten-distance cut to 16 lengthspass
8,164 bets · A/E 1.07 (0.99 to 1.16) · control 0.99 · 17 Oct, 03:10
Breakdown
betsA/E0.71.01.32025-10-01 to 2026-04-274,9721.06after 2026-04-273,1921.10Bars grow from 1.00, the market. Faded bars have fewer than 40 bets. - perturbation: Tighten beaten-distance cut to 25 lengthspass
5,272 bets · A/E 1.12 (1.01 to 1.23) · control 0.99 · 17 Oct, 03:10
Sealed holdout (vault)
Not queried. Only a frozen idea can spend its one query against the 2020-25 holdout.
Forward record
- forward vs bar {'min_bets': 300, 'min_ae': 1.03, 'max_p': 0.2}info
0 bets · · 17 Oct, 03:10
Breakdown
betsA/E0.71.01.3forward0–Bars grow from 1.00, the market. Faded bars have fewer than 40 bets.
Other experiments
- neighbour: >= 20 -> 16 (-20%)pass
8,164 bets · A/E 1.07 (0.99 to 1.16) · control 0.99 · 17 Oct, 03:10
Breakdown
betsA/E0.71.01.32025-10-01 to 2026-04-274,9721.06after 2026-04-273,1921.10Bars grow from 1.00, the market. Faded bars have fewer than 40 bets. - neighbour: >= 20 -> 24 (+20%)pass
5,539 bets · A/E 1.11 (1.01 to 1.23) · control 0.99 · 17 Oct, 03:10
Breakdown
Lineage
Agent runs
designer v1ok · 35s · 17 Oct, 03:06
Output (schema-checked)
{ "rule": "race_type IN ('Hurdle', 'Chase') AND is_handicap = 1 AND last_race_type IN ('Hurdle', 'Chase') AND last_beaten_lengths IS NOT NULL AND last_beaten_lengths >= 20", "refinements": [ { "label": "14/1 or shorter", "rule": "race_type IN ('Hurdle', 'Chase') AND is_handicap = 1 AND last_race_type IN ('Hurdle', 'Chase') AND last_beaten_lengths IS NOT NULL AND last_beaten_lengths >= 20 AND sp_decimal <= 15" }, { "label": "Mark dropped since the beating (mechanism test)", "rule": "race_type IN ('Hurdle', 'Chase') AND is_handicap = 1 AND last_race_type IN ('Hurdle', 'Chase') AND last_beaten_lengths IS NOT NULL AND last_beaten_lengths >= 20 AND rating_change IS NOT NULL AND rating_change < 0" }, { "label": "Mark dropped and 14/1 or shorter", "rule": "race_type IN ('Hurdle', 'Chase') AND is_handicap = 1 AND last_race_type IN ('Hurdle', 'Chase') AND last_beaten_lengths IS NOT NULL AND last_beaten_lengths >= 20 AND rating_change IS NOT NULL AND rating_change < 0 AND sp_decimal <= 15" } ], "control": { "description": "Same-race control: the other runners in the same jumps handicaps should score about 1.0 (0.95 to 1.02). If they also show a lift, the effect is a property of these races (e.g. big-field, testing-ground handicaps), not of the heavily beaten horses. A second check, run as a control rule, is jumps handicappers beaten under 10 lengths last time. If the heavy-beating mechanism holds, they should score clearly below the main rule, near 1.0.", "rule": "race_type IN ('Hurdle', 'Chase') AND is_handicap = 1 AND last_race_type IN ('Hurdle', 'Chase') AND last_beaten_lengths IS NOT NULL AND last_beaten_lengths < 10" }, "pass_criteria": { "min_bets": 1000, "min_ae": 1.05, "max_p": 0.05 }, "forward_bar": { "min_bets": 300, "min_ae": 1.03, "max_p": 0.2 }, "confounders": [ "Longshot bias: most qualifiers are 16/1 or bigger, where SP returns are poor and A/E is noisy and driven by a few winners. Check the bands up to 14/1 combined, and the 16/1-plus band, separately.", "Class drops after a heavy beating: the lift may come from dropping in grade rather than from the lower mark", "Days since the last run: a long break after the beating may carry its own effect (freshness, a wind operation, a change of yard)", "Period decay: the neighbouring population scored 1.18 in the first period and 1.06 later. Report the split by period.", "Country and handicap status overlap among chase debutants: report GB and IRE separately. The prediction needs both at 1.03 or above, with IRE at least 1.0.", "Overlap with the published H36 pull-up system and the chase-debutant lift. Pull-ups are excluded automatically because last_beaten_lengths is NULL for non-finishers. Report the share of chase debutants and check the lift without them.", "Data window: last_beaten_lengths (and rating_change, used in the refinements) are only populated from 2025-11-01, so the sample covers about one season" ], "mechanism": "A beating of 20 lengths or more in a jumps race often has a cause unrelated to ability: wrong ground, wrong trip, an overly hard pace, or a horse already beaten and then eased. The handicapper drops the mark anyway. Next time the horse runs off a lower mark, and the cause of the beating is often gone, so it runs closer to its true level than the form figures suggest.", "market_miss": "The form figures show only a big distance beaten. Punters penalise it twice: once as a lack of ability, and again by ignoring the mark drop that already allows for it. The excuse behind the beating (ground, trip, pace, being eased) rarely shows in the bare result, so the horse goes off at a bigger price than its new mark deserves.", "prediction": { "direction": "positive", "size": "A/E 1.06 to 1.13 on 2500+ bets; GB and IRE each at or above 1.03", "falsified_if": "Overall A/E below 1.03; or IRE A/E below 1.0; or the lift only at 16/1 or bigger (A/E under 1.0 for the bands up to 14/1 combined); or the same-race control is as high as the rule" }, "notes": "The rule sketch is kept as written: every column in it is pre-off, it does not read the result, and it is the broad generalisation the question asks for. The discovery bar is raised to 1000 bets because the population is expected to be large (2500+), and a pass on a thin slice would not answer a question about a broad effect. The forward bar is raised for the same reason. The refinements follow the reasoning directly: the price cap answers the longshot falsifier, and the rating_change < 0 cut tests the mark-drop part of the mechanism." }
Timeline
Job 2606 finished
· engine:compute-1
hypothesis note H-1a646ca5
· engine:perturb
perturbation result for H-1a646ca5 (neighbour: drop: last_beaten_lengths IS NOT NULL): pass
· engine:perturb
perturbation result for H-1a646ca5 (neighbour: drop: last_race_type IN ('Hurdle', 'Chase')): pass
· engine:perturb
perturbation result for H-1a646ca5 (neighbour: drop: is_handicap = 1): pass
· engine:perturb
perturbation result for H-1a646ca5 (neighbour: drop: race_type IN ('Hurdle', 'Chase')): pass
· engine:perturb
perturbation result for H-1a646ca5 (neighbour: >= 20 -> 24 (+20%)): pass
· engine:perturb
perturbation result for H-1a646ca5 (neighbour: >= 20 -> 16 (-20%)): pass
· engine:perturb
compute-1 took job 2606 (mutate, attempt 1)
· compute-1
Queued mutate on the compute lane: parameter stability: do neighbouring thresholds hold?
· engine:scheduler
Job 2601 finished
· engine:compute-1
forward result for H-1a646ca5 (forward vs bar {'min_bets': 300, 'min_ae': 1.03, 'max_p': 0.2}): info
· engine:evaluator
compute-1 took job 2601 (forward_check, attempt 1)
· compute-1
Queued forward_check on the compute lane: daily forward check of a shadow system
· engine:scheduler
Job 2597 finished
· engine:compute-1
H-1a646ca5 Frozen → SHADOW vault skipped: last_beaten_lengths do not exist before the discovery zone; track it forward instead
· engine:orchestrator