Hypotheses · ugly-result-physical-cause · H-8468890b
Short stride on soft ground last time, back on a sounder surface today
fails: A/E 0.875, needs 1.05; p 0.9393, needs 0.05 or lower; periods [0.8, 0.98], each needs 1.0; A/E 0.875 against same-race control 1.017, needs 0.03 above (not a niche pass: A/E 0.875 below 1.05; p 0.9393122723385944 above 0.5; does not beat the same-race control 1.017; a period points the other
Starts the thread “Short stride on soft ground last time, back on a sounder surface today” 1 hypothesis
- Proposed
- Designed
- Discovery
- Promising
- Falsification
- Frozen
- Vault
- Provisional
- Shadow
- Validated
- Live
- Source
- Scout agent, v1
- Made by
- scout
- Created
- 15 Oct, 23:27
- Tests logged
- 1
Mechanism and rationale
A horse with a long, raking action loses efficiency in soft or heavy ground: its stride shortens as hooves sink and it cannot use its natural gait. A stride length far below its field's, measured on soft ground, is physical evidence that the ground, not ability, caused the defeat. On good or faster ground the stride and the performance come back.
The rule
lower(last_going_group) IN ('soft', 'heavy') AND lower(going_group) NOT IN ('soft', 'heavy') AND lower(surface) = 'turf' AND l_same_code = 1 AND l_stride_length_pct IS NOT NULL AND l_stride_length_pct <= 0.2 AND last_position IS NOT NULL AND last_position > 1 AND last_field_size >= 5Reads: last_going_group, going_group, surface, l_same_code, l_stride_length_pct, last_position, last_field_size
Pre-registration
- Spec hash (sha256 of the canonical pre-spec)
- 28be0afa9d945f7d70dc0d6d4c61e025a84ac870a189f52fcec462ceae6cb487
- Frozen
- not frozen
- The definition can still change.
- Confounders
- Stride length scales with pace: a horse outclassed, tailed off or eased covers ground slowly and shows a short stride regardless of the ground. Refinement 2 (cadence held) and the not-short-stride control address this.
- Stride length scales with body size: small horses always rank low in the field; the stride flag may just be a size marker. Refinement 1 (long stride in its previous run in this code) addresses this.
- Direction of l_stride_length_pct is assumed (0 = shortest in the field, 1 = longest, as with other _pct columns used in this family); the catalogue does not state it, so read a sample of raw l_stride_length values against the pct before trusting the result.
- Seasonal clustering: soft-to-good switches bunch in spring and autumn, when fitness and the end/start of seasons change form; check by period and by month group.
- Ground-switch rules sit near 1.00 already (back on winning ground 1.00, pulled up on soft now on good 1.01), so any lift must come from the stride flag versus the control.
- RaceiQ data runs only from April 2023 (GB) and 2024 (IRE) and only at covered courses, so the sample is short; period split must be two halves.
Discovery result
fail broad rule · 15 Oct, 23:29
- Bets
- 1,596
- 123 winners
- A/E
- 0.88
- 95%: 0.73 to 1.04
- SP return
- -35.1%
- level stakes
- Betfair SP return
- -12.0%
- 1,518 bets with a BSP
Strike rate 7.7%. p = 0.94. Same-race control: the other runners in these races had A/E 1.02, so the selection did not beat its own races. Zone: discovery. Evaluator eval-1.0, data ef1163efa87ef7d2
By period
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
No parent and no descendants yet. When an agent mutates, generalises or splits this idea, the new hypotheses appear here.
Agent runs
designer v1ok · 47s · 15 Oct, 23:28
Output (schema-checked)
{ "rule": "lower(last_going_group) IN ('soft', 'heavy') AND lower(going_group) NOT IN ('soft', 'heavy') AND lower(surface) = 'turf' AND l_same_code = 1 AND l_stride_length_pct IS NOT NULL AND l_stride_length_pct <= 0.2 AND last_position IS NOT NULL AND last_position > 1 AND last_field_size >= 5", "refinements": [ { "label": "naturally long strider (the mechanism's own premise)", "rule": "lower(last_going_group) IN ('soft', 'heavy') AND lower(going_group) NOT IN ('soft', 'heavy') AND lower(surface) = 'turf' AND l_same_code = 1 AND l_stride_length_pct IS NOT NULL AND l_stride_length_pct <= 0.2 AND last_position IS NOT NULL AND last_position > 1 AND last_field_size >= 5 AND s_stride_length_pct_prev >= 0.5" }, { "label": "stride shortened but cadence held (sinking, not just going slowly)", "rule": "lower(last_going_group) IN ('soft', 'heavy') AND lower(going_group) NOT IN ('soft', 'heavy') AND lower(surface) = 'turf' AND l_same_code = 1 AND l_stride_length_pct IS NOT NULL AND l_stride_length_pct <= 0.2 AND last_position IS NOT NULL AND last_position > 1 AND last_field_size >= 5 AND l_stride_frequency_pct >= 0.4" }, { "label": "14/1 or shorter today", "rule": "lower(last_going_group) IN ('soft', 'heavy') AND lower(going_group) NOT IN ('soft', 'heavy') AND lower(surface) = 'turf' AND l_same_code = 1 AND l_stride_length_pct IS NOT NULL AND l_stride_length_pct <= 0.2 AND last_position IS NOT NULL AND last_position > 1 AND last_field_size >= 5 AND sp_decimal <= 15" } ], "control": { "description": "Two controls. (1) The lab's standard same-race comparison: the other runners in these races should sit at the usual RaceiQ control level (about 1.03-1.05); if they run as well as the selections, the lift is a property of good-ground races after soft-ground spells, not the stride flag. (2) A ground-switch control isolating the stride signal: horses beaten on soft/heavy last time, back on non-soft turf today in the same code, whose stride length was NOT short (pct > 0.2). The finding 'pulled up on soft, now on good' was 1.01, so this group is expected near 1.00-1.03; the hypothesis needs the selections to beat it by at least 0.05 A/E.", "rule": "lower(last_going_group) IN ('soft', 'heavy') AND lower(going_group) NOT IN ('soft', 'heavy') AND lower(surface) = 'turf' AND l_same_code = 1 AND l_stride_length_pct IS NOT NULL AND l_stride_length_pct > 0.2 AND last_position IS NOT NULL AND last_position > 1 AND last_field_size >= 5" }, "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": [ "Stride length scales with pace: a horse outclassed, tailed off or eased covers ground slowly and shows a short stride regardless of the ground. Refinement 2 (cadence held) and the not-short-stride control address this.", "Stride length scales with body size: small horses always rank low in the field; the stride flag may just be a size marker. Refinement 1 (long stride in its previous run in this code) addresses this.", "Direction of l_stride_length_pct is assumed (0 = shortest in the field, 1 = longest, as with other _pct columns used in this family); the catalogue does not state it, so read a sample of raw l_stride_length values against the pct before trusting the result.", "Seasonal clustering: soft-to-good switches bunch in spring and autumn, when fitness and the end/start of seasons change form; check by period and by month group.", "Ground-switch rules sit near 1.00 already (back on winning ground 1.00, pulled up on soft now on good 1.01), so any lift must come from the stride flag versus the control.", "RaceiQ data runs only from April 2023 (GB) and 2024 (IRE) and only at covered courses, so the sample is short; period split must be two halves.", "going_group text values are not documented; lower() is used and the turf filter excludes all-weather 'standard' going. Verify the value set (soft/heavy spelled as expected) before measuring." ], "mechanism": "A horse with a long, raking action loses efficiency in soft or heavy ground: its hooves sink, its stride shortens and it cannot use its natural gait. A stride length in the bottom fifth of its field, measured on soft or heavy, is physical evidence that the ground rather than ability caused the defeat, especially when the horse normally strides long and kept its cadence (it was sinking, not merely slowing). Back on good or faster turf, in the same code, the stride and the performance return.", "market_miss": "The ground excuse on its own is public and already priced (pulled up on soft, now on good: 1.01). What the market cannot see is which beaten horses physically struggled with the ground: stride length relative to the field is RaceiQ data that is not printed in form books or racecards. Punters see a plain defeat on soft and price it as lost ability, so a horse whose stride collapsed on soft should be underestimated when it returns to sound ground.", "notes": "Changes from the draft: added lower() to going comparisons (case of values unknown); restricted today to turf, since all-weather 'standard' going is not the sounder turf surface the mechanism describes; required l_same_code = 1 so stride in the last run is compared within the same code as today; required last_field_size >= 5 so the bottom-fifth percentile means something; explicit NOT NULL guards. Sample is limited to RaceiQ coverage from April 2023, so use two-halves period split. The draft's assumed pct direction is unverified in the catalogue and must be checked on a sample before reading the result." }
Timeline
Job 54 finished
· engine:compute-2
H-8468890b Discovery → KILLED fails: A/E 0.875, needs 1.05; p 0.9393, needs 0.05 or lower; periods [0.8, 0.98], each needs 1.0; A/E 0.875 against same-race control 1.017, needs 0.03 above (not a niche pass: A/E 0.875 below 1.05; p 0.9393122723385944 above 0.5; does not beat the same-race control 1.017; a period points the other way [0.8, 0.98])
· engine:evaluator
discovery result for H-8468890b (broad rule): fail
· engine:evaluator
H-8468890b Designed → RESEARCHdiscovery measuring on the discovery zone
· engine:orchestrator
compute-2 took job 54 (evaluate, attempt 1)
· compute-2
Job 44 finished
· engine:ai-1
Queued evaluate on the compute lane: discovery run of the broad rule
· engine:scheduler
H-8468890b Proposed → RESEARCHdesigned pre-spec written and hashed
· agent:designer@v1
ai-1 took job 44 (design, attempt 1)
· ai-1
Queued design on the ai lane: write the pre-spec
· engine:scheduler
New idea H-8468890b: Short stride on soft ground last time, back on a sounder surface today (scout)
· agent:scout@v1
Every change is an event with an actor: an agent and its version, an engine, a human, or the importer. Current stage: Killed.