Hypotheses · story · H-a014e900
Rival: chase-error drift is mechanical (a bigger field), not a market markdown
forward A/E 0.0 on 0 bets, SP ROI None%, BSP ROI None% (p None)
Part of the thread “H24: one off jumping error well beaten” 27 hypotheses
- Proposed
- Designed
- Discovery
- Promising
- Falsification
- Frozen
- Vault
- Provisional
- Shadow
- Validated
- Live
- Source
- Investigator agent, v1
- Made by
- rival-explanation
- Created
- 17 Oct, 01:30
- 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-373590f6 (Test-mechanism: one-off chase error, well beaten, price drifted from l) passed discovery: A/E 1.5 on 263 bets (p 0.02), same-race control 0.96. O-9a130520
- AskedHow much of the drift is mechanical (a bigger field, or a step up in class) and not a market judgement on the bad run? answered
- MechanismIf the market really marks the horse down for the blunder run, the drift and the edge should both survive where the field did not grow. If drift only reflects bigger fields, the lift should vanish there.
- Why the market misses itThe form figure and beaten distance from the error run lengthen the price. The comment showing a single blunder after two clean rounds is not weighed, so the price is too long even against a same-size or smaller field.
- Predictedpositive, A/E 1.35 to 1.55 on about 120 to 160 bets
- Falsified ifA/E of 1.15 or lower on runners with field_size <= last_field_size while the drifted pool as a whole stays near 1.50, which would point to mechanical drift
- Rule sketch
race_type = 'Chase' AND remarked_last3 = 3 AND jumping_errors_last3 = 1 AND last_jumping_error = 1 AND (last_position IS NULL OR last_beaten_lengths > 10) AND last_sp_decimal IS NOT NULL AND sp_decimal > last_sp_decimal AND field_size <= last_field_size
Mechanism and rationale
If the market really marks the horse down for the blunder run, the drift and the edge should both survive where the field did not grow. If drift only reflects bigger fields, the lift should vanish there.
The rule
race_type = 'Chase' AND remarked_last3 = 3 AND jumping_errors_last3 = 1 AND last_jumping_error = 1 AND (last_position IS NULL OR last_beaten_lengths > 10) AND last_sp_decimal IS NOT NULL AND sp_decimal > last_sp_decimal AND last_field_size IS NOT NULL AND field_size <= last_field_size
Reads: race_type, remarked_last3, jumping_errors_last3, last_jumping_error, last_position, last_beaten_lengths, last_sp_decimal, sp_decimal, last_field_size, field_size
Pre-registration
- Spec hash (sha256 of the canonical pre-spec)
- 0e9ee868956a4a06d09c202fd6fe2aae8b833b4c6a4d65487bbee9ae307b0d95
- Frozen
- 17 Oct, 01:36
- Nothing in the definition can change after this.
- Confounders
- A class rise also lengthens the price and can coincide with a same-size field. Only GB can check this through race_class, because IRE class data starts in 2026-07.
- This rule is a subset of the drifted one-off chase-error pool (1.50 on 263) and of the frozen GB/IRE chase-error subsets, so it gives no independent confirmation of the core edge.
- The effect is GB-heavy: IRE drifted runners are weaker (1.11, and 0.53 at 25%+ drift), so the region mix can move the pooled result.
- The sample is small, about 120 to 160 bets with few wins, so a few big-priced winners can dominate the A/E. Irish runners at 16/1+ won 0 of 64.
- Other causes of drift beyond field size: a step up in race quality, a change of jockey or trainer, a going change, or stronger opposition at the same field size.
- Field size counts runners at the off, so late non-runners can shrink the field without the market treating it as a weaker race.
- Control
{ "description": "Same-race other runners should score about 0.95 to 1.00 A/E, showing the races themselves are not generous. The key rival comparison is the complementary drifted group whose field grew (field_size > last_field_size). If drift is a market markdown for the blunder, both groups should show a similar lift. If drift is mechanical, the lift should sit mainly in the grown-field group and the test rule should drop to about 1.15 or below.", "rule": "race_type = 'Chase' AND remarked_last3 = 3 AND jumping_errors_last3 = 1 AND last_jumping_error = 1 AND (last_position IS NULL OR last_beaten_lengths > 10) AND last_sp_decimal IS NOT NULL AND sp_decimal > last_sp_decimal AND last_field_size IS NOT NULL AND field_size > last_field_size" }
Discovery result
pass broad rule (niche) · 17 Oct, 01:35
- Bets
- 132
- 17 winners
- A/E
- 1.46
- 95%: 0.85 to 2.34
- SP return
- -0.8%
- level stakes
- Betfair SP return
- +17.5%
- 132 bets with a BSP
Strike rate 12.9%. p = 0.083. 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.
- perturbation: Beaten-distance cut raised 10 -> 12 lengthspass
126 bets · A/E 1.51 (0.88 to 2.42) · control 0.95 · 17 Oct, 01:36
Breakdown
betsA/E0.71.01.32025-10-01 to 2026-04-27531.72after 2026-04-27731.37Bars grow from 1.00, the market. Faded bars have fewer than 40 bets. - perturbation: Meaningful drift only (20%+ longer than last SP)pass
104 bets · A/E 1.24 (0.59 to 2.28) · control 0.98 · 17 Oct, 01:36
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, 01:36
Breakdown
betsA/E0.71.01.3forward0–Bars grow from 1.00, the market. Faded bars have fewer than 40 bets.
Other experiments
- neighbour: > 10 -> 8 (-20%)pass
140 bets · A/E 1.38 (0.81 to 2.21) · control 0.97 · 17 Oct, 01:36
Breakdown
betsA/E0.71.01.32025-10-01 to 2026-04-27571.63after 2026-04-27831.22Bars grow from 1.00, the market. Faded bars have fewer than 40 bets. - neighbour: > 10 -> 12 (+20%)pass
126 bets · A/E 1.51 (0.88 to 2.42) · control 0.95 · 17 Oct, 01:36
Breakdown
Lineage
Agent runs
designer v1ok · 28s · 17 Oct, 01:30
Output (schema-checked)
{ "rule": "race_type = 'Chase' AND remarked_last3 = 3 AND jumping_errors_last3 = 1 AND last_jumping_error = 1 AND (last_position IS NULL OR last_beaten_lengths > 10) AND last_sp_decimal IS NOT NULL AND sp_decimal > last_sp_decimal AND last_field_size IS NOT NULL AND field_size <= last_field_size", "refinements": [ { "label": "14/1 or shorter", "rule": "race_type = 'Chase' AND remarked_last3 = 3 AND jumping_errors_last3 = 1 AND last_jumping_error = 1 AND (last_position IS NULL OR last_beaten_lengths > 10) AND last_sp_decimal IS NOT NULL AND sp_decimal > last_sp_decimal AND last_field_size IS NOT NULL AND field_size <= last_field_size AND sp_decimal <= 15" }, { "label": "GB only", "rule": "region = 'GB' AND race_type = 'Chase' AND remarked_last3 = 3 AND jumping_errors_last3 = 1 AND last_jumping_error = 1 AND (last_position IS NULL OR last_beaten_lengths > 10) AND last_sp_decimal IS NOT NULL AND sp_decimal > last_sp_decimal AND last_field_size IS NOT NULL AND field_size <= last_field_size" }, { "label": "Field strictly smaller", "rule": "race_type = 'Chase' AND remarked_last3 = 3 AND jumping_errors_last3 = 1 AND last_jumping_error = 1 AND (last_position IS NULL OR last_beaten_lengths > 10) AND last_sp_decimal IS NOT NULL AND sp_decimal > last_sp_decimal AND last_field_size IS NOT NULL AND field_size < last_field_size" } ], "control": { "description": "Same-race other runners should score about 0.95 to 1.00 A/E, showing the races themselves are not generous. The key rival comparison is the complementary drifted group whose field grew (field_size > last_field_size). If drift is a market markdown for the blunder, both groups should show a similar lift. If drift is mechanical, the lift should sit mainly in the grown-field group and the test rule should drop to about 1.15 or below.", "rule": "race_type = 'Chase' AND remarked_last3 = 3 AND jumping_errors_last3 = 1 AND last_jumping_error = 1 AND (last_position IS NULL OR last_beaten_lengths > 10) AND last_sp_decimal IS NOT NULL AND sp_decimal > last_sp_decimal AND last_field_size IS NOT NULL AND field_size > last_field_size" }, "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": [ "A class rise also lengthens the price and can coincide with a same-size field. Only GB can check this through race_class, because IRE class data starts in 2026-07.", "This rule is a subset of the drifted one-off chase-error pool (1.50 on 263) and of the frozen GB/IRE chase-error subsets, so it gives no independent confirmation of the core edge.", "The effect is GB-heavy: IRE drifted runners are weaker (1.11, and 0.53 at 25%+ drift), so the region mix can move the pooled result.", "The sample is small, about 120 to 160 bets with few wins, so a few big-priced winners can dominate the A/E. Irish runners at 16/1+ won 0 of 64.", "Other causes of drift beyond field size: a step up in race quality, a change of jockey or trainer, a going change, or stronger opposition at the same field size.", "Field size counts runners at the off, so late non-runners can shrink the field without the market treating it as a weaker race." ], "mechanism": "A chaser with clean jumping in two of its last three runs makes one jumping error last time and is well beaten or fails to finish. The market reads the poor form figure and big beaten distance at face value and lets the price drift. If the drift is a true markdown for a misleading run, the edge should persist when today's field is no bigger than last time, because then the drift cannot come from a bigger field diluting win chances.", "market_miss": "Form figures and beaten distances from the error run push the price out. The in-running comment, a single blunder after two clean rounds, is not given enough weight, so the price stays too long even in a same-size or smaller field where a mechanical drift would not be expected.", "prediction": { "direction": "positive", "size": "A/E about 1.35 to 1.55 on roughly 120 to 160 bets, similar to the drifted pool's 1.50", "falsified_if": "A/E is 1.15 or lower on this rule while the drifted pool as a whole stays near 1.50 and the grown-field control carries the lift. That pattern would mean the drift is mechanical (field size), not a market markdown." }, "notes": "The draft rule is kept with one change: an explicit last_field_size IS NOT NULL guard. The expected sample (about 120 to 160 bets) sits near or below the 150-bet floor. The floor is kept as it is, because a thin result pointing the right way still goes on to falsification and forward tracking. Read the rule against the control (drifted runners whose field grew): both groups showing a lift supports the markdown reading. The 14/1-or-shorter refinement follows the known chase price structure. The GB refinement follows the known regional split." }
Timeline
Job 2304 finished
· engine:compute-1
hypothesis note H-a014e900
· engine:perturb
perturbation result for H-a014e900 (neighbour: drop: last_jumping_error = 1): pass
· engine:perturb
perturbation result for H-a014e900 (neighbour: drop: jumping_errors_last3 = 1): pass
· engine:perturb
perturbation result for H-a014e900 (neighbour: drop: remarked_last3 = 3): pass
· engine:perturb
perturbation result for H-a014e900 (neighbour: drop: race_type = 'Chase'): pass
· engine:perturb
perturbation result for H-a014e900 (neighbour: > 10 -> 12 (+20%)): pass
· engine:perturb
perturbation result for H-a014e900 (neighbour: > 10 -> 8 (-20%)): pass
· engine:perturb
compute-1 took job 2304 (mutate, attempt 1)
· compute-1
Queued mutate on the compute lane: parameter stability: do neighbouring thresholds hold?
· engine:scheduler
Job 2300 finished
· engine:compute-1
forward result for H-a014e900 (forward vs bar {'min_bets': 100, 'min_ae': 1.0, 'max_p': 0.2}): info
· engine:evaluator
compute-1 took job 2300 (forward_check, attempt 1)
· compute-1
Queued forward_check on the compute lane: daily forward check of a shadow system
· engine:scheduler
Job 2296 finished
· engine:compute-1
H-a014e900 Frozen → SHADOW vault skipped: remarked_last3, jumping_errors_last3, last_jumping_error, last_beaten_lengths do not exist before the discovery zone; track it forward instead
· engine:orchestrator