Hypotheses · seasonal · H-1369adb4
Non-four-year-old second-tier spring returners: age control inside the 3/1–7/1 band
fails: A/E 1.166, needs 0.95 or lower; p 0.8872 (lower tail), needs 0.05; periods [1.24, 1.01], each needs 0.99 or lower; A/E 1.166 against same-race control 0.967, needs 0.03 below
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
- test-mechanism
- Created
- 16 Oct, 13:38
- Tests logged
- 1
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-12ef9cb4 (Second-tier fancied spring handicap returners (3/1 to 7/1) beat their ) passed discovery as a niche: A/E 1.08 on 473 bets (p 0.263), same-race control 0.99. O-3011d3a2
- H-12ef9cb4 (Second-tier fancied spring handicap returners (3/1 to 7/1) beat their ): the country 'GB' carries the effect (A/E 1.12) while the rest score IRE 0.88. O-48b34371
- H-71a94a07 (Rival: short-priced spring handicap returners pay at any age, so H126') passed discovery but was falsified: driven by one price band (up to 3/1): the rest score 0.71; IRE: too few bets to judge. O-bf6f33c9
- AskedWithin the same 3/1–7/1 price band, do spring handicap returners that are not four-year-olds score at or below their prices, so that age four carries the all-age 1.08? answered
- MechanismFour-year-olds fill out physically over their first winter as older horses, but their mark still reflects three-year-old form. Three-year-olds are still progressing on a mark that keeps moving, and older horses are fully developed, so neither group should have a hidden gain after a break.
- Why the market misses itThe form book shows a long absence and a mark set the previous season. Punters price a returner by its fitness and connections, not by how much its age class matures over a winter, so a hidden gain should exist only at age four.
- Predictednegative, A/E 0.92 to 1.02 on 300+ bets
Mechanism and rationale
Four-year-olds fill out physically over their first winter as older horses, but their mark still reflects three-year-old form. Three-year-olds are still progressing on a mark that keeps moving, and older horses are fully developed, so neither group should have a hidden gain after a break.
The rule
race_type = 'Flat' AND is_handicap = 1 AND month IN (3, 4, 5) AND age <> 4 AND days_since_last_run >= 150 AND sp_decimal >= 4 AND sp_decimal <= 8
Reads: race_type, is_handicap, month, age, days_since_last_run, sp_decimal
Pre-registration
- Spec hash (sha256 of the canonical pre-spec)
- 58663b958a3590214eeb1d934284135dd7a9ea2da91c4cd42c366ad777f22a3e
- Frozen
- not frozen
- The definition can still change.
- Confounders
- prior_runs not held fixed: the four-year-old lift was measured on prior_runs <= 10, but this group is mostly exposed older horses, so any gap may come from exposure and not age (refinement 1 holds prior_runs fixed)
- Irish share: the any-age second-tier lift was GB-only (IRE 0.88 on 80), so a different Irish share between age groups could fake an age effect
- three-year-olds and older horses mixed in one group: they could pull in opposite directions (3yo progressing, 5+ at 0.64-0.76 in the lightly raced rules) and average out to about 1.0
- one spring dominating the sample, and the lift fading after late April
- field size and race class differences between age groups (3yo-only handicaps against open-age races)
- Control
{ "description": "Same-race other runners should score about 0.99, as they did for the any-age second-tier rule. The comparison that matters is the four-year-old version of the same band: same conditions with age = 4. The mechanism predicts a clear lift there (above 1.10) while the rule here sits near 1.0. If both groups score the same, the age story fails and the lift belongs to the price band or to returners in general.", "rule": "race_type = 'Flat' AND is_handicap = 1 AND month IN (3, 4, 5) AND age = 4 AND days_since_last_run >= 150 AND sp_decimal >= 4 AND sp_decimal <= 8" }
Discovery result
fail broad rule · 16 Oct, 13:40
- Bets
- 333
- 56 winners
- A/E
- 1.17
- 95%: 0.88 to 1.51
- SP return
- -4.8%
- level stakes
- Betfair SP return
- +7.6%
- 333 bets with a BSP
Strike rate 16.8%. p = 0.14. 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
No attacks yet. Only promising ideas are attacked.
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.
Lineage
Agent runs
designer v1ok · 35s · 16 Oct, 13:38
Output (schema-checked)
{ "rule": "race_type = 'Flat' AND is_handicap = 1 AND month IN (3, 4, 5) AND age <> 4 AND days_since_last_run >= 150 AND sp_decimal >= 4 AND sp_decimal <= 8", "refinements": [ { "label": "lightly raced, matching the four-year-old rule", "rule": "race_type = 'Flat' AND is_handicap = 1 AND month IN (3, 4, 5) AND age <> 4 AND days_since_last_run >= 150 AND sp_decimal >= 4 AND sp_decimal <= 8 AND prior_runs <= 10" }, { "label": "GB only, where the any-age second-tier lift sat (1.12 on 393)", "rule": "race_type = 'Flat' AND is_handicap = 1 AND month IN (3, 4, 5) AND age <> 4 AND days_since_last_run >= 150 AND sp_decimal >= 4 AND sp_decimal <= 8 AND region = 'GB'" }, { "label": "older horses only (age 5+), the fully developed group", "rule": "race_type = 'Flat' AND is_handicap = 1 AND month IN (3, 4, 5) AND age >= 5 AND days_since_last_run >= 150 AND sp_decimal >= 4 AND sp_decimal <= 8" } ], "control": { "description": "Same-race other runners should score about 0.99, as they did for the any-age second-tier rule. The comparison that matters is the four-year-old version of the same band: same conditions with age = 4. The mechanism predicts a clear lift there (above 1.10) while the rule here sits near 1.0. If both groups score the same, the age story fails and the lift belongs to the price band or to returners in general.", "rule": "race_type = 'Flat' AND is_handicap = 1 AND month IN (3, 4, 5) AND age = 4 AND days_since_last_run >= 150 AND sp_decimal >= 4 AND sp_decimal <= 8" }, "pass_criteria": { "min_bets": 300, "min_ae": 1.05, "max_p": 0.05 }, "forward_bar": { "min_bets": 100, "min_ae": 1, "max_p": 0.2 }, "confounders": [ "prior_runs not held fixed: the four-year-old lift was measured on prior_runs <= 10, but this group is mostly exposed older horses, so any gap may come from exposure and not age (refinement 1 holds prior_runs fixed)", "Irish share: the any-age second-tier lift was GB-only (IRE 0.88 on 80), so a different Irish share between age groups could fake an age effect", "three-year-olds and older horses mixed in one group: they could pull in opposite directions (3yo progressing, 5+ at 0.64-0.76 in the lightly raced rules) and average out to about 1.0", "one spring dominating the sample, and the lift fading after late April", "field size and race class differences between age groups (3yo-only handicaps against open-age races)" ], "mechanism": "Four-year-olds fill out physically over their first winter as older horses, but their handicap mark still reflects three-year-old form, so they come back better than their mark. Three-year-olds in spring are still progressing on a mark the handicapper updates quickly, and horses aged five and up are fully developed, so neither group should carry a hidden gain after a winter break. Inside the 3/1-7/1 band, then, returners that are not four should be priced about right.", "market_miss": "The form book shows a long absence and a mark set the previous season. Punters price a returner by its fitness and its connections, not by how much its age group typically matures over the winter. So the mispricing should show up only where that maturation is large and not yet in the mark, which is age four. For other ages the market's rust and connections reading should be about right.", "prediction": { "direction": "negative", "size": "A/E 0.92 to 1.02 on 300+ bets (no lift; at most a mild over-bet)", "falsified_if": "A/E of 1.08 or higher on 300+ bets, which would mean the second-tier returner lift does not need a four-year-old; also undermined if the age = 4 control in the same band does not beat this rule by a clear margin" }, "notes": "This is a control hypothesis. Its success case is a null (A/E about 1.0), not an edge, so it is pre-registered in the negative direction as the hypothesis states, and it is not expected to pass the positive-edge discovery bar. The rule keeps the sketch unchanged: sp_decimal 4 to 8 is 3/1 to 7/1. It reads the result through the age = 4 control in the same band. The any-age band scored 1.08 on 473 (GB 1.12), so this rule tests whether that figure was carried by four-year-olds. I set min_bets to 300 to match the prediction's sample size." }
Timeline
Job 1653 finished
· engine:compute-1
H-1369adb4 Discovery → KILLED fails: A/E 1.166, needs 0.95 or lower; p 0.8872 (lower tail), needs 0.05; periods [1.24, 1.01], each needs 0.99 or lower; A/E 1.166 against same-race control 0.967, needs 0.03 below
· engine:evaluator
discovery result for H-1369adb4 (broad rule): fail
· engine:evaluator
H-1369adb4 Designed → RESEARCHdiscovery measuring on the discovery zone
· engine:orchestrator
compute-1 took job 1653 (evaluate, attempt 1)
· compute-1
Job 1652 finished
· engine:ai-1
Queued evaluate on the compute lane: discovery run of the broad rule
· engine:scheduler
H-1369adb4 Proposed → RESEARCHdesigned pre-spec written and hashed
· agent:designer@v1
ai-1 took job 1652 (design, attempt 1)
· ai-1
Queued design on the ai lane: write the pre-spec
· engine:scheduler
New idea H-1369adb4: Non-four-year-old second-tier spring returners: age control inside the 3/1–7/1 band (test-mechanism)
· agent:investigator@v1
Every change is an event with an actor: an agent and its version, an engine, a human, or the importer. Current stage: Killed.