Hypotheses · story · H-8cff5453
Replicate: recent winners beaten 20+ lengths in non-handicap jumps races
fails: A/E 0.877, needs 1.05; p 0.7872, needs 0.05 or lower; periods [1.13, 0.63], each needs 1.0; A/E 0.877 against same-race control 1.013, needs 0.03 above (not a niche pass: A/E 0.877 below 1.05; p 0.7872054224138322 above 0.5; does not beat the same-race control 1.013; a period points the other
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
- replicate
- Created
- 17 Oct, 04:34
- 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-32b815ff (Test-mechanism: recent winners beaten only 8 to 19 lengths should show) passed discovery as a niche: A/E 1.12 on 828 bets (p 0.117), same-race control 0.99. O-2ecb16ca
- H-d586e8a0 (Rival: a ground or trip excuse alone, without recent close form, carri) passed discovery as a niche: A/E 1.05 on 4162 bets (p 0.214), same-race control 1.0. O-a8e8d7c1
- AskedHow much do the four frozen jumps rules (recent winner, sub-16/1 winner, first run after win, ground/trip change) share the same runners, and does each keep a lift on the runners the others miss? testing
- MechanismA heavy beating straight after a win usually reflects one bad day, not lost ability. That holds whatever the race conditions, so novice and graded winners should rebound too.
- Why the market misses itIn non-handicaps the margin is the most visible form figure, and the win is easy to dismiss as a weaker race. That makes the price drift after a 20+ length defeat.
- Predictedpositive, A/E 1.10 to 1.30 on 300+ bets
- Falsified ifA/E below 1.05, or the lift only at 16/1+
- Rule sketch
is_handicap = 0 AND race_type IN ('Hurdle', 'Chase') AND last_beaten_lengths >= 20 AND best_last3_beaten = 0
Mechanism and rationale
A heavy beating straight after a win usually reflects one bad day, not lost ability. That holds whatever the race conditions, so novice and graded winners should rebound too.
The rule
is_handicap = 0 AND race_type IN ('Hurdle', 'Chase') AND last_beaten_lengths >= 20 AND best_last3_beaten = 0Reads: is_handicap, race_type, last_beaten_lengths, best_last3_beaten
Pre-registration
- Spec hash (sha256 of the canonical pre-spec)
- 49686af824eeeedaeaaaad683927b27bd970bace9ae877b073c7ea2416f0667e
- Frozen
- not frozen
- The definition can still change.
- Confounders
- Class rise after the win: novice and maiden winners stepping into graded or open company get beaten on merit, so the heavy beating reflects their level rather than one bad day. That would push A/E down and hide a real rebound.
- Small non-handicap fields with odds-on favourites: the selection gets squeezed into big prices behind a dominant favourite, which inflates the variance and the share of longshots (see the field_size >= 8 refinement).
- Novice yards placing a horse to win once: a soft win inflates best_last3_beaten = 0 without real ability behind it. These runners should be over-bet rather than under-bet.
- Overlap with the frozen handicap rules is zero by construction (is_handicap = 0), but a horse may move between handicap and non-handicap runs. Treat this as a replication of the mechanism on different races, not as independent proof of the same population.
- Short data window: best_last3_beaten exists only from 2025-11-01, so the sample covers about one jumps season. Seasonal or ground effects (for example, one wet winter) could drive the result.
Discovery result
fail broad rule · 17 Oct, 04:36
- Bets
- 211
- 30 winners
- A/E
- 0.88
- 95%: 0.59 to 1.25
- SP return
- -40.9%
- level stakes
- Betfair SP return
- -29.0%
- 211 bets with a BSP
Strike rate 14.2%. p = 0.79. Same-race control: the other runners in these races had A/E 1.01, so the selection did not 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 · 17 Oct, 04:34
Output (schema-checked)
{ "rule": "is_handicap = 0 AND race_type IN ('Hurdle', 'Chase') AND last_beaten_lengths >= 20 AND best_last3_beaten = 0", "refinements": [ { "label": "Below 16/1: the lift should not depend on longshots", "rule": "is_handicap = 0 AND race_type IN ('Hurdle', 'Chase') AND last_beaten_lengths >= 20 AND best_last3_beaten = 0 AND sp_decimal < 17" }, { "label": "Fields of 8+ runners, to exclude small fields dominated by short-priced favourites", "rule": "is_handicap = 0 AND race_type IN ('Hurdle', 'Chase') AND last_beaten_lengths >= 20 AND best_last3_beaten = 0 AND field_size >= 8" } ], "control": { "description": "The lab's standard control is the other runners in the same non-handicap jumps races. They should come out near A/E 0.95 to 1.0, the usual overround-adjusted baseline. If the selected runners beat their prices while the same-race rivals sit at baseline, the lift belongs to the recent-winner, heavy-beating profile and not to the kind of race. A second comparison group: non-handicap jumps runners beaten 20+ lengths last time with no win in their last three runs. If those score as well as the selection, the lift is a general 'heavy beating gets over-punished' effect and the recent win adds nothing.", "rule": "is_handicap = 0 AND race_type IN ('Hurdle', 'Chase') AND last_beaten_lengths >= 20 AND best_last3_beaten > 0" }, "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": [ "Class rise after the win: novice and maiden winners stepping into graded or open company get beaten on merit, so the heavy beating reflects their level rather than one bad day. That would push A/E down and hide a real rebound.", "Small non-handicap fields with odds-on favourites: the selection gets squeezed into big prices behind a dominant favourite, which inflates the variance and the share of longshots (see the field_size >= 8 refinement).", "Novice yards placing a horse to win once: a soft win inflates best_last3_beaten = 0 without real ability behind it. These runners should be over-bet rather than under-bet.", "Overlap with the frozen handicap rules is zero by construction (is_handicap = 0), but a horse may move between handicap and non-handicap runs. Treat this as a replication of the mechanism on different races, not as independent proof of the same population.", "Short data window: best_last3_beaten exists only from 2025-11-01, so the sample covers about one jumps season. Seasonal or ground effects (for example, one wet winter) could drive the result.", "Longshot concentration: the earlier finding showed the moderate-margin lift sat entirely below 16/1 and the 16/1+ band scored badly. A lift carried only by 16/1+ winners would be noise from a few wins." ], "mechanism": "A jumps horse that won within its last three runs and was then beaten 20+ lengths last time has usually had one bad day: wrong ground, a jumping mistake, a bad trip or a minor setback. It has not lost the ability it showed when winning. Because that holds whatever the race conditions, the rebound already seen in handicaps (1.34 on 669, holding below 16/1) should also show in novice, maiden, graded and conditions hurdles and chases. Those runners never appear in the frozen handicap rules.", "market_miss": "In non-handicaps there is no official-rating ladder to anchor the price, so punters and compilers lean on the most recent form figure. A 20+ length defeat is the most visible number in the form, and the earlier win is easy to write off as a weak novice or maiden race. The price therefore drifts further than one bad run justifies.", "prediction": { "direction": "positive", "size": "A/E 1.10 to 1.30. Bets may fall short of the 300 the hypothesis expects, because best_last3_beaten only starts on 2025-11-01.", "falsified_if": "A/E below 1.05 on the broad rule. Also falsified if the lift lives only at 16/1+ (the sp_decimal < 17 refinement at or below 1.0 while the broad rule is above 1.05), or if the no-recent-win control (best_last3_beaten > 0) scores as well as or better than the selection." }, "notes": "I kept the rule sketch unchanged so that this is a faithful replication of the handicap rebound definition: a win in the last three runs (best_last3_beaten = 0) and beaten 20+ lengths last time. Together these imply the win came two or three runs back. Pulled-up and fallen runners drop out because they have no beaten distance (NULL). The main risk is sample size, since best_last3_beaten is only available from 2025-11-01. If the result is thin but points the right way, it should go on to falsification and forward tracking rather than be loosened. Do not swap best_last3_beaten for days_since_win after the fact, because that changes the population. A class-rise refinement (race_class against last_race_class) was considered and left out: IRE race_class only starts on 2026-07-01, so it would mostly drop Irish runners." }
Timeline
Job 2972 finished
· engine:compute-1
H-8cff5453 Discovery → KILLED fails: A/E 0.877, needs 1.05; p 0.7872, needs 0.05 or lower; periods [1.13, 0.63], each needs 1.0; A/E 0.877 against same-race control 1.013, needs 0.03 above (not a niche pass: A/E 0.877 below 1.05; p 0.7872054224138322 above 0.5; does not beat the same-race control 1.013; a period points the other way [1.13, 0.63])
· engine:evaluator
discovery result for H-8cff5453 (broad rule): fail
· engine:evaluator
H-8cff5453 Designed → RESEARCHdiscovery measuring on the discovery zone
· engine:orchestrator
compute-1 took job 2972 (evaluate, attempt 1)
· compute-1
Job 2970 finished
· engine:ai-1
Queued evaluate on the compute lane: discovery run of the broad rule
· engine:scheduler
H-8cff5453 Proposed → RESEARCHdesigned pre-spec written and hashed
· agent:designer@v1
ai-1 took job 2970 (design, attempt 1)
· ai-1
Queued design on the ai lane: write the pre-spec
· engine:scheduler
New idea H-8cff5453: Replicate: recent winners beaten 20+ lengths in non-handicap jumps races (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.