Hypotheses · story · H-995c6f24
Rival: held-up PU lift comes from a change of ground since the pull-up
falsified: 2 of 5 attacks broke it
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
- rival-explanation
- Created
- 17 Oct, 01:43
- Tests logged
- 13
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-6eae1245 (Test-mechanism: held-up PU horses returning after a break of more than) passed discovery: A/E 1.33 on 674 bets (p 0.024), same-race control 0.98. O-10828b53
- H-6eae1245 (Test-mechanism: held-up PU horses returning after a break of more than) passed discovery but was falsified: 2 of 5 attacks broke it. O-8033cc46
- H-6c3baaba (Rival: the held-up PU lift sits in lone pull-ups, not attritional race): the period 'after 2026-04-27' carries the effect (A/E 1.69) while the rest score 2025-10-01 to 2026-04-27 0.94. O-abea699b
- AskedIs the held-up PU lift (and its long-gap concentration) really a change of ground between a winter pull-up and a spring or summer return, rather than the horse being freshened? answered
- MechanismA held-up horse that pulled up was often beaten by the ground (bogged down in testing going) rather than by ability or injury. Put it back on a different surface and the cause has gone. A long gap and a spring return are mostly the same horses: pulled up in winter mud, back on better ground.
- Why the market misses itThe form book shows a P and nothing about why. Punters price the P as a failure of the horse, not of that day's ground, and SP does not discount the change of conditions.
- Predictedpositive, A/E 1.25 to 1.45 on 450+ bets, clearly above the same-going complement
- Falsified ifA/E below 1.10, or the same-going complement scores as high, which would leave freshening as the explanation
- Rule sketch
The question's answer so far: Neither cleanly. The winter-mud-to-better-ground story fails (1.05 on 377), and the freshening (long-gap) cut broke under attack, so neither ground nor freshening alone explains the held-up pull-up lift.
Mechanism and rationale
A held-up horse that pulled up was often beaten by the ground (bogged down in testing going) rather than by ability or injury. Put it back on a different surface and the cause has gone. A long gap and a spring return are mostly the same horses: pulled up in winter mud, back on better ground.
The rule
last_pulled_up = 1 AND last_run_style IN ('held_up', 'midfield') AND last_going_group IS NOT NULL AND going_group IS NOT NULL AND going_group <> last_going_groupReads: last_pulled_up, last_run_style, last_going_group, going_group
Pre-registration
- Spec hash (sha256 of the canonical pre-spec)
- a5ec0f43f8d9929836737bc800fd977393f98256c5a50facf8a673cd53a4fbc9
- Frozen
- not frozen
- The definition can still change.
- Confounders
- season: ground changes cluster in spring (the late-April skew seen in the lone-PU split), so the changed-going lift has to be checked by period, not just pooled
- days_since_last_run: a change of ground goes with a longer gap, so the lift must hold within gap bands (35 days or less, and more than 35) or the long-gap freshening story remains
- price: earlier findings show no edge at 16/1 or bigger, so any lift should sit at shorter prices
- race_type: Hurdle against Chase; chase pull-ups may reflect jumping or fatigue rather than ground
- region: GB and IRE going descriptions and going-group mapping may differ
- field_size
- direction of the change: the rule counts any change, including softer ground, and the mechanism predicts the lift comes mainly from testing ground to better ground
- Control
{ "description": "Main comparison is the same-going complement: held-up or midfield pull-ups returning on the same going group as the pull-up. If ground is the cause, the complement should sit near par (about 1.0) and clearly below the changed-going rule. If the complement scores as high, the lift is freshening or something general about the pool, not ground. The other runners in the same races are expected to show about 1.0, which rules out a race-level artefact.", "rule": "last_pulled_up = 1 AND last_run_style IN ('held_up', 'midfield') AND last_going_group IS NOT NULL AND going_group IS NOT NULL AND going_group = last_going_group" }
Discovery result
pass broad rule · 17 Oct, 01:46
- Bets
- 940
- 71 winners
- A/E
- 1.30
- 95%: 1.01 to 1.64
- SP return
- -29.0%
- level stakes
- Betfair SP return
- -3.7%
- 937 bets with a BSP
Strike rate 7.6%. p = 0.020. Same-race control: the other runners in these races had A/E 0.98, 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. 3 of 5 survived.
- partition: Short gap band (35 days or less), 16/1 or shorterpass
171 bets · A/E 1.11 (0.70 to 1.66) · control 1.00 · 17 Oct, 01:53
Breakdown
betsA/E0.71.01.32025-10-01 to 2026-04-271501.07after 2026-04-2721–Bars grow from 1.00, the market. Faded bars have fewer than 40 bets. - partition: Long gap band (more than 35 days), 16/1 or shorterpass
217 bets · A/E 1.54 (1.10 to 2.10) · control 0.93 · 17 Oct, 01:53
Breakdown
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.
Other experiments
- neighbour: drop: last_pulled_up = 1fail
28,593 bets · A/E 0.98 (0.94 to 1.02) · control 1.00 · 17 Oct, 01:53
Breakdown
betsA/E0.71.01.32025-10-01 to 2026-04-2711,1230.97after 2026-04-2717,4700.98Bars grow from 1.00, the market. Faded bars have fewer than 40 bets. - neighbour: drop: last_run_style IN ('held_up', 'midfield')pass
1,423 bets · A/E 1.15 (0.94 to 1.40) · control 0.99 · 17 Oct, 01:53
Breakdown
Lineage
Agent runs
designer v1ok · 29s · 17 Oct, 01:43
Output (schema-checked)
{ "rule": "last_pulled_up = 1 AND last_run_style IN ('held_up', 'midfield') AND last_going_group IS NOT NULL AND going_group IS NOT NULL AND going_group <> last_going_group", "refinements": [ { "label": "16/1 or shorter", "rule": "last_pulled_up = 1 AND last_run_style IN ('held_up', 'midfield') AND last_going_group IS NOT NULL AND going_group IS NOT NULL AND going_group <> last_going_group AND sp_decimal <= 17" } ], "control": { "description": "Main comparison is the same-going complement: held-up or midfield pull-ups returning on the same going group as the pull-up. If ground is the cause, the complement should sit near par (about 1.0) and clearly below the changed-going rule. If the complement scores as high, the lift is freshening or something general about the pool, not ground. The other runners in the same races are expected to show about 1.0, which rules out a race-level artefact.", "rule": "last_pulled_up = 1 AND last_run_style IN ('held_up', 'midfield') AND last_going_group IS NOT NULL AND going_group IS NOT NULL AND going_group = last_going_group" }, "pass_criteria": { "min_bets": 300, "min_ae": 1.1, "max_p": 0.05 }, "forward_bar": { "min_bets": 100, "min_ae": 1, "max_p": 0.2 }, "confounders": [ "season: ground changes cluster in spring (the late-April skew seen in the lone-PU split), so the changed-going lift has to be checked by period, not just pooled", "days_since_last_run: a change of ground goes with a longer gap, so the lift must hold within gap bands (35 days or less, and more than 35) or the long-gap freshening story remains", "price: earlier findings show no edge at 16/1 or bigger, so any lift should sit at shorter prices", "race_type: Hurdle against Chase; chase pull-ups may reflect jumping or fatigue rather than ground", "region: GB and IRE going descriptions and going-group mapping may differ", "field_size", "direction of the change: the rule counts any change, including softer ground, and the mechanism predicts the lift comes mainly from testing ground to better ground" ], "mechanism": "A held-up or midfield horse that pulled up was often beaten by that day's ground (bogged down in testing going) rather than by ability or injury. When it runs next on a different going group, that cause has gone and its true ability shows again. The earlier long-gap and spring-return lifts may be the same horses: pulled up in winter mud and back on better ground.", "market_miss": "The form figures show a bare P. Punters read it as a failure of the horse rather than of the conditions, and SP does not adjust for the going having changed since the pull-up.", "prediction": { "direction": "positive", "size": "A/E 1.25 to 1.45 on 450+ bets, clearly above the same-going complement", "falsified_if": "A/E below 1.10 on the broad rule, or the same-going complement scores within about 0.10 A/E of it (which would leave freshening or a general pool effect as the explanation), or the lift disappears inside both the 35 days or less and the more than 35 days bands" }, "notes": "I kept the rule sketch: it uses only pre-off columns. last_run_style has only been available since 2025-11-01, so the testable window is short. The going_group values are not listed in the catalogue, so the rule tests any change of ground, not specifically softer to better. When reading the result, check the direction of the change, the period split (before and after 27 April 2026) and the gap bands. The only refinement is the 16/1 cap, because the findings show no edge at 16/1 or bigger in this pool." }
Timeline
Job 2342 finished
· engine:compute-1
hypothesis note H-995c6f24
· engine:perturb
perturbation result for H-995c6f24 (neighbour: drop: going_group <> last_going_group): pass
· engine:perturb
perturbation result for H-995c6f24 (neighbour: drop: going_group IS NOT NULL): pass
· engine:perturb
perturbation result for H-995c6f24 (neighbour: drop: last_going_group IS NOT NULL): pass
· engine:perturb
perturbation result for H-995c6f24 (neighbour: drop: last_run_style IN ('held_up', 'midfield')): pass
· engine:perturb
perturbation result for H-995c6f24 (neighbour: drop: last_pulled_up = 1): fail
· engine:perturb
compute-1 took job 2342 (mutate, attempt 1)
· compute-1
Job 2357 finished
· engine:compute-1
H-995c6f24 Falsification → KILLED falsified: 2 of 5 attacks broke it
· engine:falsification
falsification result for H-995c6f24 (partition: Led or prominent pull-ups on changed going, 16/1 or shorter): fail
· engine:evaluator
compute-1 took job 2357 (attack, attempt 1)
· compute-1
Job 2356 finished
· engine:compute-1
falsification result for H-995c6f24 (control: Control: held-up and well beaten but finished (no P), changed going, 16/1 or shorter): fail
· engine:evaluator
compute-1 took job 2356 (attack, attempt 1)
· compute-1
Job 2355 finished
· engine:compute-1