Hypotheses · yard-planned-move · H-1fa6b9d5
Handicap debut from a yard good at handicap debuts, after an ugly mark-qualifying run
forward A/E 0.0 on 0 bets, SP ROI None%, BSP ROI None% (p None)
Starts the thread “Handicap debut from a yard good at handicap debuts, after an ugly mark-qualifying run” 1 hypothesis
- Proposed
- Designed
- Discovery
- Promising
- Falsification
- Frozen
- Vault
- Provisional
- Shadow
- Validated
- Live
- Source
- Scout agent, v1
- Made by
- scout
- Created
- 17 Oct, 04:56
- Tests logged
- 18
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-2af132dc (Generalise: an unchanged mark after a heavy beating lifts close-form j) passed discovery: A/E 1.31 on 506 bets (p 0.026), same-race control 0.98. O-388a8a14
- H-2af132dc (Generalise: an unchanged mark after a heavy beating lifts close-form j) survived falsification: 4 of 5 attacks left it standing; it is frozen for its one vault query. O-74de1f0f
- H-6243bb06 (Test-mechanism: undropped recent winners after a heavy beating, given ) passed discovery: A/E 1.42 on 249 bets (p 0.034), same-race control 0.97. O-b3313152
- AskedIs the yard's handicap-debut edge biggest when the horse's last non-handicap run was a heavy beating, the kind of run a yard uses to get a workable mark?
- MechanismYards that are good at handicap debuts often run their horses in maidens and novices over the wrong trip, on the wrong ground or with little asked, so the handicapper sets a lenient mark. The last run before the debut is often a heavy beating that the yard meant to happen. That kind of defeat says nothing about the horse's real ability, and the yard's record shows the plan works.
- Why the market misses itOn the debut the form book shows a horse beaten 15+ lengths last time, so the public sees an outclassed horse. The yard's record at handicap debuts is not printed on the racecard and only shows up when you add up years of runs. The story thread found that an unchanged mark after a heavy beating gives a lift (O-388a8a14). This is the planned version of that same misreading.
- Predictedpositive, A/E 1.15 to 1.30 on 200+ bets
Mechanism and rationale
Yards that are good at handicap debuts often run their horses in maidens and novices over the wrong trip, on the wrong ground or with little asked, so the handicapper sets a lenient mark. The last run before the debut is often a heavy beating that the yard meant to happen. That kind of defeat says nothing about the horse's real ability, and the yard's record shows the plan works.
The rule
is_handicap = 1 AND prior_handicap_runs = 0 AND last_is_handicap = 0 AND tx_hcap_debut_runs >= 20 AND tx_hcap_debut_wins >= 1.3 * tx_hcap_debut_exp AND last_field_size >= 4 AND last_position * 2 > last_field_size
Reads: is_handicap, prior_handicap_runs, last_is_handicap, tx_hcap_debut_runs, tx_hcap_debut_wins, tx_hcap_debut_exp, last_field_size, last_position
Pre-registration
- Spec hash (sha256 of the canonical pre-spec)
- 2ef478e1f0c26b024cf763282aceeb90c1387f41403305f1a7de8bb27d87d240
- Frozen
- 17 Oct, 05:01
- Nothing in the definition can change after this.
- Confounders
- Field size and grade: handicap debuts cluster in small, low-grade races (class 5-7, nurseries), where SP calibration may differ. Check with the same-race control and by splitting on field size.
- Price band: the lift may rest on a few 16/1+ winners. The 14/1-or-shorter refinement tests this.
- Yard concentration: a few large yards with long handicap-debut records may supply most bets. Report A/E with the top 3 yards removed.
- Code: Flat (maidens and nurseries) versus jumps (novice hurdles into handicap hurdles). Report each code separately; the mechanism should hold in both.
- Data start: career counts begin in July 2020, so prior_handicap_runs = 0 can be wrong for older horses with earlier handicap runs. last_is_handicap = 0 guards only the last run. Report age <= 4 (Flat) separately as a cleaner subset.
- Proxy: last_beaten_lengths is only available from November 2025, so a finish in the bottom half of a field of 4+ stands in for '15+ lengths beaten'. Non-finishers (NULL last_position) are left out.
- Overlap: this population shares many runners with the parent yard handicap-debut rule (1.08, or 1.16 with 30-day form) and with the story-thread heavy-beating/unchanged-mark rule (O-388a8a14), so it is not an independent confirmation of either.
Discovery result
pass broad rule (niche) · 17 Oct, 05:00
- Bets
- 346
- 28 winners
- A/E
- 1.31
- 95%: 0.87 to 1.90
- SP return
- +2.5%
- level stakes
- Betfair SP return
- +67.5%
- 328 bets with a BSP
Strike rate 8.1%. p = 0.093. Same-race control: the other runners in these races had A/E 0.99, 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: Yard bar tightened: 25+ debut runs, wins >= 1.5x expectedpass
193 bets · A/E 1.58 (0.88 to 2.61) · control 0.98 · 17 Oct, 05:01
Breakdown
betsA/E0.71.01.32025-10-01 to 2026-04-271031.61after 2026-04-27901.52Bars grow from 1.00, the market. Faded bars have fewer than 40 bets. - perturbation: Ugly-run cut loosened: last run in the bottom 60% of the fieldpass
418 bets · A/E 1.36 (0.96 to 1.87) · control 0.98 · 17 Oct, 05:01
Sealed holdout (vault)
- Bets
- 1,765
- 17 Oct, 05:01
- A/E
- 1.21
- p = 0.012
- BH threshold then
- 0.0018
- over every vault test so far
- Outcome
- Failed
- vault query (supportive)pass
1,765 bets · A/E 1.21 (1.02 to 1.41) · control 0.99 · 17 Oct, 05:01
Breakdown
betsA/E0.71.01.32020-226221.302023 to Sept 20251,1431.16
Forward record
- forward vs bar {'min_bets': 100, 'min_ae': 1.05, 'max_p': 0.2}info
0 bets · · 17 Oct, 05:01
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
387 bets · A/E 1.38 (0.94 to 1.95) · control 0.98 · 17 Oct, 05:05
Breakdown
betsA/E0.71.01.32025-10-01 to 2026-04-272201.59after 2026-04-271671.07Bars grow from 1.00, the market. Faded bars have fewer than 40 bets. - neighbour: >= 20 -> 24 (+20%)pass
315 bets · A/E 1.40 (0.92 to 2.03) · control 0.99 · 17 Oct, 05:05
Breakdown
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 · 55s · 17 Oct, 04:56
Output (schema-checked)
{ "rule": "is_handicap = 1 AND prior_handicap_runs = 0 AND last_is_handicap = 0 AND tx_hcap_debut_runs >= 20 AND tx_hcap_debut_wins >= 1.3 * tx_hcap_debut_exp AND last_field_size >= 4 AND last_position * 2 > last_field_size", "refinements": [ { "label": "14/1 or shorter (edge should not rest on a few big-priced winners)", "rule": "is_handicap = 1 AND prior_handicap_runs = 0 AND last_is_handicap = 0 AND tx_hcap_debut_runs >= 20 AND tx_hcap_debut_wins >= 1.3 * tx_hcap_debut_exp AND last_field_size >= 4 AND last_position * 2 > last_field_size AND sp_decimal <= 15.0" }, { "label": "Dose-response: last run in the bottom quarter of the field (a heavier, more 'planned' beating)", "rule": "is_handicap = 1 AND prior_handicap_runs = 0 AND last_is_handicap = 0 AND tx_hcap_debut_runs >= 20 AND tx_hcap_debut_wins >= 1.3 * tx_hcap_debut_exp AND last_field_size >= 4 AND last_position * 4 > last_field_size * 3" }, { "label": "Yard also in form over the last 30 days (family finding: 30-day form sharpens handicap debuts)", "rule": "is_handicap = 1 AND prior_handicap_runs = 0 AND last_is_handicap = 0 AND tx_hcap_debut_runs >= 20 AND tx_hcap_debut_wins >= 1.3 * tx_hcap_debut_exp AND last_field_size >= 4 AND last_position * 2 > last_field_size AND t30_runs >= 5 AND t30_wins >= t30_exp" } ], "control": { "description": "Two comparisons. (1) The lab's standard same-race control: the other runners in these handicaps should score about 1.0 (they may be slightly below 1.0 if our runners take the winners). If they also score well above 1.0, the lift belongs to the race type, such as small low-grade handicaps, not to the planned move. (2) The falsification comparison from the hypothesis: the same strong handicap-debut yards' debutants whose last run was close (2nd or 3rd last time; this stands in for 'beaten under 5 lengths', because beaten lengths are only recorded from November 2025). The mechanism says the ugly last run is a deliberate mark-qualifying run that the market misreads, so the close-run group should score clearly lower than the main rule. If it scores as high or higher, then the yard's handicap-debut record explains the edge on its own and the 'ugly run' part of the hypothesis is false.", "rule": "is_handicap = 1 AND prior_handicap_runs = 0 AND last_is_handicap = 0 AND tx_hcap_debut_runs >= 20 AND tx_hcap_debut_wins >= 1.3 * tx_hcap_debut_exp AND last_field_size >= 4 AND last_position >= 2 AND last_position <= 3" }, "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": [ "Field size and grade: handicap debuts cluster in small, low-grade races (class 5-7, nurseries), where SP calibration may differ. Check with the same-race control and by splitting on field size.", "Price band: the lift may rest on a few 16/1+ winners. The 14/1-or-shorter refinement tests this.", "Yard concentration: a few large yards with long handicap-debut records may supply most bets. Report A/E with the top 3 yards removed.", "Code: Flat (maidens and nurseries) versus jumps (novice hurdles into handicap hurdles). Report each code separately; the mechanism should hold in both.", "Data start: career counts begin in July 2020, so prior_handicap_runs = 0 can be wrong for older horses with earlier handicap runs. last_is_handicap = 0 guards only the last run. Report age <= 4 (Flat) separately as a cleaner subset.", "Proxy: last_beaten_lengths is only available from November 2025, so a finish in the bottom half of a field of 4+ stands in for '15+ lengths beaten'. Non-finishers (NULL last_position) are left out.", "Overlap: this population shares many runners with the parent yard handicap-debut rule (1.08, or 1.16 with 30-day form) and with the story-thread heavy-beating/unchanged-mark rule (O-388a8a14), so it is not an independent confirmation of either.", "Selection-into-handicap timing: yards may pick the race (trip and ground switch) as well as the mark, so the effect may be a mix of a lenient mark and a change of conditions." ], "mechanism": "Yards with a proven handicap-debut record often run their horses in maidens and novices over the wrong trip, on the wrong ground or with little asked, so the handicapper gives them a lenient opening mark. The last non-handicap run before the debut is often a heavy beating that the yard meant to happen. That defeat understates the horse's ability. The yard's past handicap debutants, which beat their prices (wins >= 1.3 x expected over 20+ runs, known before the race), show that the plan works. So a handicap debutant from such a yard that finished in the bottom half last time should beat its SP.", "market_miss": "The form figures show a horse that finished well down the field last time, so punters read it as outclassed and its price drifts. The yard's record with handicap debutants is not printed on the racecard and only shows up when you add up years of runs. The market prices the visible bad run and not the hidden yard pattern. This is the planned version of the misreading in the story thread (O-388a8a14), where an unchanged mark after a heavy beating gave a lift.", "prediction": { "direction": "positive", "size": "A/E about 1.15 to 1.30 on 200+ bets; the close-last-run control should be clearly lower (about 1.0 to 1.08)", "falsified_if": "A/E below 1.05 on 150+ bets, or the control (same yards' handicap debutants that were 2nd or 3rd last time) scores as high as the main rule or higher." }, "notes": "I changed one thing in the rule sketch. last_beaten_lengths is only available from November 2025, so it is almost absent from the discovery zone. I replaced it with a proxy available from July 2020: a finish in the bottom half of a field of 4 or more (last_position * 2 > last_field_size). I added last_is_handicap = 0 because the July 2020 start of career counts means prior_handicap_runs = 0 can be wrong for older horses, and this keeps the 'last non-handicap run' framing. The yard condition is unchanged from the sketch (tx_hcap_debut_*, available from Aug/Sep 2020). If the vault's later window has last_beaten_lengths, the 15+ lengths version can be run as a check outside the sealed spec, but it is not part of this spec. Discovery bar raised to A/E 1.10, because the prediction is 1.15+ and the parent move already scores 1.08. Forward bar is A/E 1.05." }
Timeline
Job 3133 finished
· engine:compute-1
hypothesis note H-1fa6b9d5
· engine:perturb
perturbation result for H-1fa6b9d5 (neighbour: >= 4 -> 5 (+20%)): pass
· engine:perturb
perturbation result for H-1fa6b9d5 (neighbour: >= 4 -> 3 (-20%)): pass
· engine:perturb
perturbation result for H-1fa6b9d5 (neighbour: >= 1.3 -> 1.56 (+20%)): pass
· engine:perturb
perturbation result for H-1fa6b9d5 (neighbour: >= 1.3 -> 1.04 (-20%)): fail
· engine:perturb
perturbation result for H-1fa6b9d5 (neighbour: >= 20 -> 24 (+20%)): pass
· engine:perturb
perturbation result for H-1fa6b9d5 (neighbour: >= 20 -> 16 (-20%)): pass
· engine:perturb
compute-1 took job 3133 (mutate, attempt 1)
· compute-1
Queued mutate on the compute lane: parameter stability: do neighbouring thresholds hold?
· engine:scheduler
Job 3127 finished
· engine:compute-1
forward result for H-1fa6b9d5 (forward vs bar {'min_bets': 100, 'min_ae': 1.05, 'max_p': 0.2}): info
· engine:evaluator
compute-1 took job 3127 (forward_check, attempt 1)
· compute-1
Queued forward_check on the compute lane: daily forward check of a shadow system
· engine:scheduler
Job 3123 finished
· engine:compute-1
H-1fa6b9d5 Vault → SHADOW vault SUPPORTIVE: A/E 1.208 on 1765 bets, p 0.01205 against BH threshold 0.001818 over 55 vault tests
· engine:orchestrator