Hypotheses · story · H-0bdb9150
Rival: the big-field lift is a class drop out of valuable handicaps
forward A/E 0.0 on 0 bets, SP ROI None%, BSP ROI None% (p None)
Part of the thread “H36: pulled up after being held up” 60 hypotheses
- Proposed
- Designed
- Discovery
- Promising
- Falsification
- Frozen
- Vault
- Provisional
- Shadow
- Validated
- Live
- Source
- Investigator agent, v1
- Made by
- rival-explanation
- Created
- 17 Oct, 03:31
- Tests logged
- 17
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-91a89a7c (Rival: the big-field lift is a drop into a smaller race today, not a m) passed discovery but was falsified: driven by one price band (up to 7/1): the rest score 0.88. O-4f7f9b7a
- H-9ccf4a8d (Test-mechanism: big-field beatings where the horse still finished in t) passed discovery: A/E 1.29 on 642 bets (p 0.03), same-race control 0.98. O-6a8bcbc8
- H-91a89a7c (Rival: the big-field lift is a drop into a smaller race today, not a m) passed discovery as a niche: A/E 1.15 on 526 bets (p 0.154), same-race control 0.99. O-ac67c459
- AskedIs the big-field lift really a drop from a higher-class or festival handicap, rather than inflated beaten lengths? testing
- MechanismBig fields cluster in valuable, higher-class handicaps. A horse well beaten there may simply face weaker rivals today.
- Why the market misses itIf the class drop explains it, the market misses the drop rather than misreading the lengths. Class drops are visible, though, so this rival is expected to score no higher than the parent.
- Predictedpositive, A/E 1.20 to 1.35 on 300+ bets if class carries the lift
- Falsified ifA/E at or below the parent's 1.187, which would rule out class as the carrier
Mechanism and rationale
Big fields cluster in valuable, higher-class handicaps. A horse well beaten there may simply face weaker rivals today.
The rule
region = 'GB' AND is_handicap = 1 AND race_type IN ('Hurdle', 'Chase') AND last_beaten_lengths IS NOT NULL AND last_beaten_lengths >= 20 AND last_field_size IS NOT NULL AND last_field_size >= 14 AND last_race_class IS NOT NULL AND race_class IS NOT NULL AND last_race_class < race_classReads: region, is_handicap, race_type, last_beaten_lengths, last_field_size, last_race_class, race_class
Pre-registration
- Spec hash (sha256 of the canonical pre-spec)
- 3c47553a3f83f3c6b7d71f6d33363819ed3c0f8525c0aaa43e136a22b63b290d
- Frozen
- 17 Oct, 03:42
- Nothing in the definition can change after this.
- Confounders
- GB only: IRE race_class only exists from 2026-07, so the comparison has to be with the parent's GB figure (1.215), not the pooled 1.187
- the 16/1-or-bigger band, which sits below par in every big-field cut and could drag the score down
- festival and big-meeting handicaps (Cheltenham, Aintree and so on) are both the source of big fields and of class drops, so the class drop may just be a stand-in for 'last ran at a festival'
- race_class is an ordinal label that tracks prize money and rating band; a nominal class drop can still mean the same rating band in a handicap
- seasonality: class drops cluster after the spring festivals
- Control
{ "description": "The key comparison is the parent's GB big-field heavy beatings that do NOT drop in class (same or higher class today). If class carries the lift, the drop group should clearly beat this control and the control should sit near 1.0. If the control scores about the same as the drop group (both around the parent's GB 1.215), class is not the carrier. Same-race other runners are expected near 1.0 or slightly below, as usual.", "rule": "region = 'GB' AND is_handicap = 1 AND race_type IN ('Hurdle', 'Chase') AND last_beaten_lengths IS NOT NULL AND last_beaten_lengths >= 20 AND last_field_size IS NOT NULL AND last_field_size >= 14 AND last_race_class IS NOT NULL AND race_class IS NOT NULL AND last_race_class >= race_class" }
Discovery result
pass broad rule (niche) · 17 Oct, 03:35
- Bets
- 176
- 25 winners
- A/E
- 1.25
- 95%: 0.81 to 1.84
- SP return
- -6.0%
- level stakes
- Betfair SP return
- +15.7%
- 176 bets with a BSP
Strike rate 14.2%. p = 0.16. 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. 4 of 6 survived.
- perturbation: Loosen thresholds: beaten 16+ lengths, last field 12+pass
395 bets · A/E 1.27 (0.96 to 1.65) · control 0.97 · 17 Oct, 03:42
Breakdown
betsA/E0.71.01.32025-10-01 to 2026-04-273141.18after 2026-04-27811.58Bars grow from 1.00, the market. Faded bars have fewer than 40 bets. - perturbation: Tighten thresholds: beaten 24+ lengths, last field 16+fail
65 bets · A/E 0.78 (0.29 to 1.71) · control 1.04 · 17 Oct, 03:42
Sealed holdout (vault)
Not queried. Only a frozen idea can spend its one query against the 2020-25 holdout.
Forward record
- forward vs bar {'min_bets': 100, 'min_ae': 1.0, '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: >= 20 -> 16 (-20%)pass
206 bets · A/E 1.15 (0.76 to 1.66) · control 0.99 · 17 Oct, 03:35
Breakdown
betsA/E0.71.01.32025-10-01 to 2026-04-271631.21after 2026-04-27430.92Bars grow from 1.00, the market. Faded bars have fewer than 40 bets. - neighbour: >= 20 -> 24 (+20%)pass
145 bets · A/E 1.11 (0.66 to 1.76) · control 1.00 · 17 Oct, 03:35
Breakdown
Lineage
Agent runs
designer v1ok · 35s · 17 Oct, 03:32
Output (schema-checked)
{ "rule": "region = 'GB' AND is_handicap = 1 AND race_type IN ('Hurdle', 'Chase') AND last_beaten_lengths IS NOT NULL AND last_beaten_lengths >= 20 AND last_field_size IS NOT NULL AND last_field_size >= 14 AND last_race_class IS NOT NULL AND race_class IS NOT NULL AND last_race_class < race_class", "refinements": [ { "label": "14/1 or shorter", "rule": "region = 'GB' AND is_handicap = 1 AND race_type IN ('Hurdle', 'Chase') AND last_beaten_lengths IS NOT NULL AND last_beaten_lengths >= 20 AND last_field_size IS NOT NULL AND last_field_size >= 14 AND last_race_class IS NOT NULL AND race_class IS NOT NULL AND last_race_class < race_class AND sp_decimal < 16" }, { "label": "dropping out of a valuable (class 1-3) race", "rule": "region = 'GB' AND is_handicap = 1 AND race_type IN ('Hurdle', 'Chase') AND last_beaten_lengths IS NOT NULL AND last_beaten_lengths >= 20 AND last_field_size IS NOT NULL AND last_field_size >= 14 AND last_race_class IS NOT NULL AND race_class IS NOT NULL AND last_race_class < race_class AND last_race_class <= 3" } ], "control": { "description": "The key comparison is the parent's GB big-field heavy beatings that do NOT drop in class (same or higher class today). If class carries the lift, the drop group should clearly beat this control and the control should sit near 1.0. If the control scores about the same as the drop group (both around the parent's GB 1.215), class is not the carrier. Same-race other runners are expected near 1.0 or slightly below, as usual.", "rule": "region = 'GB' AND is_handicap = 1 AND race_type IN ('Hurdle', 'Chase') AND last_beaten_lengths IS NOT NULL AND last_beaten_lengths >= 20 AND last_field_size IS NOT NULL AND last_field_size >= 14 AND last_race_class IS NOT NULL AND race_class IS NOT NULL AND last_race_class >= race_class" }, "pass_criteria": { "min_bets": 150, "min_ae": 1.05, "max_p": 0.05 }, "forward_bar": { "min_bets": 100, "min_ae": 1, "max_p": 0.2 }, "confounders": [ "GB only: IRE race_class only exists from 2026-07, so the comparison has to be with the parent's GB figure (1.215), not the pooled 1.187", "the 16/1-or-bigger band, which sits below par in every big-field cut and could drag the score down", "festival and big-meeting handicaps (Cheltenham, Aintree and so on) are both the source of big fields and of class drops, so the class drop may just be a stand-in for 'last ran at a festival'", "race_class is an ordinal label that tracks prize money and rating band; a nominal class drop can still mean the same rating band in a handicap", "seasonality: class drops cluster after the spring festivals" ], "mechanism": "Big fields of 14 or more cluster in valuable, higher-class handicaps. A horse beaten 20 lengths or more in one of them may have run to a level that would be competitive in a weaker race. When it drops in class today it faces weaker rivals, and the heavy beating overstates how poor the horse is.", "market_miss": "If the class drop carries the lift, the market prices the raw beaten lengths and underrates how much easier today's race is. Class drops are plain to see, though, so this rival is not expected to beat the parent. Its main job is to show whether the lift sits in the drop group or the no-drop group.", "prediction": { "direction": "positive", "size": "A/E 1.20 to 1.35 on 300+ GB bets if class carries the lift, with the no-drop control near 1.0", "falsified_if": "A/E at or below the parent's GB big-field score (about 1.215), or the no-drop control scoring the same or better, which would rule out class as the carrier of the big-field lift" }, "notes": "The rule is restricted to region = 'GB' explicitly because IRE race_class is NULL before 2026-07, so IRE would drop out silently anyway. I added null guards. class 1 = top, so last_race_class < race_class means a drop in class. The parent to beat is the GB slice of the big-field rule (1.215), not 1.187. Refinements follow the reasoning: the lift lives under about 14/1, and the mechanism is about leaving valuable races." }
Timeline
Job 2743 finished
· engine:compute-1
forward result for H-0bdb9150 (forward vs bar {'min_bets': 100, 'min_ae': 1.0, 'max_p': 0.2}): info
· engine:evaluator
compute-1 took job 2743 (forward_check, attempt 1)
· compute-1
Queued forward_check on the compute lane: daily forward check of a shadow system
· engine:scheduler
Job 2739 finished
· engine:compute-1
H-0bdb9150 Frozen → SHADOW vault skipped: last_beaten_lengths do not exist before the discovery zone; track it forward instead
· engine:orchestrator
compute-1 took job 2739 (vault, attempt 1)
· compute-1
Job 2732 finished
· engine:compute-1
Queued vault on the compute lane: frozen: one sealed vault query
· engine:scheduler
H-0bdb9150 Falsification → FROZEN survived falsification
· engine:falsification
falsification result for H-0bdb9150 (price_band: Outside the 7/1 band: 8/1 or bigger only): pass
· engine:evaluator
compute-1 took job 2732 (attack, attempt 1)
· compute-1
Job 2731 finished
· engine:compute-1
falsification result for H-0bdb9150 (control: Control: heavy beating plus class drop, but last field under 14): pass
· engine:evaluator
compute-1 took job 2731 (attack, attempt 1)
· compute-1
Job 2730 finished
· engine:compute-1
falsification result for H-0bdb9150 (partition: Not from a premier race: last race class 2 or lower (excludes class 1 festival handicaps)): pass
· engine:evaluator
compute-1 took job 2730 (attack, attempt 1)
· compute-1
Job 2729 finished
· engine:compute-1
falsification result for H-0bdb9150 (partition: Dose-response: drop of two or more classes): info
· engine:evaluator