Hypotheses · story · H-b0d006d8
Rival: the recent-winner rebound is a longshot artefact and vanishes at 14/1 or shorter
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
- rival-explanation
- Created
- 17 Oct, 04:16
- Tests logged
- 17
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) passed discovery: A/E 1.34 on 669 bets (p 0.006), same-race control 0.97. O-c88bca5b
- AskedDoes the recent-winner rebound hold below 16/1, or is the 1.34 carried by about 12 winners at 16/1 or bigger? answered
- MechanismIf the rebound is real, a recent winner beaten 20+ lengths only once still has its ability. That should show at every price, including the shorter prices where most of the money goes. The rival is that 12 big-priced winners at 16/1 or bigger make the 1.34.
- Why the market misses itThe 20+ length beating is the most recent and most visible line of form. Punters and pricing models weight it more heavily than the earlier win, so even well-fancied winners drift past their true chance.
- Predictedpositive, A/E 1.12 to 1.25 on 400+ bets at 14/1 or shorter
- Falsified ifA/E at or below 1.03 on 350+ bets at 14/1 or shorter, which would mean the winner lift is a longshot artefact
- Rule sketch
is_handicap = 1 AND race_type IN ('Hurdle', 'Chase') AND last_beaten_lengths >= 20 AND best_last3_beaten = 0 AND sp_decimal <= 15
Mechanism and rationale
If the rebound is real, a recent winner beaten 20+ lengths only once still has its ability. That should show at every price, including the shorter prices where most of the money goes. The rival is that 12 big-priced winners at 16/1 or bigger make the 1.34.
The rule
is_handicap = 1 AND race_type IN ('Hurdle', 'Chase') AND last_beaten_lengths >= 20 AND best_last3_beaten = 0 AND sp_decimal <= 15Reads: is_handicap, race_type, last_beaten_lengths, best_last3_beaten, sp_decimal
Pre-registration
- Spec hash (sha256 of the canonical pre-spec)
- 482998582952183561d5be280a15b88b8b141543f855dc7e4776bd52cedc03e0
- Frozen
- 17 Oct, 04:23
- Nothing in the definition can change after this.
- Confounders
- Few winners in the 16/1-or-bigger band: the 1.34 headline may rest on about 12 longshot wins, which is why the rule caps the price at 15.0 decimal
- Field size: bigger fields both lengthen prices and make 20+ length beatings easier, so the lift may follow field size and not the form story
- Recent winners carry fresh mark rises, which may cancel the rebound at short prices where the market already prices the win
- IRE share: the IRE part of the winner group was much stronger (1.50 against 1.03 for GB without winners), so check the region split
- best_last3_beaten is only populated from 2025-11-01, so the sample covers about one jumps season and may reflect that season's conditions
- Price band and odds-on/short-price favourite-longshot bias: A/E at short prices sits closer to 1.0 across the board, so a smaller lift there is expected even if the effect is real
- Control
{ "description": "The other runners in the same races should come out near A/E 1.0 (about 0.95 to 1.02), which shows the lift belongs to the horse and not to the race. The rival explanation also needs a direct comparison: the same profile at 16/1 or bigger. That band was 2.01 on 222 from only 12 wins. If the rebound is real, the band at 14/1 or shorter stays clearly above 1.0 while the longshot band is noisy. If it is an artefact, the band at 14/1 or shorter sits near 1.0 and all of the lift is at the long prices.", "rule": "is_handicap = 1 AND race_type IN ('Hurdle', 'Chase') AND last_beaten_lengths >= 20 AND best_last3_beaten = 0 AND sp_decimal > 15" }
Discovery result
pass broad rule · 17 Oct, 04:22
- Bets
- 447
- 72 winners
- A/E
- 1.26
- 95%: 0.99 to 1.59
- SP return
- +7.5%
- level stakes
- Betfair SP return
- +27.7%
- 445 bets with a BSP
Strike rate 16.1%. p = 0.030. Same-race control: the other runners in these races had A/E 0.97, 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: heavier beating 24+ lengths, cap keptpass
340 bets · A/E 1.28 (0.96 to 1.67) · control 0.97 · 17 Oct, 04:23
Breakdown
betsA/E0.71.01.32025-10-01 to 2026-04-271781.39after 2026-04-271621.15Bars grow from 1.00, the market. Faded bars have fewer than 40 bets. - perturbation: Perturb: 16+ length beating with tighter 11/1 price cappass
515 bets · A/E 1.22 (0.98 to 1.50) · control 0.97 · 17 Oct, 04:23
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.03, 'max_p': 0.2}info
0 bets · · 17 Oct, 04:24
Breakdown
betsA/E0.71.01.3forward0–Bars grow from 1.00, the market. Faded bars have fewer than 40 bets.
Other experiments
- neighbour: >= 20 -> 16 (-20%)pass
613 bets · A/E 1.19 (0.96 to 1.45) · control 0.98 · 17 Oct, 04:24
Breakdown
betsA/E0.71.01.32025-10-01 to 2026-04-273351.26after 2026-04-272781.10Bars grow from 1.00, the market. Faded bars have fewer than 40 bets. - neighbour: >= 20 -> 24 (+20%)pass
340 bets · A/E 1.28 (0.96 to 1.67) · control 0.97 · 17 Oct, 04:24
Breakdown
Lineage
Agent runs
designer v1ok · 48s · 17 Oct, 04:16
Output (schema-checked)
{ "rule": "is_handicap = 1 AND race_type IN ('Hurdle', 'Chase') AND last_beaten_lengths >= 20 AND best_last3_beaten = 0 AND sp_decimal <= 15", "refinements": [ { "label": "8/1 or shorter", "rule": "is_handicap = 1 AND race_type IN ('Hurdle', 'Chase') AND last_beaten_lengths >= 20 AND best_last3_beaten = 0 AND sp_decimal <= 9" }, { "label": "fields of 13 or fewer (field-size confounder)", "rule": "is_handicap = 1 AND race_type IN ('Hurdle', 'Chase') AND last_beaten_lengths >= 20 AND best_last3_beaten = 0 AND sp_decimal <= 15 AND field_size <= 13" } ], "control": { "description": "The other runners in the same races should come out near A/E 1.0 (about 0.95 to 1.02), which shows the lift belongs to the horse and not to the race. The rival explanation also needs a direct comparison: the same profile at 16/1 or bigger. That band was 2.01 on 222 from only 12 wins. If the rebound is real, the band at 14/1 or shorter stays clearly above 1.0 while the longshot band is noisy. If it is an artefact, the band at 14/1 or shorter sits near 1.0 and all of the lift is at the long prices.", "rule": "is_handicap = 1 AND race_type IN ('Hurdle', 'Chase') AND last_beaten_lengths >= 20 AND best_last3_beaten = 0 AND sp_decimal > 15" }, "pass_criteria": { "min_bets": 200, "min_ae": 1.08, "max_p": 0.05 }, "forward_bar": { "min_bets": 100, "min_ae": 1.03, "max_p": 0.2 }, "confounders": [ "Few winners in the 16/1-or-bigger band: the 1.34 headline may rest on about 12 longshot wins, which is why the rule caps the price at 15.0 decimal", "Field size: bigger fields both lengthen prices and make 20+ length beatings easier, so the lift may follow field size and not the form story", "Recent winners carry fresh mark rises, which may cancel the rebound at short prices where the market already prices the win", "IRE share: the IRE part of the winner group was much stronger (1.50 against 1.03 for GB without winners), so check the region split", "best_last3_beaten is only populated from 2025-11-01, so the sample covers about one jumps season and may reflect that season's conditions", "Price band and odds-on/short-price favourite-longshot bias: A/E at short prices sits closer to 1.0 across the board, so a smaller lift there is expected even if the effect is real" ], "mechanism": "A jumps handicapper that won within its last three runs and was then beaten 20+ lengths last time has probably not lost its ability. The bad run is more likely a one-off (trouble, wrong conditions, a bad day). If so, the rebound should show at every price, including 14/1 or shorter where most of the money goes. The rival says the 1.34 headline comes from about 12 longshot winners at 16/1 or bigger, and the short-price band carries no edge.", "market_miss": "The 20+ length beating is the most recent and most visible line of form. Punters and pricing models weight it more heavily than the earlier win, so even a well-fancied recent winner drifts a little past its true chance. At short prices the error should be smaller than at long prices but still present.", "prediction": { "direction": "positive", "size": "A/E 1.12 to 1.25 on 400+ bets at 14/1 or shorter (sp_decimal <= 15)", "falsified_if": "A/E at or below 1.03 on 350+ bets at 14/1 or shorter, which would mean the recent-winner lift is a longshot artefact carried by the 16/1+ band" }, "notes": "The draft rule is kept as written. It uses only pre_off columns, and sp_decimal <= 15 is exactly 14/1 or shorter. best_last3_beaten = 0 picks out horses with a win in their last three runs. Because the last run was beaten 20+ lengths, that win has to be one of the two runs before it. This is a rival-explanation test, so the useful result is the short-price band against the 16/1+ control: a clear pass here would weaken the longshot-artefact rival. Pass criteria are set a little above the floor (200 bets, A/E 1.08), because about 450 bets are expected and A/E at short prices tends to be compressed. The refinements check the shortest prices (8/1 or shorter) and the field-size confounder. They are read only if the broad rule shows evidence." }
Timeline
Job 2906 finished
· engine:compute-1
hypothesis note H-b0d006d8
· engine:perturb
perturbation result for H-b0d006d8 (neighbour: drop: race_type IN ('Hurdle', 'Chase')): pass
· engine:perturb
perturbation result for H-b0d006d8 (neighbour: drop: is_handicap = 1): pass
· engine:perturb
perturbation result for H-b0d006d8 (neighbour: <= 15 -> 18 (+20%)): pass
· engine:perturb
perturbation result for H-b0d006d8 (neighbour: <= 15 -> 12 (-20%)): pass
· engine:perturb
perturbation result for H-b0d006d8 (neighbour: >= 20 -> 24 (+20%)): pass
· engine:perturb
perturbation result for H-b0d006d8 (neighbour: >= 20 -> 16 (-20%)): pass
· engine:perturb
compute-1 took job 2906 (mutate, attempt 1)
· compute-1
Queued mutate on the compute lane: parameter stability: do neighbouring thresholds hold?
· engine:scheduler
Job 2901 finished
· engine:compute-1
forward result for H-b0d006d8 (forward vs bar {'min_bets': 100, 'min_ae': 1.03, 'max_p': 0.2}): info
· engine:evaluator
compute-1 took job 2901 (forward_check, attempt 1)
· compute-1
Queued forward_check on the compute lane: daily forward check of a shadow system
· engine:scheduler
Job 2883 finished
· engine:compute-1
H-b0d006d8 Frozen → SHADOW vault skipped: last_beaten_lengths, best_last3_beaten do not exist before the discovery zone; track it forward instead
· engine:orchestrator