Hypotheses · story · H-d9dabea2
Rival: big-rise quick-returning handicap winners beat their price without an easy win
forward A/E 0.0 on 0 bets, SP ROI None%, BSP ROI None% (p None)
Part of the thread “H34: won easily last time” 18 hypotheses
- Proposed
- Designed
- Discovery
- Promising
- Falsification
- Frozen
- Vault
- Provisional
- Shadow
- Validated
- Live
- Source
- Investigator agent, v1
- Made by
- rival-explanation
- Created
- 16 Oct, 16:27
- 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-528222df (Raised easy handicap winners turned out within 14 days beat their pric) survived falsification: 6 of 6 attacks left it standing; it is frozen for its one vault query. O-0b5ef7f4
- H-a81fea8a (Sharpen: easy handicap winners back within 14 days after a small rise ) pointed the predicted way but failed the bar: A/E 1.12 on 100 bets (p 0.329), control 0.97. O-b635b594
- AskedDoes a big handicap rise after any quick win make the market over-fade the weight, whether or not the horse won easily? answered
- MechanismA large rise after any win may mark an improving horse, and a horse turned out quickly can run to that improvement whatever the manner of its win.
- Why the market misses itThe market may anchor on the number of pounds raised and over-fade every big rise, not only those after easy wins.
- Predictedpositive, A/E 1.08 to 1.15 on 300+ bets if the rival is true; about 1 if not
- Falsified ifA/E at or below 1.03 on 300+ bets, which leaves the easy-win flag as the active ingredient
- Rule sketch
last_position = 1 AND last_won_easily = 0 AND days_since_last_run <= 14 AND is_handicap = 1 AND last_is_handicap = 1 AND rating_change >= 6
Mechanism and rationale
A large rise after any win may mark an improving horse, and a horse turned out quickly can run to that improvement whatever the manner of its win.
The rule
last_position = 1 AND last_won_easily = 0 AND days_since_last_run IS NOT NULL AND days_since_last_run <= 14 AND is_handicap = 1 AND last_is_handicap = 1 AND rating_change IS NOT NULL AND rating_change >= 6
Reads: last_position, last_won_easily, days_since_last_run, is_handicap, last_is_handicap, rating_change
Pre-registration
- Spec hash (sha256 of the canonical pre-spec)
- 6dc95e387b22ab0f28dc45092fe3ed18395a0ed8c9928b8fae05775a63f02699
- Frozen
- 16 Oct, 16:34
- Nothing in the definition can change after this.
- Confounders
- Margin of the last win: non-easy winners include short-head and fought-out wins, so a big rise after a narrow win can mean a harsh handicapper rather than an improving horse
- Class rise: big-rise winners often go up in class, which can hide or exaggerate the effect
- Age and exposure: young, lightly raced handicappers are both more likely to get big rises and more likely to keep improving
- Race type: Flat and jumps handicappers react to quick turnouts differently, and the Flat share may drive the result
- Window: rating_change and last_won_easily only exist from November 2025, so the sample covers about one year and the two periods may differ (the non-easy raised rival already faded after April 2026)
- Overlap with the measured non-easy raised rival (1.034 on 1,050): this rule is its 6 lb+ subset and must be read against it
- Control
{ "description": "The lab's same-race control: the other runners in these races should come in at about 0.90 to 0.95 A/E, as with the easy-win parent's 0.905, so that any lift belongs to the selection and not to the race type. The direct comparison for this rival question is the matching easy-win group with the same 6 lb or bigger rise. If big-rise non-easy winners come in near 1.0 while big-rise easy winners stay well above it, the easy-win flag is the active ingredient. If both groups lift by about the same amount, the rise is doing the work.", "rule": "last_position = 1 AND last_won_easily = 1 AND days_since_last_run IS NOT NULL AND days_since_last_run <= 14 AND is_handicap = 1 AND last_is_handicap = 1 AND rating_change IS NOT NULL AND rating_change >= 6" }
Discovery result
pass broad rule (niche) · 16 Oct, 16:30
- Bets
- 318
- 71 winners
- A/E
- 1.13
- 95%: 0.89 to 1.43
- SP return
- -15.9%
- level stakes
- Betfair SP return
- -3.0%
- 312 bets with a BSP
Strike rate 22.3%. p = 0.16. 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 6 survived.
- perturbation: Rise threshold raised to 7 lb or morepass
208 bets · A/E 1.15 (0.84 to 1.52) · control 0.97 · 16 Oct, 16:34
Breakdown
betsA/E0.71.01.32025-10-01 to 2026-04-27961.21after 2026-04-271121.09Bars grow from 1.00, the market. Faded bars have fewer than 40 bets. - perturbation: Rise threshold lowered to 5 lb or morepass
467 bets · A/E 1.12 (0.91 to 1.35) · control 0.97 · 16 Oct, 16:34
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 · · 16 Oct, 16:34
Breakdown
betsA/E0.71.01.3forward0–Bars grow from 1.00, the market. Faded bars have fewer than 40 bets.
Other experiments
- neighbour: <= 14 -> 11 (-20%)pass
156 bets · A/E 1.31 (0.95 to 1.75) · control 0.92 · 16 Oct, 16:34
Breakdown
betsA/E0.71.01.32025-10-01 to 2026-04-27671.21after 2026-04-27891.37Bars grow from 1.00, the market. Faded bars have fewer than 40 bets. - neighbour: <= 14 -> 17 (+20%)pass
471 bets · A/E 1.12 (0.91 to 1.35) · control 0.97 · 16 Oct, 16:34
Breakdown
Lineage
Agent runs
designer v1ok · 54s · 16 Oct, 16:28
Output (schema-checked)
{ "rule": "last_position = 1 AND last_won_easily = 0 AND days_since_last_run IS NOT NULL AND days_since_last_run <= 14 AND is_handicap = 1 AND last_is_handicap = 1 AND rating_change IS NOT NULL AND rating_change >= 6", "refinements": [ { "label": "8/1 or shorter (7.0 decimal SP cap is where the easy-win lift sat; long-priced raised winners have not converted)", "rule": "last_position = 1 AND last_won_easily = 0 AND days_since_last_run IS NOT NULL AND days_since_last_run <= 14 AND is_handicap = 1 AND last_is_handicap = 1 AND rating_change IS NOT NULL AND rating_change >= 6 AND sp_decimal IS NOT NULL AND sp_decimal <= 9.0" }, { "label": "Very big rise, 8 lb or more (if the market over-fades the size of the rise, the lift should grow with it)", "rule": "last_position = 1 AND last_won_easily = 0 AND days_since_last_run IS NOT NULL AND days_since_last_run <= 14 AND is_handicap = 1 AND last_is_handicap = 1 AND rating_change IS NOT NULL AND rating_change >= 8" } ], "control": { "description": "The lab's same-race control: the other runners in these races should come in at about 0.90 to 0.95 A/E, as with the easy-win parent's 0.905, so that any lift belongs to the selection and not to the race type. The direct comparison for this rival question is the matching easy-win group with the same 6 lb or bigger rise. If big-rise non-easy winners come in near 1.0 while big-rise easy winners stay well above it, the easy-win flag is the active ingredient. If both groups lift by about the same amount, the rise is doing the work.", "rule": "last_position = 1 AND last_won_easily = 1 AND days_since_last_run IS NOT NULL AND days_since_last_run <= 14 AND is_handicap = 1 AND last_is_handicap = 1 AND rating_change IS NOT NULL AND rating_change >= 6" }, "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": [ "Margin of the last win: non-easy winners include short-head and fought-out wins, so a big rise after a narrow win can mean a harsh handicapper rather than an improving horse", "Class rise: big-rise winners often go up in class, which can hide or exaggerate the effect", "Age and exposure: young, lightly raced handicappers are both more likely to get big rises and more likely to keep improving", "Race type: Flat and jumps handicappers react to quick turnouts differently, and the Flat share may drive the result", "Window: rating_change and last_won_easily only exist from November 2025, so the sample covers about one year and the two periods may differ (the non-easy raised rival already faded after April 2026)", "Overlap with the measured non-easy raised rival (1.034 on 1,050): this rule is its 6 lb+ subset and must be read against it" ], "mechanism": "A rise of 6 lb or more after a handicap win is the handicapper's verdict that the horse has improved markedly. If the horse turns out again within 14 days, before its form tails off or another rise comes in, it may still be ahead of its new mark whatever the manner of the win, so the 'well-in' lift should not need the easy-win flag.", "market_miss": "Punters may anchor on the number of pounds raised and treat any big rise as having found the horse out. If so, they over-fade every big rise, not only those after easy wins, and leave value with quick-returning improvers whose last win looked hard-earned.", "prediction": { "direction": "positive", "size": "A/E 1.08 to 1.15 on about 300 bets if the rival is true; about 1.0 if the easy win is the active ingredient", "falsified_if": "A/E at or below 1.03 on 300 or more bets, or below 1.0 on 150 or more. Either leaves the easy-win flag, not the size of the rise, as the active ingredient." }, "notes": "I kept the draft rule and added IS NOT NULL guards on days_since_last_run and rating_change. rating_change and last_won_easily are pre-off but only available from 2025-11-01 (GB and IRE), so the test window is short. Refinement 1 caps SP at 9.0 decimal, because the easy-win lift sat at 7/1 or shorter and 16/1+ raised winners went 0 from 41. Refinement 2 checks the dose-response that the over-fading story implies. The control rule is the easy-win twin with the same rise, and it answers the rival question directly." }
Timeline
Job 2037 finished
· engine:compute-1
forward result for H-d9dabea2 (forward vs bar {'min_bets': 100, 'min_ae': 1.0, 'max_p': 0.2}): info
· engine:evaluator
compute-1 took job 2037 (forward_check, attempt 1)
· compute-1
Queued forward_check on the compute lane: daily forward check of a shadow system
· engine:scheduler
Job 2017 finished
· engine:compute-1
hypothesis note H-d9dabea2
· engine:perturb
perturbation result for H-d9dabea2 (neighbour: drop: last_won_easily = 0): pass
· engine:perturb
perturbation result for H-d9dabea2 (neighbour: drop: last_position = 1): pass
· engine:perturb
perturbation result for H-d9dabea2 (neighbour: >= 6 -> 7 (+20%)): pass
· engine:perturb
perturbation result for H-d9dabea2 (neighbour: >= 6 -> 5 (-20%)): pass
· engine:perturb
perturbation result for H-d9dabea2 (neighbour: <= 14 -> 17 (+20%)): pass
· engine:perturb
perturbation result for H-d9dabea2 (neighbour: <= 14 -> 11 (-20%)): pass
· engine:perturb
compute-1 took job 2017 (mutate, attempt 1)
· compute-1
Job 2035 finished
· engine:compute-1
H-d9dabea2 Frozen → SHADOW vault skipped: last_won_easily, rating_change do not exist before the discovery zone; track it forward instead
· engine:orchestrator
compute-1 took job 2035 (vault, attempt 1)
· compute-1