Hypotheses · story · H-5a97af88
Replicate: one-off jumping error, well beaten, in hurdles under 16/1
falsified: IRE A/E 0.944
Part of the thread “H24: one off jumping error well beaten” 27 hypotheses
- Proposed
- Designed
- Discovery
- Promising
- Falsification
- Frozen
- Vault
- Provisional
- Shadow
- Validated
- Live
- Source
- Investigator agent, v1
- Made by
- replicate
- Created
- 17 Oct, 01:09
- 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-fb3f7532 (Sharpen: H24 chase pool priced under 16/1) passed discovery: A/E 1.26 on 386 bets (p 0.036), same-race control 0.96. O-e2f22409
- AskedDoes the hurdle part of H24 also carry an edge once runners at 16/1+ are removed, as the chase part does? answered
- MechanismA one-off error at a hurdle costs momentum and position just as at a fence, though usually less ground. A horse that jumped cleanly before is likely to do so again.
- Why the market misses itThe last form figure and the remark are visible, but the clean history is not weighed against them. Runners still in the market's frame (under 16/1) are where the misreading shows. At long prices the horse is often simply outclassed.
- Predictedpositive, A/E 1.08 to 1.18 on 600+ bets
- Falsified ifA/E of 1.05 or lower, or the two periods split either side of 1.0
- Rule sketch
race_type = 'Hurdle' AND remarked_last3 = 3 AND jumping_errors_last3 = 1 AND last_jumping_error = 1 AND (last_position IS NULL OR last_beaten_lengths > 10) AND sp_decimal < 17 - question idQ-09f0e480
- operatorreplicate
The question's answer so far: Only weakly. Hurdles under 16/1 scored 1.078 on 524 (p 0.27, CI 0.85–1.35), with IRE at 0.94 and the up-to-14/1 band at 0.947. The price pattern from chases does not carry over to hurdles.
Mechanism and rationale
A one-off error at a hurdle costs momentum and position just as at a fence, though usually less ground. A horse that jumped cleanly before is likely to do so again.
The rule
race_type = 'Hurdle' AND remarked_last3 = 3 AND jumping_errors_last3 = 1 AND last_jumping_error = 1 AND (last_position IS NULL OR last_beaten_lengths > 10) AND sp_decimal IS NOT NULL AND sp_decimal < 17
Reads: race_type, remarked_last3, jumping_errors_last3, last_jumping_error, last_position, last_beaten_lengths, sp_decimal
Pre-registration
- Spec hash (sha256 of the canonical pre-spec)
- c2c0f7710a7c9f71b61d49fa950a8656a8210d5fb995cd73cea4c625699fd7ff
- Frozen
- not frozen
- The definition can still change.
- Confounders
- novice hurdlers improving anyway: they are often well beaten and make jumping errors early in their careers, then improve with experience (tested by the non-novice refinement)
- field_size: big fields bring both more interference errors and wider beaten margins
- handicap mark drops after a bad run: a well-beaten handicapper gets a lower mark, so the edge could be a handicapping effect, not a jumping one
- festival and big meetings: a high-class race in the last run inflates the beaten lengths and the error rate
- non-finishers: a fall at a hurdle is rare and may be a different population from completers beaten 10L+
- price source: the parent edge was positive only at BSP (+15%), not at SP (-14%), so any lift may not survive bookmaker prices
- Control
{ "description": "Other runners in the same races should score about 1.0 (0.95 to 1.02); a lift there means the race type or meeting, not the horse, explains the result. Mechanism control: hurdlers under 16/1 whose last-time error came on top of earlier errors (not a one-off). The chase finding showed this group near 1.04 against 1.22 for the one-off pool, so here it should score clearly below the main rule, around 1.0. If it matches the main rule, the 'clean history' mechanism is not what drives the edge.", "rule": "race_type = 'Hurdle' AND remarked_last3 = 3 AND jumping_errors_last3 >= 2 AND last_jumping_error = 1 AND (last_position IS NULL OR last_beaten_lengths > 10) AND sp_decimal IS NOT NULL AND sp_decimal < 17" }
Discovery result
pass broad rule (niche) · 17 Oct, 01:12
- Bets
- 524
- 77 winners
- A/E
- 1.08
- 95%: 0.85 to 1.35
- SP return
- -15.0%
- level stakes
- Betfair SP return
- +3.6%
- 524 bets with a BSP
Strike rate 14.7%. p = 0.27. 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. 4 of 6 survived.
- perturbation: Perturb: beaten >12L, under 14/1pass
430 bets · A/E 1.06 (0.82 to 1.36) · control 0.99 · 17 Oct, 01:15
Breakdown
betsA/E0.71.01.32025-10-01 to 2026-04-272181.09after 2026-04-272121.03Bars grow from 1.00, the market. Faded bars have fewer than 40 bets. - perturbation: Perturb: beaten >8L, under 20/1pass
676 bets · A/E 1.06 (0.86 to 1.30) · control 0.99 · 17 Oct, 01:15
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: > 10 -> 8 (-20%)pass
591 bets · A/E 1.02 (0.82 to 1.26) · control 1.00 · 17 Oct, 01:12
Breakdown
betsA/E0.71.01.32025-10-01 to 2026-04-272981.13after 2026-04-272930.91Bars grow from 1.00, the market. Faded bars have fewer than 40 bets. - neighbour: > 10 -> 12 (+20%)pass
472 bets · A/E 1.09 (0.85 to 1.38) · control 0.99 · 17 Oct, 01:12
Breakdown
Lineage
Agent runs
designer v1ok · 43s · 17 Oct, 01:10
Output (schema-checked)
{ "rule": "race_type = 'Hurdle' AND remarked_last3 = 3 AND jumping_errors_last3 = 1 AND last_jumping_error = 1 AND (last_position IS NULL OR last_beaten_lengths > 10) AND sp_decimal IS NOT NULL AND sp_decimal < 17", "refinements": [ { "label": "finishers only (completed, beaten 10L+)", "rule": "race_type = 'Hurdle' AND remarked_last3 = 3 AND jumping_errors_last3 = 1 AND last_jumping_error = 1 AND (last_position IS NULL OR last_beaten_lengths > 10) AND sp_decimal IS NOT NULL AND sp_decimal < 17 AND last_position IS NOT NULL AND last_beaten_lengths > 10" }, { "label": "non-novice races (removes novice-improvement confounder)", "rule": "race_type = 'Hurdle' AND remarked_last3 = 3 AND jumping_errors_last3 = 1 AND last_jumping_error = 1 AND (last_position IS NULL OR last_beaten_lengths > 10) AND sp_decimal IS NOT NULL AND sp_decimal < 17 AND is_novice = 0" } ], "control": { "description": "Other runners in the same races should score about 1.0 (0.95 to 1.02); a lift there means the race type or meeting, not the horse, explains the result. Mechanism control: hurdlers under 16/1 whose last-time error came on top of earlier errors (not a one-off). The chase finding showed this group near 1.04 against 1.22 for the one-off pool, so here it should score clearly below the main rule, around 1.0. If it matches the main rule, the 'clean history' mechanism is not what drives the edge.", "rule": "race_type = 'Hurdle' AND remarked_last3 = 3 AND jumping_errors_last3 >= 2 AND last_jumping_error = 1 AND (last_position IS NULL OR last_beaten_lengths > 10) AND sp_decimal IS NOT NULL AND sp_decimal < 17" }, "pass_criteria": { "min_bets": 300, "min_ae": 1.05, "max_p": 0.05 }, "forward_bar": { "min_bets": 120, "min_ae": 1, "max_p": 0.2 }, "confounders": [ "novice hurdlers improving anyway: they are often well beaten and make jumping errors early in their careers, then improve with experience (tested by the non-novice refinement)", "field_size: big fields bring both more interference errors and wider beaten margins", "handicap mark drops after a bad run: a well-beaten handicapper gets a lower mark, so the edge could be a handicapping effect, not a jumping one", "festival and big meetings: a high-class race in the last run inflates the beaten lengths and the error rate", "non-finishers: a fall at a hurdle is rare and may be a different population from completers beaten 10L+", "price source: the parent edge was positive only at BSP (+15%), not at SP (-14%), so any lift may not survive bookmaker prices" ], "mechanism": "A single jumping error at a hurdle costs momentum and position (usually less ground than at a fence), so the last run understates the horse's ability. A horse that was unremarked in its two runs before is likely to jump cleanly again, so the bad last run is noise, not a sign of a jumping problem.", "market_miss": "Punters see the beaten form figure and the error remark but do not weigh them against the clean record in the two runs before. The misreading shows among runners the market still respects (under 16/1). At longer prices the horse is usually just outclassed and the error is not the reason it lost.", "prediction": { "direction": "positive", "size": "A/E 1.08 to 1.18 on 600+ bets, weaker than the chase equivalent (1.256)", "falsified_if": "A/E of 1.05 or lower on the broad rule, or the two time periods fall on opposite sides of 1.0, or the multiple-error control scores the same as the main rule or higher" }, "notes": "Replicates the H24 chase result under 16/1 (1.256 on 386) in hurdles. sp_decimal < 17 excludes 16/1 itself. I added sp_decimal IS NOT NULL only to make the rule explicit; it does not change the selection. remarked_last3 is available only from 2025-11-01 (GB and IRE), so the discovery window is short. The 600+ bet prediction depends on hurdles having enough volume in that window. min_bets is set at 300, above the 150 floor, because the prediction expects a large pool. Report results at BSP and at SP: the parent finding showed the edge exists only at exchange prices. Refinements mirror the chase mechanism splits (finishers only) and the novice confounder. I chose not to add a sectional ground-cost refinement because the threshold would be arbitrary." }
Timeline
Job 2191 finished
· engine:compute-1
H-5a97af88 Falsification → KILLED falsified: IRE A/E 0.944
· engine:falsification
falsification result for H-5a97af88 (partition: Partition: finishers only, non-novice): pass
· engine:evaluator
compute-1 took job 2191 (attack, attempt 1)
· compute-1
Job 2190 finished
· engine:compute-1
falsification result for H-5a97af88 (price_band: Price band: 4/1 to under 16/1 (excludes short-priced bulk)): fail
· engine:evaluator
compute-1 took job 2190 (attack, attempt 1)
· compute-1
Job 2189 finished
· engine:compute-1
falsification result for H-5a97af88 (control: Control: well beaten, unremarked for errors in last 3): pass
· engine:evaluator
compute-1 took job 2189 (attack, attempt 1)
· compute-1
Job 2188 finished
· engine:compute-1
falsification result for H-5a97af88 (partition: Partition: non-handicaps (removes mark-drop confounder)): fail
· engine:evaluator
compute-1 took job 2188 (attack, attempt 1)
· compute-1
Job 2187 finished
· engine:compute-1
falsification result for H-5a97af88 (perturbation: Perturb: beaten >8L, under 20/1): pass
· engine:evaluator
compute-1 took job 2187 (attack, attempt 1)
· compute-1
Job 2186 finished
· engine:compute-1
falsification result for H-5a97af88 (perturbation: Perturb: beaten >12L, under 14/1): pass
· engine:evaluator
compute-1 took job 2186 (attack, attempt 1)
· compute-1
Job 2173 finished
· engine:ai-1
Queued attack on the compute lane: attack: Partition: finishers only, non-novice
· engine:scheduler