Hypotheses · trajectory · H-9d7727db
Rival: the drift lift is any chase non-finish, including pulled-up horses
fails: A/E 0.963, needs 1.1; p 0.5939, needs 0.05 or lower; periods [1.08, 0.71], each needs 1.0; A/E 0.963 against same-race control 1.012, needs 0.03 above (not a niche pass: A/E 0.963 below 1.1; p 0.5938914710087974 above 0.5; does not beat the same-race control 1.012; a period points the other w
Part of the thread “H85: fell when going well” 20 hypotheses
- Proposed
- Designed
- Discovery
- Promising
- Falsification
- Frozen
- Vault
- Provisional
- Shadow
- Validated
- Live
- Source
- Investigator agent, v1
- Made by
- rival-explanation
- Created
- 17 Oct, 03:40
- Tests logged
- 1
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-f5df804d (Test-mechanism: chase unseaters that drift from their last SP carry th) passed discovery as a niche: A/E 2.1 on 110 bets (p 0.004), same-race control 0.91. O-1c66e5b5
- AskedDoes the 'unearned discount for a blank figure' extend to other chase non-finishes (F, PU) that drift from their last SP, or is it unique to UR? answered
- MechanismUnder the rival, the market overreacts to any non-completion letter, regardless of cause. Under the unseat mechanism, a PU usually reflects the horse's own failure (tiredness, a problem, poor form), so drifting PU chasers should be priced about right.
- Why the market misses itUnder the rival, the P in the form reads as a failure and pushes the price out by more than the horse's ability warrants. Under the main mechanism, it does not, because the PU signal is real.
- Predictedpositive, Under the rival, A/E 1.15 or more on 300+ bets. Under the U-specific mechanism, about 0.90 to 1.02
- Falsified ifDrifting pulled-up chasers score A/E at or below 1.02. That rules out the rival and supports the claim that the edge is specific to an uninformative unseat.
- Rule sketch
race_type = 'Chase' AND last_pulled_up = 1 AND sp_decimal > last_sp_decimal
Mechanism and rationale
Under the rival, the market overreacts to any non-completion letter, regardless of cause. Under the unseat mechanism, a PU usually reflects the horse's own failure (tiredness, a problem, poor form), so drifting PU chasers should be priced about right.
The rule
race_type = 'Chase' AND last_pulled_up = 1 AND sp_decimal > last_sp_decimal AND race_date >= '2025-11-01'
Reads: race_type, last_pulled_up, sp_decimal, last_sp_decimal, race_date
Pre-registration
- Spec hash (sha256 of the canonical pre-spec)
- 36a8a49c04c17c83d6d9c2f95e51842db4a1228c6126d9996ff58d8629171f0d
- Frozen
- not frozen
- The definition can still change.
- Confounders
- PU has many causes (bad ground, a breathing or soundness problem, being stopped after a blunder, a jockey looking after a beaten horse), so the pool is a mix of informative and uninformative non-finishes
- Days since last run: PU horses are often rested or treated, which moves the price independently of the PU letter (refinement 3 addresses this)
- Long-priced pool: judge on win counts by price band and the under-16/1 cut, not BSP ROI; a few big-priced winners can carry A/E
- Large pool: a small lift can reach significance and should be read against the drifting unseaters' 2.10 and the chase-drifter baseline of 0.995
- Last-run code: a PU over hurdles or in a point-to-point is a different signal from a chase PU (refinement 2)
- Short window: last_pulled_up exists only from 2025-11-01, so this is a single short discovery period
- Control
{ "description": "Two comparisons. (1) Same-race other runners: expected at about A/E 1.0, so the race type is not the source of any lift. (2) Chase drifters that did not pull up last time, in the same window. Earlier work put all chase drifters at 0.995 on 6218, so this group should sit near 1.0. The rival needs drifting PU chasers clearly above this control and nearer to the drifting unseaters' 2.10. The unseat-specific mechanism predicts drifting PU chasers sit at about the control level.", "rule": "race_type = 'Chase' AND sp_decimal > last_sp_decimal AND COALESCE(last_pulled_up, 0) = 0 AND race_date >= '2025-11-01'" }
Discovery result
fail broad rule · 17 Oct, 03:42
- Bets
- 363
- 17 winners
- A/E
- 0.96
- 95%: 0.56 to 1.54
- SP return
- -38.7%
- level stakes
- Betfair SP return
- -20.2%
- 360 bets with a BSP
Strike rate 4.7%. p = 0.59. Same-race control: the other runners in these races had A/E 1.01, so the selection did not beat its own races. Zone: discovery. Evaluator eval-1.0, data 6a4e98be18e83933
By period
Falsification
No attacks yet. Only promising ideas are attacked.
Sealed holdout (vault)
Not queried. Only a frozen idea can spend its one query against the 2020-25 holdout.
Forward record
No forward record. Shadow tracking starts after the vault and counts only races run after the freeze.
Lineage
Agent runs
designer v1ok · 33s · 17 Oct, 03:40
Output (schema-checked)
{ "rule": "race_type = 'Chase' AND last_pulled_up = 1 AND sp_decimal > last_sp_decimal AND race_date >= '2025-11-01'", "refinements": [ { "label": "Under 16/1 (parity with unseater price check)", "rule": "race_type = 'Chase' AND last_pulled_up = 1 AND sp_decimal > last_sp_decimal AND race_date >= '2025-11-01' AND sp_decimal < 17" }, { "label": "Pulled up last time in a chase (same-code non-finish, as the unseat almost always is)", "rule": "race_type = 'Chase' AND last_pulled_up = 1 AND sp_decimal > last_sp_decimal AND race_date >= '2025-11-01' AND last_race_type = 'Chase'" }, { "label": "Back within 60 days (strips out the break-after-PU price effect)", "rule": "race_type = 'Chase' AND last_pulled_up = 1 AND sp_decimal > last_sp_decimal AND race_date >= '2025-11-01' AND days_since_last_run <= 60" } ], "control": { "description": "Two comparisons. (1) Same-race other runners: expected at about A/E 1.0, so the race type is not the source of any lift. (2) Chase drifters that did not pull up last time, in the same window. Earlier work put all chase drifters at 0.995 on 6218, so this group should sit near 1.0. The rival needs drifting PU chasers clearly above this control and nearer to the drifting unseaters' 2.10. The unseat-specific mechanism predicts drifting PU chasers sit at about the control level.", "rule": "race_type = 'Chase' AND sp_decimal > last_sp_decimal AND COALESCE(last_pulled_up, 0) = 0 AND race_date >= '2025-11-01'" }, "pass_criteria": { "min_bets": 300, "min_ae": 1.1, "max_p": 0.05 }, "forward_bar": { "min_bets": 150, "min_ae": 1.05, "max_p": 0.2 }, "confounders": [ "PU has many causes (bad ground, a breathing or soundness problem, being stopped after a blunder, a jockey looking after a beaten horse), so the pool is a mix of informative and uninformative non-finishes", "Days since last run: PU horses are often rested or treated, which moves the price independently of the PU letter (refinement 3 addresses this)", "Long-priced pool: judge on win counts by price band and the under-16/1 cut, not BSP ROI; a few big-priced winners can carry A/E", "Large pool: a small lift can reach significance and should be read against the drifting unseaters' 2.10 and the chase-drifter baseline of 0.995", "Last-run code: a PU over hurdles or in a point-to-point is a different signal from a chase PU (refinement 2)", "Short window: last_pulled_up exists only from 2025-11-01, so this is a single short discovery period" ], "mechanism": "Rival explanation: the market overreacts to any blank chase figure. A horse that drifts from its last SP after a non-completion is under-priced whatever the cause, so drifting pulled-up chasers should beat their price as the drifting unseaters do (A/E 2.10 on 110). Unseat-specific mechanism: an unseat is often a jockey or one-off incident and says little about ability. A PU usually reflects the horse's own failure (tiredness, a problem, poor form), so the drift after a PU is justified and drifting PU chasers should be priced about right.", "market_miss": "Under the rival, punters read the P in the form as a failure and push the price out by more than the horse's ability warrants, in the same way as the U. Under the unseat-specific mechanism there is no miss: the PU is real evidence of decline, and the drift prices it correctly.", "prediction": { "direction": "positive", "size": "Under the rival, A/E 1.15 or more on 300+ bets. Under the unseat-specific mechanism, about 0.90 to 1.02, close to the chase-drifter control.", "falsified_if": "Drifting pulled-up chasers score A/E at or below 1.02, or fail to beat the non-PU chase-drifter control by a clear margin. That rules out the general 'any blank figure' rival and supports an edge specific to the uninformative unseat." }, "notes": "The rule sketch is kept. I added race_date >= '2025-11-01' because last_pulled_up is only available from that date in both GB and IRE, so the window is explicit and matches the control. Unlike the unseater rule, there is no condition on the code of the last race, so the two pools are like for like. The prediction stays positive as pre-registered for the rival, but the hypothesis was built to be falsified: the expected result under the leading mechanism is a fail at about par. The pass criteria are stricter than the floor (300 bets, A/E 1.10) because the pool is large and the rival only matters if the lift is comparable in kind to the unseater edge." }
Timeline
Job 2726 finished
· engine:compute-1
H-9d7727db Discovery → KILLED fails: A/E 0.963, needs 1.1; p 0.5939, needs 0.05 or lower; periods [1.08, 0.71], each needs 1.0; A/E 0.963 against same-race control 1.012, needs 0.03 above (not a niche pass: A/E 0.963 below 1.1; p 0.5938914710087974 above 0.5; does not beat the same-race control 1.012; a period points the other way [1.08, 0.71])
· engine:evaluator
discovery result for H-9d7727db (broad rule): fail
· engine:evaluator
H-9d7727db Designed → RESEARCHdiscovery measuring on the discovery zone
· engine:orchestrator
compute-1 took job 2726 (evaluate, attempt 1)
· compute-1
Job 2724 finished
· engine:ai-1
Queued evaluate on the compute lane: discovery run of the broad rule
· engine:scheduler
H-9d7727db Proposed → RESEARCHdesigned pre-spec written and hashed
· agent:designer@v1
ai-1 took job 2724 (design, attempt 1)
· ai-1
Queued design on the ai lane: write the pre-spec
· engine:scheduler
New idea H-9d7727db: Rival: the drift lift is any chase non-finish, including pulled-up horses (rival-explanation)
· agent:investigator@v1
Every change is an event with an actor: an agent and its version, an engine, a human, or the importer. Current stage: Killed.