Hypotheses · ugly-result-physical-cause · H-d28065ea
One jumping error that showed up as a large speed loss in the sectionals, beaten far
falsified: IRE A/E 0.961
Starts the thread “One jumping error that showed up as a large speed loss in the sectionals, beaten far” 1 hypothesis
- Proposed
- Designed
- Discovery
- Promising
- Falsification
- Frozen
- Vault
- Provisional
- Shadow
- Validated
- Live
- Source
- Scout agent, v1
- Made by
- scout
- Created
- 15 Oct, 23:22
- Tests logged
- 11
Mechanism and rationale
A single bad mistake over jumps takes away speed and momentum that the horse then has to spend energy recovering, which can turn a competitive run into a beating of more than five lengths. RaceiQ's speed-lost figure shows the size of the incident physically. Pairing it with a clean recent jumping record (one error at most in the last three runs) separates a one-off from a habit.
The rule
race_type IN ('Hurdle', 'Chase') AND l_same_code = 1 AND last_position IS NOT NULL AND last_position >= 4 AND last_field_size >= 6 AND l_speed_lost_pct <= 0.2 AND s_speed_lost_pct_prev IS NOT NULL AND s_speed_lost_pct_prev >= 0.5Reads: race_type, l_same_code, last_position, last_field_size, l_speed_lost_pct, s_speed_lost_pct_prev
Pre-registration
- Spec hash (sha256 of the canonical pre-spec)
- 75299fa1d04dccfab4bed237cf219ba8ac189649f9a13edfa56b65696f9c5984
- Frozen
- not frozen
- The definition can still change.
- Confounders
- Tiring late rather than a mistake: refinement 3 asks for a poor jump index too, and the lab's split by each negative should show whether horses that stopped (weak finish, pulled up recently) drive the result
- Horses new to fences making novice errors: check the split by chase_runs (fewer than 3 against 3 or more) and by is_novice
- Overlap with IQ143a (the one-off jumping error from the remarks, beaten 10+ lengths, A/E 1.505): report how many bets the two share from Nov 2025, when the remark columns begin; if the overlap is large, this is not a new edge
- Overlap with the IQ60-64 pulled-up family: last runs where the horse failed to finish are excluded on purpose (last_position IS NOT NULL)
- Coverage: RaceiQ only covers certain courses, GB from March 2023 and IRE from 2024, and s_speed_lost_pct_prev only from June 2023. So split by period into two halves rather than three, and check the result is not one or two RaceiQ tracks
- Direction of l_speed_lost_pct: the earlier RaceiQ rules (IQ03 'lost speed at the jumps' uses <= 0.25; IQ16 'keeps its speed' uses >= 0.65) imply low = lost more speed than the field. The draft's >= 0.8 was the wrong way round. Before trusting the result, read 10 samples by eye to confirm
Discovery result
pass broad rule (niche) · 15 Oct, 23:25
- Bets
- 707
- 69 winners
- A/E
- 1.14
- 95%: 0.88 to 1.44
- SP return
- +6.2%
- level stakes
- Betfair SP return
- +36.5%
- 692 bets with a BSP
Strike rate 9.8%. p = 0.16. 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 ef1163efa87ef7d2
By period
Falsification
Each attack is a deliberate attempt to kill the idea. 5 of 6 survived.
- perturbation: Tighter incident: speed lost in bottom 15% of the racepass
458 bets · A/E 1.18 (0.87 to 1.57) · control 0.99 · 15 Oct, 23:27
Breakdown
betsA/E0.71.01.32025-10-01 to 2026-04-273091.20after 2026-04-271491.13Bars grow from 1.00, the market. Faded bars have fewer than 40 bets. - perturbation: Looser thresholds: speed lost bottom 25%, previous run 40th percentile or betterpass
1,478 bets · A/E 1.00 (0.83 to 1.20) · control 1.01 · 15 Oct, 23:27
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
No parent and no descendants yet. When an agent mutates, generalises or splits this idea, the new hypotheses appear here.
Agent runs
designer v1ok · 1m · 15 Oct, 23:24
Output (schema-checked)
{ "rule": "race_type IN ('Hurdle', 'Chase') AND l_same_code = 1 AND last_position IS NOT NULL AND last_position >= 4 AND last_field_size >= 6 AND l_speed_lost_pct <= 0.2 AND s_speed_lost_pct_prev IS NOT NULL AND s_speed_lost_pct_prev >= 0.5", "refinements": [ { "label": "14/1 or shorter", "rule": "race_type IN ('Hurdle', 'Chase') AND l_same_code = 1 AND last_position IS NOT NULL AND last_position >= 4 AND last_field_size >= 6 AND l_speed_lost_pct <= 0.2 AND s_speed_lost_pct_prev IS NOT NULL AND s_speed_lost_pct_prev >= 0.5 AND sp_decimal <= 15" }, { "label": "chases only (a mistake at a fence costs more, as with IQ143)", "rule": "race_type = 'Chase' AND l_same_code = 1 AND last_position IS NOT NULL AND last_position >= 4 AND last_field_size >= 6 AND l_speed_lost_pct <= 0.2 AND s_speed_lost_pct_prev IS NOT NULL AND s_speed_lost_pct_prev >= 0.5" }, { "label": "speed loss confirmed by a poor jump index (the loss came from the jumping, not from tiring)", "rule": "race_type IN ('Hurdle', 'Chase') AND l_same_code = 1 AND last_position IS NOT NULL AND last_position >= 4 AND last_field_size >= 6 AND l_speed_lost_pct <= 0.2 AND s_speed_lost_pct_prev IS NOT NULL AND s_speed_lost_pct_prev >= 0.5 AND l_jump_index_pct <= 0.25" } ], "control": { "description": "Other runners in the same races should come in around the usual RaceiQ control of 1.03 to 1.05. If the rule's runners beat that clearly, the edge belongs to the horse and not to the race. A second control uses the same horses with the same filters: in the same code, beaten fourth or worse, a clean previous run, but no speed-loss incident (l_speed_lost_pct >= 0.5). If the edge comes from the market writing off a beating that was really caused by one mistake, this group should sit near 1.00 and clearly below the rule. If both groups beat the market, the effect is just 'beaten last time, jumps race with RaceiQ figures' and the mechanism fails.", "rule": "race_type IN ('Hurdle', 'Chase') AND l_same_code = 1 AND last_position IS NOT NULL AND last_position >= 4 AND last_field_size >= 6 AND l_speed_lost_pct >= 0.5 AND s_speed_lost_pct_prev IS NOT NULL AND s_speed_lost_pct_prev >= 0.5" }, "pass_criteria": { "min_bets": 200, "min_ae": 1.07, "max_p": 0.05 }, "forward_bar": { "min_bets": 120, "min_ae": 1, "max_p": 0.2 }, "confounders": [ "Tiring late rather than a mistake: refinement 3 asks for a poor jump index too, and the lab's split by each negative should show whether horses that stopped (weak finish, pulled up recently) drive the result", "Horses new to fences making novice errors: check the split by chase_runs (fewer than 3 against 3 or more) and by is_novice", "Overlap with IQ143a (the one-off jumping error from the remarks, beaten 10+ lengths, A/E 1.505): report how many bets the two share from Nov 2025, when the remark columns begin; if the overlap is large, this is not a new edge", "Overlap with the IQ60-64 pulled-up family: last runs where the horse failed to finish are excluded on purpose (last_position IS NOT NULL)", "Coverage: RaceiQ only covers certain courses, GB from March 2023 and IRE from 2024, and s_speed_lost_pct_prev only from June 2023. So split by period into two halves rather than three, and check the result is not one or two RaceiQ tracks", "Direction of l_speed_lost_pct: the earlier RaceiQ rules (IQ03 'lost speed at the jumps' uses <= 0.25; IQ16 'keeps its speed' uses >= 0.65) imply low = lost more speed than the field. The draft's >= 0.8 was the wrong way round. Before trusting the result, read 10 samples by eye to confirm" ], "mechanism": "A single bad jump costs a horse speed and momentum. Getting back to racing speed costs energy, so a run that would have been competitive turns into a beating at fourth or worse. RaceiQ's speed-lost figure measures how big the incident was, as a percentile within the race. The bottom fifth is a horse that lost far more speed at the obstacles than its rivals. If the same horse kept its speed normally in its previous run in this code (s_speed_lost_pct_prev >= 0.5), the incident looks like a one-off rather than a habit. The horse's ability is then understated by the result, and it should run to its earlier level next time.", "market_miss": "The form book shows a horse beaten a long way, at best with 'mistake' in the comment, and nothing to say how much that mistake cost. Speed lost at the jumps comes from sectionals that most punters and odds compilers don't use. So the beating gets marked down as lost form instead of one incident, and the price drifts. H32 (an early error, beaten narrowly) died because it only covered close finishes and was too small. This version targets the ugly, big-margin defeats the market writes off, and measures the incident physically instead of trusting the comment.", "notes": "The draft rule had four problems, all fixed. (1) last_jumping_error, jumping_errors_last3 and last_beaten_lengths are only in the catalogue from 2025-11-01, which leaves roughly one season and far too few bets. They are replaced with RaceiQ columns from 2023: last_position >= 4 in a field of 6+ as the 'beaten far' proxy, and s_speed_lost_pct_prev >= 0.5 as the 'clean record' check. (2) l_speed_lost_pct >= 0.8 pointed the wrong way: the earlier RaceiQ rules treat low pct as more speed lost, so it is now <= 0.2. (3) l_same_code = 1 makes sure the last run was over obstacles in today's code. (4) Last runs where the horse didn't finish are excluded, to keep this separate from the pulled-up family. The pass bar is tighter than the floor (200 bets, A/E 1.07) because RaceiQ controls already run 1.03 to 1.05 and this family has many tests behind it." }
Timeline
Job 51 finished
· engine:compute-2
H-d28065ea Falsification → KILLED falsified: IRE A/E 0.961
· engine:falsification
falsification result for H-d28065ea (partition: Beaten far: last run beaten 5 lengths or more): pass
· engine:evaluator
compute-2 took job 51 (attack, attempt 1)
· compute-2
Job 50 finished
· engine:compute-2
falsification result for H-d28065ea (control: Control: same incident but a habit (previous run also lost speed)): fail
· engine:evaluator
compute-2 took job 50 (attack, attempt 1)
· compute-2
Job 49 finished
· engine:compute-2
falsification result for H-d28065ea (partition: Speed loss confirmed as a jumping loss by a poor jump index): pass
· engine:evaluator
compute-2 took job 49 (attack, attempt 1)
· compute-2
Job 48 finished
· engine:compute-2
falsification result for H-d28065ea (price_band: 14/1 or shorter only (strip out the 16/1+ band)): pass
· engine:evaluator
compute-2 took job 48 (attack, attempt 1)
· compute-2
Job 47 finished
· engine:compute-2
falsification result for H-d28065ea (perturbation: Looser thresholds: speed lost bottom 25%, previous run 40th percentile or better): pass
· engine:evaluator
compute-2 took job 47 (attack, attempt 1)
· compute-2
Job 46 finished
· engine:compute-2
falsification result for H-d28065ea (perturbation: Tighter incident: speed lost in bottom 15% of the race): pass
· engine:evaluator
compute-2 took job 46 (attack, attempt 1)
· compute-2
Job 41 finished
· engine:ai-1