Hypotheses · story · H-d0a5f0ee
Test-mechanism: checked, recovered and still within 2 lengths carries the H19 lift
falsified: 1 of 1 attacks broke it; fewer than two periods with enough bets to compare (thin: the forward record will judge); GB: too few bets to judge; IRE: too few bets to judge
Part of the thread “H19: momentum interrupted beaten narrowly” 11 hypotheses
- Proposed
- Designed
- Discovery
- Promising
- Falsification
- Frozen
- Vault
- Provisional
- Shadow
- Validated
- Live
- Source
- Investigator agent, v1
- Made by
- test-mechanism
- Created
- 16 Oct, 14:50
- Tests logged
- 14
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-48a2eca6 (Test-mechanism: the edge sits with horses the market did not shorten a) passed discovery but was falsified: 2 of 5 attacks broke it; IRE: too few bets to judge. O-0bee0352
- H-b595a70a (Sharpen: troubled narrow loser back within 35 days) passed discovery as a niche: A/E 1.19 on 200 bets (p 0.134), same-race control 0.96. O-0fc94a65
- H-4882f53a (Generalise: checked mid-run and beaten 2 to 5 lengths still beats its ) was predicted positive but came out the other way: A/E 0.8 on 263 bets (p 0.148 for the opposite direction). O-fd5d7674
- AskedAmong H19 runners, do those noted as recovering or finishing strongly after the check beat their price by more than those that were not? answered
- MechanismIf the edge is ability lost to the check, a horse that recovered and ran on to finish within 2 lengths showed the most spare ability. One that was checked and never picked up may simply have been beaten.
- Why the market misses itThe form figure and the beaten distance look the same for both kinds of run. The recovery is only in the in-running comment, which the price barely uses: the price-movement split showed no allowance for the trouble at all.
- Predictedpositive, A/E 1.30+ on 80+ bets, above H19 runners without a recovery note
- Falsified if
Mechanism and rationale
If the edge is ability lost to the check, a horse that recovered and ran on to finish within 2 lengths showed the most spare ability. One that was checked and never picked up may simply have been beaten.
The rule
last_momentum_interrupted = 1 AND last_position > 1 AND last_beaten_lengths <= 2 AND last_recovered = 1
Reads: last_momentum_interrupted, last_position, last_beaten_lengths, last_recovered
Pre-registration
- Spec hash (sha256 of the canonical pre-spec)
- 8f345d41fa64064489400a0aaf9ba850ab76fd1e647428a14a5e4abc199d4f29
- Frozen
- not frozen
- The definition can still change.
- Confounders
- Comment-writing style differs by country (GB vs IRE) and by race reader, so last_recovered may reflect who wrote the comment more than how the horse ran
- Overlap with late-headway closers: 'recovered' comments often come with 'made headway'. Closers without trouble were priced correctly (0.969 on 5,540), but the overlap still needs checking
- Small sample: the recovered subset of H19's 242 bets is likely under 150, so the discovery floor may not be met even if the effect is real
- Price band: in other families a single short-price band has carried apparent lifts, so check whether the lift is spread across prices
- Period stability: H19 rose from 1.07 to 1.26 across periods, so a subset could ride one period
- SP vs exchange: H19's edge was mostly at BSP, so an SP-measured A/E may understate it or behave differently
- Control
{ "description": "The key comparison is the other half of H19: runners checked last time and beaten 2 lengths or less whose comment carries no recovery note. If the mechanism holds, they should score clearly below the recovered group (near par, about 1.0 to 1.1), while the recovered group sits at 1.30 or more. The same-race other runners should sit near 1.0, which shows the lift is not a property of the races. If the unrecovered half scores as well as or better than the recovered half, the recovery note carries no information and the H19 lift belongs to the check flag alone.", "rule": "last_momentum_interrupted = 1 AND last_position > 1 AND last_beaten_lengths <= 2 AND (last_recovered = 0 OR last_recovered IS NULL)" }
Discovery result
pass broad rule (niche) · 16 Oct, 14:52
- Bets
- 31
- 9 winners
- A/E
- 1.59
- 95%: 0.73 to 3.02
- SP return
- +12.3%
- level stakes
- Betfair SP return
- +3.9%
- 30 bets with a BSP
Strike rate 29.0%. p = 0.12. Same-race control: the other runners in these races had A/E 0.87, 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. 0 of 5 survived.
- perturbation: Margin widened to 2.5 lengthsinfo
38 bets · A/E 1.42 (0.65 to 2.70) · control 0.92 · 16 Oct, 14:55
Breakdown
betsA/E0.71.01.32025-10-01 to 2026-04-2711–after 2026-04-2727–Bars grow from 1.00, the market. Faded bars have fewer than 40 bets. - perturbation: Margin tightened to 1.6 lengthsinfo
26 bets · A/E 1.74 (0.75 to 3.42) · control 0.84 · 16 Oct, 14:55
Breakdown
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.
Other experiments
- neighbour: > 1 -> 0 (-20%)pass
47 bets · A/E 1.06 (0.48 to 2.01) · control 0.98 · 16 Oct, 14:55
Breakdown
betsA/E0.71.01.32025-10-01 to 2026-04-2711–after 2026-04-2736–Bars grow from 1.00, the market. Faded bars have fewer than 40 bets. - neighbour: > 1 -> 2 (+20%)pass
21 bets · A/E 1.47 (0.54 to 3.21) · control 0.88 · 16 Oct, 14:55
Breakdown
bets
Lineage
Agent runs
designer v1ok · 24s · 16 Oct, 14:51
Output (schema-checked)
{ "rule": "last_momentum_interrupted = 1 AND last_position > 1 AND last_beaten_lengths <= 2 AND last_recovered = 1", "refinements": [ { "label": "14/1 or shorter (price-band confounder; edges in this family have died at big prices)", "rule": "last_momentum_interrupted = 1 AND last_position > 1 AND last_beaten_lengths <= 2 AND last_recovered = 1 AND sp_decimal <= 15" } ], "control": { "description": "The key comparison is the other half of H19: runners checked last time and beaten 2 lengths or less whose comment carries no recovery note. If the mechanism holds, they should score clearly below the recovered group (near par, about 1.0 to 1.1), while the recovered group sits at 1.30 or more. The same-race other runners should sit near 1.0, which shows the lift is not a property of the races. If the unrecovered half scores as well as or better than the recovered half, the recovery note carries no information and the H19 lift belongs to the check flag alone.", "rule": "last_momentum_interrupted = 1 AND last_position > 1 AND last_beaten_lengths <= 2 AND (last_recovered = 0 OR last_recovered IS NULL)" }, "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": [ "Comment-writing style differs by country (GB vs IRE) and by race reader, so last_recovered may reflect who wrote the comment more than how the horse ran", "Overlap with late-headway closers: 'recovered' comments often come with 'made headway'. Closers without trouble were priced correctly (0.969 on 5,540), but the overlap still needs checking", "Small sample: the recovered subset of H19's 242 bets is likely under 150, so the discovery floor may not be met even if the effect is real", "Price band: in other families a single short-price band has carried apparent lifts, so check whether the lift is spread across prices", "Period stability: H19 rose from 1.07 to 1.26 across periods, so a subset could ride one period", "SP vs exchange: H19's edge was mostly at BSP, so an SP-measured A/E may understate it or behave differently" ], "mechanism": "If H19's edge is ability lost to the check, then a horse that was checked, recovered and still finished within 2 lengths showed the most spare ability. A horse that was checked and never picked up again may simply have been beaten on merit. So the recovered subset should carry most of the H19 lift, and the unrecovered subset should sit closer to par.", "market_miss": "The form figure and the beaten distance are identical for recovered and unrecovered losers. The recovery shows only in the in-running comment, which prices barely use. The price-movement split found no allowance for the trouble either way (the half whose price did not shorten scored 1.236), so the market seems blind to the finer detail of the trouble as well.", "prediction": { "direction": "positive", "size": "A/E 1.30+ on roughly 80+ bets, clearly above H19 runners without a recovery note", "falsified_if": "Falsified if A/E is below 1.10, or at or below the A/E of the control group (H19 runners with last_recovered = 0 or NULL)." }, "notes": "The draft rule is sound: every column is pre-off and it adds only the one condition the mechanism needs, so it is kept as written. The single refinement targets the price-band confounder. A thin positive result still goes on to falsification and forward tracking. The verdict should depend on the gap between the recovered and unrecovered halves of H19, not on the recovered half's A/E alone." }
Timeline
Job 1868 finished
· engine:compute-1
hypothesis note H-d0a5f0ee
· engine:perturb
perturbation result for H-d0a5f0ee (neighbour: drop: last_position > 1): pass
· engine:perturb
perturbation result for H-d0a5f0ee (neighbour: drop: last_momentum_interrupted = 1): fail
· engine:perturb
perturbation result for H-d0a5f0ee (neighbour: <= 2 -> 3 (+20%)): pass
· engine:perturb
perturbation result for H-d0a5f0ee (neighbour: <= 2 -> 1 (-20%)): pass
· engine:perturb
perturbation result for H-d0a5f0ee (neighbour: > 1 -> 2 (+20%)): pass
· engine:perturb
perturbation result for H-d0a5f0ee (neighbour: > 1 -> 0 (-20%)): pass
· engine:perturb
compute-1 took job 1868 (mutate, attempt 1)
· compute-1
Job 1882 finished
· engine:compute-1
H-d0a5f0ee Falsification → KILLED falsified: 1 of 1 attacks broke it; fewer than two periods with enough bets to compare (thin: the forward record will judge); GB: too few bets to judge; IRE: too few bets to judge
· engine:falsification
falsification result for H-d0a5f0ee (price_band: Not carried by short prices: SP above 4.0): info
· engine:evaluator
compute-1 took job 1882 (attack, attempt 1)
· compute-1
Job 1881 finished
· engine:compute-1
falsification result for H-d0a5f0ee (partition: Excluding horses that also made late headway): info
· engine:evaluator