Hypotheses · story · H-8db9d29e
Rival: the close-form rebound is just as strong when ground and trip are unchanged
falsified: driven by one price band (up to 14/1): the rest score 0.94
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
- rival-explanation
- Created
- 17 Oct, 04:16
- 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-332b49e9 (Rival: the lift is a one-bad-run rebound after close recent form, need) survived falsification: 5 of 5 attacks left it standing; it is frozen for its one vault query. O-3ba2c8ff
- H-c36bf81d (Test-mechanism: the heavy beating misleads most when ground or trip ch) passed discovery: A/E 1.26 on 917 bets (p 0.012), same-race control 0.98. O-b3d7bef8
- AskedIs a change of conditions needed for the rebound, or does it work when the beating came on the same ground and at about the same trip? testing
- MechanismIf the rebound only needs a single bad run that stands out against close form, it should hold without an excuse from ground or trip. Our estimate of about 1.19 for unchanged conditions, against 1.26 for a change, points that way.
- Why the market misses itWithout an obvious excuse for the beating, punters assume the horse has lost its form. So unchanged-conditions runners should be the least well understood if the rebound is real.
- Predictedpositive, A/E 1.10 to 1.22 on 500+ bets, within 0.08 of the change group's 1.26
- Falsified ifA/E at or below 1.03, which would mean the ground/trip change is what carries the lift
- Rule sketch
is_handicap = 1 AND race_type IN ('Hurdle', 'Chase') AND last_beaten_lengths >= 20 AND best_last3_beaten IS NOT NULL AND best_last3_beaten <= 6 AND last_going_group = going_group AND distance_yards BETWEEN last_distance_yards - 300 AND last_distance_yards + 300
Mechanism and rationale
If the rebound only needs a single bad run that stands out against close form, it should hold without an excuse from ground or trip. Our estimate of about 1.19 for unchanged conditions, against 1.26 for a change, points that way.
The rule
is_handicap = 1 AND race_type IN ('Hurdle', 'Chase') AND last_beaten_lengths >= 20 AND best_last3_beaten IS NOT NULL AND best_last3_beaten <= 6 AND last_going_group IS NOT NULL AND last_going_group = going_group AND last_distance_yards IS NOT NULL AND distance_yards BETWEEN last_distance_yards - 300 AND last_distance_yards + 300Reads: is_handicap, race_type, last_beaten_lengths, best_last3_beaten, last_going_group, going_group, last_distance_yards, distance_yards
Pre-registration
- Spec hash (sha256 of the canonical pre-spec)
- 36c5a1c024dcc15dde150ebecfa0aa9782c8defa992bf194af17eabb19cf2a56
- Frozen
- not frozen
- The definition can still change.
- Confounders
- Going mix by region: IRE runs more often on soft/heavy, so IRE may be over-represented in the same-ground subset. Check GB and IRE separately.
- Price band: earlier lifts lean on 16/1+ winners from few wins. Check below 16/1 (refinement 1).
- Field size: big fields raise both the chance of a 20L+ beating and the A/E. Compare field-size mix against the change group.
- Recent-winner share: recent winners carried much of the GB lift. Report the result with and without a win in the last three runs.
- Race-code switch: hurdle-to-chase moves are a change of conditions not caught by ground or trip (refinement 2).
- best_last3_beaten is only populated from 2025-11, so the sample is short and seasonally concentrated.
- Control
{ "description": "Same-race rivals should score about 1.0. The main comparison is the change-of-conditions group (same close-form rebound, but the ground group differs or the trip moved by more than 300 yards), which earlier work put at about 1.26. The rival explanation holds if the unchanged group is clearly above 1.0 and within about 0.08 of the change group. It fails if the unchanged group is near 1.0 while the change group carries the lift.", "rule": "is_handicap = 1 AND race_type IN ('Hurdle', 'Chase') AND last_beaten_lengths >= 20 AND best_last3_beaten IS NOT NULL AND best_last3_beaten <= 6 AND last_going_group IS NOT NULL AND last_distance_yards IS NOT NULL AND (last_going_group <> going_group OR distance_yards < last_distance_yards - 300 OR distance_yards > last_distance_yards + 300)" }
Discovery result
pass broad rule (niche) · 17 Oct, 04:23
- Bets
- 316
- 35 winners
- A/E
- 1.23
- 95%: 0.85 to 1.71
- SP return
- +1.0%
- level stakes
- Betfair SP return
- +20.6%
- 315 bets with a BSP
Strike rate 11.1%. p = 0.13. 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. 5 of 5 survived.
- perturbation: Tighter cuts: 24L+ beating, close run within 5L, trip within 240ypass
189 bets · A/E 1.36 (0.85 to 2.06) · control 0.98 · 17 Oct, 04:24
Breakdown
betsA/E0.71.01.32025-10-01 to 2026-04-27560.99after 2026-04-271331.52Bars grow from 1.00, the market. Faded bars have fewer than 40 bets. - perturbation: Looser cuts: 16L+ beating, close run within 7.5L, trip within 375ypass
516 bets · A/E 1.06 (0.79 to 1.40) · control 1.00 · 17 Oct, 04:24
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 · 34s · 17 Oct, 04:17
Output (schema-checked)
{ "rule": "is_handicap = 1 AND race_type IN ('Hurdle', 'Chase') AND last_beaten_lengths >= 20 AND best_last3_beaten IS NOT NULL AND best_last3_beaten <= 6 AND last_going_group IS NOT NULL AND last_going_group = going_group AND last_distance_yards IS NOT NULL AND distance_yards BETWEEN last_distance_yards - 300 AND last_distance_yards + 300", "refinements": [ { "label": "16/1 or shorter", "rule": "is_handicap = 1 AND race_type IN ('Hurdle', 'Chase') AND last_beaten_lengths >= 20 AND best_last3_beaten IS NOT NULL AND best_last3_beaten <= 6 AND last_going_group IS NOT NULL AND last_going_group = going_group AND last_distance_yards IS NOT NULL AND distance_yards BETWEEN last_distance_yards - 300 AND last_distance_yards + 300 AND sp_decimal < 17" }, { "label": "Same race code too (fully unchanged conditions)", "rule": "is_handicap = 1 AND race_type IN ('Hurdle', 'Chase') AND last_beaten_lengths >= 20 AND best_last3_beaten IS NOT NULL AND best_last3_beaten <= 6 AND last_going_group IS NOT NULL AND last_going_group = going_group AND last_distance_yards IS NOT NULL AND distance_yards BETWEEN last_distance_yards - 300 AND last_distance_yards + 300 AND last_race_type = race_type" } ], "control": { "description": "Same-race rivals should score about 1.0. The main comparison is the change-of-conditions group (same close-form rebound, but the ground group differs or the trip moved by more than 300 yards), which earlier work put at about 1.26. The rival explanation holds if the unchanged group is clearly above 1.0 and within about 0.08 of the change group. It fails if the unchanged group is near 1.0 while the change group carries the lift.", "rule": "is_handicap = 1 AND race_type IN ('Hurdle', 'Chase') AND last_beaten_lengths >= 20 AND best_last3_beaten IS NOT NULL AND best_last3_beaten <= 6 AND last_going_group IS NOT NULL AND last_distance_yards IS NOT NULL AND (last_going_group <> going_group OR distance_yards < last_distance_yards - 300 OR distance_yards > last_distance_yards + 300)" }, "pass_criteria": { "min_bets": 150, "min_ae": 1.05, "max_p": 0.05 }, "forward_bar": { "min_bets": 100, "min_ae": 1, "max_p": 0.2 }, "confounders": [ "Going mix by region: IRE runs more often on soft/heavy, so IRE may be over-represented in the same-ground subset. Check GB and IRE separately.", "Price band: earlier lifts lean on 16/1+ winners from few wins. Check below 16/1 (refinement 1).", "Field size: big fields raise both the chance of a 20L+ beating and the A/E. Compare field-size mix against the change group.", "Recent-winner share: recent winners carried much of the GB lift. Report the result with and without a win in the last three runs.", "Race-code switch: hurdle-to-chase moves are a change of conditions not caught by ground or trip (refinement 2).", "best_last3_beaten is only populated from 2025-11, so the sample is short and seasonally concentrated." ], "mechanism": "A jumps handicapper beaten 20+ lengths last time but within 6 lengths in one of its last three runs has one bad run that stands out against otherwise close form. If the bad run is mostly noise (a bad day, trouble in running, or something unseen) rather than a decline, the horse should rebound even when the beating came on the same going group and at about the same trip. Then there is no ground or trip excuse to explain it away.", "market_miss": "Punters and form-readers forgive a heavy beating when they can see an excuse (wrong ground, wrong trip). Without one, they read the beating as lost form and let the price drift. So the unchanged-conditions runners should be the most under-rated part of the rebound if the rebound is real.", "prediction": { "direction": "positive", "size": "A/E 1.10 to 1.22 on 500+ bets, within about 0.08 of the change-of-conditions group (about 1.26)", "falsified_if": "A/E at or below 1.03 on the broad rule, or more than 0.15 below the change-of-conditions control. Either would mean the ground or trip change, not the stand-out bad run, carries the lift." }, "notes": "I kept the rule sketch and added explicit NOT NULL guards on last_going_group and last_distance_yards. Those rows were already excluded implicitly, so this only makes the intent clear. The 300-yard trip window is about a furlong and a half, which counts as about the same trip for jumps. best_last3_beaten is only available from 2025-11-01, so the bet count may be thin. If it comes in under 150 but points the right way, it should go on to falsification and forward tracking as the lab policy says." }
Timeline
Job 2891 finished
· engine:compute-1
H-8db9d29e Falsification → KILLED falsified: driven by one price band (up to 14/1): the rest score 0.94
· engine:falsification
falsification result for H-8db9d29e (partition: Smaller fields today (12 or fewer runners)): pass
· engine:evaluator
compute-1 took job 2891 (attack, attempt 1)
· compute-1
Job 2890 finished
· engine:compute-1
falsification result for H-8db9d29e (partition: Fully unchanged: same race code as last run): pass
· engine:evaluator
compute-1 took job 2890 (attack, attempt 1)
· compute-1
Job 2889 finished
· engine:compute-1
falsification result for H-8db9d29e (control: Exclude the known never-involved 14+ field niche): pass
· engine:evaluator
compute-1 took job 2889 (attack, attempt 1)
· compute-1
Job 2888 finished
· engine:compute-1
falsification result for H-8db9d29e (perturbation: Looser cuts: 16L+ beating, close run within 7.5L, trip within 375y): pass
· engine:evaluator
compute-1 took job 2888 (attack, attempt 1)
· compute-1
Job 2887 finished
· engine:compute-1
falsification result for H-8db9d29e (perturbation: Tighter cuts: 24L+ beating, close run within 5L, trip within 240y): pass
· engine:evaluator
compute-1 took job 2887 (attack, attempt 1)
· compute-1
Job 2885 finished
· engine:ai-1
Queued attack on the compute lane: attack: Smaller fields today (12 or fewer runners)
· engine:scheduler
Queued attack on the compute lane: attack: Fully unchanged: same race code as last run
· engine:scheduler