Hypotheses · trajectory · H-b0284f7a
Test-mechanism: last-time unseaters running in a hurdle are over-bet
fails: 223 bets, needs 300; p 0.4148 (lower tail), needs 0.05
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
- test-mechanism
- Created
- 17 Oct, 03:03
- 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-9f59a0ed (Sharpen: chase unseaters with no jumping error recorded last time) is unstable: 2 of 4 neighbouring rules lose the effect (base A/E 1.41; e.g. drop: race_type = 'Chase' -> 0.9; drop: last_non_finish_code = 'UR' -> 0.99). O-4e460c4e
- AskedAre horses that unseated last time and run in a hurdle today over-bet? H-9f59a0ed's neighbour without the chase condition implies roughly A/E 0.6 on about 184 hurdle-race unseaters. answered
- MechanismIn a chase, an unseat is often a fence incident where the rider is dislodged and the horse's ability is untouched. An unseat in a hurdle race is rarer and more often reflects a bad blunder or awkwardness from the horse itself, so it says something real about the horse.
- Why the market misses itThe market and the form book read the U the same way in both codes. If the meaning differs, the chase U is over-penalised while the hurdle U is under-penalised.
- Predictednegative, A/E 0.70 to 0.90 on 150+ bets
- Falsified ifA/E at or above 1.0, or a hurdle lift as large as the chase pool's 1.26.
- Rule sketch
race_type = 'Hurdle' AND last_non_finish_code = 'UR' - question idQ-344fb487
- operator
The question's answer so far: No over-bet effect is shown. Hurdle unseaters scored A/E 0.91 on 223 (CI 0.52 to 1.48, p 0.68), and 2.38 on 126 at 16/1+. The implied 0.6 figure did not replicate.
Mechanism and rationale
In a chase, an unseat is often a fence incident where the rider is dislodged and the horse's ability is untouched. An unseat in a hurdle race is rarer and more often reflects a bad blunder or awkwardness from the horse itself, so it says something real about the horse.
The rule
race_type = 'Hurdle' AND last_race_type = 'Hurdle' AND last_non_finish_code = 'UR'
Reads: race_type, last_race_type, last_non_finish_code
Pre-registration
- Spec hash (sha256 of the canonical pre-spec)
- 97f311993ccb0f3e9d19ed08c6207e5960cf1175d21f89b9e6e62954250bb901
- Frozen
- not frozen
- The definition can still change.
- Confounders
- Last-run code: the draft rule let in horses that unseated in a chase and then dropped back to hurdles. The mechanism gives those horses the chase lift, so they would dilute the test. The rule now requires last_race_type = 'Hurdle'.
- Novice hurdles and big fields: hurdle unseats bunch up among green novices in crowded fields, where the price already allows for inexperience (refinement 3 checks this).
- Long-price share: the unseater profit and loss in this family comes mostly from runners at 16/1 or bigger, so a few big-priced winners or losers could set the result (refinement 1 checks this).
- Small sample: hurdle unseats are rare and last_non_finish_code starts only on 2025-01-01, so the pool may not reach 150 bets.
- Unseats caused by other horses (interference, being brought down or carried out) say nothing about the horse and would push the result back toward par.
- Jockey change after an unseat: a better rider, or a claimer coming off, could lift results whatever the code.
- Subtraction risk: the lab has already found that the F/UR flags do not reconcile, so this pool must be counted directly and not worked out from the gap between neighbouring pools.
Discovery result
fail broad rule · 17 Oct, 03:09
- Bets
- 223
- 16 winners
- A/E
- 0.91
- 95%: 0.52 to 1.48
- SP return
- +41.9%
- level stakes
- Betfair SP return
- +262.4%
- 223 bets with a BSP
Strike rate 7.2%. p = 0.68. Same-race control: the other runners in these races had A/E 1.00, 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 · 46s · 17 Oct, 03:03
Output (schema-checked)
{ "rule": "race_type = 'Hurdle' AND last_race_type = 'Hurdle' AND last_non_finish_code = 'UR'", "refinements": [ { "label": "Under 16/1: rule out the long-price artefact", "rule": "race_type = 'Hurdle' AND last_race_type = 'Hurdle' AND last_non_finish_code = 'UR' AND sp_decimal < 17" }, { "label": "Horse blunder recorded: the mechanism's own reading of a hurdle unseat", "rule": "race_type = 'Hurdle' AND last_race_type = 'Hurdle' AND last_non_finish_code = 'UR' AND last_jumping_error = 1" }, { "label": "Non-novice hurdles: strip out green novices", "rule": "race_type = 'Hurdle' AND last_race_type = 'Hurdle' AND last_non_finish_code = 'UR' AND is_novice = 0" } ], "control": { "description": "The other runners in the same hurdle races should be at par (about 0.95 to 1.0 after overround), so any shortfall belongs to the hurdle unseaters and not to the race. The mechanism is a contrast between codes, so the second comparison group is chase-to-chase unseaters. The trajectory findings put that pool at about 1.3 to 1.4. The hypothesis needs the hurdle pool below par AND clearly below the chase pool. If both pools come in the same, the code makes no difference to what an unseat means.", "rule": "race_type = 'Chase' AND last_race_type = 'Chase' AND last_non_finish_code = 'UR'" }, "pass_criteria": { "min_bets": 150, "min_ae": 1.05, "max_p": 0.05 }, "forward_bar": { "min_bets": 100, "min_ae": 1, "max_p": 0.2 }, "confounders": [ "Last-run code: the draft rule let in horses that unseated in a chase and then dropped back to hurdles. The mechanism gives those horses the chase lift, so they would dilute the test. The rule now requires last_race_type = 'Hurdle'.", "Novice hurdles and big fields: hurdle unseats bunch up among green novices in crowded fields, where the price already allows for inexperience (refinement 3 checks this).", "Long-price share: the unseater profit and loss in this family comes mostly from runners at 16/1 or bigger, so a few big-priced winners or losers could set the result (refinement 1 checks this).", "Small sample: hurdle unseats are rare and last_non_finish_code starts only on 2025-01-01, so the pool may not reach 150 bets.", "Unseats caused by other horses (interference, being brought down or carried out) say nothing about the horse and would push the result back toward par.", "Jockey change after an unseat: a better rider, or a claimer coming off, could lift results whatever the code.", "Subtraction risk: the lab has already found that the F/UR flags do not reconcile, so this pool must be counted directly and not worked out from the gap between neighbouring pools." ], "mechanism": "A chase unseat usually comes at a fence: the rider is dislodged by a peck or a slip on landing over a big obstacle, and the horse's ability is untouched. That is why chase-to-chase unseaters bounce back (A/E about 1.40). Hurdles are small and can be brushed through, so an unseat in a hurdle race is rare. When it does happen it more often reflects a bad blunder, a jink or awkwardness from the horse itself. So a hurdle unseat says something real about the horse's jumping or temperament, and that weakness carries into its next hurdle race.", "market_miss": "The market and the form book treat a 'U' the same in both codes, as a void run with mild jumping doubt. If the meaning differs by code, the price over-penalises a chase U (hence the bounce-back) and under-penalises a hurdle U. A hurdle unseater going back over hurdles is then priced as if the U were bad luck, when it is evidence about the horse, so it is over-bet.", "prediction": { "direction": "negative", "size": "A/E 0.70 to 0.90 on 150+ bets, and at least 0.3 below the chase-to-chase unseater control", "falsified_if": "A/E at or above 1.0 for hurdle-to-hurdle unseaters, or a hurdle lift close to the chase pool's (A/E 1.26 or more), which would mean the unseat bounce-back does not depend on the code." }, "notes": "The draft rule is changed in one way. It now adds last_race_type = 'Hurdle', because the mechanism is about where the unseat happened, not about today's race type. Without it the pool mixes in chase unseaters dropping back to hurdles, whom the mechanism expects to bounce back. The direction is negative, so the vault should judge the pass bars in that direction: an A/E shortfall that is significant at p 0.05. Only pre-off columns are used: last_non_finish_code runs from 2025-01-01 and last_jumping_error from 2025-11-01, so refinement 2 has a shorter window. If fewer than 150 bets come back, treat the result as thin and send it to forward tracking; do not loosen the rule." }
Timeline
Job 2565 finished
· engine:compute-1
H-b0284f7a Discovery → KILLED fails: 223 bets, needs 300; p 0.4148 (lower tail), needs 0.05
· engine:evaluator
discovery result for H-b0284f7a (broad rule): fail
· engine:evaluator
H-b0284f7a Designed → RESEARCHdiscovery measuring on the discovery zone
· engine:orchestrator
compute-1 took job 2565 (evaluate, attempt 1)
· compute-1
Job 2563 finished
· engine:ai-1
Queued evaluate on the compute lane: discovery run of the broad rule
· engine:scheduler
H-b0284f7a Proposed → RESEARCHdesigned pre-spec written and hashed
· agent:designer@v1
ai-1 took job 2563 (design, attempt 1)
· ai-1
Queued design on the ai lane: write the pre-spec
· engine:scheduler
New idea H-b0284f7a: Test-mechanism: last-time unseaters running in a hurdle are over-bet (test-mechanism)
· 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.