Hypotheses · story · H-b262a1d9
Test-mechanism: heavily beaten jumps handicappers whose mark has dropped
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, 03: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-1a646ca5 (Generalise: jumps handicappers beaten 20 lengths or more last time bea) passed discovery: A/E 1.08 on 6743 bets (p 0.041), same-race control 0.99. O-58c96d7b
- H-cc8aceed (Test-mechanism: handicap chase debutants whose mark dropped after a he) passed discovery as a niche: A/E 1.33 on 164 bets (p 0.125), same-race control 0.97. O-6a459966
- H-cc72aea8 (Rival: the debutant lift is handicap marks after heavy hurdle beatings) passed discovery but was falsified: IRE A/E 0.367. O-b03feb4f
- AskedAmong handicap chase debutants beaten heavily over hurdles, does the lift sit with horses whose official rating fell since the last run? answered
- MechanismA 20-length beating usually brings a cut in the mark. If the beating was a one-off rather than a decline, the horse now races off a lenient rating.
- Why the market misses itPunters read the big beaten distance as current form and stay away, but the mark has already priced in the run as if it were true.
- Predictedpositive, A/E 1.12 to 1.20 on 1500+ bets, above the mark-held subset
- Falsified ifA/E below 1.05, or no higher than beaten-20+ runners whose mark did not fall
Mechanism and rationale
A 20-length beating usually brings a cut in the mark. If the beating was a one-off rather than a decline, the horse now races off a lenient rating.
The rule
is_handicap = 1 AND race_type IN ('Hurdle', 'Chase') AND last_beaten_lengths >= 20 AND official_rating IS NOT NULL AND last_official_rating IS NOT NULL AND official_rating < last_official_ratingReads: is_handicap, race_type, last_beaten_lengths, official_rating, last_official_rating
Pre-registration
- Spec hash (sha256 of the canonical pre-spec)
- d15aeedb61582f9054bdb3f80e0fd945c52c9f27bd59492f0198c9418355e4d8
- Frozen
- 17 Oct, 03:21
- Nothing in the definition can change after this.
- Confounders
- Genuine decline: a horse whose mark is cut because it is going backwards, not because of a one-off (refinement 2 isolates one-off beatings)
- Price band mix: the parent rule is above par at 16/1 or bigger, so check the result by price band
- Region: GB vs IRE handicapping practice differs; earlier narrow cuts in this family were GB-only
- days_since_last_run: a quick return may come before the handicapper reassesses, a long layoff may mean a problem
- Short rating window: official_rating is only available from 2025-10 and last_official_rating from 2025-11, so the sample covers about one season and period-stability checks are weak
- Race type (Hurdle vs Chase) and class mix compared with the mark-held control
- Control
{ "description": "Same-race other runners should be near par, around 0.99, as in the frozen heavy-beating finding. The comparison that tests the mechanism is heavily beaten jumps handicappers whose mark was NOT cut (held or raised), over the same rating-data window. The mechanism predicts the cut group beats this control clearly. If the control scores the same or higher, the lift comes from the beating itself and not from the mark.", "rule": "is_handicap = 1 AND race_type IN ('Hurdle', 'Chase') AND last_beaten_lengths >= 20 AND official_rating IS NOT NULL AND last_official_rating IS NOT NULL AND official_rating >= last_official_rating" }
Discovery result
pass broad rule (niche) · 17 Oct, 03:18
- Bets
- 4,709
- 368 winners
- A/E
- 1.07
- 95%: 0.96 to 1.18
- SP return
- -20.4%
- level stakes
- Betfair SP return
- +3.7%
- 4,704 bets with a BSP
Strike rate 7.8%. p = 0.11. Same-race control: the other runners in these races had A/E 1.00, 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 6 survived.
- price_band: Competitive prices only: 14/1 or shorterpass
2,616 bets · A/E 1.04 (0.93 to 1.16) · control 1.00 · 17 Oct, 03:21
Breakdown
betsA/E0.71.01.32025-10-01 to 2026-04-271,6221.03after 2026-04-279941.05Bars grow from 1.00, the market. Faded bars have fewer than 40 bets. - control: Control: heavy beating with mark held or raisedpass
1,241 bets · A/E 1.07 (0.87 to 1.31) · control 1.00 · 17 Oct, 03:21
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, 03:21
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
5,750 bets · A/E 1.09 (1.00 to 1.19) · control 0.99 · 17 Oct, 03:30
Breakdown
betsA/E0.71.01.32025-10-01 to 2026-04-273,4531.04after 2026-04-272,2971.17Bars grow from 1.00, the market. Faded bars have fewer than 40 bets. - neighbour: >= 20 -> 24 (+20%)pass
3,842 bets · A/E 1.12 (0.99 to 1.25) · control 0.99 · 17 Oct, 03:30
Breakdown
Lineage
Agent runs
designer v1ok · 31s · 17 Oct, 03:13
Output (schema-checked)
{ "rule": "is_handicap = 1 AND race_type IN ('Hurdle', 'Chase') AND last_beaten_lengths >= 20 AND official_rating IS NOT NULL AND last_official_rating IS NOT NULL AND official_rating < last_official_rating", "refinements": [ { "label": "Mark cut by 5 lb or more", "rule": "is_handicap = 1 AND race_type IN ('Hurdle', 'Chase') AND last_beaten_lengths >= 20 AND official_rating IS NOT NULL AND last_official_rating IS NOT NULL AND official_rating <= last_official_rating - 5" }, { "label": "One-off beating: within 10 lengths in one of its last three runs", "rule": "is_handicap = 1 AND race_type IN ('Hurdle', 'Chase') AND last_beaten_lengths >= 20 AND official_rating IS NOT NULL AND last_official_rating IS NOT NULL AND official_rating < last_official_rating AND best_last3_beaten IS NOT NULL AND best_last3_beaten <= 10" } ], "control": { "description": "Same-race other runners should be near par, around 0.99, as in the frozen heavy-beating finding. The comparison that tests the mechanism is heavily beaten jumps handicappers whose mark was NOT cut (held or raised), over the same rating-data window. The mechanism predicts the cut group beats this control clearly. If the control scores the same or higher, the lift comes from the beating itself and not from the mark.", "rule": "is_handicap = 1 AND race_type IN ('Hurdle', 'Chase') AND last_beaten_lengths >= 20 AND official_rating IS NOT NULL AND last_official_rating IS NOT NULL AND official_rating >= last_official_rating" }, "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": [ "Genuine decline: a horse whose mark is cut because it is going backwards, not because of a one-off (refinement 2 isolates one-off beatings)", "Price band mix: the parent rule is above par at 16/1 or bigger, so check the result by price band", "Region: GB vs IRE handicapping practice differs; earlier narrow cuts in this family were GB-only", "days_since_last_run: a quick return may come before the handicapper reassesses, a long layoff may mean a problem", "Short rating window: official_rating is only available from 2025-10 and last_official_rating from 2025-11, so the sample covers about one season and period-stability checks are weak", "Race type (Hurdle vs Chase) and class mix compared with the mark-held control" ], "mechanism": "A beating of 20 lengths or more usually brings a cut in the official mark. When the beating was a one-off (bad ground, a wrong trip, a jumping error, a bad day) and not a sign of decline, the horse next races off a rating below its true ability. That gives it a real edge in a handicap.", "market_miss": "Punters read the big beaten distance as current form and stay away. They are double-counting: the handicapper has already priced in the bad run by cutting the mark, so the horse is both lightly backed and well treated.", "prediction": { "direction": "positive", "size": "A/E 1.12 to 1.20. The sample will likely be well under the hypothesis's 1500+, because the rating columns only begin in late 2025", "falsified_if": "A/E below 1.05, or A/E no higher than the mark-held/raised control (heavily beaten jumps handicappers with official_rating >= last_official_rating) over the same window" }, "notes": "I kept the rule sketch and added explicit NOT NULL guards. Both rating columns start late: official_rating from 2025-10-01 and last_official_rating from 2025-11-01. That limits the rule to roughly the last year, so it may fall short of 150 bets in discovery. If it is thin but points the right way, it goes on to falsification and forward tracking as the lab's policy says. The control is the mark-held subset, which answers question Q-719ea36f directly." }
Timeline
Job 2658 finished
· engine:compute-1
hypothesis note H-b262a1d9
· engine:perturb
perturbation result for H-b262a1d9 (neighbour: drop: official_rating IS NOT NULL): pass
· engine:perturb
perturbation result for H-b262a1d9 (neighbour: drop: last_beaten_lengths >= 20): pass
· engine:perturb
perturbation result for H-b262a1d9 (neighbour: drop: race_type IN ('Hurdle', 'Chase')): pass
· engine:perturb
perturbation result for H-b262a1d9 (neighbour: drop: is_handicap = 1): pass
· engine:perturb
perturbation result for H-b262a1d9 (neighbour: >= 20 -> 24 (+20%)): pass
· engine:perturb
perturbation result for H-b262a1d9 (neighbour: >= 20 -> 16 (-20%)): pass
· engine:perturb
compute-1 took job 2658 (mutate, attempt 1)
· compute-1
Queued mutate on the compute lane: parameter stability: do neighbouring thresholds hold?
· engine:scheduler
Job 2652 finished
· engine:compute-1
forward result for H-b262a1d9 (forward vs bar {'min_bets': 100, 'min_ae': 1.0, 'max_p': 0.2}): info
· engine:evaluator
compute-1 took job 2652 (forward_check, attempt 1)
· compute-1
Queued forward_check on the compute lane: daily forward check of a shadow system
· engine:scheduler
Job 2648 finished
· engine:compute-1
H-b262a1d9 Frozen → SHADOW vault skipped: last_beaten_lengths, official_rating, last_official_rating do not exist before the discovery zone; track it forward instead
· engine:orchestrator