Hypotheses · story · H-332b49e9
Rival: the lift is a one-bad-run rebound after close recent form, needing neither the flag nor a big field
forward A/E 0.0 on 0 bets, SP ROI None%, BSP ROI None% (p None)
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, 04:11
- 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-baef90d8 (Sharpen: never-involved heavy beatings by horses with a recent close f) passed discovery: A/E 1.72 on 236 bets (p 0.003), same-race control 0.95. O-e041a181
- H-baef90d8 (Sharpen: never-involved heavy beatings by horses with a recent close f) survived falsification: 6 of 6 attacks left it standing; it is frozen for its one vault query. O-e25c4c84
- AskedIs the jumps lift a rebound from one bad run after recent close form, holding without the never-involved flag and without a big last field? answered
- MechanismA horse that finished within 6 lengths in one of its previous two runs has shown its current level. A single 20+ length beating after that is more often caused by something temporary (the trip, the ground, a bad experience, not being asked once beaten) than by a lasting loss of form. The never-involved flag and the big field may only have been rough ways of finding such runs.
- Why the market misses itPrices and casual readers lean on the latest run. A 20-length beating is the most visible line in the form, and an older close finish is weighed less than it deserves, so the horse drifts.
- Predictedpositive, A/E 1.30 to 1.50 on 700+ bets if the rival holds
- Falsified ifA/E at or below 1.177 (the no-close-finish flagged control). Then the close finish only works alongside the flag and the big field, and the rival is ruled out.
Mechanism and rationale
A horse that finished within 6 lengths in one of its previous two runs has shown its current level. A single 20+ length beating after that is more often caused by something temporary (the trip, the ground, a bad experience, not being asked once beaten) than by a lasting loss of form. The never-involved flag and the big field may only have been rough ways of finding such runs.
The rule
is_handicap = 1 AND race_type IN ('Hurdle', 'Chase') AND last_beaten_lengths >= 20 AND best_last3_beaten IS NOT NULL AND best_last3_beaten <= 6Reads: is_handicap, race_type, last_beaten_lengths, best_last3_beaten
Pre-registration
- Spec hash (sha256 of the canonical pre-spec)
- 459f76ff1e7aaf4e05f8682c7b54b62a105522132431c4def063613688b032b5
- Frozen
- 17 Oct, 04:14
- Nothing in the definition can change after this.
- Confounders
- The window is short: best_last3_beaten and last_beaten_lengths only start in November 2025, so the result rests on one or two jumps seasons.
- best_last3_beaten = 0 brings in recent winners whose marks have since gone up. Refinement 2 separates them.
- The broad rule contains the parent niche (never involved, 14+ last field), which scores 1.72 on 236. That niche alone could lift the broad A/E, so refinement 1, which excludes it, is the real rival test.
- The close run may have come in a lower class, at a different trip or on different ground, so 'current level' may be overstated.
- IRE runners may dominate the result, as they do in the parent. Check GB and IRE separately.
- Mark relief after the heavy beating could carry the lift instead of the form rebound. Refinement 3 tests this.
- Horses pulled up or falling last time have no last_beaten_lengths and are left out by construction. The rule covers finishers only.
- Control
{ "description": "Same-race other runners should score about 1.0, showing the lift is not a property of the races these horses run in. The main comparison is heavily beaten jumps handicappers with no close recent finish (best_last3_beaten > 6). The parent analysis put this group at 1.177 among flagged big-field runners, and across all fields and flags it should be near 1.0. If the control scores as well as the rule, the close finish carries nothing and the lift is a general heavy-beating rebound.", "rule": "is_handicap = 1 AND race_type IN ('Hurdle', 'Chase') AND last_beaten_lengths >= 20 AND best_last3_beaten IS NOT NULL AND best_last3_beaten > 6" }
Discovery result
pass broad rule · 17 Oct, 04:12
- Bets
- 1,600
- 179 winners
- A/E
- 1.23
- 95%: 1.06 to 1.43
- SP return
- +2.4%
- level stakes
- Betfair SP return
- +37.9%
- 1,596 bets with a BSP
Strike rate 11.2%. p = 0.0038. 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. 5 of 5 survived.
- perturbation: Perturb looser: 16+ lengths beaten, close finish within 7.5pass
2,355 bets · A/E 1.11 (0.97 to 1.25) · control 0.99 · 17 Oct, 04:14
Breakdown
betsA/E0.71.01.32025-10-01 to 2026-04-271,2291.10after 2026-04-271,1261.12Bars grow from 1.00, the market. Faded bars have fewer than 40 bets. - perturbation: Perturb tighter: 24+ lengths beaten, close finish within 5pass
1,147 bets · A/E 1.28 (1.07 to 1.53) · control 0.98 · 17 Oct, 04:14
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': 150, 'min_ae': 1.05, 'max_p': 0.2}info
0 bets · · 17 Oct, 04:14
Breakdown
betsA/E0.71.01.3forward0–Bars grow from 1.00, the market. Faded bars have fewer than 40 bets.
Other experiments
- neighbour: >= 20 -> 16 (-20%)pass
2,079 bets · A/E 1.16 (1.01 to 1.32) · control 0.99 · 17 Oct, 04:12
Breakdown
betsA/E0.71.01.32025-10-01 to 2026-04-271,0971.16after 2026-04-279821.16Bars grow from 1.00, the market. Faded bars have fewer than 40 bets. - neighbour: >= 20 -> 24 (+20%)pass
1,265 bets · A/E 1.24 (1.04 to 1.47) · control 0.98 · 17 Oct, 04:12
Breakdown
Lineage
Agent runs
designer v1ok · 28s · 17 Oct, 04:11
Output (schema-checked)
{ "rule": "is_handicap = 1 AND race_type IN ('Hurdle', 'Chase') AND last_beaten_lengths >= 20 AND best_last3_beaten IS NOT NULL AND best_last3_beaten <= 6", "refinements": [ { "label": "outside the parent niche (rival test proper)", "rule": "is_handicap = 1 AND race_type IN ('Hurdle', 'Chase') AND last_beaten_lengths >= 20 AND best_last3_beaten IS NOT NULL AND best_last3_beaten <= 6 AND (last_never_involved = 0 OR last_field_size IS NULL OR last_field_size < 14)" }, { "label": "close finish not a win (removes raised recent winners)", "rule": "is_handicap = 1 AND race_type IN ('Hurdle', 'Chase') AND last_beaten_lengths >= 20 AND best_last3_beaten IS NOT NULL AND best_last3_beaten > 0 AND best_last3_beaten <= 6" }, { "label": "no mark relief after the heavy beating", "rule": "is_handicap = 1 AND race_type IN ('Hurdle', 'Chase') AND last_beaten_lengths >= 20 AND best_last3_beaten IS NOT NULL AND best_last3_beaten <= 6 AND rating_change IS NOT NULL AND rating_change >= 0" } ], "control": { "description": "Same-race other runners should score about 1.0, showing the lift is not a property of the races these horses run in. The main comparison is heavily beaten jumps handicappers with no close recent finish (best_last3_beaten > 6). The parent analysis put this group at 1.177 among flagged big-field runners, and across all fields and flags it should be near 1.0. If the control scores as well as the rule, the close finish carries nothing and the lift is a general heavy-beating rebound.", "rule": "is_handicap = 1 AND race_type IN ('Hurdle', 'Chase') AND last_beaten_lengths >= 20 AND best_last3_beaten IS NOT NULL AND best_last3_beaten > 6" }, "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": [ "The window is short: best_last3_beaten and last_beaten_lengths only start in November 2025, so the result rests on one or two jumps seasons.", "best_last3_beaten = 0 brings in recent winners whose marks have since gone up. Refinement 2 separates them.", "The broad rule contains the parent niche (never involved, 14+ last field), which scores 1.72 on 236. That niche alone could lift the broad A/E, so refinement 1, which excludes it, is the real rival test.", "The close run may have come in a lower class, at a different trip or on different ground, so 'current level' may be overstated.", "IRE runners may dominate the result, as they do in the parent. Check GB and IRE separately.", "Mark relief after the heavy beating could carry the lift instead of the form rebound. Refinement 3 tests this.", "Horses pulled up or falling last time have no last_beaten_lengths and are left out by construction. The rule covers finishers only." ], "mechanism": "A jumps handicapper that finished within 6 lengths in one of the two runs before its latest has shown its current level. A single 20+ length beating after that is more often caused by something temporary (the wrong trip or ground, a bad experience, being eased once beaten) than by a lasting loss of form. If this rival is right, the never-involved flag and the big field in the parent rule were only rough ways of finding such one-off runs, and the lift should hold without them.", "market_miss": "Prices and casual form readers lean on the latest run. A 20-length beating is the most visible line in the form, and a close finish two or three runs back is given less weight than it deserves, so the horse drifts beyond its true chance.", "prediction": { "direction": "positive", "size": "A/E 1.30 to 1.50 on 700+ bets. The parent-niche-excluded refinement should keep most of that, at A/E 1.25 or better.", "falsified_if": "The broad rule scores A/E at or below 1.177, or the refinement excluding the never-involved / 14+ field niche scores 1.10 or less. Either result means the close finish only works alongside the flag and the big field, and the rival is ruled out." }, "notes": "The rule sketch is kept unchanged. Every column is pre-off. Because last_beaten_lengths >= 20, the qualifying best_last3_beaten <= 6 must come from one of the two earlier runs, which matches the mechanism. Pass criteria are stricter than the floor (300 bets, A/E 1.10) because 700+ bets are predicted and the broad rule includes the strong parent niche. Judge the rival on refinement 1 more than on the broad rule." }
Timeline
Job 2840 finished
· engine:compute-1
forward result for H-332b49e9 (forward vs bar {'min_bets': 150, 'min_ae': 1.05, 'max_p': 0.2}): info
· engine:evaluator
compute-1 took job 2840 (forward_check, attempt 1)
· compute-1
Queued forward_check on the compute lane: daily forward check of a shadow system
· engine:scheduler
Job 2837 finished
· engine:compute-1
H-332b49e9 Frozen → SHADOW vault skipped: last_beaten_lengths, best_last3_beaten do not exist before the discovery zone; track it forward instead
· engine:orchestrator
compute-1 took job 2837 (vault, attempt 1)
· compute-1
Job 2836 finished
· engine:compute-1
Queued vault on the compute lane: frozen: one sealed vault query
· engine:scheduler
H-332b49e9 Falsification → FROZEN survived falsification
· engine:falsification
falsification result for H-332b49e9 (control: Control: close recent form but only a moderate beating last time (8-15 lengths)): pass
· engine:evaluator
compute-1 took job 2836 (attack, attempt 1)
· compute-1
Job 2835 finished
· engine:compute-1
falsification result for H-332b49e9 (partition: GB close finishers that did not win): pass
· engine:evaluator
compute-1 took job 2835 (attack, attempt 1)
· compute-1
Job 2834 finished
· engine:compute-1
falsification result for H-332b49e9 (partition: Rival test at 14/1 or shorter: outside the parent niche): pass
· engine:evaluator
compute-1 took job 2834 (attack, attempt 1)
· compute-1
Job 2833 finished
· engine:compute-1
falsification result for H-332b49e9 (perturbation: Perturb tighter: 24+ lengths beaten, close finish within 5): pass
· engine:evaluator