Hypotheses · trajectory · H-f5df804d
Test-mechanism: chase unseaters that drift from their last SP carry the unseat lift
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
- test-mechanism
- Created
- 17 Oct, 03:34
- Tests logged
- 15
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-4cf8f914 (Test-mechanism: chase unseaters rebooked with the same jockey beat the) survived falsification: 5 of 5 attacks left it standing; it is frozen for its one vault query. O-4749934c
- H-4cf8f914 (Test-mechanism: chase unseaters rebooked with the same jockey beat the) passed discovery as a niche: A/E 1.45 on 97 bets (p 0.104), same-race control 0.95. O-a184fd06
- AskedDoes the market actually downgrade chase unseaters? Is today's SP longer than their last SP more often than for other chasers, and is the lift concentrated in those that drift? answered
- MechanismAn unseat says little about ability, but the form figure looks like a failure. Punters and compilers lengthen the horse's price relative to its last run, even though its ability is unchanged.
- Why the market misses itThe form book shows a U and no finishing position, so the run cannot be rated and the horse appears out of form. A drift built only on the missing figure is a discount the horse has not earned.
- Predictedpositive, A/E 1.30 to 1.50 on 100+ bets, above the pool's 1.40
- Falsified ifDrifting unseaters score at or below 1.15, or no higher than unseaters that shortened, which would mean the lift does not come through a price discount.
Mechanism and rationale
An unseat says little about ability, but the form figure looks like a failure. Punters and compilers lengthen the horse's price relative to its last run, even though its ability is unchanged.
The rule
race_type = 'Chase' AND last_non_finish_code = 'UR' AND sp_decimal > last_sp_decimal
Reads: race_type, last_non_finish_code, sp_decimal, last_sp_decimal
Pre-registration
- Spec hash (sha256 of the canonical pre-spec)
- 233c18cd5375769061097d9bed260f895cacb606fe42d8a3c398392d5d1f4021
- Frozen
- 17 Oct, 03:42
- Nothing in the definition can change after this.
- Confounders
- Class change today: a horse stepping up in class drifts for reasons that have nothing to do with the U, and one dropping in class shortens
- Going, trip or course change from the unseat run changes the price independently
- Last SP context: an unseat in a weak or small field at a short price will naturally drift in stronger company, so drift partly measures the change in race strength
- Thin pool: about half of the 213 chase unseaters, so 150 bets may not be reached; long-priced winners can dominate the result (judge by win counts across price bands, not BSP ROI)
- The vault lacks last_non_finish_code (earlier UR rules spent their vault query on 0 bets), so validation rests on forward tracking
- Runners with a NULL last_sp_decimal drop out silently, which could bias the pool towards particular data sources or dates
- Control
{ "description": "The main comparison is chase unseaters whose price shortened or held against their last SP, in the same population. If the lift comes through a price discount for the U, drifters should beat their price clearly more than shorteners (by at least about 0.15 in A/E). If both groups sit near the pool's 1.40, the lift is not working through a drift. As standard, the other runners in the same races should come out near par (about 0.95 to 1.0), which shows the effect belongs to the horse and not to the race.", "rule": "race_type = 'Chase' AND last_non_finish_code = 'UR' AND sp_decimal <= last_sp_decimal" }
Discovery result
pass broad rule (niche) · 17 Oct, 03:35
- Bets
- 110
- 17 winners
- A/E
- 2.10
- 95%: 1.22 to 3.37
- SP return
- +108.9%
- level stakes
- Betfair SP return
- +313.0%
- 110 bets with a BSP
Strike rate 15.5%. p = 0.0041. Same-race control: the other runners in these races had A/E 0.91, 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 6 survived.
- perturbation: Perturb drift threshold up: price at least 1.2x last SPpass
102 bets · A/E 2.01 (1.10 to 3.37) · control 0.93 · 17 Oct, 03:42
Breakdown
betsA/E0.71.01.32025-10-01 to 2026-04-27611.99after 2026-04-27412.04Bars grow from 1.00, the market. Faded bars have fewer than 40 bets. - perturbation: Perturb drift threshold down: include slight shorteners (price above 0.85x last SP)pass
134 bets · A/E 1.83 (1.10 to 2.86) · control 0.93 · 17 Oct, 03:42
Sealed holdout (vault)
- Bets
- 0
- 17 Oct, 03:42
- A/E
- –
- p = 1.0
- BH threshold then
- 0.0019
- over every vault test so far
- Outcome
- Failed
- vault query (supportive)pass
0 bets · · 17 Oct, 03:42
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.05, 'max_p': 0.2}info
0 bets · · 17 Oct, 03:42
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
302 bets · A/E 1.41 (0.92 to 2.06) · control 0.97 · 17 Oct, 03:35
Breakdown
betsA/E0.71.01.32025-10-01 to 2026-04-271561.41after 2026-04-271461.40Bars grow from 1.00, the market. Faded bars have fewer than 40 bets. - neighbour: drop: last_non_finish_code = 'UR'fail
6,218 bets · A/E 0.99 (0.91 to 1.08) · control 1.01 · 17 Oct, 03:35
Breakdown
Lineage
Agent runs
designer v1ok · 27s · 17 Oct, 03:34
Output (schema-checked)
{ "rule": "race_type = 'Chase' AND last_non_finish_code = 'UR' AND sp_decimal > last_sp_decimal", "refinements": [ { "label": "Drifters under 16/1", "rule": "race_type = 'Chase' AND last_non_finish_code = 'UR' AND sp_decimal > last_sp_decimal AND sp_decimal < 17" }, { "label": "Substantial drift (price at least 1.5x last SP)", "rule": "race_type = 'Chase' AND last_non_finish_code = 'UR' AND sp_decimal >= 1.5 * last_sp_decimal" } ], "control": { "description": "The main comparison is chase unseaters whose price shortened or held against their last SP, in the same population. If the lift comes through a price discount for the U, drifters should beat their price clearly more than shorteners (by at least about 0.15 in A/E). If both groups sit near the pool's 1.40, the lift is not working through a drift. As standard, the other runners in the same races should come out near par (about 0.95 to 1.0), which shows the effect belongs to the horse and not to the race.", "rule": "race_type = 'Chase' AND last_non_finish_code = 'UR' AND sp_decimal <= last_sp_decimal" }, "pass_criteria": { "min_bets": 150, "min_ae": 1.1, "max_p": 0.05 }, "forward_bar": { "min_bets": 100, "min_ae": 1.05, "max_p": 0.2 }, "confounders": [ "Class change today: a horse stepping up in class drifts for reasons that have nothing to do with the U, and one dropping in class shortens", "Going, trip or course change from the unseat run changes the price independently", "Last SP context: an unseat in a weak or small field at a short price will naturally drift in stronger company, so drift partly measures the change in race strength", "Thin pool: about half of the 213 chase unseaters, so 150 bets may not be reached; long-priced winners can dominate the result (judge by win counts across price bands, not BSP ROI)", "The vault lacks last_non_finish_code (earlier UR rules spent their vault query on 0 bets), so validation rests on forward tracking", "Runners with a NULL last_sp_decimal drop out silently, which could bias the pool towards particular data sources or dates" ], "mechanism": "An unseat says little about a chaser's ability, but the form figure (U) reads as a failure and gives no finishing position to rate. Punters and compilers lengthen the horse's price relative to its last start although its ability is unchanged. The drift from last SP is the visible trace of that unearned discount, so the chase unseater lift should sit in the drifters.", "market_miss": "The form line shows a U with no position or beaten distance, so ratings-based compilers and casual punters treat the run as a blank or a negative and push the price out. A drift built only on the missing figure is a discount the horse has not earned. The run behind it (often going fine until the rider came off) is not priced in.", "prediction": { "direction": "positive", "size": "A/E 1.30 to 1.50 on roughly 100 to 120 bets, at or above the pool's 1.40 and at least 0.15 above unseaters whose price shortened", "falsified_if": "Drifting chase unseaters score A/E at or below 1.15, or no higher than shortening or unchanged unseaters (the control). Either would mean the lift does not come through a price discount for the U." }, "notes": "The rule sketch is kept: every column is pre-off, and the comparison with last_sp_decimal excludes NULLs. Today's SP set against last SP is a fair proxy for 'market marks it down', though it mixes in changes in race strength (see confounders). The pool is expected to be under the 150-bet floor. A thin result that points the right way goes to falsification and forward tracking, not to the kill. This test is the mechanism split (drift vs shorten), not another cut of the pool. Earlier findings warn that the jockey, jumping-error and going-well slices failed to separate the pool, so the result counts only if the control differs clearly." }
Timeline
Job 2744 finished
· engine:compute-1
forward result for H-f5df804d (forward vs bar {'min_bets': 100, 'min_ae': 1.05, 'max_p': 0.2}): info
· engine:evaluator
compute-1 took job 2744 (forward_check, attempt 1)
· compute-1
Queued forward_check on the compute lane: daily forward check of a shadow system
· engine:scheduler
Job 2740 finished
· engine:compute-1
H-f5df804d Vault → SHADOW vault SUPPORTIVE: A/E None on 0 bets, p 1 against BH threshold 0.001887 over 53 vault tests
· engine:orchestrator
vault result for H-f5df804d (vault query (supportive)): pass
· engine:orchestrator
H-f5df804d Frozen → FROZENvault vault query started
· engine:orchestrator
compute-1 took job 2740 (vault, attempt 1)
· compute-1
Job 2738 finished
· engine:compute-1
Queued vault on the compute lane: frozen: one sealed vault query
· engine:scheduler
H-f5df804d Falsification → FROZEN survived falsification
· engine:falsification
falsification result for H-f5df804d (price_band: Shorter-priced drifters, 10/1 or shorter): info
· engine:evaluator
compute-1 took job 2738 (attack, attempt 1)
· compute-1
Job 2737 finished
· engine:compute-1
falsification result for H-f5df804d (control: Race-strength confounder: today's field no bigger than last time + 2): pass
· engine:evaluator
compute-1 took job 2737 (attack, attempt 1)
· compute-1
Job 2736 finished
· engine:compute-1
falsification result for H-f5df804d (control: Class confounder: drifters not stepping up in class): pass
· engine:evaluator