Hypotheses · story · H-32b815ff
Test-mechanism: recent winners beaten only 8 to 19 lengths should show a smaller rebound
forward A/E 0.0 on 0 bets, SP ROI None%, BSP ROI None% (p None)
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
- test-mechanism
- Created
- 17 Oct, 04:27
- Tests logged
- 18
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-363890c3 (Sharpen: recent winners beaten 20+ lengths next time over jumps) survived falsification: 5 of 5 attacks left it standing; it is frozen for its one vault query. O-1a2e3a25
- H-807e3cb2 (Sharpen: winners beaten 20+ lengths on their first run after winning) passed discovery: A/E 1.25 on 502 bets (p 0.049), same-race control 0.98. O-512837ca
- H-b0d006d8 (Rival: the recent-winner rebound is a longshot artefact and vanishes a) passed discovery: A/E 1.26 on 447 bets (p 0.03), same-race control 0.97. O-ef2e2d1f
- AskedIs there a dose-response in the margin: do recent winners beaten 8 to 19 lengths show a smaller lift than those beaten 20+? answered
- MechanismA 20+ length beating looks to punters like the horse has been found out by its new mark. A moderate beating looks less damning, so the market should shade the price less and there is less mispricing to recover.
- Why the market misses itThe form figure and the large margin dominate how the horse reads on paper. A smaller margin reads as an ordinary defeat that is already roughly priced.
- Predictedpositive, A/E 1.00 to 1.12 on 800+ bets, clearly below the 20+ group's 1.34
- Falsified ifA/E at or above 1.25, which would mean the margin is not the cause and recent winners are underbet after any defeat
Mechanism and rationale
A 20+ length beating looks to punters like the horse has been found out by its new mark. A moderate beating looks less damning, so the market should shade the price less and there is less mispricing to recover.
The rule
is_handicap = 1 AND race_type IN ('Hurdle', 'Chase') AND best_last3_beaten = 0 AND last_position > 1 AND last_beaten_lengths >= 8 AND last_beaten_lengths < 20Reads: is_handicap, race_type, best_last3_beaten, last_position, last_beaten_lengths
Pre-registration
- Spec hash (sha256 of the canonical pre-spec)
- 3bf97035e475259d5310bed13352e78dffbaf334da3043f59d27f525ae807773
- Frozen
- 17 Oct, 04:31
- Nothing in the definition can change after this.
- Confounders
- Recent winners may be underbet after any defeat, whatever the margin. That would lift both bands equally, so it is checked against the 20+ control.
- The mark rises after the win. A moderately beaten horse may still be too high in the weights, which would push A/E down for reasons unrelated to how the market reads the margin.
- IRE weighting: the sister niche's lift was IRE-heavy, so a lift here could just reflect the region mix (see the GB refinement).
- Longshot share: a lift that sits mainly at 16/1 and above would come from a few wins, not from mispricing (see the 14/1 refinement).
- best_last3_beaten only has data from 2025-11-01, so the window is short and spans few seasons, and the result may reflect one jumps season.
- Race class and field size can differ between the 8-19 and 20+ bands. Bigger beatings come more often in bigger or higher-class fields.
- Control
{ "description": "Other runners in the same races should show about 1.00 or a little below. If they do, any lift is not a property of the races. The key comparison for this question is the sister group: the same recent-winner jumps handicappers beaten 20+ lengths last time. It is measured over the same window and should come out near the earlier 1.34. The mechanism is supported only if this rule's A/E sits clearly below that group, by at least about 0.15. If both groups are similar, the margin is not the cause.", "rule": "is_handicap = 1 AND race_type IN ('Hurdle', 'Chase') AND best_last3_beaten = 0 AND last_position > 1 AND last_beaten_lengths >= 20" }
Discovery result
pass broad rule (niche) · 17 Oct, 04:29
- Bets
- 828
- 121 winners
- A/E
- 1.12
- 95%: 0.93 to 1.34
- SP return
- -10.6%
- level stakes
- Betfair SP return
- +6.6%
- 824 bets with a BSP
Strike rate 14.6%. p = 0.12. 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. 6 of 6 survived.
- perturbation: Perturb band wider: 6 to 21 lengthspass
1,094 bets · A/E 1.10 (0.94 to 1.29) · control 0.99 · 17 Oct, 04:31
Breakdown
betsA/E0.71.01.32025-10-01 to 2026-04-275971.13after 2026-04-274971.07Bars grow from 1.00, the market. Faded bars have fewer than 40 bets. - perturbation: Perturb band narrower: 10 to 16 lengthspass
487 bets · A/E 1.25 (0.98 to 1.57) · control 0.97 · 17 Oct, 04:31
Sealed holdout (vault)
Not queried. Only a frozen idea can spend its one query against the 2020-25 holdout.
Forward record
- forward vs bar {'min_bets': 100, 'min_ae': 1.0, 'max_p': 0.2}info
0 bets · · 17 Oct, 04:31
Breakdown
betsA/E0.71.01.3forward0–Bars grow from 1.00, the market. Faded bars have fewer than 40 bets.
Other experiments
- neighbour: > 1 -> 0 (-20%)pass
828 bets · A/E 1.12 (0.93 to 1.34) · control 0.99 · 17 Oct, 04:36
Breakdown
betsA/E0.71.01.32025-10-01 to 2026-04-274541.10after 2026-04-273741.14Bars grow from 1.00, the market. Faded bars have fewer than 40 bets. - neighbour: > 1 -> 2 (+20%)pass
742 bets · A/E 1.14 (0.93 to 1.37) · control 0.99 · 17 Oct, 04:36
Breakdown
Lineage
Agent runs
designer v1ok · 32s · 17 Oct, 04:27
Output (schema-checked)
{ "rule": "is_handicap = 1 AND race_type IN ('Hurdle', 'Chase') AND best_last3_beaten = 0 AND last_position > 1 AND last_beaten_lengths >= 8 AND last_beaten_lengths < 20", "refinements": [ { "label": "14/1 or shorter (the earlier findings show the rebound holds below 16/1, while longshots inflate the broad A/E)", "rule": "is_handicap = 1 AND race_type IN ('Hurdle', 'Chase') AND best_last3_beaten = 0 AND last_position > 1 AND last_beaten_lengths >= 8 AND last_beaten_lengths < 20 AND sp_decimal <= 15" }, { "label": "GB only (checks the IRE-weighting confounder that drove the sister niche)", "rule": "is_handicap = 1 AND race_type IN ('Hurdle', 'Chase') AND best_last3_beaten = 0 AND last_position > 1 AND last_beaten_lengths >= 8 AND last_beaten_lengths < 20 AND region = 'GB'" }, { "label": "Dose check: upper half of the band, 14 to 19 lengths (if margin drives the rebound, this half should beat the 8-13 half)", "rule": "is_handicap = 1 AND race_type IN ('Hurdle', 'Chase') AND best_last3_beaten = 0 AND last_position > 1 AND last_beaten_lengths >= 14 AND last_beaten_lengths < 20" } ], "control": { "description": "Other runners in the same races should show about 1.00 or a little below. If they do, any lift is not a property of the races. The key comparison for this question is the sister group: the same recent-winner jumps handicappers beaten 20+ lengths last time. It is measured over the same window and should come out near the earlier 1.34. The mechanism is supported only if this rule's A/E sits clearly below that group, by at least about 0.15. If both groups are similar, the margin is not the cause.", "rule": "is_handicap = 1 AND race_type IN ('Hurdle', 'Chase') AND best_last3_beaten = 0 AND last_position > 1 AND last_beaten_lengths >= 20" }, "pass_criteria": { "min_bets": 300, "min_ae": 1.05, "max_p": 0.05 }, "forward_bar": { "min_bets": 100, "min_ae": 1, "max_p": 0.2 }, "confounders": [ "Recent winners may be underbet after any defeat, whatever the margin. That would lift both bands equally, so it is checked against the 20+ control.", "The mark rises after the win. A moderately beaten horse may still be too high in the weights, which would push A/E down for reasons unrelated to how the market reads the margin.", "IRE weighting: the sister niche's lift was IRE-heavy, so a lift here could just reflect the region mix (see the GB refinement).", "Longshot share: a lift that sits mainly at 16/1 and above would come from a few wins, not from mispricing (see the 14/1 refinement).", "best_last3_beaten only has data from 2025-11-01, so the window is short and spans few seasons, and the result may reflect one jumps season.", "Race class and field size can differ between the 8-19 and 20+ bands. Bigger beatings come more often in bigger or higher-class fields." ], "mechanism": "Punters read a beating of 20 lengths or more after a recent win as proof that the horse has been found out by its new mark, so they push its price out too far. A beating of 8 to 19 lengths reads as an ordinary defeat and gets only a small markdown. If the size of the margin is what drives the mispricing, these moderately beaten recent winners should show a smaller rebound than the heavily beaten ones: a small positive A/E or none, clearly below 1.34.", "market_miss": "The form figure and a large beaten margin dominate how a horse reads on paper. A large margin looks damning and gets overreacted to. A moderate margin looks unremarkable and is already roughly priced, so there is less error to recover.", "prediction": { "direction": "positive", "size": "A/E 1.00 to 1.12 on 800+ bets, clearly below the 20+ control (about 1.34 expected) by at least 0.15", "falsified_if": "A/E at or above 1.25, or within 0.10 of the 20+ control group measured over the same window. Either result means the margin is not the cause and recent winners are underbet after any defeat." }, "notes": "This is a test-mechanism spec, and the mechanism predicts a weak result. If the rule fails the 1.05 discovery bar, that supports the hypothesis that margin drives the rebound, provided the 20+ control holds up over the same window. A rule passing at 1.25 or more falsifies the mechanism, even though it would look like a new edge. I added last_position > 1 so that last time's winners and non-finishers are clearly excluded. best_last3_beaten = 0 means a win in the two runs before the last one. min_bets is raised to 300 because the prediction expects 800+ bets." }
Timeline
Job 2963 finished
· engine:compute-1
hypothesis note H-32b815ff
· engine:perturb
perturbation result for H-32b815ff (neighbour: < 20 -> 24 (+20%)): pass
· engine:perturb
perturbation result for H-32b815ff (neighbour: < 20 -> 16 (-20%)): pass
· engine:perturb
perturbation result for H-32b815ff (neighbour: >= 8 -> 10 (+20%)): pass
· engine:perturb
perturbation result for H-32b815ff (neighbour: >= 8 -> 6 (-20%)): pass
· engine:perturb
perturbation result for H-32b815ff (neighbour: > 1 -> 2 (+20%)): pass
· engine:perturb
perturbation result for H-32b815ff (neighbour: > 1 -> 0 (-20%)): pass
· engine:perturb
compute-1 took job 2963 (mutate, attempt 1)
· compute-1
Queued mutate on the compute lane: parameter stability: do neighbouring thresholds hold?
· engine:scheduler
Job 2957 finished
· engine:compute-1
forward result for H-32b815ff (forward vs bar {'min_bets': 100, 'min_ae': 1.0, 'max_p': 0.2}): info
· engine:evaluator
compute-1 took job 2957 (forward_check, attempt 1)
· compute-1
Queued forward_check on the compute lane: daily forward check of a shadow system
· engine:scheduler
Job 2953 finished
· engine:compute-1
H-32b815ff Frozen → SHADOW vault skipped: best_last3_beaten, last_beaten_lengths do not exist before the discovery zone; track it forward instead
· engine:orchestrator