Hypotheses · overlay · H-46ba40bd
Rival: drift after a going change is over-penalised for close-beaten runners
fails: A/E 0.995, needs 1.08; p 0.5478, needs 0.05 or lower; periods [0.96, 1.01], each needs 1.0; A/E 0.995 against same-race control 1.002, needs 0.03 above (not a niche pass: A/E 0.995 below 1.08; p 0.5478314958886431 above 0.5; does not beat the same-race control 1.002)
Part of the thread “IQ140a: wide trip with figures” 21 hypotheses
- Proposed
- Designed
- Discovery
- Promising
- Falsification
- Frozen
- Vault
- Provisional
- Shadow
- Validated
- Live
- Source
- Investigator agent, v1
- Made by
- rival-explanation
- Created
- 16 Oct, 12:59
- 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-c869bcd0 (Wide trip and the price drifted since last time: the market marked the) passed discovery: A/E 1.47 on 260 bets (p 0.009), same-race control 0.94. O-8e95e697
- AskedIs the drift edge carried by a change of going since last time, i.e. does the market over-penalise a switch of ground for close-beaten horses? testing
- MechanismWhen the ground changes, a horse beaten close on other going is marked down as unproven on today's ground. Close-beaten form usually transfers better than the market allows, so the drift overshoots.
- Why the market misses itForm on different going is discounted by default. The beaten distance shows the horse was competitive, but the going label makes the run look irrelevant.
- Predictedpositive, A/E 1.10 to 1.25 on 800+ bets
- Falsified ifA/E 1.03 or lower. Then the going-changed part of the wide drift subset is specific to the wide tag, not a general going overreaction.
- Rule sketch
last_position > 1 AND last_beaten_lengths <= 5 AND last_slow_start = 0 AND going_group <> last_going_group AND sp_decimal <= 15 AND sp_decimal > last_sp_decimal * 1.2
Mechanism and rationale
When the ground changes, a horse beaten close on other going is marked down as unproven on today's ground. Close-beaten form usually transfers better than the market allows, so the drift overshoots.
The rule
last_position > 1 AND last_beaten_lengths <= 5 AND last_slow_start = 0 AND going_group IS NOT NULL AND last_going_group IS NOT NULL AND going_group <> last_going_group AND sp_decimal <= 15 AND last_sp_decimal IS NOT NULL AND sp_decimal > last_sp_decimal * 1.2
Reads: last_position, last_beaten_lengths, last_slow_start, going_group, last_going_group, sp_decimal, last_sp_decimal
Pre-registration
- Spec hash (sha256 of the canonical pre-spec)
- 521365922e36987f6ccb1f1cee449ef18a392939825c6098c83e4a8acadf7af1
- Frozen
- not frozen
- The definition can still change.
- Confounders
- Seasonal going transitions (spring firming, autumn softening) coincide with the post-April-2026 lift seen in other subsets; check results by period and by month
- All-weather to turf switches (and back) count as going changes; the same-surface refinement isolates the pure going change
- Race-type changes between runs (Flat to jumps, hurdle to chase) go with going changes and their own drift
- Class changes: a drift can reflect a rise in class rather than the ground
- The wide-tag runners that produced the original drift finding are included; the no-wide refinement checks whether the edge is general
- A big price drift can also reflect a long layoff or a stronger race today, separate from the going
- Control
{ "description": "Same-race other runners should sit near A/E 1.0 (about 0.9 to 1.0), showing the races themselves are not mispriced. The key comparison is the same close-beaten, drifted, 15.0-or-shorter group where the going is unchanged: if the going change is what the market over-penalises, that group should score clearly lower (around 1.0 to 1.1) than the going-changed rule. If the unchanged-going group scores as well, the edge is a drift effect, not a going overreaction.", "rule": "last_position > 1 AND last_beaten_lengths <= 5 AND last_slow_start = 0 AND going_group IS NOT NULL AND last_going_group IS NOT NULL AND going_group = last_going_group AND sp_decimal <= 15 AND last_sp_decimal IS NOT NULL AND sp_decimal > last_sp_decimal * 1.2" }
Discovery result
fail broad rule · 16 Oct, 13:07
- Bets
- 3,471
- 396 winners
- A/E
- 0.99
- 95%: 0.90 to 1.10
- SP return
- -18.8%
- level stakes
- Betfair SP return
- -1.2%
- 3,447 bets with a BSP
Strike rate 11.4%. p = 0.55. Same-race control: the other runners in these races had A/E 1.00, so the selection did not 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 · 42s · 16 Oct, 12:59
Output (schema-checked)
{ "rule": "last_position > 1 AND last_beaten_lengths <= 5 AND last_slow_start = 0 AND going_group IS NOT NULL AND last_going_group IS NOT NULL AND going_group <> last_going_group AND sp_decimal <= 15 AND last_sp_decimal IS NOT NULL AND sp_decimal > last_sp_decimal * 1.2", "refinements": [ { "label": "same surface and race type (pure going change)", "rule": "last_position > 1 AND last_beaten_lengths <= 5 AND last_slow_start = 0 AND going_group IS NOT NULL AND last_going_group IS NOT NULL AND going_group <> last_going_group AND sp_decimal <= 15 AND last_sp_decimal IS NOT NULL AND sp_decimal > last_sp_decimal * 1.2 AND surface = last_surface AND race_type = last_race_type" }, { "label": "wide tag excluded (is it general, not wide-specific)", "rule": "last_position > 1 AND last_beaten_lengths <= 5 AND last_slow_start = 0 AND going_group IS NOT NULL AND last_going_group IS NOT NULL AND going_group <> last_going_group AND sp_decimal <= 15 AND last_sp_decimal IS NOT NULL AND sp_decimal > last_sp_decimal * 1.2 AND coalesce(last_raced_wide, 0) = 0" }, { "label": "unraced on today's going (the 'unproven' label the market penalises)", "rule": "last_position > 1 AND last_beaten_lengths <= 5 AND last_slow_start = 0 AND going_group IS NOT NULL AND last_going_group IS NOT NULL AND going_group <> last_going_group AND sp_decimal <= 15 AND last_sp_decimal IS NOT NULL AND sp_decimal > last_sp_decimal * 1.2 AND runs_on_going = 0" } ], "control": { "description": "Same-race other runners should sit near A/E 1.0 (about 0.9 to 1.0), showing the races themselves are not mispriced. The key comparison is the same close-beaten, drifted, 15.0-or-shorter group where the going is unchanged: if the going change is what the market over-penalises, that group should score clearly lower (around 1.0 to 1.1) than the going-changed rule. If the unchanged-going group scores as well, the edge is a drift effect, not a going overreaction.", "rule": "last_position > 1 AND last_beaten_lengths <= 5 AND last_slow_start = 0 AND going_group IS NOT NULL AND last_going_group IS NOT NULL AND going_group = last_going_group AND sp_decimal <= 15 AND last_sp_decimal IS NOT NULL AND sp_decimal > last_sp_decimal * 1.2" }, "pass_criteria": { "min_bets": 300, "min_ae": 1.08, "max_p": 0.05 }, "forward_bar": { "min_bets": 150, "min_ae": 1.03, "max_p": 0.2 }, "confounders": [ "Seasonal going transitions (spring firming, autumn softening) coincide with the post-April-2026 lift seen in other subsets; check results by period and by month", "All-weather to turf switches (and back) count as going changes; the same-surface refinement isolates the pure going change", "Race-type changes between runs (Flat to jumps, hurdle to chase) go with going changes and their own drift", "Class changes: a drift can reflect a rise in class rather than the ground", "The wide-tag runners that produced the original drift finding are included; the no-wide refinement checks whether the edge is general", "A big price drift can also reflect a long layoff or a stronger race today, separate from the going" ], "mechanism": "When the going group changes, a horse beaten 5 lengths or less on other ground is marked down as unproven on today's going. Close-beaten form mostly transfers across going groups, so the drift of more than 20% since its last SP overshoots, and these runners win more often than their 15.0-or-shorter prices imply.", "market_miss": "Punters and compilers discount form on different going by default, and an unproven-on-the-ground label adds to the drift. The beaten distance shows the horse was competitive, but the going label makes that run look irrelevant, so the price drifts further than the evidence supports.", "prediction": { "direction": "positive", "size": "A/E 1.10 to 1.25 on 800+ bets, above the unchanged-going control", "falsified_if": "A/E 1.03 or lower on the broad rule, or the unchanged-going control scoring as high as the going-changed rule. Either result means the going-changed part of the wide drift subset is specific to the wide tag or to the drift itself, not a general going overreaction." }, "notes": "The rule sketch is kept, with explicit null guards on going_group, last_going_group and last_sp_decimal. The pass bar is stricter than the floor (300 bets, A/E 1.08) because the predicted sample is 800+ and the effect is 1.10 or more. The wide drift subset with unchanged going scored 1.245 on 120, so the control comparison is central. Refinements are looked at only if the broad rule passes." }
Timeline
Job 1523 finished
· engine:compute-1
H-46ba40bd Discovery → KILLED fails: A/E 0.995, needs 1.08; p 0.5478, needs 0.05 or lower; periods [0.96, 1.01], each needs 1.0; A/E 0.995 against same-race control 1.002, needs 0.03 above (not a niche pass: A/E 0.995 below 1.08; p 0.5478314958886431 above 0.5; does not beat the same-race control 1.002)
· engine:evaluator
discovery result for H-46ba40bd (broad rule): fail
· engine:evaluator
H-46ba40bd Designed → RESEARCHdiscovery measuring on the discovery zone
· engine:orchestrator
compute-1 took job 1523 (evaluate, attempt 1)
· compute-1
Job 1520 finished
· engine:ai-1
Queued evaluate on the compute lane: discovery run of the broad rule
· engine:scheduler
H-46ba40bd Proposed → RESEARCHdesigned pre-spec written and hashed
· agent:designer@v1
ai-1 took job 1520 (design, attempt 1)
· ai-1
Queued design on the ai lane: write the pre-spec
· engine:scheduler
New idea H-46ba40bd: Rival: drift after a going change is over-penalised for close-beaten runners (rival-explanation)
· 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.