Hypotheses · story · H-5bdc794e
Test-mechanism: one-off chase error that the sectionals show cost ground
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
- test-mechanism
- Created
- 17 Oct, 01:03
- Tests logged
- 16
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
- H24-one-off-jumping-error-well-beaten (H24: one off jumping error well beaten) was GREEN in the earlier research: A/E 1.17 on 1570 bets (periods 1.12 / 1.23); now PROMISING. O-6e6fe2b6
- AskedWithin the H24 chase pool, is the lift larger when the sectionals show the error actually cost ground (low l_lgj_pct / last_ground_gained_pct)? answered
- MechanismA one-off error that physically cost lengths at the fences explains the heavy defeat. The horse's real level is better than the result, so it should win more often than its price says next time.
- Why the market misses itThe remark only says 'mistake'. The market cannot tell a mistake that cost five lengths from one that cost nothing, so it marks every remark error the same way.
- Predictedpositive, A/E 1.25 to 1.40 on 150+ bets, above the parent's 1.224
- Falsified ifA/E at or below the parent's 1.224, or below 1.10, on this subset. That would mean the measured cost does not carry the edge.
- 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 l_lgj_pct <= 0.33
Mechanism and rationale
A one-off error that physically cost lengths at the fences explains the heavy defeat. The horse's real level is better than the result, so it should win more often than its price says next time.
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_ground_gained_pct IS NOT NULL AND last_ground_gained_pct <= 0.33
Reads: race_type, remarked_last3, jumping_errors_last3, last_jumping_error, last_position, last_beaten_lengths, last_ground_gained_pct
Pre-registration
- Spec hash (sha256 of the canonical pre-spec)
- 124f359e5044bcf18868e58806854ac2c042d21a75bf5627c8bc4d42cf73a366
- Frozen
- 17 Oct, 01:08
- Nothing in the definition can change after this.
- Confounders
- The remark-based columns (remarked_last3, jumping_errors_last3, last_jumping_error) only start in Nov 2025, so the sample is short and seasonal (one jumps winter). It may fall short of 150 bets.
- Non-finishers (fell, pulled up, unseated) have no ground-gained figure, so the test drops them. The comparison with the parent is not like for like, because the parent includes them.
- Ground lost jumping late in a race can come from tiredness or a weak jumper being exposed, not from the single error. A low figure may mark a habitually poor jumper, which works against the edge.
- Bottom-third ground loss in a heavy defeat can partly follow from being beaten far (out of contention and jumping slowly), which circles back to the result.
- The edge depends on exchange prices: the parent was +15% at BSP but -14% at SP, so judge it at BSP.
- Long prices: in other story pools 16/1+ produced almost no winners, and a few big-priced runners can swamp A/E.
- Control
{ "description": "Same-race other runners should sit near A/E 1.0, which shows the lift does not come from the type of race. The control that tests the mechanism is the parent chase pool where the error did NOT cost measured ground (bottom third excluded). If the measured cost carries the edge, this group should score clearly below the test rule and below the parent's 1.224. If it scores the same as or higher than the test rule, the sectional confirmation adds nothing.", "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_ground_gained_pct IS NOT NULL AND last_ground_gained_pct > 0.33" }
Discovery result
pass broad rule (niche) · 17 Oct, 01:04
- Bets
- 243
- 32 winners
- A/E
- 1.29
- 95%: 0.88 to 1.82
- SP return
- -4.9%
- level stakes
- Betfair SP return
- +14.3%
- 243 bets with a BSP
Strike rate 13.2%. p = 0.093. Same-race control: the other runners in these races had A/E 0.97, 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 5 survived.
- perturbation: Loosen thresholds: ground gained bottom 40%, beaten 8L+pass
318 bets · A/E 1.28 (0.93 to 1.73) · control 0.97 · 17 Oct, 01:08
Breakdown
betsA/E0.71.01.32025-10-01 to 2026-04-271611.21after 2026-04-271571.37Bars grow from 1.00, the market. Faded bars have fewer than 40 bets. - perturbation: Tighten thresholds: ground gained bottom 25%, beaten 12L+pass
212 bets · A/E 1.36 (0.92 to 1.94) · control 0.96 · 17 Oct, 01:08
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.05, 'max_p': 0.2}info
0 bets · · 17 Oct, 01:08
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
253 bets · A/E 1.26 (0.87 to 1.78) · control 0.97 · 17 Oct, 01:04
Breakdown
betsA/E0.71.01.32025-10-01 to 2026-04-271241.21after 2026-04-271291.32Bars grow from 1.00, the market. Faded bars have fewer than 40 bets. - neighbour: > 10 -> 12 (+20%)pass
237 bets · A/E 1.32 (0.90 to 1.86) · control 0.97 · 17 Oct, 01:04
Breakdown
Lineage
Agent runs
designer v1ok · 43s · 17 Oct, 01:03
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_ground_gained_pct IS NOT NULL AND last_ground_gained_pct <= 0.33", "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_ground_gained_pct IS NOT NULL AND last_ground_gained_pct <= 0.33 AND sp_decimal <= 15" }, { "label": "error made over fences last time", "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_ground_gained_pct IS NOT NULL AND last_ground_gained_pct <= 0.33 AND last_race_type = 'Chase'" } ], "control": { "description": "Same-race other runners should sit near A/E 1.0, which shows the lift does not come from the type of race. The control that tests the mechanism is the parent chase pool where the error did NOT cost measured ground (bottom third excluded). If the measured cost carries the edge, this group should score clearly below the test rule and below the parent's 1.224. If it scores the same as or higher than the test rule, the sectional confirmation adds nothing.", "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_ground_gained_pct IS NOT NULL AND last_ground_gained_pct > 0.33" }, "pass_criteria": { "min_bets": 150, "min_ae": 1.1, "max_p": 0.05 }, "forward_bar": { "min_bets": 100, "min_ae": 1.05, "max_p": 0.2 }, "confounders": [ "The remark-based columns (remarked_last3, jumping_errors_last3, last_jumping_error) only start in Nov 2025, so the sample is short and seasonal (one jumps winter). It may fall short of 150 bets.", "Non-finishers (fell, pulled up, unseated) have no ground-gained figure, so the test drops them. The comparison with the parent is not like for like, because the parent includes them.", "Ground lost jumping late in a race can come from tiredness or a weak jumper being exposed, not from the single error. A low figure may mark a habitually poor jumper, which works against the edge.", "Bottom-third ground loss in a heavy defeat can partly follow from being beaten far (out of contention and jumping slowly), which circles back to the result.", "The edge depends on exchange prices: the parent was +15% at BSP but -14% at SP, so judge it at BSP.", "Long prices: in other story pools 16/1+ produced almost no winners, and a few big-priced runners can swamp A/E." ], "mechanism": "A chaser that made a single remarked jumping error in its last three runs, made it last time and was beaten more than 10 lengths, AND whose sectionals put it in the bottom third of the field for lengths gained jumping, lost real ground at the fences. Its heavy defeat overstates how poor it is. With an otherwise clean record, the error is likely a one-off, so its true level is better than the form figures and it should win more often than its price implies next time over fences.", "market_miss": "Form remarks just say 'mistake' and don't separate a costly error from a harmless one. Punters and compilers read the heavy beating plus a mistake as a generic poor run. The RaceiQ ground-gained-jumping figure, which measures how much the error actually cost, is not widely priced in. So horses whose error truly cost them lengths are marked down as much as horses that simply ran badly.", "prediction": { "direction": "positive", "size": "A/E 1.25 to 1.40 on 150+ bets, above the parent chase slice's 1.224, with the control (error but ground not lost) clearly lower", "falsified_if": "A/E at or below 1.224 (the parent), or below 1.10, on this subset. Also falsified if the control (last_ground_gained_pct > 0.33) scores the same as or higher than the test rule, since that would mean the measured ground cost does not carry the edge." }, "notes": "I changed the draft's l_lgj_pct (catalogue meaning only says 'lgj pct', and its direction is unclear) to last_ground_gained_pct. That column is documented as the share of the last field it beat on lengths gained jumping (0 to 1), so <= 0.33 clearly means bottom third for ground lost jumping. I also added IS NOT NULL so non-finishers are excluded explicitly. Both have the same window (GB 2023-03), so the binding window is still Nov 2025 from the remark columns. Pass min_ae is set at 1.10, matching the falsification bound. Judge at BSP." }
Timeline
Job 2158 finished
· engine:compute-1
forward result for H-5bdc794e (forward vs bar {'min_bets': 100, 'min_ae': 1.05, 'max_p': 0.2}): info
· engine:evaluator
compute-1 took job 2158 (forward_check, attempt 1)
· compute-1
Queued forward_check on the compute lane: daily forward check of a shadow system
· engine:scheduler
Job 2155 finished
· engine:compute-1
H-5bdc794e 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
compute-1 took job 2155 (vault, attempt 1)
· compute-1
Job 2153 finished
· engine:compute-1
Queued vault on the compute lane: frozen: one sealed vault query
· engine:scheduler
H-5bdc794e Falsification → FROZEN survived falsification
· engine:falsification
falsification result for H-5bdc794e (partition: Handicap chases only): pass
· engine:evaluator
compute-1 took job 2153 (attack, attempt 1)
· compute-1
Job 2152 finished
· engine:compute-1
falsification result for H-5bdc794e (control: Control: poor ground-gained jumping, heavy defeat, NO remarked error): pass
· engine:evaluator
compute-1 took job 2152 (attack, attempt 1)
· compute-1
Job 2151 finished
· engine:compute-1
falsification result for H-5bdc794e (price_band: Up to 7/1 only: drop the 8/1 to 14/1 band that carries the lift): pass
· engine:evaluator
compute-1 took job 2151 (attack, attempt 1)
· compute-1
Job 2150 finished
· engine:compute-1
falsification result for H-5bdc794e (perturbation: Tighten thresholds: ground gained bottom 25%, beaten 12L+): pass
· engine:evaluator