Hypotheses · story · H-6eae1245
Test-mechanism: held-up PU horses returning after a break of more than 35 days beat their price
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
- test-mechanism
- Created
- 17 Oct, 01:40
- Tests logged
- 10
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-d61d2109 (Sharpen: held-up PU in an attritional race where many failed to finish) passed discovery as a niche: A/E 1.15 on 921 bets (p 0.157), same-race control 0.99. O-04d808cb
- H-a2870576 (Rival: pulled up after leading or racing prominently shows the same li) pointed the predicted way but failed the bar: A/E 0.92 on 727 bets (p 0.744), control 1.01. O-c2bb47dd
- AskedIs the held-up PU lift concentrated in horses returning after a longer break (over 35 days), and does it rise with gap length or plateau? answered
- MechanismA held-up horse pulled up because something specific was wrong (breathing, ground, a minor knock), and the trainer took it out of the race. A break of more than five weeks means the problem was addressed (a wind op, a freshening, waiting for ground). The horse returns sound, and its PU run took nothing out of it.
- Why the market misses itThe form line reads P followed by an absence, which punters and compilers read as a horse with a problem that is regressing. The fix is invisible in the form book unless first-time headgear or a wind-op note is flagged, and the absence makes the P look more ominous, not less.
- Predictedpositive, A/E 1.25 to 1.50 on 450+ bets
- Falsified ifA/E below 1.10, or not clearly above the quick-return pool's 1.027, or the lift confined to one period
- Rule sketch
last_pulled_up = 1 AND last_run_style IN ('held_up', 'midfield') AND days_since_last_run > 35
The question's answer so far: In discovery, yes: over 35 days scored 1.335 on 674 against 1.027 on 777 for a quick return. But 2 of 5 attacks broke it. Whether the lift rises with gap length or levels off is still untested.
Mechanism and rationale
A held-up horse pulled up because something specific was wrong (breathing, ground, a minor knock), and the trainer took it out of the race. A break of more than five weeks means the problem was addressed (a wind op, a freshening, waiting for ground). The horse returns sound, and its PU run took nothing out of it.
The rule
last_pulled_up = 1 AND last_run_style IN ('held_up', 'midfield') AND days_since_last_run IS NOT NULL AND days_since_last_run > 35Reads: last_pulled_up, last_run_style, days_since_last_run
Pre-registration
- Spec hash (sha256 of the canonical pre-spec)
- 3792b2776a39d4dca52424d927ea79047ec98325678dbc23fc1edaf768e4f993
- Frozen
- not frozen
- The definition can still change.
- Confounders
- Seasonality: long-break returners bunch in the autumn and spring (Q-5a5f7922). Check the lift by season and by period, since H36 already swung from 1.07 to 1.41.
- First-time headgear or a wind op on return: a visible fix that the market may already price
- Class drops on return: relief in grade rather than a fixed problem
- Price band: long-break returners drift to big prices, where A/E is noisy and the edge may sit in a few long-priced winners
- Overlap with the parent H36 pull-up pool and its jumping-error overlays. These re-cut the same runners, so they are not independent evidence.
- Code mix: pull-ups are mostly jumps runners, so a Hurdle/Chase split could explain the result
- Control
{ "description": "Main control: held-up/midfield pull-ups brought back within 35 days. The earlier finding puts this group at about 1.03 on 777, and the mechanism says it should stay near 1.0. If the long-break pool is not clearly above it (by about 0.10 or more in A/E), the lift is down to the held-up pull-up, not the break. The other runners in the same races should be near 1.0. If they come out high too, the effect belongs to the race (for example seasonal comeback races or big fields), not to the selected horses.", "rule": "last_pulled_up = 1 AND last_run_style IN ('held_up', 'midfield') AND days_since_last_run IS NOT NULL AND days_since_last_run <= 35" }
Discovery result
pass broad rule · 17 Oct, 01:41
- Bets
- 674
- 54 winners
- A/E
- 1.33
- 95%: 1.00 to 1.74
- SP return
- -24.7%
- level stakes
- Betfair SP return
- +6.6%
- 672 bets with a BSP
Strike rate 8.0%. p = 0.024. 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.
- perturbation: Break threshold raised 20%: more than 42 dayspass
536 bets · A/E 1.36 (0.98 to 1.83) · control 0.98 · 17 Oct, 01:42
Breakdown
betsA/E0.71.01.32025-10-01 to 2026-04-272801.39after 2026-04-272561.32Bars grow from 1.00, the market. Faded bars have fewer than 40 bets. - control: Control: led/prominent pull-ups returning after more than 35 daysfail
362 bets · A/E 0.92 (0.60 to 1.35) · control 1.01 · 17 Oct, 01:42
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 · 31s · 17 Oct, 01:40
Output (schema-checked)
{ "rule": "last_pulled_up = 1 AND last_run_style IN ('held_up', 'midfield') AND days_since_last_run IS NOT NULL AND days_since_last_run > 35", "refinements": [ { "label": "14/1 or shorter", "rule": "last_pulled_up = 1 AND last_run_style IN ('held_up', 'midfield') AND days_since_last_run IS NOT NULL AND days_since_last_run > 35 AND sp_decimal <= 15" }, { "label": "break of 36 to 180 days (a freshening or a fix, not a long injury lay-off)", "rule": "last_pulled_up = 1 AND last_run_style IN ('held_up', 'midfield') AND days_since_last_run IS NOT NULL AND days_since_last_run > 35 AND days_since_last_run <= 180" }, { "label": "no first-time headgear (the fix is invisible in the form book)", "rule": "last_pulled_up = 1 AND last_run_style IN ('held_up', 'midfield') AND days_since_last_run IS NOT NULL AND days_since_last_run > 35 AND (first_headgear IS NULL OR first_headgear = 0)" } ], "control": { "description": "Main control: held-up/midfield pull-ups brought back within 35 days. The earlier finding puts this group at about 1.03 on 777, and the mechanism says it should stay near 1.0. If the long-break pool is not clearly above it (by about 0.10 or more in A/E), the lift is down to the held-up pull-up, not the break. The other runners in the same races should be near 1.0. If they come out high too, the effect belongs to the race (for example seasonal comeback races or big fields), not to the selected horses.", "rule": "last_pulled_up = 1 AND last_run_style IN ('held_up', 'midfield') AND days_since_last_run IS NOT NULL AND days_since_last_run <= 35" }, "pass_criteria": { "min_bets": 300, "min_ae": 1.1, "max_p": 0.05 }, "forward_bar": { "min_bets": 100, "min_ae": 1.05, "max_p": 0.2 }, "confounders": [ "Seasonality: long-break returners bunch in the autumn and spring (Q-5a5f7922). Check the lift by season and by period, since H36 already swung from 1.07 to 1.41.", "First-time headgear or a wind op on return: a visible fix that the market may already price", "Class drops on return: relief in grade rather than a fixed problem", "Price band: long-break returners drift to big prices, where A/E is noisy and the edge may sit in a few long-priced winners", "Overlap with the parent H36 pull-up pool and its jumping-error overlays. These re-cut the same runners, so they are not independent evidence.", "Code mix: pull-ups are mostly jumps runners, so a Hurdle/Chase split could explain the result" ], "mechanism": "A held-up or midfield horse that pulls up was usually not exhausted by chasing the pace. It was taken out because something specific was wrong (breathing, ground, a minor knock), so the run cost it little. A break of more than five weeks gives time to fix the problem (a wind op, a freshening, waiting for suitable ground). The horse returns sound and fresh, so it should beat its price. Quick returners have had no such repair, so they should not.", "market_miss": "The form reads 'P' followed by an absence. Punters and compilers read that as a horse with a problem that is getting worse, and the gap makes the P look more ominous. The repair (a wind op, a freshening) is mostly invisible in the form book unless first-time headgear or a wind-op note is flagged. Run style in the pull-up, which separates a horse that was nursed out from one that was burnt out, is not shown in the form figures.", "prediction": { "direction": "positive", "size": "A/E 1.25 to 1.50 on 450+ bets", "falsified_if": "Falsified if any of these holds: A/E is below 1.10; it is not at least about 0.10 above the 35-days-or-fewer control (about 1.03); the lift sits in only one period or season; or the other runners in the same races show a similar lift." }, "notes": "I kept the rule sketch and only added an explicit days_since_last_run IS NOT NULL guard. Every column is pre-off. The bar is stricter than the lab floor (300 bets, A/E 1.10) because the prediction is 450+ bets at 1.25 or better, and the parent H36 pool is known to be unstable across periods. The 14/1 refinement follows the existing pull-up system finding. sp_decimal is the price at the off and is listed as a pre-off column. Results for the 'midfield' style should also be read on their own, to check the lift is not confined to strictly held-up runners." }
Timeline
Job 2326 finished
· engine:compute-1
H-6eae1245 Falsification → KILLED falsified: 2 of 5 attacks broke it
· engine:falsification
falsification result for H-6eae1245 (partition: GB, no drop in class on return): fail
· engine:evaluator
compute-1 took job 2326 (attack, attempt 1)
· compute-1
Job 2325 finished
· engine:compute-1
falsification result for H-6eae1245 (partition: Chases only): pass
· engine:evaluator
compute-1 took job 2325 (attack, attempt 1)
· compute-1
Job 2324 finished
· engine:compute-1
falsification result for H-6eae1245 (partition: Hurdles only): pass
· engine:evaluator
compute-1 took job 2324 (attack, attempt 1)
· compute-1
Job 2323 finished
· engine:compute-1
falsification result for H-6eae1245 (control: Control: led/prominent pull-ups returning after more than 35 days): fail
· engine:evaluator
compute-1 took job 2323 (attack, attempt 1)
· compute-1
Job 2322 finished
· engine:compute-1
falsification result for H-6eae1245 (perturbation: Break threshold raised 20%: more than 42 days): pass
· engine:evaluator
compute-1 took job 2322 (attack, attempt 1)
· compute-1
Job 2315 finished
· engine:ai-1
Queued attack on the compute lane: attack: GB, no drop in class on return
· engine:scheduler
Queued attack on the compute lane: attack: Chases only
· engine:scheduler
Queued attack on the compute lane: attack: Hurdles only
· engine:scheduler