Hypotheses · story · H-4af9a09d
Rival: any narrow Flat defeat after racing wide, without the early-setback and recovery flags
forward A/E 0.0 on 0 bets, SP ROI None%, BSP ROI None% (p None)
Part of the thread “H20: wide early and got back into it” 14 hypotheses
- Proposed
- Designed
- Discovery
- Promising
- Falsification
- Frozen
- Vault
- Provisional
- Shadow
- Validated
- Live
- Source
- Investigator agent, v1
- Made by
- rival-explanation
- Created
- 17 Oct, 04:21
- 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
- H20-wide-early-and-got-back-into-it (H20: wide early and got back into it) was GREEN in the earlier research: A/E 1.43 on 313 bets (periods 1.28 / 1.57); now PROMISING. O-f4707b9d
- AskedIs the lift carried by the wide trip plus a narrow defeat, or does it need the early-setback and recovery flags too? answered
- MechanismRacing wide costs ground on the bends at any stage. A horse that still finished within 5 lengths may have run to a better level than its position shows, whether or not the comment flags an early setback and a recovery.
- Why the market misses itThe result shows a beaten horse. 'Raced wide' is a common comment, and if the ground cost goes uncounted in general, the broad version should also beat its price.
- Predictedpositive, A/E 1.08 to 1.20 on 1000+ bets if the rival holds
- Falsified ifA/E at or below 1.03 on 1000+ bets, or no better than its same-race control. That would mean the early-setback-and-recovery story carries the edge.
- Rule sketch
race_type = 'Flat' AND last_raced_wide = 1 AND last_position > 1 AND last_beaten_lengths <= 5
Mechanism and rationale
Racing wide costs ground on the bends at any stage. A horse that still finished within 5 lengths may have run to a better level than its position shows, whether or not the comment flags an early setback and a recovery.
The rule
race_type = 'Flat' AND last_raced_wide = 1 AND last_position > 1 AND last_beaten_lengths <= 5
Reads: race_type, last_raced_wide, last_position, last_beaten_lengths
Pre-registration
- Spec hash (sha256 of the canonical pre-spec)
- da9814778c459fbfd32a344e61afcfe632108cddb9905ed208d312ec1236028a
- Frozen
- 17 Oct, 04:24
- Nothing in the definition can change after this.
- Confounders
- Horses beaten narrowly are already short in the betting, which compresses any edge and loads the sample with favourites.
- Overlap with the parent early-setback-and-recovery rule (about 256 Flat bets) could inflate the broad result. Refinement 1 removes it.
- Course-specific wide-draw biases: some wide trips are forced by the draw at tracks with sharp bends, and the market may already price draw effects.
- 'Raced wide' comment frequency varies by race reader and course, so the flag may be noisy or inconsistently assigned.
- The last run may have been on a different code or surface (AW versus turf), which changes how much a wide trip costs.
- Control
{ "description": "Same-race other runners, which should score about 1.00. If the rule's lift is real, the selected horses should beat their same-race control by at least 0.05. The decisive comparison is the first refinement: once the early-setback-and-recovery parent niche is removed, the remaining wide, narrowly beaten runners must still score at or above 1.05. If they fall to about 1.0, the parent story carries the edge. A second comparison group is narrowly beaten Flat runners that did not race wide, which tests whether 'raced wide' adds anything beyond a close finish.", "rule": "race_type = 'Flat' AND last_raced_wide = 0 AND last_position > 1 AND last_beaten_lengths <= 5" }
Discovery result
pass broad rule · 17 Oct, 04:23
- Bets
- 1,119
- 201 winners
- A/E
- 1.20
- 95%: 1.04 to 1.38
- SP return
- +13.8%
- level stakes
- Betfair SP return
- +46.9%
- 1,116 bets with a BSP
Strike rate 18.0%. p = 0.0058. 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.
- partition: Remove the parent early-setback-and-recovery nichepass
786 bets · A/E 1.16 (0.97 to 1.38) · control 0.97 · 17 Oct, 04:24
Breakdown
betsA/E0.71.01.32025-10-01 to 2026-04-273371.09after 2026-04-274491.22Bars grow from 1.00, the market. Faded bars have fewer than 40 bets. - price_band: 14/1 or shorter only (the lift is heaviest at 16/1+, 1.945 on 204)pass
915 bets · A/E 1.18 (1.02 to 1.36) · control 0.96 · 17 Oct, 04:24
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': 150, 'min_ae': 1.02, 'max_p': 0.2}info
0 bets · · 17 Oct, 04:24
Breakdown
betsA/E0.71.01.3forward0–Bars grow from 1.00, the market. Faded bars have fewer than 40 bets.
Other experiments
- neighbour: > 1 -> 0 (-20%)pass
1,462 bets · A/E 1.16 (1.02 to 1.30) · control 0.97 · 17 Oct, 04:36
Breakdown
betsA/E0.71.01.32025-10-01 to 2026-04-275931.10after 2026-04-278691.20Bars grow from 1.00, the market. Faded bars have fewer than 40 bets. - neighbour: > 1 -> 2 (+20%)pass
831 bets · A/E 1.27 (1.07 to 1.50) · control 0.96 · 17 Oct, 04:36
Breakdown
Lineage
Agent runs
designer v1ok · 29s · 17 Oct, 04:21
Output (schema-checked)
{ "rule": "race_type = 'Flat' AND last_raced_wide = 1 AND last_position > 1 AND last_beaten_lengths <= 5", "refinements": [ { "label": "Excluding the parent niche (no early-setback-and-recovery)", "rule": "race_type = 'Flat' AND last_raced_wide = 1 AND last_position > 1 AND last_beaten_lengths <= 5 AND (last_early_setback = 0 OR last_recovered = 0)" }, { "label": "Last run also on the Flat (wide trip on a Flat bend)", "rule": "race_type = 'Flat' AND last_raced_wide = 1 AND last_position > 1 AND last_beaten_lengths <= 5 AND last_race_type = 'Flat'" }, { "label": "14/1 or shorter, because longshot noise can fake a ground-cost edge", "rule": "race_type = 'Flat' AND last_raced_wide = 1 AND last_position > 1 AND last_beaten_lengths <= 5 AND sp_decimal <= 15" } ], "control": { "description": "Same-race other runners, which should score about 1.00. If the rule's lift is real, the selected horses should beat their same-race control by at least 0.05. The decisive comparison is the first refinement: once the early-setback-and-recovery parent niche is removed, the remaining wide, narrowly beaten runners must still score at or above 1.05. If they fall to about 1.0, the parent story carries the edge. A second comparison group is narrowly beaten Flat runners that did not race wide, which tests whether 'raced wide' adds anything beyond a close finish.", "rule": "race_type = 'Flat' AND last_raced_wide = 0 AND last_position > 1 AND last_beaten_lengths <= 5" }, "pass_criteria": { "min_bets": 500, "min_ae": 1.05, "max_p": 0.05 }, "forward_bar": { "min_bets": 150, "min_ae": 1.02, "max_p": 0.2 }, "confounders": [ "Horses beaten narrowly are already short in the betting, which compresses any edge and loads the sample with favourites.", "Overlap with the parent early-setback-and-recovery rule (about 256 Flat bets) could inflate the broad result. Refinement 1 removes it.", "Course-specific wide-draw biases: some wide trips are forced by the draw at tracks with sharp bends, and the market may already price draw effects.", "'Raced wide' comment frequency varies by race reader and course, so the flag may be noisy or inconsistently assigned.", "The last run may have been on a different code or surface (AW versus turf), which changes how much a wide trip costs." ], "mechanism": "Racing wide costs ground on the bends, at any stage of the race. A Flat horse that raced wide and still finished within 5 lengths probably ran to a higher level than its finishing position and beaten distance show. That holds whether or not the comment also records an early setback and a recovery.", "market_miss": "The form figures show a beaten horse and a modest beaten distance. 'Raced wide' is a common, low-salience comment, and bettors who read only position and lengths do not adjust for the ground it cost. If that cost goes uncounted in general, the broad set should beat its SP, not only the dramatic early-setback-and-recovery subset.", "prediction": { "direction": "positive", "size": "A/E 1.08 to 1.20 on 1000+ bets; the subset without the parent niche at 1.05 or higher", "falsified_if": "Falsified if A/E is 1.03 or lower on 1000+ bets, if it is no better than the same-race control, or if the subset without the early-setback-and-recovery niche falls below 1.03. Any of these would mean the parent story, not a general wide-trip effect, carries the edge." }, "notes": "The draft rule is kept: it uses only pre-off columns, does not read the result, and is minimal. This is a rival to H20, which scored 1.43 on 313 across all codes and is now live on the Flat. The Flat findings warn that close-form rebound cuts fail (1.021 on 2055), so a null result here is a real possibility. Refinement 1 is the decisive test; it excludes rows where either flag is null." }
Timeline
Job 2964 finished
· engine:compute-1
hypothesis note H-4af9a09d
· engine:perturb
perturbation result for H-4af9a09d (neighbour: drop: last_raced_wide = 1): pass
· engine:perturb
perturbation result for H-4af9a09d (neighbour: drop: race_type = 'Flat'): pass
· engine:perturb
perturbation result for H-4af9a09d (neighbour: <= 5 -> 6 (+20%)): pass
· engine:perturb
perturbation result for H-4af9a09d (neighbour: <= 5 -> 4 (-20%)): pass
· engine:perturb
perturbation result for H-4af9a09d (neighbour: > 1 -> 2 (+20%)): pass
· engine:perturb
perturbation result for H-4af9a09d (neighbour: > 1 -> 0 (-20%)): pass
· engine:perturb
compute-1 took job 2964 (mutate, attempt 1)
· compute-1
Queued mutate on the compute lane: parameter stability: do neighbouring thresholds hold?
· engine:scheduler
Job 2905 finished
· engine:compute-1
forward result for H-4af9a09d (forward vs bar {'min_bets': 150, 'min_ae': 1.02, 'max_p': 0.2}): info
· engine:evaluator
compute-1 took job 2905 (forward_check, attempt 1)
· compute-1
Queued forward_check on the compute lane: daily forward check of a shadow system
· engine:scheduler
Job 2897 finished
· engine:compute-1
H-4af9a09d Frozen → SHADOW vault skipped: last_raced_wide, last_beaten_lengths do not exist before the discovery zone; track it forward instead
· engine:orchestrator