Hypotheses · trajectory · H-f8d6b9d7
Generalise: all last-time chase unseaters beat their price, going well or not
forward A/E 0.0 on 0 bets, SP ROI None%, BSP ROI None% (p None)
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
- generalise
- Created
- 17 Oct, 02:36
- 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-48103daf (Rival: GB fallers going well vs GB fallers not going well, the going-w) was predicted negative but came out the other way: A/E 1.03 on 191 bets (p 0.466 for the opposite direction). O-09d0efa4
- H-2ac5dd09 (Test-mechanism: unseated (not fell) chasers not going well carry the g) passed discovery as a niche: A/E 1.26 on 190 bets (p 0.157), same-race control 0.97. O-98ba927e
- AskedIs the bounce-back after a chase unseat general across both countries and the going-well split? testing
- MechanismAn unseat is often rider error or bad luck at a fence, and says little about the horse's ability. The form figure U is still read like an F or a PU.
- Why the market misses itForm-figure readers and price compilers lump U with F and P as non-completions. Without the race comment, a non-completion lengthens the price.
- Predictedpositive, A/E 1.12 to 1.25 on 250+ bets, both countries above 1.05
- Falsified ifA/E at or below 1.05, or the same-race control above 1.05 so the lift is race-wide.
- Rule sketch
race_type = 'Chase' AND last_non_finish_code = 'UR'
Mechanism and rationale
An unseat is often rider error or bad luck at a fence, and says little about the horse's ability. The form figure U is still read like an F or a PU.
The rule
race_type = 'Chase' AND last_non_finish_code = 'UR'
Reads: race_type, last_non_finish_code
Pre-registration
- Spec hash (sha256 of the canonical pre-spec)
- 82533fb64287b1fce0fc4c3ed1183705078c8ecb336f699dc845a6add79015c1
- Frozen
- 17 Oct, 02:44
- Nothing in the definition can change after this.
- Confounders
- Overlap with the live fell/unseated-going-well system: going-well unseaters sit in both. The non-going-well subset (1.26 on 190) shows the edge does not depend on them.
- Field size and race type: unseats cluster in big-field handicap chases, where longshot pricing behaves differently.
- Novice chases versus handicaps: novices unseat for inexperience, which may improve fast, while experienced horses unseat through rider error.
- A jockey change after an unseat could move the market and also improve the horse.
- Long-price winners: earlier F/U cuts went 0 from 61 to 98 at 16/1 or bigger, so the lift could rest on a handful of big-price winners or none at all. Check this against the 14/1 refinement.
- Country split: going-well edges failed in IRE. The unseat edge has to hold in both GB and IRE (each above 1.05) to count as general.
- Control
{ "description": "The lab's same-race control: the other runners in the same chases. If the edge belongs to the unseat letter and not to the race type, they should sit near par (about 0.95 to 1.02, as in the earlier cuts, 0.97 to 0.99). A control above 1.05 means the lift runs across the whole race and falsifies the hypothesis. A second check: the going-well unseaters, which overlap with the live system, should not carry the whole result. The non-going-well subset already scored 1.26 on 190, so the broad rule should hold up without them.", "rule": null }
Discovery result
pass broad rule · 17 Oct, 02:43
- Bets
- 213
- 29 winners
- A/E
- 1.40
- 95%: 0.94 to 2.02
- SP return
- +34.9%
- level stakes
- Betfair SP return
- +143.8%
- 213 bets with a BSP
Strike rate 13.6%. p = 0.048. Same-race control: the other runners in these races had A/E 0.96, 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.
- price_band: 14/1 or shorter only: strip the 91 longshots with 4 winspass
122 bets · A/E 1.35 (0.88 to 2.00) · control 0.94 · 17 Oct, 02:44
Breakdown
betsA/E0.71.01.32025-10-01 to 2026-04-27751.42after 2026-04-27471.22Bars grow from 1.00, the market. Faded bars have fewer than 40 bets. - price_band: Short-to-mid prices (8/1 or shorter), where the market-miss says the bias is strongestpass
76 bets · A/E 1.23 (0.74 to 1.92) · control 0.94 · 17 Oct, 02:44
Sealed holdout (vault)
- Bets
- 0
- 17 Oct, 02:44
- A/E
- –
- p = 1.0
- BH threshold then
- 0.0021
- over every vault test so far
- Outcome
- Failed
- vault query (supportive)pass
0 bets · · 17 Oct, 02:44
Breakdown
betsA/E0.71.01.32020-220–2023 to Sept 20250–Bars grow from 1.00, the market. Faded bars have fewer than 40 bets.
Forward record
- forward vs bar {'min_bets': 100, 'min_ae': 1.0, 'max_p': 0.2}info
0 bets · · 17 Oct, 02:58
Breakdown
betsA/E0.71.01.3forward0–Bars grow from 1.00, the market. Faded bars have fewer than 40 bets.
Other experiments
- neighbour: drop: race_type = 'Chase'pass
556 bets · A/E 1.11 (0.83 to 1.45) · control 0.99 · 17 Oct, 02:58
Breakdown
betsA/E0.71.01.32025-10-01 to 2026-04-272931.16after 2026-04-272631.04Bars grow from 1.00, the market. Faded bars have fewer than 40 bets. - neighbour: drop: last_non_finish_code = 'UR'pass
13,243 bets · A/E 1.00 (0.96 to 1.05) · 17 Oct, 02:58
Breakdown
Lineage
Agent runs
designer v1ok · 26s · 17 Oct, 02:36
Output (schema-checked)
{ "rule": "race_type = 'Chase' AND last_non_finish_code = 'UR'", "refinements": [ { "label": "14/1 or shorter", "rule": "race_type = 'Chase' AND last_non_finish_code = 'UR' AND sp_decimal <= 15.0" }, { "label": "Different jockey today (rider-error reading of the unseat)", "rule": "race_type = 'Chase' AND last_non_finish_code = 'UR' AND last_jockey_id IS NOT NULL AND jockey_id <> last_jockey_id" }, { "label": "Non-handicap chases (cuts out big-field handicap unseat-prone races)", "rule": "race_type = 'Chase' AND last_non_finish_code = 'UR' AND is_handicap = 0" } ], "control": { "description": "The lab's same-race control: the other runners in the same chases. If the edge belongs to the unseat letter and not to the race type, they should sit near par (about 0.95 to 1.02, as in the earlier cuts, 0.97 to 0.99). A control above 1.05 means the lift runs across the whole race and falsifies the hypothesis. A second check: the going-well unseaters, which overlap with the live system, should not carry the whole result. The non-going-well subset already scored 1.26 on 190, so the broad rule should hold up without them.", "rule": null }, "pass_criteria": { "min_bets": 200, "min_ae": 1.08, "max_p": 0.05 }, "forward_bar": { "min_bets": 100, "min_ae": 1, "max_p": 0.2 }, "confounders": [ "Overlap with the live fell/unseated-going-well system: going-well unseaters sit in both. The non-going-well subset (1.26 on 190) shows the edge does not depend on them.", "Field size and race type: unseats cluster in big-field handicap chases, where longshot pricing behaves differently.", "Novice chases versus handicaps: novices unseat for inexperience, which may improve fast, while experienced horses unseat through rider error.", "A jockey change after an unseat could move the market and also improve the horse.", "Long-price winners: earlier F/U cuts went 0 from 61 to 98 at 16/1 or bigger, so the lift could rest on a handful of big-price winners or none at all. Check this against the 14/1 refinement.", "Country split: going-well edges failed in IRE. The unseat edge has to hold in both GB and IRE (each above 1.05) to count as general." ], "mechanism": "An unseat (UR) is mostly rider error, interference or bad luck at one fence. It tells us little about the horse's ability or jumping, unlike a fall or a pulled-up. In the next race the horse is as good as before, but its form line carries a non-completion.", "market_miss": "Form-figure readers and price compilers lump U in with F and P as non-completions and push the price out. They do not read the race comment that separates a rider-caused unseat from a horse failure. The bias should be strongest among casual money and at short-to-mid prices, where the form line drives the betting.", "prediction": { "direction": "positive", "size": "A/E 1.12 to 1.25 on 250+ bets, with GB and IRE each above 1.05", "falsified_if": "Falsified if any of these holds: broad-rule A/E at or below 1.05; the same-race control above 1.05, which would make the lift race-wide; or either country at or below 1.0 on 80+ bets, which would mean the edge is not general." }, "notes": "I kept the rule sketch as written. It uses only pre-off columns, and last_non_finish_code was validated in H-2ac5dd09. This rule generalises H-2ac5dd09, which covered only non-going-well unseaters (1.26 on 190), to all chase unseaters. The pass bar is stricter than the floor: 200 bets and A/E 1.08. The refinements follow the reasoning. The price cap is there because earlier F/U cuts found no winners at 16/1 or bigger. The jockey-change cut tests the rider-error reading. The non-handicap cut tests the big-handicap confounder." }
Timeline
Job 2548 finished
· engine:compute-1
hypothesis note H-f8d6b9d7
· engine:perturb
perturbation result for H-f8d6b9d7 (neighbour: drop: last_non_finish_code = 'UR'): pass
· engine:perturb
perturbation result for H-f8d6b9d7 (neighbour: drop: race_type = 'Chase'): pass
· engine:perturb
compute-1 took job 2548 (mutate, attempt 1)
· compute-1
Queued mutate on the compute lane: parameter stability: do neighbouring thresholds hold?
· engine:scheduler
Job 2543 finished
· engine:compute-1
forward result for H-f8d6b9d7 (forward vs bar {'min_bets': 100, 'min_ae': 1.0, 'max_p': 0.2}): info
· engine:evaluator
compute-1 took job 2543 (forward_check, attempt 1)
· compute-1
Queued forward_check on the compute lane: daily forward check of a shadow system
· engine:scheduler
Job 2538 finished
· engine:compute-1
H-f8d6b9d7 Vault → SHADOW vault SUPPORTIVE: A/E None on 0 bets, p 1 against BH threshold 0.002083 over 48 vault tests
· engine:orchestrator
vault result for H-f8d6b9d7 (vault query (supportive)): pass
· engine:orchestrator
H-f8d6b9d7 Frozen → FROZENvault vault query started
· engine:orchestrator
compute-1 took job 2538 (vault, attempt 1)
· compute-1
Job 2526 finished
· engine:compute-1
Queued vault on the compute lane: frozen: one sealed vault query
· engine:scheduler
H-f8d6b9d7 Falsification → FROZEN survived falsification
· engine:falsification