Hypotheses · shock · H-f1791a33
Test-mechanism: habitual poor chase jumpers switched to hurdles today
Part of the thread “S2: chase completed normal habitual poor jumper” 4 hypotheses
- Proposed
- Designed
- Discovery
- Promising
- Falsification
- Frozen
- Vault
- Provisional
- Shadow
- Validated
- Live
- Source
- Investigator agent, v1
- Made by
- test-mechanism
- Created
- 17 Oct, 03:48
- Tests logged
- 0
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
- S2-chase-completed-normal-habitual-poor-jumper (S2: chase completed normal habitual poor jumper) pointed the predicted way (positive) on the sealed holdout but too weakly to prove it: A/E 1.141 on 1077 bets (p 0.060, false-discovery threshold 0.0034); tracked forward in SHADOW. O-1a861319
- AskedDoes the lift grow as the expected jumping gets worse, or as the last beaten margin grows (more of the defeat put down to jumping)? testing
- MechanismOver fences, a poor jumper loses ground and momentum at each obstacle, so its finishing form understates its engine. Hurdles cost less to jump, so more of that hidden ability shows.
- Why the market misses itThe market prices a hurdle runner off its recent chase form figures and beaten lengths. Those figures are depressed by jumping errors that matter less over hurdles.
- Predictedpositive, A/E 1.10 to 1.25 on 150+ bets
- Falsified ifA/E 1.00 or less on 150+ bets, or no better than the parent's chase-today runners.
- Rule sketch
code = 'Chase' AND finished = 1 AND s BETWEEN -0.75 AND 0.75 AND e <= -0.3104 AND race_type = 'Hurdle' - question idQ-b0edf33c
- operator
Mechanism and rationale
Over fences, a poor jumper loses ground and momentum at each obstacle, so its finishing form understates its engine. Hurdles cost less to jump, so more of that hidden ability shows.
The rule
code = 'Chase' AND finished = 1 AND s BETWEEN -0.75 AND 0.75 AND e <= -0.3104 AND race_type = 'Hurdle'
Reads: code, finished, s, e, race_type
Pre-registration
- Spec hash (sha256 of the canonical pre-spec)
- 0fff48fe5955b5cba80b9dce996148c4708991db22641ef7e6cb8802a8eaf3b5
- Frozen
- not frozen
- The definition can still change.
- Confounders
- Trainer switching intent: a switch to hurdles may signal a plan (a handicap mark, a confidence-building run) that the market already partly reads, so stable intent rather than jumping could drive any lift
- Novice hurdle class drop: chasers often drop into weaker novice or lower-class hurdles, so the lift may come from the class drop rather than from the smaller obstacles (refinement is_novice = 0 checks this)
- Small sample: the hurdle-today subset of an already narrow parent (1077 holdout runs, mostly chase-today) may fall short of 150 bets
- Country and window imbalance: IRE shock data only starts in Aug 2024, and the parent's lift was uneven by country (IRE 1.37 vs GB 1.11)
- Price-band skew: a few long-priced winners can inflate A/E on a thin pool, so judge by wins per price band
- Handicap mark mismatch: the hurdle rating may lag behind or sit below the chase rating, which is a ratings effect and not a jumping one
- Control
{ "description": "Two comparisons. (1) The same-race hurdle rivals should come in near A/E 1.0, or near whatever the lab's same-race baseline usually is (about 1.0 to 1.1). If the rivals show the same lift, the effect belongs to the race and not to the jumping switch. (2) The mechanism's own comparison is the parent group that ran over fences again today. If poor jumping hides ability that hurdles release, the hurdle-today group must beat the chase-today group. If they score about the same, the lift belongs to the parent profile and not to the obstacle switch.", "rule": "code = 'Chase' AND finished = 1 AND s BETWEEN -0.75 AND 0.75 AND e <= -0.3104 AND race_type = 'Chase'" }
Discovery result
Not measured yet.
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 · 27s · 17 Oct, 03:49
Output (schema-checked)
{ "rule": "code = 'Chase' AND finished = 1 AND s BETWEEN -0.75 AND 0.75 AND e <= -0.3104 AND race_type = 'Hurdle'", "refinements": [ { "label": "16/1 or shorter", "rule": "code = 'Chase' AND finished = 1 AND s BETWEEN -0.75 AND 0.75 AND e <= -0.3104 AND race_type = 'Hurdle' AND sp_decimal <= 17" }, { "label": "non-novice hurdles (removes the novice class-drop confounder)", "rule": "code = 'Chase' AND finished = 1 AND s BETWEEN -0.75 AND 0.75 AND e <= -0.3104 AND race_type = 'Hurdle' AND is_novice = 0" }, { "label": "GB only (IRE shock data starts Aug 2024, so its window is short)", "rule": "code = 'Chase' AND finished = 1 AND s BETWEEN -0.75 AND 0.75 AND e <= -0.3104 AND race_type = 'Hurdle' AND region = 'GB'" } ], "control": { "description": "Two comparisons. (1) The same-race hurdle rivals should come in near A/E 1.0, or near whatever the lab's same-race baseline usually is (about 1.0 to 1.1). If the rivals show the same lift, the effect belongs to the race and not to the jumping switch. (2) The mechanism's own comparison is the parent group that ran over fences again today. If poor jumping hides ability that hurdles release, the hurdle-today group must beat the chase-today group. If they score about the same, the lift belongs to the parent profile and not to the obstacle switch.", "rule": "code = 'Chase' AND finished = 1 AND s BETWEEN -0.75 AND 0.75 AND e <= -0.3104 AND race_type = 'Chase'" }, "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": [ "Trainer switching intent: a switch to hurdles may signal a plan (a handicap mark, a confidence-building run) that the market already partly reads, so stable intent rather than jumping could drive any lift", "Novice hurdle class drop: chasers often drop into weaker novice or lower-class hurdles, so the lift may come from the class drop rather than from the smaller obstacles (refinement is_novice = 0 checks this)", "Small sample: the hurdle-today subset of an already narrow parent (1077 holdout runs, mostly chase-today) may fall short of 150 bets", "Country and window imbalance: IRE shock data only starts in Aug 2024, and the parent's lift was uneven by country (IRE 1.37 vs GB 1.11)", "Price-band skew: a few long-priced winners can inflate A/E on a thin pool, so judge by wins per price band", "Handicap mark mismatch: the hurdle rating may lag behind or sit below the chase rating, which is a ratings effect and not a jumping one" ], "mechanism": "A habitual poor chase jumper (expected Jump Index e <= -0.31 from earlier runs) that last time completed a chase with a normal jumping performance for itself (|s| <= 0.75) has form figures that are steadily lowered by ground and momentum lost at each fence. Hurdles are smaller and cost less to jump, so when it switches to hurdles today more of its underlying ability shows in the result.", "market_miss": "The market prices a hurdle runner off its recent chase form figures and beaten lengths, as if they were good measures of ability. Those figures are lowered by jumping inefficiency that matters less over hurdles. The market makes no adjustment for a chronic, fence-specific jumping cost, because that cost appears only in sectional jump-index data and not in the form book.", "prediction": { "direction": "positive", "size": "A/E 1.10 to 1.25 on 150+ bets; clearly above the chase-today parent group", "falsified_if": "A/E 1.00 or less on 150+ bets, or A/E no higher than the control group (same profile running in a chase today), or same-race rivals showing an equal lift." }, "notes": "The rule sketch is kept as written: every column (code, finished, s, e, race_type) is pre-off and available from GB 2023-10 / IRE 2024-08, and the e threshold matches parent S2. The sample may come in under 150. If so and the direction is positive, the rule goes on to falsification and forward tracking as the lab policy allows; it does not pass discovery. The 16/1 cap is written as sp_decimal <= 17." }
Timeline
Job 3195 gave up: OperationalError: no such column: code Traceback (most recent call last): File "/app/lab/src/gallops/orchestrator/loop
· engine:compute-1
compute-1 took job 3195 (evaluate, attempt 5)
· compute-1
Job 3195 will retry: OperationalError: no such column: code Traceback (most recent call last): File "/app/lab/src/gallops/orchestrator/loop
· engine:compute-1
compute-1 took job 3195 (evaluate, attempt 4)
· compute-1
Job 3195 will retry: OperationalError: no such column: code Traceback (most recent call last): File "/app/lab/src/gallops/orchestrator/loop
· engine:compute-1
compute-1 took job 3195 (evaluate, attempt 3)
· compute-1
Job 3195 will retry: OperationalError: no such column: code Traceback (most recent call last): File "/app/lab/src/gallops/orchestrator/loop
· engine:compute-1
compute-1 took job 3195 (evaluate, attempt 2)
· compute-1
Job 3195 will retry: OperationalError: no such column: code Traceback (most recent call last): File "/app/lab/src/gallops/orchestrator/loop
· engine:compute-1