Hypotheses · story · H-5c714267
Test-mechanism: easy-winner quick-return lift lives in handicap-to-handicap runs
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
- test-mechanism
- Created
- 16 Oct, 16:15
- 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
- H34-won-easily-last-time (H34: won easily last time) was GREEN in the earlier research: A/E 1.05 on 2374 bets (periods 1.08 / 1.02); now PROMISING. O-65eec625
- AskedIs the fortnight lift concentrated where the handicap mark has not yet caught up, i.e. handicap to handicap? answered
- MechanismAfter a handicap win the handicapper reassesses only on the margin, and the new mark or penalty takes days to apply. An easy winner that runs again quickly in a handicap is still well treated.
- Why the market misses itPunters price the penalty or the new mark as if it fully reflects the win. Because the margin understates the horse's true superiority, the horse is still under-rated.
- Predictedpositive, A/E 1.15 to 1.25 on 250+ bets
- Falsified ifA/E at or below the parent's 1.147, or below 1 in either period
- Rule sketch
last_position = 1 AND last_won_easily = 1 AND days_since_last_run <= 14 AND is_handicap = 1 AND last_is_handicap = 1 - question id
Mechanism and rationale
After a handicap win the handicapper reassesses only on the margin, and the new mark or penalty takes days to apply. An easy winner that runs again quickly in a handicap is still well treated.
The rule
last_position = 1 AND last_won_easily = 1 AND days_since_last_run <= 14 AND is_handicap = 1 AND last_is_handicap = 1
Reads: last_position, last_won_easily, days_since_last_run, is_handicap, last_is_handicap
Pre-registration
- Spec hash (sha256 of the canonical pre-spec)
- 02cb48c0a0ca31099618e6d45a26c7b3f4f44876bfcba13d1598abe1c646bd43
- Frozen
- 16 Oct, 16:19
- Nothing in the definition can change after this.
- Confounders
- Field size: handicaps have bigger fields, which changes base win rates and how well SP calibrates
- Flat versus jumps mix: marks are reassessed on different schedules and jumps quick returns are rarer
- Penalised versus re-rated runners: inside about 7 days a runner usually carries a fixed penalty, later it runs off its new mark; the two channels may differ
- Trainer intent: yards that place a horse to win again quickly may drive the effect, not the handicapper lag
- Season and surface: all-weather winter handicaps produce many quick returns
- The parent's lift (1.147) may be regression or noise; a subset that is thinner will have wide intervals
- Control
{ "description": "Same-race rivals should sit near A/E 1.0 (about 0.95 to 1.0, slightly depressed if the selection wins more than its price implies). The key comparison is the complement within the parent: easy last-time winners back within 14 days that are NOT handicap-to-handicap. The mechanism predicts they score below the handicap-to-handicap subset (near or below 1.05). If the complement scores as high or higher, the lift is quick-return form, not mark lag.", "rule": "last_position = 1 AND last_won_easily = 1 AND days_since_last_run <= 14 AND (is_handicap = 0 OR last_is_handicap = 0)" }
Discovery result
pass broad rule · 16 Oct, 16:16
- Bets
- 478
- 157 winners
- A/E
- 1.19
- 95%: 1.01 to 1.39
- SP return
- +6.1%
- level stakes
- Betfair SP return
- +22.1%
- 476 bets with a BSP
Strike rate 32.8%. p = 0.019. Same-race control: the other runners in these races had A/E 0.92, 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: Tighter return window: back within 11 dayspass
372 bets · A/E 1.13 (0.94 to 1.35) · control 0.94 · 16 Oct, 16:19
Breakdown
betsA/E0.71.01.32025-10-01 to 2026-04-271571.17after 2026-04-272151.11Bars grow from 1.00, the market. Faded bars have fewer than 40 bets. - partition: Re-rated channel: back in 8 to 14 dayspass
302 bets · A/E 1.29 (1.04 to 1.58) · control 0.91 · 16 Oct, 16:19
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 · · 16 Oct, 16:19
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
372 bets · A/E 1.13 (0.94 to 1.35) · control 0.94 · 16 Oct, 16:16
Breakdown
betsA/E0.71.01.32025-10-01 to 2026-04-271571.17after 2026-04-272151.11Bars grow from 1.00, the market. Faded bars have fewer than 40 bets. - neighbour: <= 14 -> 17 (+20%)pass
592 bets · A/E 1.20 (1.03 to 1.39) · control 0.92 · 16 Oct, 16:16
Breakdown
Lineage
Agent runs
designer v1ok · 30s · 16 Oct, 16:15
Output (schema-checked)
{ "rule": "last_position = 1 AND last_won_easily = 1 AND days_since_last_run <= 14 AND is_handicap = 1 AND last_is_handicap = 1", "refinements": [ { "label": "penalty window: back within 7 days", "rule": "last_position = 1 AND last_won_easily = 1 AND days_since_last_run <= 14 AND is_handicap = 1 AND last_is_handicap = 1 AND days_since_last_run <= 7" }, { "label": "Flat handicaps only (mark lag mechanism cleanest, removes jumps mix)", "rule": "last_position = 1 AND last_won_easily = 1 AND days_since_last_run <= 14 AND is_handicap = 1 AND last_is_handicap = 1 AND race_type = 'Flat'" }, { "label": "14/1 or shorter, edges die at big prices", "rule": "last_position = 1 AND last_won_easily = 1 AND days_since_last_run <= 14 AND is_handicap = 1 AND last_is_handicap = 1 AND sp_decimal <= 15" } ], "control": { "description": "Same-race rivals should sit near A/E 1.0 (about 0.95 to 1.0, slightly depressed if the selection wins more than its price implies). The key comparison is the complement within the parent: easy last-time winners back within 14 days that are NOT handicap-to-handicap. The mechanism predicts they score below the handicap-to-handicap subset (near or below 1.05). If the complement scores as high or higher, the lift is quick-return form, not mark lag.", "rule": "last_position = 1 AND last_won_easily = 1 AND days_since_last_run <= 14 AND (is_handicap = 0 OR last_is_handicap = 0)" }, "pass_criteria": { "min_bets": 150, "min_ae": 1.1, "max_p": 0.05 }, "forward_bar": { "min_bets": 100, "min_ae": 1.05, "max_p": 0.2 }, "confounders": [ "Field size: handicaps have bigger fields, which changes base win rates and how well SP calibrates", "Flat versus jumps mix: marks are reassessed on different schedules and jumps quick returns are rarer", "Penalised versus re-rated runners: inside about 7 days a runner usually carries a fixed penalty, later it runs off its new mark; the two channels may differ", "Trainer intent: yards that place a horse to win again quickly may drive the effect, not the handicapper lag", "Season and surface: all-weather winter handicaps produce many quick returns", "The parent's lift (1.147) may be regression or noise; a subset that is thinner will have wide intervals" ], "mechanism": "A handicapper reassesses a winner on its winning margin. An easy winner was not extended, so the margin understates its true superiority. The new mark or penalty also takes days to apply. An easy handicap winner that runs again in a handicap within 14 days therefore races off a mark (or mark plus penalty) that still under-rates it.", "market_miss": "Punters treat the penalty or new mark as if it fully cancels the win, and price the horse on that. Because the 'won easily' margin hides spare ability that neither the handicapper nor the market adds back, the horse stays under-priced at SP.", "prediction": { "direction": "positive", "size": "A/E 1.15 to 1.25 on 250+ bets, above the parent's 1.147 and above the non-handicap complement", "falsified_if": "A/E at or below the parent's 1.147, A/E below 1 in either period, or the non-handicap-to-handicap complement scoring as high or higher" }, "notes": "I kept the rule sketch unchanged. Every column in it is pre-off: last_won_easily was used in H34, and last_is_handicap is in the catalogue. The discovery A/E bar is raised to 1.10 because the hypothesis has to beat a parent at 1.147 to mean anything. The bet count could fall short of 250: if it lands under 150 but points the right way, it goes to falsification and forward tracking." }
Timeline
Job 1975 finished
· engine:compute-1
forward result for H-5c714267 (forward vs bar {'min_bets': 100, 'min_ae': 1.05, 'max_p': 0.2}): info
· engine:evaluator
compute-1 took job 1975 (forward_check, attempt 1)
· compute-1
Queued forward_check on the compute lane: daily forward check of a shadow system
· engine:scheduler
Job 1974 finished
· engine:compute-1
H-5c714267 Frozen → SHADOW vault skipped: last_won_easily do not exist before the discovery zone; track it forward instead
· engine:orchestrator
compute-1 took job 1974 (vault, attempt 1)
· compute-1
Job 1973 finished
· engine:compute-1
Queued vault on the compute lane: frozen: one sealed vault query
· engine:scheduler
H-5c714267 Falsification → FROZEN survived falsification
· engine:falsification
falsification result for H-5c714267 (price_band: Remove the 4/1 to 7/1 band that carries the lift): pass
· engine:evaluator
compute-1 took job 1973 (attack, attempt 1)
· compute-1
Job 1972 finished
· engine:compute-1
falsification result for H-5c714267 (control: Control: handicap-to-handicap quick return, NOT won easily): pass
· engine:evaluator
compute-1 took job 1972 (attack, attempt 1)
· compute-1
Job 1971 finished
· engine:compute-1
falsification result for H-5c714267 (partition: Flat handicaps only): pass
· engine:evaluator
compute-1 took job 1971 (attack, attempt 1)
· compute-1
Job 1970 finished
· engine:compute-1
falsification result for H-5c714267 (partition: Re-rated channel: back in 8 to 14 days): pass
· engine:evaluator