Hypotheses · story · H-f1ea0016
Replicate: trainer keeps class after a one-off jumping error, GB hurdles
fails: p 0.2368, needs 0.05 or lower; periods [1.28, 0.92], each needs 1.0 (not a niche pass: a period points the other way [1.28, 0.92])
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:21
- Tests logged
- 1
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-5a97af88 (Replicate: one-off jumping error, well beaten, in hurdles under 16/1): the country 'GB' carries the effect (A/E 1.16) while the rest score IRE 0.94. O-7080bb8f
- H-c2928b4e (Generalise: one-off chase error, well beaten, not dropping in class (G) passed discovery: A/E 1.36 on 253 bets (p 0.041), same-race control 0.96. O-bc889498
- AskedDoes a trainer keeping a horse at the same or a higher class after a jumping-error defeat signal a blip in hurdles too, in GB where class data exists? answered
- MechanismA trainer who keeps the horse at the same or a higher class after a mistake-led defeat is saying the run was not its form. The trainer has seen the horse school since and knows the error was the cause. That judgement should not depend on the obstacle type.
- Why the market misses itThe form line shows a heavy defeat and a mistake remark. Punters read the bad figure, while the entry decision, which carries the trainer's private view, is not weighed.
- Predictedpositive, A/E 1.10 to 1.20 on 300+ bets
- Falsified ifA/E of 1.05 or lower, or the two periods split either side of 1.0. That would confirm the mechanism is specific to fences.
- Rule sketch
race_type = 'Hurdle' AND region = 'GB' 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 race_class <= last_race_class
The question's answer so far: No. In GB hurdles, keeping class after a jumping-error defeat scored 1.13 on 422 (p 0.24). The lift was all from 8 wins at 16/1+, runners up to 14/1 scored 0.56, and the result faded to 0.92 after April 2026, so the class signal does not carry over to hurdles.
Mechanism and rationale
A trainer who keeps the horse at the same or a higher class after a mistake-led defeat is saying the run was not its form. The trainer has seen the horse school since and knows the error was the cause. That judgement should not depend on the obstacle type.
The rule
race_type = 'Hurdle' AND region = 'GB' 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 race_class <= last_race_class
Reads: race_type, region, remarked_last3, jumping_errors_last3, last_jumping_error, last_position, last_beaten_lengths, race_class, last_race_class
Pre-registration
- Spec hash (sha256 of the canonical pre-spec)
- 17469a3ace9decaf480164e25e05ad83ab5ccf1b0462b9362d03a03127618a0c
- Frozen
- not frozen
- The definition can still change.
- Confounders
- Hurdle errors cost less ground than chase errors, so a >10L defeat after a hurdle mistake is less often explained by the mistake alone
- Novice hurdle class structure: novices often stay at the same class by default (few novice races at other classes), so 'not dropping' may carry no trainer intent
- 16/1+ improving novices in big fields can produce a few large-price winners that drive A/E on a thin sample
- Last run may have been a chase or bumper, making the class comparison not like-for-like
- Short window (remarked_last3 from 2025-11-01, GB only) means one season of data; seasonal/going effects can't be separated
- Overlap with the chase one-off-error thread is nil by obstacle, but the same trainer cohorts may appear, so it's not fully independent
- Control
{ "description": "Other runners in the same races should score about 0.95-1.0 (they carry the overround and no trainer-signal). The key mechanism control is the class droppers from the same one-off-error hurdle pool: if keeping class is the signal, droppers should score near 1.0 (the chase thread had droppers at 0.997 vs 1.41 for non-droppers). If droppers score as well as the main rule, the lift is a property of one-off hurdle errors, not of the trainer's entry decision.", "rule": "race_type = 'Hurdle' AND region = 'GB' 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 race_class > last_race_class" }
Discovery result
fail broad rule · 17 Oct, 01:23
- Bets
- 422
- 39 winners
- A/E
- 1.13
- 95%: 0.81 to 1.55
- SP return
- -3.7%
- level stakes
- Betfair SP return
- +38.6%
- 422 bets with a BSP
Strike rate 9.2%. p = 0.24. Same-race control: the other runners in these races had A/E 0.98, so the selection beat its own races. Zone: discovery. Evaluator eval-1.0, data 6a4e98be18e83933
By period
Falsification
No attacks yet. Only promising ideas are attacked.
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 · 1m 2s · 17 Oct, 01:21
Output (schema-checked)
{ "rule": "race_type = 'Hurdle' AND region = 'GB' 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 race_class <= last_race_class", "refinements": [ { "label": "like-for-like: last run was also a hurdle", "rule": "race_type = 'Hurdle' AND region = 'GB' 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 race_class <= last_race_class AND last_race_type = 'Hurdle'" }, { "label": "14/1 or shorter (strip 16/1+ big-field novice longshots)", "rule": "race_type = 'Hurdle' AND region = 'GB' 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 race_class <= last_race_class AND sp_decimal <= 15" }, { "label": "non-novice races (remove novice class-structure confound)", "rule": "race_type = 'Hurdle' AND region = 'GB' 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 race_class <= last_race_class AND is_novice = 0" } ], "control": { "description": "Other runners in the same races should score about 0.95-1.0 (they carry the overround and no trainer-signal). The key mechanism control is the class droppers from the same one-off-error hurdle pool: if keeping class is the signal, droppers should score near 1.0 (the chase thread had droppers at 0.997 vs 1.41 for non-droppers). If droppers score as well as the main rule, the lift is a property of one-off hurdle errors, not of the trainer's entry decision.", "rule": "race_type = 'Hurdle' AND region = 'GB' 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 race_class > last_race_class" }, "pass_criteria": { "min_bets": 150, "min_ae": 1.05, "max_p": 0.05 }, "forward_bar": { "min_bets": 100, "min_ae": 1.05, "max_p": 0.2 }, "confounders": [ "Hurdle errors cost less ground than chase errors, so a >10L defeat after a hurdle mistake is less often explained by the mistake alone", "Novice hurdle class structure: novices often stay at the same class by default (few novice races at other classes), so 'not dropping' may carry no trainer intent", "16/1+ improving novices in big fields can produce a few large-price winners that drive A/E on a thin sample", "Last run may have been a chase or bumper, making the class comparison not like-for-like", "Short window (remarked_last3 from 2025-11-01, GB only) means one season of data; seasonal/going effects can't be separated", "Overlap with the chase one-off-error thread is nil by obstacle, but the same trainer cohorts may appear, so it's not fully independent" ], "mechanism": "After a one-off jumping error that led to a heavy defeat (>10L or non-finish), a trainer who keeps the horse at the same or a higher class is signalling that the run was not its true form. The trainer has seen it school since and knows the error caused the defeat. In GB chases this pool scored 1.41 for non-droppers against 0.997 for droppers. If the signal is the trainer's judgement and not something about fences, it should also show in GB hurdles.", "market_miss": "The form line shows a heavy defeat with a mistake remark. Punters price off the bad figure and don't weigh the entry decision, which carries the trainer's private view that the horse is no worse than before.", "prediction": { "direction": "positive", "size": "A/E 1.10 to 1.20 on 300+ bets (smaller than the chase 1.36-1.41, since hurdle errors cost less)", "falsified_if": "A/E of 1.05 or lower, or the two time periods split either side of 1.0, or class droppers in the same pool scoring as high as the main rule. Any of these means the mechanism is specific to fences, or is not about the class decision." }, "notes": "Rule kept as sketched: a straight hurdle replication of H-c2928b4e. Columns checked: remarked_last3 and the jumping-error features only exist from 2025-11-01, so discovery covers about one GB season. last_race_class with a NULL value drops out through the <= comparison. Because the region is GB-only, there is no IRE race_class confound. Refinements are diagnostic only: like-for-like hurdle class, 14/1 cap, non-novice." }
Timeline
Job 2216 finished
· engine:compute-1
H-f1ea0016 Discovery → KILLED fails: p 0.2368, needs 0.05 or lower; periods [1.28, 0.92], each needs 1.0 (not a niche pass: a period points the other way [1.28, 0.92])
· engine:evaluator
discovery result for H-f1ea0016 (broad rule): fail
· engine:evaluator
H-f1ea0016 Designed → RESEARCHdiscovery measuring on the discovery zone
· engine:orchestrator
compute-1 took job 2216 (evaluate, attempt 1)
· compute-1
Job 2214 finished
· engine:ai-1
Queued evaluate on the compute lane: discovery run of the broad rule
· engine:scheduler
H-f1ea0016 Proposed → RESEARCHdesigned pre-spec written and hashed
· agent:designer@v1
ai-1 took job 2214 (design, attempt 1)
· ai-1
Queued design on the ai lane: write the pre-spec
· engine:scheduler
New idea H-f1ea0016: Replicate: trainer keeps class after a one-off jumping error, GB hurdles (replicate)
· agent:investigator@v1
Every change is an event with an actor: an agent and its version, an engine, a human, or the importer. Current stage: Killed.