Hypotheses · seasonal · H-5167b372
All early-spring Flat handicap returners: a calendar effect rival to the four-year-old story
forward A/E 0.0 on 0 bets, SP ROI None%, BSP ROI None% (p None)
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:41
- Tests logged
- 19
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-1369adb4 (Non-four-year-old second-tier spring returners: age control inside the) was predicted negative but came out the other way: A/E 1.17 on 333 bets (p 0.141 for the opposite direction). O-54e07df5
- H-71a94a07 (Rival: short-priced spring handicap returners pay at any age, so H126'): the period '2025-10-01 to 2026-04-27' carries the effect (A/E 1.18) while the rest score after 2026-04-27 0.97. O-7ebaf3d7
- AskedIs the thread's lift a calendar effect of one early spring: returners of any age and any price beating their SP in March to 27 April 2026, then fading? answered
- MechanismEarly in the turf season, a horse that comes back after a winter break was usually brought back on purpose by its trainer, fit and pointed at a race. Its form figures, though, are months old, often from different ground or a different surface. That holds at every age. Once late April arrives, the horses have had a run and current form takes over, so the effect fades.
- Why the market misses itThe form book shows a long absence and old figures, and punters mark returners down for rust. In March and April almost everything has fresh-looking form from the all-weather except these horses, so the gap makes them look worse than their readiness justifies. The visible layoff is overweighted.
- Predictedpositive, A/E 1.05 to 1.12 on 1500+ bets, with March-April clearly above May
- Falsified if
Mechanism and rationale
Early in the turf season, a horse that comes back after a winter break was usually brought back on purpose by its trainer, fit and pointed at a race. Its form figures, though, are months old, often from different ground or a different surface. That holds at every age. Once late April arrives, the horses have had a run and current form takes over, so the effect fades.
The rule
race_type = 'Flat' AND is_handicap = 1 AND month IN (3, 4) AND days_since_last_run >= 150
Reads: race_type, is_handicap, month, days_since_last_run
Pre-registration
- Spec hash (sha256 of the canonical pre-spec)
- 5c477d506235e0b7dcbb89fabddf3cac5d80dcb56189eeb848aff2510c6fbe3f
- Frozen
- 16 Oct, 13:51
- Nothing in the definition can change after this.
- Confounders
- Only one spring in the discovery data: 306 of 322 bets in the four-year-old rule fell in one period, so a quirk of one season cannot be told apart from a repeatable effect
- GB/IRE mix: Ireland scored below 1.0 in most rules in this thread, so a pooled result may come from GB alone
- Price-band mix: 16/1+ returners scored about 0.8 to 1.0 elsewhere and may dilute the result or swing it on a few wins
- Age composition: a pooled lift could come only from the four-year-olds already found (1.29 on 322); the age <> 4 refinement must hold on its own
- Three-year-old-only handicaps versus open-age races: the races have different structures and returner shares
- Going in spring 2026 may have favoured fresh horses, a weather effect rather than a market error
- Pre/post 27 April fade seen in earlier rules: the lift may sit in one narrow early window
- Control
{ "description": "Same-race other runners should score about 1.0 (0.97 to 1.0). If they also beat their prices, the lift belongs to the races (e.g. spring 2026 going or SP quirks), not to returners. The calendar mechanism also predicts a fade: the same returner rule in May should score clearly below the March-April rule, at or near 1.0. If May scores as well as March-April, the timing part of the mechanism is not supported.", "rule": "race_type = 'Flat' AND is_handicap = 1 AND month = 5 AND days_since_last_run >= 150" }
Discovery result
pass broad rule (niche) · 16 Oct, 13:46
- Bets
- 1,424
- 130 winners
- A/E
- 1.09
- 95%: 0.91 to 1.29
- SP return
- -28.1%
- level stakes
- Betfair SP return
- -8.8%
- 1,424 bets with a BSP
Strike rate 9.1%. p = 0.17. Same-race control: the other runners in these races had A/E 0.98, 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.
- partition: Rival test: non-four-year-olds at 14/1 or shorterpass
576 bets · A/E 1.07 (0.84 to 1.35) · control 0.98 · 16 Oct, 13:51
Breakdown
betsA/E0.71.01.32025-10-01 to 2026-04-275321.03after 2026-04-27441.70Bars grow from 1.00, the market. Faded bars have fewer than 40 bets. - perturbation: Layoff threshold loosened to 120 dayspass
1,771 bets · A/E 1.11 (0.95 to 1.30) · control 0.97 · 16 Oct, 13:51
Sealed holdout (vault)
- Bets
- 6,934
- 16 Oct, 13:51
- A/E
- 1.03
- p = 0.24
- BH threshold then
- 0.0026
- over every vault test so far
- Outcome
- Failed
- vault query (supportive)pass
6,934 bets · A/E 1.03 (0.95 to 1.11) · control 1.00 · 16 Oct, 13:51
Breakdown
betsA/E0.71.01.32020-222,8381.072023 to Sept 20254,0961.00
Forward record
- forward vs bar {'min_bets': 200, 'min_ae': 1.03, 'max_p': 0.2}info
0 bets · · 16 Oct, 13:51
Breakdown
betsA/E0.71.01.3forward0–Bars grow from 1.00, the market. Faded bars have fewer than 40 bets.
Other experiments
- neighbour: >= 150 -> 120 (-20%)pass
1,771 bets · A/E 1.11 (0.95 to 1.30) · control 0.97 · 16 Oct, 13:51
Breakdown
betsA/E0.71.01.32025-10-01 to 2026-04-271,6561.08after 2026-04-271151.59Bars grow from 1.00, the market. Faded bars have fewer than 40 bets. - neighbour: >= 150 -> 180 (+20%)pass
816 bets · A/E 1.13 (0.90 to 1.42) · control 0.97 · 16 Oct, 13:51
Breakdown
Lineage
Agent runs
designer v1ok · 29s · 16 Oct, 13:41
Output (schema-checked)
{ "rule": "race_type = 'Flat' AND is_handicap = 1 AND month IN (3, 4) AND days_since_last_run >= 150", "refinements": [ { "label": "Rival test: all ages except four-year-olds", "rule": "race_type = 'Flat' AND is_handicap = 1 AND month IN (3, 4) AND days_since_last_run >= 150 AND age <> 4" }, { "label": "14/1 or shorter: edges in this thread die in the 16/1+ tail", "rule": "race_type = 'Flat' AND is_handicap = 1 AND month IN (3, 4) AND days_since_last_run >= 150 AND sp_decimal <= 15" }, { "label": "Turf only: the mechanism is about the start of the turf season against AW-fresh rivals", "rule": "race_type = 'Flat' AND is_handicap = 1 AND month IN (3, 4) AND days_since_last_run >= 150 AND surface = 'Turf'" } ], "control": { "description": "Same-race other runners should score about 1.0 (0.97 to 1.0). If they also beat their prices, the lift belongs to the races (e.g. spring 2026 going or SP quirks), not to returners. The calendar mechanism also predicts a fade: the same returner rule in May should score clearly below the March-April rule, at or near 1.0. If May scores as well as March-April, the timing part of the mechanism is not supported.", "rule": "race_type = 'Flat' AND is_handicap = 1 AND month = 5 AND days_since_last_run >= 150" }, "pass_criteria": { "min_bets": 1000, "min_ae": 1.05, "max_p": 0.05 }, "forward_bar": { "min_bets": 200, "min_ae": 1.03, "max_p": 0.2 }, "confounders": [ "Only one spring in the discovery data: 306 of 322 bets in the four-year-old rule fell in one period, so a quirk of one season cannot be told apart from a repeatable effect", "GB/IRE mix: Ireland scored below 1.0 in most rules in this thread, so a pooled result may come from GB alone", "Price-band mix: 16/1+ returners scored about 0.8 to 1.0 elsewhere and may dilute the result or swing it on a few wins", "Age composition: a pooled lift could come only from the four-year-olds already found (1.29 on 322); the age <> 4 refinement must hold on its own", "Three-year-old-only handicaps versus open-age races: the races have different structures and returner shares", "Going in spring 2026 may have favoured fresh horses, a weather effect rather than a market error", "Pre/post 27 April fade seen in earlier rules: the lift may sit in one narrow early window" ], "mechanism": "Early in the turf season, a Flat handicapper that comes back after 150+ days off was usually brought back on purpose by its trainer, fit and aimed at the race. Its visible form is months old, often run on different ground or surface, so its handicap mark and figures describe a horse that may have strengthened or freshened since. This should hold at every age, not just at four. Once late April passes, most horses have had a run, current form takes over and the effect should fade by May.", "market_miss": "In March and April most rivals carry recent-looking all-weather or winter form, while returners show a long gap and stale figures. Punters mark the visible layoff down as rust and overweight it compared with the trainer's deliberate placing, so returners drift to prices longer than their readiness justifies. The market corrects once the returners have had a run.", "prediction": { "direction": "positive", "size": "A/E about 1.05 to 1.12 on 1500+ bets, with March-April clearly above the May control and non-four-year-olds also above 1.03", "falsified_if": "A/E below 1.02 on 1000+ bets; or the age <> 4 refinement scores 1.0 or below while four-year-olds stay at 1.10+ (which would bring back the age story); or May returners score as high as March-April" }, "notes": "This is a rival explanation to H-2d115a58 (the March-April four-year-old rule, 1.286 on 322). The broad rule includes those bets, so a pooled pass alone is not enough: the age <> 4 refinement decides between the calendar story and the age story. Earlier widenings to any age died on one price band or on Ireland, so check the GB/IRE and price-band splits before trusting a pooled pass. min_bets is raised to 1000 because the prediction expects 1500+ bets and the broad rule is cheap to power." }
Timeline
Job 1712 finished
· engine:compute-1
forward result for H-5167b372 (forward vs bar {'min_bets': 200, 'min_ae': 1.03, 'max_p': 0.2}): info
· engine:evaluator
compute-1 took job 1712 (forward_check, attempt 1)
· compute-1
Queued forward_check on the compute lane: daily forward check of a shadow system
· engine:scheduler
Job 1685 finished
· engine:compute-1
hypothesis note H-5167b372
· engine:perturb
perturbation result for H-5167b372 (neighbour: drop: days_since_last_run >= 150): pass
· engine:perturb
perturbation result for H-5167b372 (neighbour: drop: month IN (3, 4)): pass
· engine:perturb
perturbation result for H-5167b372 (neighbour: drop: is_handicap = 1): pass
· engine:perturb
perturbation result for H-5167b372 (neighbour: drop: race_type = 'Flat'): pass
· engine:perturb
perturbation result for H-5167b372 (neighbour: >= 150 -> 180 (+20%)): pass
· engine:perturb
perturbation result for H-5167b372 (neighbour: >= 150 -> 120 (-20%)): pass
· engine:perturb
compute-1 took job 1685 (mutate, attempt 1)
· compute-1
Job 1710 finished
· engine:compute-1
H-5167b372 Vault → SHADOW vault SUPPORTIVE: A/E 1.03 on 6934 bets, p 0.2352 against BH threshold 0.002564 over 39 vault tests
· engine:orchestrator
vault result for H-5167b372 (vault query (supportive)): pass
· engine:orchestrator