Hypotheses · seasonal · H-ce91b64d
All-weather spring returners carry the calendar lift, not turf returners
falsified: IRE A/E 0.449
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
- rival-explanation
- Created
- 16 Oct, 13:53
- 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-5167b372 (All early-spring Flat handicap returners: a calendar effect rival to t) met the sealed vault supportive: A/E 1.03 on 6934 bets (p 0.2352, threshold 0.0026). O-352505b3
- H-5167b372 (All early-spring Flat handicap returners: a calendar effect rival to t) passed discovery as a niche: A/E 1.09 on 1424 bets (p 0.173), same-race control 0.98. O-c14824ce
- AskedDoes the March-April returner lift sit in all-weather races rather than turf, contrary to the turf-season mechanism? answered
- MechanismIn March and early April, all-weather handicaps are full of horses that have raced all winter: exposed, with marks that are well known and often stuck. A horse returning from a summer and autumn turf campaign meets them fresh, with a turf mark that may flatter or understate it on the surface. Trainers who bring such a horse to the all-weather in spring usually do so because it is ready and the race suits.
- Why the market misses itOn the all-weather in spring, punters lean on recent all-weather figures. A returner has none, only old turf form months back, so the market discounts it as rusty and unproven on the surface.
- Predictedpositive, A/E 1.08 to 1.20 on 400+ bets
- Falsified ifA/E below 1.03 on 400+ bets, or not above the turf-only partition (1.027)
- Rule sketch
race_type = 'Flat' AND is_handicap = 1 AND month IN (3, 4) AND days_since_last_run >= 150 AND surface <> 'Turf'
The question's answer so far: Mostly yes at discovery: AW spring returners 1.195 on 480 against turf 1.027 on 944. Dropping the month still gives 1.138 on 1213, so it is not a start-of-turf-season effect, though it is not validated (p 0.11).
Mechanism and rationale
In March and early April, all-weather handicaps are full of horses that have raced all winter: exposed, with marks that are well known and often stuck. A horse returning from a summer and autumn turf campaign meets them fresh, with a turf mark that may flatter or understate it on the surface. Trainers who bring such a horse to the all-weather in spring usually do so because it is ready and the race suits.
The rule
race_type = 'Flat' AND is_handicap = 1 AND month IN (3, 4) AND days_since_last_run >= 150 AND surface = 'AW'
Reads: race_type, is_handicap, month, days_since_last_run, surface
Pre-registration
- Spec hash (sha256 of the canonical pre-spec)
- e6d77e46aaaf97bd7e06562958f639cfe3ef9f60da7cdf1f31c2c65842589834
- Frozen
- not frozen
- The definition can still change.
- Confounders
- Seen before proposal: the AW figure (about 1.2 on about 480) is inferred from the pooled rule (1.09 on 1424) minus the turf partition (1.027 on 944), so discovery is not independent
- One spring of discovery data, and the thread's lifts cluster before about 27 April
- GB-heavy: Irish all-weather is Dundalk only, and the thread is weak in Ireland
- Price-band mix: the 16/1+ returner tail scored 0.74 and can swing a small sample either way
- The pooled calendar rule met the vault at only 1.03 on 6934, so any AW lift has to be offset by a turf shortfall out of sample
- Returners whose last run was on the AW (winter-break AW horses) are mixed in with returning turf horses, which dilutes the mechanism
- Race-class mix: spring AW handicaps are often low-grade, so class drops may be doing the work
- Control
{ "description": "Same-race other runners (mostly horses that raced through the winter) should score at or below 1.0. If they also beat their prices, the lift belongs to the races, not the returners. The other comparison that matters is the turf returner partition: the same rule with surface = 'Turf', which was predeclared and scored 1.027 on 944 at discovery. The AW rule has to clearly beat it for the surface explanation to stand.", "rule": "race_type = 'Flat' AND is_handicap = 1 AND month IN (3, 4) AND days_since_last_run >= 150 AND surface = 'Turf'" }
Discovery result
pass broad rule (niche) · 16 Oct, 13:58
- Bets
- 480
- 54 winners
- A/E
- 1.20
- 95%: 0.90 to 1.56
- SP return
- -18.8%
- level stakes
- Betfair SP return
- -4.4%
- 480 bets with a BSP
Strike rate 11.2%. p = 0.11. 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. 4 of 5 survived.
- perturbation: Absence threshold loosened to 120 dayspass
639 bets · A/E 1.14 (0.88 to 1.45) · control 0.97 · 16 Oct, 14:05
Breakdown
betsA/E0.71.01.32025-10-01 to 2026-04-275901.11after 2026-04-27491.60Bars grow from 1.00, the market. Faded bars have fewer than 40 bets. - perturbation: Absence threshold tightened to 180 dayspass
266 bets · A/E 1.18 (0.79 to 1.69) · control 0.97 · 16 Oct, 14:05
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.
Other experiments
- neighbour: >= 150 -> 120 (-20%)pass
639 bets · A/E 1.14 (0.88 to 1.45) · control 0.97 · 16 Oct, 13:58
Breakdown
betsA/E0.71.01.32025-10-01 to 2026-04-275901.11after 2026-04-27491.60Bars grow from 1.00, the market. Faded bars have fewer than 40 bets. - neighbour: >= 150 -> 180 (+20%)pass
266 bets · A/E 1.18 (0.79 to 1.69) · control 0.97 · 16 Oct, 13:58
Breakdown
Lineage
Agent runs
designer v1ok · 39s · 16 Oct, 13:53
Output (schema-checked)
{ "rule": "race_type = 'Flat' AND is_handicap = 1 AND month IN (3, 4) AND days_since_last_run >= 150 AND surface = 'AW'", "refinements": [ { "label": "Returning from a turf campaign", "rule": "race_type = 'Flat' AND is_handicap = 1 AND month IN (3, 4) AND days_since_last_run >= 150 AND surface = 'AW' AND last_surface = 'Turf'" }, { "label": "14/1 or shorter (drop the over-bet 16/1+ tail)", "rule": "race_type = 'Flat' AND is_handicap = 1 AND month IN (3, 4) AND days_since_last_run >= 150 AND surface = 'AW' AND sp_decimal <= 15" }, { "label": "GB only (Irish AW is Dundalk alone and the thread is weak in Ireland)", "rule": "race_type = 'Flat' AND is_handicap = 1 AND month IN (3, 4) AND days_since_last_run >= 150 AND surface = 'AW' AND region = 'GB'" } ], "control": { "description": "Same-race other runners (mostly horses that raced through the winter) should score at or below 1.0. If they also beat their prices, the lift belongs to the races, not the returners. The other comparison that matters is the turf returner partition: the same rule with surface = 'Turf', which was predeclared and scored 1.027 on 944 at discovery. The AW rule has to clearly beat it for the surface explanation to stand.", "rule": "race_type = 'Flat' AND is_handicap = 1 AND month IN (3, 4) AND days_since_last_run >= 150 AND surface = 'Turf'" }, "pass_criteria": { "min_bets": 300, "min_ae": 1.08, "max_p": 0.05 }, "forward_bar": { "min_bets": 100, "min_ae": 1.03, "max_p": 0.2 }, "confounders": [ "Seen before proposal: the AW figure (about 1.2 on about 480) is inferred from the pooled rule (1.09 on 1424) minus the turf partition (1.027 on 944), so discovery is not independent", "One spring of discovery data, and the thread's lifts cluster before about 27 April", "GB-heavy: Irish all-weather is Dundalk only, and the thread is weak in Ireland", "Price-band mix: the 16/1+ returner tail scored 0.74 and can swing a small sample either way", "The pooled calendar rule met the vault at only 1.03 on 6934, so any AW lift has to be offset by a turf shortfall out of sample", "Returners whose last run was on the AW (winter-break AW horses) are mixed in with returning turf horses, which dilutes the mechanism", "Race-class mix: spring AW handicaps are often low-grade, so class drops may be doing the work" ], "mechanism": "In March and early April, all-weather handicaps are full of horses that have raced all winter: exposed, with well-known marks that are often stuck. A horse coming back after 150+ days, usually from a summer and autumn turf campaign, meets them fresh on a mark set elsewhere. A trainer who chooses a spring AW handicap for such a horse rather than waiting for turf usually does so because it is ready and the race suits. So the lift seen in March-April returners should sit on the AW, not on turf.", "market_miss": "On the spring all-weather, punters lean on recent AW figures. A returner has none, only turf form from months back, so the market marks it down as rusty and unproven on the surface. Its readiness, which the trainer signals by running it, goes underweighted.", "prediction": { "direction": "positive", "size": "A/E 1.08 to 1.20 on 400+ bets", "falsified_if": "A/E below 1.03 on 300+ bets, or not above the turf-only returner partition (1.027), or same-race other runners scoring as high as the selections" }, "notes": "I changed surface <> 'Turf' to surface = 'AW' so the rule is explicit. The two match on the known values, and both drop NULLs. Pass criteria are stricter than the floor (300 bets, A/E 1.08), because the split was seen before the rule was proposed and the predicted size starts at 1.08. Refinement 1 is the mechanism's own condition (a turf campaign before the break). Refinement 2 comes from the over-bet 16/1+ returner tail. Refinement 3 comes from the thread's GB-only lift." }
Timeline
Job 1741 finished
· engine:compute-1
H-ce91b64d Falsification → KILLED falsified: IRE A/E 0.449
· engine:falsification
falsification result for H-ce91b64d (partition: No class drop: same or higher grade than last time): pass
· engine:evaluator
compute-1 took job 1741 (attack, attempt 1)
· compute-1
Job 1740 finished
· engine:compute-1
falsification result for H-ce91b64d (control: Control: returners whose last run was also on the AW): fail
· engine:evaluator
compute-1 took job 1740 (attack, attempt 1)
· compute-1
Job 1739 finished
· engine:compute-1
falsification result for H-ce91b64d (partition: Core mechanism: last run on turf, now on spring AW): pass
· engine:evaluator
compute-1 took job 1739 (attack, attempt 1)
· compute-1
Job 1738 finished
· engine:compute-1
falsification result for H-ce91b64d (perturbation: Absence threshold tightened to 180 days): pass
· engine:evaluator
compute-1 took job 1738 (attack, attempt 1)
· compute-1
Job 1737 finished
· engine:compute-1
falsification result for H-ce91b64d (perturbation: Absence threshold loosened to 120 days): pass
· engine:evaluator
compute-1 took job 1737 (attack, attempt 1)
· compute-1
Job 1725 finished
· engine:ai-1
Queued attack on the compute lane: attack: No class drop: same or higher grade than last time
· engine:scheduler
Queued attack on the compute lane: attack: Control: returners whose last run was also on the AW
· engine:scheduler
Queued attack on the compute lane: attack: Core mechanism: last run on turf, now on spring AW
· engine:scheduler