Hypotheses · story · H-2af132dc
Generalise: an unchanged mark after a heavy beating lifts close-form jumps handicappers
forward A/E 0.0 on 0 bets, SP ROI None%, BSP ROI None% (p None)
Part of the thread “H36: pulled up after being held up” 60 hypotheses
- Proposed
- Designed
- Discovery
- Promising
- Falsification
- Frozen
- Vault
- Provisional
- Shadow
- Validated
- Live
- Source
- Investigator agent, v1
- Made by
- generalise
- Created
- 17 Oct, 04:45
- 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-4392b730 (Rival: the jumps winner rebound is mark relief, strongest when the han) passed discovery as a niche: A/E 1.25 on 380 bets (p 0.08), same-race control 0.99. O-4822a69b
- H-4392b730 (Rival: the jumps winner rebound is mark relief, strongest when the han): the country 'GB' carries the effect (A/E 1.31) while the rest score IRE 0.96. O-7693085d
- AskedDoes an unchanged mark after a 20+ length beating mark a rebound in close-form jumps handicappers generally, beyond recent winners? answered
- MechanismFor any horse with close recent form, a handicapper who holds its mark after a 20+ length beating has treated the run as an aberration. The close form stays the true guide.
- Why the market misses itPunters weight the latest big margin and do not read the unchanged rating as an excuse.
- Predictedpositive, A/E 1.20 to 1.35 on 500+ bets, above the rating_change < 0 version
- Falsified ifA/E at or below 1.10, or no higher than the same rule with rating_change < 0
- Rule sketch
is_handicap = 1 AND race_type IN ('Hurdle', 'Chase') AND last_beaten_lengths >= 20 AND best_last3_beaten IS NOT NULL AND best_last3_beaten <= 6 AND rating_change >= 0
Mechanism and rationale
For any horse with close recent form, a handicapper who holds its mark after a 20+ length beating has treated the run as an aberration. The close form stays the true guide.
The rule
is_handicap = 1 AND race_type IN ('Hurdle', 'Chase') AND last_beaten_lengths IS NOT NULL AND last_beaten_lengths >= 20 AND best_last3_beaten IS NOT NULL AND best_last3_beaten <= 6 AND rating_change IS NOT NULL AND rating_change >= 0Reads: is_handicap, race_type, last_beaten_lengths, best_last3_beaten, rating_change
Pre-registration
- Spec hash (sha256 of the canonical pre-spec)
- 6d2c5a23bebd5662a8f147616971b02148725b9949fd93261a1826c99783f87a
- Frozen
- 17 Oct, 04:48
- Nothing in the definition can change after this.
- Confounders
- Overlap with frozen rules: H-baef90d8 (never-involved heavy beatings with close recent form, big fields), the jumps recent-winner rebound and going-change rules share many of these runners
- Big-field never-involved niche: the lift may sit entirely in last_never_involved = 1 with last_field_size >= 14 (tested by refinement 2)
- Longshot band: earlier story lifts often rested on a few winners at 16/1+ (tested by the 14/1-or-shorter refinement)
- IRE weighting: earlier rebounds were IRE-led with unchanged marks; GB must hold on its own (refinement 3)
- Short window: rating_change and best_last3_beaten exist only from 2025-11-01, so less than one jumps season and seasonal or going effects are possible
- Unchanged mark may also reflect a handicapper rule (e.g. no drop after non-completion-type runs or a fixed rating), not a real judgment, for some runners
- Possible confusion of 'unchanged' with 'raised': rating_change > 0 after a 20L beating is rare and may behave differently
- Control
{ "description": "Two comparisons. (1) Other runners in the same races should be about par (A/E about 0.95 to 1.0); if they are also lifted, the effect belongs to the races, not to the horses. (2) The key control is the same close-form, heavily beaten jumps handicappers whose mark was dropped (rating_change < 0). The mechanism says the unchanged mark is the signal, so the main rule must beat this control clearly. If the control matches or beats it, the effect is just close form after a bad run, not the handicapper's verdict.", "rule": "is_handicap = 1 AND race_type IN ('Hurdle', 'Chase') AND last_beaten_lengths IS NOT NULL AND last_beaten_lengths >= 20 AND best_last3_beaten IS NOT NULL AND best_last3_beaten <= 6 AND rating_change IS NOT NULL AND rating_change < 0" }
Discovery result
pass broad rule · 17 Oct, 04:47
- Bets
- 506
- 60 winners
- A/E
- 1.31
- 95%: 1.00 to 1.68
- SP return
- +16.4%
- level stakes
- Betfair SP return
- +73.2%
- 505 bets with a BSP
Strike rate 11.9%. p = 0.026. Same-race control: the other runners in these races had A/E 0.98, 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.
- control: Key-ingredient control: same horses but mark droppedpass
1,032 bets · A/E 1.19 (0.98 to 1.43) · control 0.99 · 17 Oct, 04:48
Breakdown
betsA/E0.71.01.32025-10-01 to 2026-04-275471.10after 2026-04-274851.30Bars grow from 1.00, the market. Faded bars have fewer than 40 bets. - control: Close-form control: held mark after a heavy beating but no close recent formfail
735 bets · A/E 0.83 (0.58 to 1.15) · control 1.02 · 17 Oct, 04:48
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, 04:49
Breakdown
betsA/E0.71.01.3forward0–Bars grow from 1.00, the market. Faded bars have fewer than 40 bets.
Other experiments
- neighbour: >= 20 -> 16 (-20%)pass
674 bets · A/E 1.20 (0.95 to 1.50) · control 0.99 · 17 Oct, 05:01
Breakdown
betsA/E0.71.01.32025-10-01 to 2026-04-273521.32after 2026-04-273221.08Bars grow from 1.00, the market. Faded bars have fewer than 40 bets. - neighbour: >= 20 -> 24 (+20%)pass
388 bets · A/E 1.33 (0.97 to 1.77) · control 0.98 · 17 Oct, 05:01
Breakdown
Lineage
Agent runs
designer v1ok · 33s · 17 Oct, 04:46
Output (schema-checked)
{ "rule": "is_handicap = 1 AND race_type IN ('Hurdle', 'Chase') AND last_beaten_lengths IS NOT NULL AND last_beaten_lengths >= 20 AND best_last3_beaten IS NOT NULL AND best_last3_beaten <= 6 AND rating_change IS NOT NULL AND rating_change >= 0", "refinements": [ { "label": "14/1 or shorter (longshot-band confounder)", "rule": "is_handicap = 1 AND race_type IN ('Hurdle', 'Chase') AND last_beaten_lengths IS NOT NULL AND last_beaten_lengths >= 20 AND best_last3_beaten IS NOT NULL AND best_last3_beaten <= 6 AND rating_change IS NOT NULL AND rating_change >= 0 AND sp_decimal <= 15" }, { "label": "Outside the big-field never-involved niche (overlap with H-baef90d8)", "rule": "is_handicap = 1 AND race_type IN ('Hurdle', 'Chase') AND last_beaten_lengths IS NOT NULL AND last_beaten_lengths >= 20 AND best_last3_beaten IS NOT NULL AND best_last3_beaten <= 6 AND rating_change IS NOT NULL AND rating_change >= 0 AND NOT (last_never_involved = 1 AND last_field_size >= 14)" }, { "label": "GB only (IRE-weighting confounder)", "rule": "is_handicap = 1 AND race_type IN ('Hurdle', 'Chase') AND last_beaten_lengths IS NOT NULL AND last_beaten_lengths >= 20 AND best_last3_beaten IS NOT NULL AND best_last3_beaten <= 6 AND rating_change IS NOT NULL AND rating_change >= 0 AND region = 'GB'" } ], "control": { "description": "Two comparisons. (1) Other runners in the same races should be about par (A/E about 0.95 to 1.0); if they are also lifted, the effect belongs to the races, not to the horses. (2) The key control is the same close-form, heavily beaten jumps handicappers whose mark was dropped (rating_change < 0). The mechanism says the unchanged mark is the signal, so the main rule must beat this control clearly. If the control matches or beats it, the effect is just close form after a bad run, not the handicapper's verdict.", "rule": "is_handicap = 1 AND race_type IN ('Hurdle', 'Chase') AND last_beaten_lengths IS NOT NULL AND last_beaten_lengths >= 20 AND best_last3_beaten IS NOT NULL AND best_last3_beaten <= 6 AND rating_change IS NOT NULL AND rating_change < 0" }, "pass_criteria": { "min_bets": 200, "min_ae": 1.1, "max_p": 0.05 }, "forward_bar": { "min_bets": 100, "min_ae": 1.05, "max_p": 0.2 }, "confounders": [ "Overlap with frozen rules: H-baef90d8 (never-involved heavy beatings with close recent form, big fields), the jumps recent-winner rebound and going-change rules share many of these runners", "Big-field never-involved niche: the lift may sit entirely in last_never_involved = 1 with last_field_size >= 14 (tested by refinement 2)", "Longshot band: earlier story lifts often rested on a few winners at 16/1+ (tested by the 14/1-or-shorter refinement)", "IRE weighting: earlier rebounds were IRE-led with unchanged marks; GB must hold on its own (refinement 3)", "Short window: rating_change and best_last3_beaten exist only from 2025-11-01, so less than one jumps season and seasonal or going effects are possible", "Unchanged mark may also reflect a handicapper rule (e.g. no drop after non-completion-type runs or a fixed rating), not a real judgment, for some runners", "Possible confusion of 'unchanged' with 'raised': rating_change > 0 after a 20L beating is rare and may behave differently" ], "mechanism": "When a jumps handicapper with close recent form (beaten 6 lengths or less in one of its last three runs) is beaten 20+ lengths last time, the official handicapper normally drops the mark. If the mark is held or raised, the assessor has in effect written off the heavy beating as an aberration (wrong ground, error, run not true). The earlier close form then stays the true guide to the horse's ability, so the horse runs closer to its close-form level than its last run suggests.", "market_miss": "Punters and form readers anchor on the most recent big losing margin and push the price out. They do not read an unchanged official rating as the handicapper's excuse for that run, and they discount the earlier close finishes.", "prediction": { "direction": "positive", "size": "A/E about 1.20 to 1.35 on 500+ bets, clearly above the rating_change < 0 control", "falsified_if": "Broad-rule A/E at or below 1.10, or no higher than the same rule with rating_change < 0, or the lift disappears outside the big-field never-involved niche" }, "notes": "I kept the rule sketch but added explicit IS NOT NULL guards on last_beaten_lengths and rating_change. Without the guard on rating_change, runs where it is NULL would drop out silently, and the guard makes that visible in the rule. Every column is pre_off. rating_change and best_last3_beaten exist only from 2025-11-01, so the discovery window is short. The 500+ bets the hypothesis expects may not be reached; a thin result pointing the right way goes on to falsification. Refinement 1 uses sp_decimal <= 15 (14/1). The pass bar is stricter than the floor (200 bets, A/E 1.10) because the hypothesis itself names 1.10 as the falsification line." }
Timeline
Job 3069 finished
· engine:compute-1
hypothesis note H-2af132dc
· engine:perturb
perturbation result for H-2af132dc (neighbour: >= 0 -> 1 (+20%)): fail
· engine:perturb
perturbation result for H-2af132dc (neighbour: >= 0 -> -1 (-20%)): pass
· engine:perturb
perturbation result for H-2af132dc (neighbour: <= 6 -> 7 (+20%)): pass
· engine:perturb
perturbation result for H-2af132dc (neighbour: <= 6 -> 5 (-20%)): pass
· engine:perturb
perturbation result for H-2af132dc (neighbour: >= 20 -> 24 (+20%)): pass
· engine:perturb
perturbation result for H-2af132dc (neighbour: >= 20 -> 16 (-20%)): pass
· engine:perturb
compute-1 took job 3069 (mutate, attempt 1)
· compute-1
Queued mutate on the compute lane: parameter stability: do neighbouring thresholds hold?
· engine:scheduler
Job 3062 finished
· engine:compute-1
forward result for H-2af132dc (forward vs bar {'min_bets': 100, 'min_ae': 1.05, 'max_p': 0.2}): info
· engine:evaluator
compute-1 took job 3062 (forward_check, attempt 1)
· compute-1
Queued forward_check on the compute lane: daily forward check of a shadow system
· engine:scheduler
Job 3058 finished
· engine:compute-1
H-2af132dc Frozen → SHADOW vault skipped: last_beaten_lengths, best_last3_beaten, rating_change do not exist before the discovery zone; track it forward instead
· engine:orchestrator