Hypotheses · story · H-244b221b
Sharpen: wide early and recovered from a big field last time, where the wide trip costs most
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
- sharpen
- 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 edge bigger when the wide trip cost more ground, for example in a big field last time or on a round course with tight bends? answered
- MechanismIn a big field a horse caught wide early is likely to be several horses wide and to lose more ground. Recovering to finish close up from there shows more ability than the same result in a small field. This is a dose-response test, not a post-hoc cut.
- Why the market misses itThe form book records a close-up place. It does not show how many horses wide the runner was, so the market cannot scale its view to the ground lost.
- Predictedpositive, A/E 1.45 to 1.70 on 120+ bets, and above the small-field remainder
- Falsified ifA/E at or below the parent's level (about 1.35), or the small-field half of the parent scoring as high. Either would mean no dose-response.
- Rule sketch
race_type = 'Flat' AND last_early_setback = 1 AND last_recovered = 1 AND last_raced_wide = 1 AND last_slow_start = 0 AND last_position > 1 AND last_beaten_lengths <= 5 AND last_field_size >= 12
Mechanism and rationale
In a big field a horse caught wide early is likely to be several horses wide and to lose more ground. Recovering to finish close up from there shows more ability than the same result in a small field. This is a dose-response test, not a post-hoc cut.
The rule
race_type = 'Flat' AND last_early_setback = 1 AND last_recovered = 1 AND last_raced_wide = 1 AND last_slow_start = 0 AND last_position > 1 AND last_beaten_lengths <= 5 AND last_field_size >= 12
Reads: race_type, last_early_setback, last_recovered, last_raced_wide, last_slow_start, last_position, last_beaten_lengths, last_field_size
Pre-registration
- Spec hash (sha256 of the canonical pre-spec)
- 995e616fc7631d155c1e8278efca873a9719f0c92f331bde5e3bf09e420b0acb
- Frozen
- 17 Oct, 04:29
- Nothing in the definition can change after this.
- Confounders
- Big fields are more often handicaps, which are priced differently; the handicap-only refinement checks this
- Big fields cluster at festival and big-meeting cards, where the market and the form are different
- Big-field runners go off at longer prices, and the Flat lifts in this family have been driven by longshots; the A/E should be checked by price band
- Splitting the parent cuts the bet count, so the result will be noisier and the comparison with the small-field half may be underpowered
- last_raced_wide is a binary flag and only a proxy for how many horses wide the runner was; field size stands in for the size of the dose
- Draw bias at some courses: a wide trip in a big field may reflect a bad draw that the market does price
- Control
{ "description": "Same-race other runners should score about 1.0. If they also score high, the lift comes from the race type (big handicaps, festivals) and not from the horse. The dose-response test needs a second comparison: the small-field remainder of the parent (same story, last field under 12 runners). The mechanism needs that group to score clearly lower than the big-field rule.", "rule": "race_type = 'Flat' AND last_early_setback = 1 AND last_recovered = 1 AND last_raced_wide = 1 AND last_slow_start = 0 AND last_position > 1 AND last_beaten_lengths <= 5 AND last_field_size IS NOT NULL AND last_field_size < 12" }
Discovery result
pass broad rule (niche) · 17 Oct, 04:24
- Bets
- 75
- 15 winners
- A/E
- 1.30
- 95%: 0.72 to 2.14
- SP return
- +10.4%
- level stakes
- Betfair SP return
- +24.6%
- 73 bets with a BSP
Strike rate 20.0%. p = 0.19. Same-race control: the other runners in these races had A/E 0.94, 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.
- control: Dose-response control: small-field remainder of the parent (last field under 12)pass
181 bets · A/E 1.51 (1.10 to 2.02) · control 0.90 · 17 Oct, 04:29
Breakdown
betsA/E0.71.01.32025-10-01 to 2026-04-27751.47after 2026-04-271061.54Bars grow from 1.00, the market. Faded bars have fewer than 40 bets. - perturbation: Perturb field-size cut down to 10+ runners last timepass
145 bets · A/E 1.31 (0.88 to 1.87) · control 0.94 · 17 Oct, 04:29
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, 04:31
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
101 bets · A/E 1.28 (0.80 to 1.94) · control 0.94 · 17 Oct, 04:31
Breakdown
betsA/E0.71.01.32025-10-01 to 2026-04-2732–after 2026-04-27691.35Bars grow from 1.00, the market. Faded bars have fewer than 40 bets. - neighbour: > 1 -> 2 (+20%)pass
58 bets · A/E 1.16 (0.55 to 2.12) · control 0.97 · 17 Oct, 04:31
Breakdown
Lineage
Agent runs
designer v1ok · 33s · 17 Oct, 04:21
Output (schema-checked)
{ "rule": "race_type = 'Flat' AND last_early_setback = 1 AND last_recovered = 1 AND last_raced_wide = 1 AND last_slow_start = 0 AND last_position > 1 AND last_beaten_lengths <= 5 AND last_field_size >= 12", "refinements": [ { "label": "stronger dose: 16+ runners last time", "rule": "race_type = 'Flat' AND last_early_setback = 1 AND last_recovered = 1 AND last_raced_wide = 1 AND last_slow_start = 0 AND last_position > 1 AND last_beaten_lengths <= 5 AND last_field_size >= 16" }, { "label": "handicaps only (removes the handicap-mix confounder)", "rule": "race_type = 'Flat' AND last_early_setback = 1 AND last_recovered = 1 AND last_raced_wide = 1 AND last_slow_start = 0 AND last_position > 1 AND last_beaten_lengths <= 5 AND last_field_size >= 12 AND is_handicap = 1" } ], "control": { "description": "Same-race other runners should score about 1.0. If they also score high, the lift comes from the race type (big handicaps, festivals) and not from the horse. The dose-response test needs a second comparison: the small-field remainder of the parent (same story, last field under 12 runners). The mechanism needs that group to score clearly lower than the big-field rule.", "rule": "race_type = 'Flat' AND last_early_setback = 1 AND last_recovered = 1 AND last_raced_wide = 1 AND last_slow_start = 0 AND last_position > 1 AND last_beaten_lengths <= 5 AND last_field_size IS NOT NULL AND last_field_size < 12" }, "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": [ "Big fields are more often handicaps, which are priced differently; the handicap-only refinement checks this", "Big fields cluster at festival and big-meeting cards, where the market and the form are different", "Big-field runners go off at longer prices, and the Flat lifts in this family have been driven by longshots; the A/E should be checked by price band", "Splitting the parent cuts the bet count, so the result will be noisier and the comparison with the small-field half may be underpowered", "last_raced_wide is a binary flag and only a proxy for how many horses wide the runner was; field size stands in for the size of the dose", "Draw bias at some courses: a wide trip in a big field may reflect a bad draw that the market does price" ], "mechanism": "A horse caught wide early in a big field (12+) is likely to be several horses wide, so it loses more ground than a horse caught wide in a small field. If it still recovers to finish within 5 lengths, without a slow start to explain the setback, that shows more ability than the bare placing suggests. The hidden merit should grow with field size, so this is a dose-response test of the parent rule (wide early and recovered, beaten 5 lengths or less).", "market_miss": "The form book and the bare result record a close-up place and at most a 'raced wide' comment. They do not say how many horses wide the runner was or how much ground it lost, so the market cannot scale its view to the size of the disadvantage. It treats a big-field wide trip much like a small-field one.", "prediction": { "direction": "positive", "size": "A/E about 1.45 to 1.70 on 150+ bets, clearly above the small-field (<12) remainder of the parent", "falsified_if": "Falsified if the big-field rule scores A/E at or below about 1.35 (the parent's level), or if the small-field remainder (last_field_size < 12) scores as high or higher. Either result means there is no dose-response. It also fails if the same-race runners score as high as the rule." }, "notes": "The rule sketch is kept unchanged. It uses only pre-off last-run columns, and the null field sizes drop out of >= 12. The 16+ refinement extends the dose-response the mechanism itself predicts. The handicap refinement tests the main confounder. I added no price cap because the reasoning does not call for one, but watch the earlier finding that Flat lifts in this family were longshot-driven. The prediction asked for 120+ bets; I raised that to the lab floor of 150. Compare against the small-field control rule to judge dose-response, not against the same-race runners alone." }
Timeline
Job 2954 finished
· engine:compute-1
forward result for H-244b221b (forward vs bar {'min_bets': 100, 'min_ae': 1.0, 'max_p': 0.2}): info
· engine:evaluator
compute-1 took job 2954 (forward_check, attempt 1)
· compute-1
Queued forward_check on the compute lane: daily forward check of a shadow system
· engine:scheduler
Job 2908 finished
· engine:compute-1
hypothesis note H-244b221b
· engine:perturb
perturbation result for H-244b221b (neighbour: >= 12 -> 14 (+20%)): pass
· engine:perturb
perturbation result for H-244b221b (neighbour: >= 12 -> 10 (-20%)): pass
· engine:perturb
perturbation result for H-244b221b (neighbour: <= 5 -> 6 (+20%)): pass
· engine:perturb
perturbation result for H-244b221b (neighbour: <= 5 -> 4 (-20%)): pass
· engine:perturb
perturbation result for H-244b221b (neighbour: > 1 -> 2 (+20%)): pass
· engine:perturb
perturbation result for H-244b221b (neighbour: > 1 -> 0 (-20%)): pass
· engine:perturb
compute-1 took job 2908 (mutate, attempt 1)
· compute-1
Job 2923 finished
· engine:compute-1
H-244b221b Frozen → SHADOW vault skipped: last_early_setback, last_recovered, last_raced_wide, last_slow_start, last_beaten_lengths do not exist before the discovery zone; track it forward instead
· engine:orchestrator
compute-1 took job 2923 (vault, attempt 1)
· compute-1