Hypotheses · seasonal · H-98ae1db9
Turf-to-all-weather handicap returners after 150+ days beat their prices in any month
vault CONTRADICTED: A/E 0.979 on 3155 bets, p 0.6362 against BH threshold 0.002381 over 42 vault tests
Part of the thread “H126: lightly raced four year old returns” 32 hypotheses
- Proposed
- Designed
- Discovery
- Promising
- Falsification
- Frozen
- Vault
- Provisional
- Shadow
- Validated
- Live
- Source
- Investigator agent, v1
- Made by
- generalise
- Created
- 16 Oct, 14:03
- Tests logged
- 16
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-ce91b64d (All-weather spring returners carry the calendar lift, not turf returne) passed discovery as a niche: A/E 1.2 on 480 bets (p 0.11), same-race control 0.96. O-0ab1a07a
- H-ce91b64d (All-weather spring returners carry the calendar lift, not turf returne): the country 'GB' carries the effect (A/E 1.23) while the rest score IRE 0.45. O-389ee4f8
- AskedIs the returner lift a year-round all-weather effect, strongest when a horse switches from a turf campaign to the AW after 150+ days, rather than anything seasonal? answered
- MechanismA horse that last ran on turf and returns to an AW handicap after 150+ days does so by its trainer's choice. AW programmes run all year, so the trainer can pick the day the horse is ready and the race suits. It meets exposed AW regulars on a mark set on turf.
- Why the market misses itPunters price AW handicaps on recent AW figures. A turf horse back from a long break has none, only old turf form, so the market discounts it twice: once for rust and once for the surface.
- Predictedpositive, A/E 1.10 to 1.25 on 600+ bets
- Falsified ifA/E below 1.03 on 600+ bets, or the months outside March-April scoring below 1.0, which would put the lift back in the calendar
Mechanism and rationale
A horse that last ran on turf and returns to an AW handicap after 150+ days does so by its trainer's choice. AW programmes run all year, so the trainer can pick the day the horse is ready and the race suits. It meets exposed AW regulars on a mark set on turf.
The rule
race_type = 'Flat' AND is_handicap = 1 AND surface = 'AW' AND last_surface = 'Turf' AND days_since_last_run >= 150
Reads: race_type, is_handicap, surface, last_surface, days_since_last_run
Pre-registration
- Spec hash (sha256 of the canonical pre-spec)
- 4ba4ce9f7cd7320977b69083175f0fb6575360941954f1f523fa53cca4264ea5
- Frozen
- 16 Oct, 14:13
- Nothing in the definition can change after this.
- Confounders
- Not independent: built from discovery-zone neighbours of H-ce91b64d (AW March-April returners at 1.195 on 480), so the broad rule's result will be partly inherited from that spring subset; only the outside-March-April refinement tests anything new
- Late-autumn/winter AW returners may be turf horses dropping in class after a turf season; race_class is not available for IRE in the window, so the class drop cannot be cleanly separated
- GB-heavy: Dundalk is the only Irish AW track, and Ireland has underperformed across this thread
- The discovery window covers only about one year, so one season's crop or one set of yards may drive the result
- Trainer selection: the yards that switch fresh turf horses to AW may be strong yards whose edge would show anyway
- Price band: earlier returner lifts sat in the short bands, but AW 16/1+ returners scored 1.28 on 626, so the result should be checked by price band for concentration
- Control
{ "description": "Same-race other runners should score about 0.95-1.0 (overround-neutral). A second control separates the surface switch from plain freshness: AW handicap returners after 150+ days whose last run was also on AW. If the turf-switch mechanism is real, these should score clearly below the main rule (about 1.0 or lower). If they match it, the lift belongs to long-break AW returners in general, not to the turf-to-AW switch.", "rule": "race_type = 'Flat' AND is_handicap = 1 AND surface = 'AW' AND last_surface = 'AW' AND days_since_last_run >= 150" }
Discovery result
pass broad rule (niche) · 16 Oct, 14:05
- Bets
- 654
- 64 winners
- A/E
- 1.23
- 95%: 0.95 to 1.57
- SP return
- -14.7%
- level stakes
- Betfair SP return
- +2.8%
- 642 bets with a BSP
Strike rate 9.8%. p = 0.060. Same-race control: the other runners in these races had A/E 0.97, 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: Break threshold loosened to 120 dayspass
899 bets · A/E 1.29 (1.04 to 1.59) · control 0.96 · 16 Oct, 14:12
Breakdown
betsA/E0.71.01.32025-10-01 to 2026-04-277391.31after 2026-04-271601.22Bars grow from 1.00, the market. Faded bars have fewer than 40 bets. - perturbation: Break threshold tightened to 180 dayspass
446 bets · A/E 1.09 (0.77 to 1.50) · control 0.99 · 16 Oct, 14:13
Sealed holdout (vault)
- Bets
- 3,155
- 16 Oct, 14:13
- A/E
- 0.98
- p = 0.64
- BH threshold then
- 0.0024
- over every vault test so far
- Outcome
- Failed
- vault query (contradicted)fail
3,155 bets · A/E 0.98 (0.86 to 1.11) · control 1.01 · 16 Oct, 14:13
Breakdown
betsA/E0.71.01.32020-221,1951.042023 to Sept 20251,9600.94
Forward record
No forward record. Shadow tracking starts after the vault and counts only races run after the freeze.
Other experiments
- neighbour: >= 150 -> 120 (-20%)pass
899 bets · A/E 1.29 (1.04 to 1.59) · control 0.96 · 16 Oct, 14:05
Breakdown
betsA/E0.71.01.32025-10-01 to 2026-04-277391.31after 2026-04-271601.22Bars grow from 1.00, the market. Faded bars have fewer than 40 bets. - neighbour: >= 150 -> 180 (+20%)pass
446 bets · A/E 1.09 (0.77 to 1.50) · control 0.99 · 16 Oct, 14:05
Breakdown
Lineage
Agent runs
designer v1ok · 1m 6s · 16 Oct, 14:03
Output (schema-checked)
{ "rule": "race_type = 'Flat' AND is_handicap = 1 AND surface = 'AW' AND last_surface = 'Turf' AND days_since_last_run >= 150", "refinements": [ { "label": "outside March-April (the calendar falsification test)", "rule": "race_type = 'Flat' AND is_handicap = 1 AND surface = 'AW' AND last_surface = 'Turf' AND days_since_last_run >= 150 AND month NOT IN (3, 4)" }, { "label": "GB only (the thread's Ireland drag)", "rule": "race_type = 'Flat' AND is_handicap = 1 AND surface = 'AW' AND last_surface = 'Turf' AND days_since_last_run >= 150 AND region = 'GB'" } ], "control": { "description": "Same-race other runners should score about 0.95-1.0 (overround-neutral). A second control separates the surface switch from plain freshness: AW handicap returners after 150+ days whose last run was also on AW. If the turf-switch mechanism is real, these should score clearly below the main rule (about 1.0 or lower). If they match it, the lift belongs to long-break AW returners in general, not to the turf-to-AW switch.", "rule": "race_type = 'Flat' AND is_handicap = 1 AND surface = 'AW' AND last_surface = 'AW' AND days_since_last_run >= 150" }, "pass_criteria": { "min_bets": 300, "min_ae": 1.08, "max_p": 0.05 }, "forward_bar": { "min_bets": 150, "min_ae": 1.03, "max_p": 0.2 }, "confounders": [ "Not independent: built from discovery-zone neighbours of H-ce91b64d (AW March-April returners at 1.195 on 480), so the broad rule's result will be partly inherited from that spring subset; only the outside-March-April refinement tests anything new", "Late-autumn/winter AW returners may be turf horses dropping in class after a turf season; race_class is not available for IRE in the window, so the class drop cannot be cleanly separated", "GB-heavy: Dundalk is the only Irish AW track, and Ireland has underperformed across this thread", "The discovery window covers only about one year, so one season's crop or one set of yards may drive the result", "Trainer selection: the yards that switch fresh turf horses to AW may be strong yards whose edge would show anyway", "Price band: earlier returner lifts sat in the short bands, but AW 16/1+ returners scored 1.28 on 626, so the result should be checked by price band for concentration" ], "mechanism": "A horse whose last run was on turf and that comes back in an AW Flat handicap after 150+ days is back because its trainer chose to bring it back then. AW racing runs all year, so the trainer can pick the day the horse is fit and the race suits it. It then meets exposed AW regulars off a mark set on turf, often a mark that has eased during the turf campaign or is soft by AW standards. If this is right, the lift should show in every month, not only in March-April, and it should beat AW-to-AW returners after the same break.", "market_miss": "Punters price AW handicaps on recent AW form. A turf horse back from a long break has neither recent form nor AW figures, only old turf form, so the market marks it down twice: once for rust and once for the surface change. Neither mark-down allows for the trainer having picked the moment.", "prediction": { "direction": "positive", "size": "A/E 1.10 to 1.25 on 600+ bets", "falsified_if": "Broad-rule A/E below 1.03 on 600+ bets; or the outside-March-April refinement scoring below 1.0 (the lift is calendar, not surface switch); or the AW-to-AW returner control scoring as high as the main rule (the lift is freshness, not the switch)" }, "notes": "I checked the catalogue: surface, last_surface and month are pre-off and available from 2020-07 in both regions. The rule sketch is kept as it was. I added no price cap because the findings show AW 16/1+ returners did well (1.28 on 626), so the reasoning does not call for one. A class-drop refinement was left out because race_class only starts for IRE in 2026-07. The pass criteria are stricter than the floors (300 bets, A/E 1.08), because the rule overlaps H-ce91b64d and should clear more than the minimum to count as new evidence." }
Timeline
Job 1770 finished
· engine:compute-1
H-98ae1db9 Vault → KILLEDfailed the vault vault CONTRADICTED: A/E 0.979 on 3155 bets, p 0.6362 against BH threshold 0.002381 over 42 vault tests
· engine:orchestrator
vault result for H-98ae1db9 (vault query (contradicted)): fail
· engine:orchestrator
H-98ae1db9 Frozen → FROZENvault vault query started
· engine:orchestrator
compute-1 took job 1770 (vault, attempt 1)
· compute-1
Job 1768 finished
· engine:compute-1
Queued vault on the compute lane: frozen: one sealed vault query
· engine:scheduler
H-98ae1db9 Falsification → FROZEN survived falsification
· engine:falsification
falsification result for H-98ae1db9 (control: Control: turf-to-AW switchers after a medium 60-149 day gap): pass
· engine:evaluator
compute-1 took job 1768 (attack, attempt 1)
· compute-1
Job 1767 finished
· engine:compute-1
falsification result for H-98ae1db9 (price_band: 14/1 or shorter only: strip the longshot tail): pass
· engine:evaluator
compute-1 took job 1767 (attack, attempt 1)
· compute-1
Job 1766 finished
· engine:compute-1
falsification result for H-98ae1db9 (partition: Outside March-April: the year-round claim): pass
· engine:evaluator
compute-1 took job 1766 (attack, attempt 1)
· compute-1
Job 1765 finished
· engine:compute-1
falsification result for H-98ae1db9 (perturbation: Break threshold tightened to 180 days): pass
· engine:evaluator
compute-1 took job 1765 (attack, attempt 1)
· compute-1