Hypotheses · story · H-6243bb06
Test-mechanism: undropped recent winners after a heavy beating, given time for reassessment
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:45
- 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-4392b730 (Rival: the jumps winner rebound is mark relief, strongest when the han) passed discovery as a niche: A/E 1.25 on 380 bets (p 0.08), same-race control 0.99. O-4822a69b
- H-4392b730 (Rival: the jumps winner rebound is mark relief, strongest when the han): the country 'GB' carries the effect (A/E 1.31) while the rest score IRE 0.96. O-7693085d
- AskedIs the stronger rebound of undropped recent winners (rating_change >= 0) an official-excuse signal, or a quick return that came before the handicapper's reassessment? answered
- MechanismA handicapper who leaves a recent winner's mark alone after a 20+ length beating has judged that run as not true form (a mistake, wrong ground, eased). The horse's ability and winning mark stand, and it runs off a mark it has already proved it can win from.
- Why the market misses itThe form figures show a big beating, and punters read that and not the rating line. An unchanged mark looks like no relief, so it attracts no money, though it is the handicapper saying the run should be ignored.
- Predictedpositive, A/E 1.30 to 1.50 on 180+ bets, at or above the quick-return (days_since_last_run <= 10) version
- Falsified ifA/E at or below 1.12, or below the same rule restricted to days_since_last_run <= 10, which would make the no-drop lift a timing artefact
Mechanism and rationale
A handicapper who leaves a recent winner's mark alone after a 20+ length beating has judged that run as not true form (a mistake, wrong ground, eased). The horse's ability and winning mark stand, and it runs off a mark it has already proved it can win from.
The rule
is_handicap = 1 AND race_type IN ('Hurdle', 'Chase') AND last_beaten_lengths >= 20 AND best_last3_beaten = 0 AND rating_change >= 0 AND days_since_last_run >= 14Reads: is_handicap, race_type, last_beaten_lengths, best_last3_beaten, rating_change, days_since_last_run
Pre-registration
- Spec hash (sha256 of the canonical pre-spec)
- 1fa8b1c93587630839984d942a0ff0001fb4cc84c14f08c828ad6fb192b1ffc3
- Frozen
- 17 Oct, 04:48
- Nothing in the definition can change after this.
- Confounders
- Quick returners: an unchanged mark within about 10 days often means the handicapper has not reassessed yet, not that they excused the run. The 14-day floor and the <=10-day control deal with this
- Region: IRE carried the undropped complement (1.71 on 88). Report GB and IRE separately; a lift found only in IRE is weak
- Longshot band: 16/1+ scored 2.31 on 80, so a few big-priced winners could carry the result. Check the <=15/1 refinement
- Short window: rating_change and best_last3_beaten start in 2025-11, so this is mostly one jumps season. Seasonal or ground effects can't be separated
- Class moves: a class drop alongside an unchanged mark could be doing the work, not the mark itself
- Raised marks (rating_change > 0) mean something different from a held mark. Check the exactly-unchanged refinement
- Overlap with the frozen jumps recent-winner rebound rules, so this may not be an independent finding
- Control
{ "description": "Same-race other runners should sit near A/E 1.0 (about 0.95 to 1.0), showing the lift is not a property of these races. The timing control is the quick-return version of the same rule (days_since_last_run <= 10): those horses mostly run before the handicapper can reassess, so an unchanged mark carries no verdict. The mechanism predicts the 14+ day rule scores at or above it; if the quick-return version scores higher, the no-drop lift is a timing artefact.", "rule": "is_handicap = 1 AND race_type IN ('Hurdle', 'Chase') AND last_beaten_lengths >= 20 AND best_last3_beaten = 0 AND rating_change >= 0 AND days_since_last_run <= 10" }
Discovery result
pass broad rule · 17 Oct, 04:47
- Bets
- 249
- 32 winners
- A/E
- 1.42
- 95%: 0.97 to 2.01
- SP return
- +46.7%
- level stakes
- Betfair SP return
- +141.3%
- 248 bets with a BSP
Strike rate 12.9%. p = 0.034. 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: Loosened thresholds: 16+ length beating, 11+ days offpass
340 bets · A/E 1.29 (0.93 to 1.75) · control 0.98 · 17 Oct, 04:48
Breakdown
betsA/E0.71.01.32025-10-01 to 2026-04-271841.39after 2026-04-271561.19Bars grow from 1.00, the market. Faded bars have fewer than 40 bets. - perturbation: Tightened thresholds: 24+ length beating, 17+ days offpass
181 bets · A/E 1.56 (1.00 to 2.32) · control 0.96 · 17 Oct, 04:48
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:49
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
328 bets · A/E 1.31 (0.94 to 1.78) · control 0.98 · 17 Oct, 04:49
Breakdown
betsA/E0.71.01.32025-10-01 to 2026-04-271791.43after 2026-04-271491.18Bars grow from 1.00, the market. Faded bars have fewer than 40 bets. - neighbour: >= 20 -> 24 (+20%)pass
190 bets · A/E 1.53 (0.99 to 2.26) · control 0.96 · 17 Oct, 04:49
Breakdown
Lineage
Agent runs
designer v1ok · 33s · 17 Oct, 04:45
Output (schema-checked)
{ "rule": "is_handicap = 1 AND race_type IN ('Hurdle', 'Chase') AND last_beaten_lengths >= 20 AND best_last3_beaten = 0 AND rating_change >= 0 AND days_since_last_run >= 14", "refinements": [ { "label": "mark exactly unchanged", "rule": "is_handicap = 1 AND race_type IN ('Hurdle', 'Chase') AND last_beaten_lengths >= 20 AND best_last3_beaten = 0 AND rating_change = 0 AND days_since_last_run >= 14" }, { "label": "15/1 or shorter (longshot confounder: 16/1+ scored 2.31 on 80)", "rule": "is_handicap = 1 AND race_type IN ('Hurdle', 'Chase') AND last_beaten_lengths >= 20 AND best_last3_beaten = 0 AND rating_change >= 0 AND days_since_last_run >= 14 AND sp_decimal < 17" }, { "label": "beating came in a handicap (mark decision was about that run)", "rule": "is_handicap = 1 AND race_type IN ('Hurdle', 'Chase') AND last_beaten_lengths >= 20 AND best_last3_beaten = 0 AND rating_change >= 0 AND days_since_last_run >= 14 AND last_is_handicap = 1" } ], "control": { "description": "Same-race other runners should sit near A/E 1.0 (about 0.95 to 1.0), showing the lift is not a property of these races. The timing control is the quick-return version of the same rule (days_since_last_run <= 10): those horses mostly run before the handicapper can reassess, so an unchanged mark carries no verdict. The mechanism predicts the 14+ day rule scores at or above it; if the quick-return version scores higher, the no-drop lift is a timing artefact.", "rule": "is_handicap = 1 AND race_type IN ('Hurdle', 'Chase') AND last_beaten_lengths >= 20 AND best_last3_beaten = 0 AND rating_change >= 0 AND days_since_last_run <= 10" }, "pass_criteria": { "min_bets": 150, "min_ae": 1.12, "max_p": 0.05 }, "forward_bar": { "min_bets": 100, "min_ae": 1.05, "max_p": 0.2 }, "confounders": [ "Quick returners: an unchanged mark within about 10 days often means the handicapper has not reassessed yet, not that they excused the run. The 14-day floor and the <=10-day control deal with this", "Region: IRE carried the undropped complement (1.71 on 88). Report GB and IRE separately; a lift found only in IRE is weak", "Longshot band: 16/1+ scored 2.31 on 80, so a few big-priced winners could carry the result. Check the <=15/1 refinement", "Short window: rating_change and best_last3_beaten start in 2025-11, so this is mostly one jumps season. Seasonal or ground effects can't be separated", "Class moves: a class drop alongside an unchanged mark could be doing the work, not the mark itself", "Raised marks (rating_change > 0) mean something different from a held mark. Check the exactly-unchanged refinement", "Overlap with the frozen jumps recent-winner rebound rules, so this may not be an independent finding" ], "mechanism": "The horse won within its last three runs, then lost by 20+ lengths in its latest run. If the handicapper leaves its mark unchanged or raises it, with enough time (14+ days) to reassess, they have effectively ruled that run out as not true form (a mistake, wrong ground, or eased). Its ability and its winning mark still stand, so it runs off a mark it has already won from.", "market_miss": "Punters read the big beating in the form figures, not the rating line. An unchanged mark looks like no help from the handicapper, so the horse attracts no money, even though the handicapper is in effect saying the bad run should be ignored. The price therefore reflects the beating and not the excuse.", "prediction": { "direction": "positive", "size": "A/E 1.30 to 1.50 on 180+ bets, at or above the quick-return (days_since_last_run <= 10) control", "falsified_if": "A/E at or below 1.12, or below the same rule restricted to days_since_last_run <= 10 (which would make the no-drop lift a timing artefact), or the lift disappears at 15/1 or shorter" }, "notes": "I kept the rule sketch: all its columns are pre_off and available from 2025-11 in GB and IRE, and comparisons on NULL values exclude those rows. I raised min_ae to 1.12 to match the falsification line, and set the forward A/E bar at 1.05." }
Timeline
Job 3068 finished
· engine:compute-1
hypothesis note H-6243bb06
· engine:perturb
perturbation result for H-6243bb06 (neighbour: >= 14 -> 17 (+20%)): pass
· engine:perturb
perturbation result for H-6243bb06 (neighbour: >= 14 -> 11 (-20%)): pass
· engine:perturb
perturbation result for H-6243bb06 (neighbour: >= 0 -> 1 (+20%)): fail
· engine:perturb
perturbation result for H-6243bb06 (neighbour: >= 0 -> -1 (-20%)): pass
· engine:perturb
perturbation result for H-6243bb06 (neighbour: >= 20 -> 24 (+20%)): pass
· engine:perturb
perturbation result for H-6243bb06 (neighbour: >= 20 -> 16 (-20%)): pass
· engine:perturb
compute-1 took job 3068 (mutate, attempt 1)
· compute-1
Queued mutate on the compute lane: parameter stability: do neighbouring thresholds hold?
· engine:scheduler
Job 3061 finished
· engine:compute-1
forward result for H-6243bb06 (forward vs bar {'min_bets': 100, 'min_ae': 1.05, 'max_p': 0.2}): info
· engine:evaluator
compute-1 took job 3061 (forward_check, attempt 1)
· compute-1
Queued forward_check on the compute lane: daily forward check of a shadow system
· engine:scheduler
Job 3057 finished
· engine:compute-1
H-6243bb06 Frozen → SHADOW vault skipped: last_beaten_lengths, best_last3_beaten, rating_change do not exist before the discovery zone; track it forward instead
· engine:orchestrator