Hypotheses · story · H-363890c3
Sharpen: recent winners beaten 20+ lengths next time over jumps
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
- sharpen
- Created
- 17 Oct, 04:13
- 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-332b49e9 (Rival: the lift is a one-bad-run rebound after close recent form, need) passed discovery: A/E 1.23 on 1600 bets (p 0.004), same-race control 0.98. O-10a4d6e5
- AskedAmong jumps handicappers beaten 20+ lengths, do recent winners (best_last3_beaten = 0) beat their price more than horses with a close placed finish, and why does this reverse the parent niche? answered
- MechanismA recent win is the clearest proof of current ability. The heavy beating that followed often came after a rise in the weights or class and a hard race, which is a temporary setback rather than a loss of form, so the horse recovers to near its winning level.
- Why the market misses itPunters read a heavy defeat straight after a win as being found out by the handicapper, and let the horse drift, even though the winning form is only weeks old.
- Predictedpositive, A/E 1.25 to 1.45 on 500+ bets, in both GB and IRE
- Falsified ifA/E at or below 1.15, or GB below 1.05, or no higher than the placed-but-not-won group (1.152)
- Rule sketch
is_handicap = 1 AND race_type IN ('Hurdle', 'Chase') AND last_beaten_lengths >= 20 AND best_last3_beaten = 0
Mechanism and rationale
A recent win is the clearest proof of current ability. The heavy beating that followed often came after a rise in the weights or class and a hard race, which is a temporary setback rather than a loss of form, so the horse recovers to near its winning level.
The rule
is_handicap = 1 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)
- e9feb21517271af3dca9790539c4ba82b33c7847c28e477552513c52acd4151f
- Frozen
- 17 Oct, 04:22
- Nothing in the definition can change after this.
- Confounders
- Partly post hoc: the winner subset was found by splitting the close-finish rule (1.232 on 1600 vs 1.152 on 931 without winners). The discovery result overlaps the data that suggested it.
- Opposite pattern inside the never-involved big-field niche, where excluding recent winners raised A/E. The effect may be confined to horses that showed something in the heavy defeat.
- Rating rises after the win can be large. A heavy defeat after a big rise may mean the horse is genuinely out of its depth, not having a temporary setback.
- Longshot-heavy price profile: a few big-priced winners can inflate A/E on a short window.
- Short data window (both key columns start 2025-11-01), so the sample is mostly one jumps season and could reflect seasonal or going effects.
- GB/IRE split: the earlier non-winner lift was mostly IRE (GB 1.031), so a pooled result could hide a one-region effect.
- Control
{ "description": "Same-race rivals should score about 1.0, which shows the lift belongs to the runner and not to the kind of race. The question asks whether winners carry the close-finish rebound beyond horses that were only placed, so the main comparison is the placed-but-not-won group. These are jumps handicappers beaten 20+ lengths last time whose best run in the last three was beaten more than 0 and up to 6 lengths, previously about 1.152 on 931. Recent winners must clearly beat that group. A/E no higher than about 1.15 means a win adds nothing beyond a close finish.", "rule": "is_handicap = 1 AND race_type IN ('Hurdle', 'Chase') AND last_beaten_lengths >= 20 AND best_last3_beaten > 0 AND best_last3_beaten <= 6" }
Discovery result
pass broad rule · 17 Oct, 04:14
- Bets
- 669
- 84 winners
- A/E
- 1.34
- 95%: 1.07 to 1.65
- SP return
- +23.3%
- level stakes
- Betfair SP return
- +72.6%
- 667 bets with a BSP
Strike rate 12.6%. p = 0.0063. 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. 5 of 5 survived.
- perturbation: Perturb heavy-beating cut down to 16 lengthspass
879 bets · A/E 1.23 (1.01 to 1.48) · control 0.98 · 17 Oct, 04:22
Breakdown
betsA/E0.71.01.32025-10-01 to 2026-04-274911.30after 2026-04-273881.14Bars grow from 1.00, the market. Faded bars have fewer than 40 bets. - perturbation: Perturb heavy-beating cut up to 25 lengthspass
496 bets · A/E 1.33 (1.01 to 1.72) · control 0.98 · 17 Oct, 04:22
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.05, '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
879 bets · A/E 1.23 (1.01 to 1.48) · control 0.98 · 17 Oct, 04:14
Breakdown
betsA/E0.71.01.32025-10-01 to 2026-04-274911.30after 2026-04-273881.14Bars grow from 1.00, the market. Faded bars have fewer than 40 bets. - neighbour: >= 20 -> 24 (+20%)pass
528 bets · A/E 1.36 (1.04 to 1.74) · control 0.97 · 17 Oct, 04:14
Breakdown
Lineage
Agent runs
designer v1ok · 32s · 17 Oct, 04:13
Output (schema-checked)
{ "rule": "is_handicap = 1 AND race_type IN ('Hurdle', 'Chase') AND last_beaten_lengths >= 20 AND best_last3_beaten = 0", "refinements": [ { "label": "Win is recent: back within 60 days", "rule": "is_handicap = 1 AND race_type IN ('Hurdle', 'Chase') AND last_beaten_lengths >= 20 AND best_last3_beaten = 0 AND days_since_last_run IS NOT NULL AND days_since_last_run <= 60" }, { "label": "Not a longshot effect: 14/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 <= 15" }, { "label": "Outside the never-involved niche, where the winner pattern reversed", "rule": "is_handicap = 1 AND race_type IN ('Hurdle', 'Chase') AND last_beaten_lengths >= 20 AND best_last3_beaten = 0 AND last_never_involved = 0" } ], "control": { "description": "Same-race rivals should score about 1.0, which shows the lift belongs to the runner and not to the kind of race. The question asks whether winners carry the close-finish rebound beyond horses that were only placed, so the main comparison is the placed-but-not-won group. These are jumps handicappers beaten 20+ lengths last time whose best run in the last three was beaten more than 0 and up to 6 lengths, previously about 1.152 on 931. Recent winners must clearly beat that group. A/E no higher than about 1.15 means a win adds nothing beyond a close finish.", "rule": "is_handicap = 1 AND race_type IN ('Hurdle', 'Chase') AND last_beaten_lengths >= 20 AND best_last3_beaten > 0 AND best_last3_beaten <= 6" }, "pass_criteria": { "min_bets": 200, "min_ae": 1.1, "max_p": 0.05 }, "forward_bar": { "min_bets": 100, "min_ae": 1.05, "max_p": 0.2 }, "confounders": [ "Partly post hoc: the winner subset was found by splitting the close-finish rule (1.232 on 1600 vs 1.152 on 931 without winners). The discovery result overlaps the data that suggested it.", "Opposite pattern inside the never-involved big-field niche, where excluding recent winners raised A/E. The effect may be confined to horses that showed something in the heavy defeat.", "Rating rises after the win can be large. A heavy defeat after a big rise may mean the horse is genuinely out of its depth, not having a temporary setback.", "Longshot-heavy price profile: a few big-priced winners can inflate A/E on a short window.", "Short data window (both key columns start 2025-11-01), so the sample is mostly one jumps season and could reflect seasonal or going effects.", "GB/IRE split: the earlier non-winner lift was mostly IRE (GB 1.031), so a pooled result could hide a one-region effect." ], "mechanism": "A win in the last three runs is direct proof of recent ability at this level of code and handicap. A defeat by 20+ lengths straight afterwards usually follows a rise in the weights or class, a hard race, or an unsuitable trip or ground. That is a temporary setback, not lost form, so the horse goes back to near its winning level once conditions or the mark settle.", "market_miss": "Punters and form-readers weight the latest run most. They read a heavy defeat straight after a win as the horse being found out by the handicapper and let it drift, discounting winning form that is only weeks old.", "prediction": { "direction": "positive", "size": "A/E 1.25 to 1.45 on 500+ bets, with both GB and IRE above 1.05", "falsified_if": "Falsified if pooled A/E is at or below 1.15, if GB A/E is below 1.05, or if the result is no higher than the placed-but-not-won control (best_last3_beaten above 0 and up to 6, about 1.152)." }, "notes": "best_last3_beaten = 0 means a win in one of the last three runs. Because the last run was beaten 20+ lengths, that win must be the second or third run back. The rule sketch is kept unchanged: it uses only pre-off columns and reads no results. The pass bar is stricter than the floor (200 bets, A/E 1.1) because the hypothesis is partly post hoc and has to beat the 1.152 control. Implied size from earlier splits: about 670 winner bets at roughly 1.33." }
Timeline
Job 2900 finished
· engine:compute-1
forward result for H-363890c3 (forward vs bar {'min_bets': 100, 'min_ae': 1.05, 'max_p': 0.2}): info
· engine:evaluator
compute-1 took job 2900 (forward_check, attempt 1)
· compute-1
Queued forward_check on the compute lane: daily forward check of a shadow system
· engine:scheduler
Job 2868 finished
· engine:compute-1
H-363890c3 Frozen → SHADOW vault skipped: last_beaten_lengths, best_last3_beaten do not exist before the discovery zone; track it forward instead
· engine:orchestrator
compute-1 took job 2868 (vault, attempt 1)
· compute-1
Job 2861 finished
· engine:compute-1
Queued vault on the compute lane: frozen: one sealed vault query
· engine:scheduler
H-363890c3 Falsification → FROZEN survived falsification
· engine:falsification
falsification result for H-363890c3 (partition: Outside never-involved niche where the winner pattern reversed): pass
· engine:evaluator
compute-1 took job 2861 (attack, attempt 1)
· compute-1
Job 2860 finished
· engine:compute-1
falsification result for H-363890c3 (control: Control: placed but not won in last three (beaten >0 to 6 lengths)): pass
· engine:evaluator
compute-1 took job 2860 (attack, attempt 1)
· compute-1
Job 2859 finished
· engine:compute-1
falsification result for H-363890c3 (price_band: Not a longshot effect: 14/1 or shorter): pass
· engine:evaluator
compute-1 took job 2859 (attack, attempt 1)
· compute-1
Job 2858 finished
· engine:compute-1
falsification result for H-363890c3 (perturbation: Perturb heavy-beating cut up to 25 lengths): pass
· engine:evaluator