Hypotheses · race-betting · H-0939d0ac
Rival: yard quality, not yard size, drives the big-handicap top-two lift
fails: 162 bets, needs 300; p 0.3671, needs 0.05 or lower; periods [1.29, 0.9], each needs 1.0 (not a niche pass: a period points the other way [1.29, 0.9])
Part of the thread “H199: favourite at a big price in a big handicap” 12 hypotheses
- Proposed
- Designed
- Discovery
- Promising
- Falsification
- Frozen
- Vault
- Provisional
- Shadow
- Validated
- Live
- Source
- Investigator agent, v1
- Made by
- rival-explanation
- Created
- 16 Oct, 15:58
- Tests logged
- 1
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-659f3a37 (Big-yard runners at the front of the market in big handicaps beat thei) passed discovery: A/E 1.33 on 386 bets (p 0.022), same-race control 0.96. O-fe42f7ad
- AskedIs the big-yard top-two lift in big handicaps carried by a few trainers (for example two Irish mega-yards), or spread across many big yards in both countries? testing
- MechanismStrong yards get their handicappers into a big-field target well placed and fit. At 5/1+ the market prices the horse's own exposed form and gives too little weight to how reliably the yard produces a horse ready for that day. Size is only a proxy: big yards tend to be strong ones.
- Why the market misses itThe form book shows the horse's own form figures and handicap mark, not the yard's record of placing horses to win big handicaps. At 5/1+ in a 14+ runner field the horse looks like one of many, so the yard's strength is under-weighted.
- Predictedpositive, A/E 1.10 to 1.25 on 400+ bets, with IRE above 1.00
- Falsified ifA/E 1.04 or below on 300+ bets, or IRE at 1.00 or below, which would mean yard size (or particular trainers), not strike rate, is the lever
- Rule sketch
is_handicap = 1 AND sp_rank <= 2 AND sp_decimal >= 6 AND field_size >= 14 AND trainer_runs >= 300 AND trainer_wins >= 0.14 * trainer_runs
Mechanism and rationale
Strong yards get their handicappers into a big-field target well placed and fit. At 5/1+ the market prices the horse's own exposed form and gives too little weight to how reliably the yard produces a horse ready for that day. Size is only a proxy: big yards tend to be strong ones.
The rule
is_handicap = 1 AND sp_rank <= 2 AND sp_decimal >= 6 AND field_size >= 14 AND trainer_runs >= 300 AND trainer_wins >= 0.14 * trainer_runs
Reads: is_handicap, sp_rank, sp_decimal, field_size, trainer_runs, trainer_wins
Pre-registration
- Spec hash (sha256 of the canonical pre-spec)
- 0f563ee4af531f8aac6e43ce23cdddbb7dfa5811a1cce430ee2df2e06bd1324d
- Frozen
- not frozen
- The definition can still change.
- Confounders
- Overlap with the big-yard pool (H-659f3a37): most strong yards are big, so the broad rule alone cannot separate quality from size. The strong-small refinement and the big-weak control do that job.
- trainer_runs and trainer_wins are cumulative from 2020-07, so strike rates in the early months are noisy. trainer_runs >= 300 limits this, and the period split should be checked.
- GB/IRE mix: small Irish yards scored 0.88 and the Irish short end has been at par throughout. The IRE split (via course) must sit above 1.00 or the prediction fails.
- Concentration: a few high-strike yards could carry the result, so check the share of bets and profit from the top 3 trainers.
- Price basis: the big-yard pool showed a BSP lift against SP ROI near zero, so A/E against SP may overstate how much of the edge can actually be taken.
- Time fade: the related second-favourite and small-yard pools faded from the early period to the later one.
- Strike rate covers all race types, not handicaps alone, so a yard strong in maidens or novice races may count as strong here without being good at placing handicappers.
Discovery result
fail broad rule · 16 Oct, 16:00
- Bets
- 162
- 20 winners
- A/E
- 1.10
- 95%: 0.67 to 1.70
- SP return
- -17.6%
- level stakes
- Betfair SP return
- -0.7%
- 156 bets with a BSP
Strike rate 12.3%. p = 0.37. Same-race control: the other runners in these races had A/E 1.01, so the selection beat its own races. Zone: discovery. Evaluator eval-1.0, data 6a4e98be18e83933
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
Agent runs
designer v1ok · 37s · 16 Oct, 15:58
Output (schema-checked)
{ "rule": "is_handicap = 1 AND sp_rank <= 2 AND sp_decimal >= 6 AND field_size >= 14 AND trainer_runs >= 300 AND trainer_wins >= 0.14 * trainer_runs", "refinements": [ { "label": "Strong but not big yards (the discriminating test against yard size)", "rule": "is_handicap = 1 AND sp_rank <= 2 AND sp_decimal >= 6 AND field_size >= 14 AND trainer_runs >= 300 AND trainer_wins >= 0.14 * trainer_runs AND trainer_runs < 1500" }, { "label": "Second favourites only, where the big-yard lift was found to sit", "rule": "is_handicap = 1 AND sp_rank = 2 AND is_favourite = 0 AND sp_decimal >= 6 AND field_size >= 14 AND trainer_runs >= 300 AND trainer_wins >= 0.14 * trainer_runs" }, { "label": "Stricter strike rate (16%+), a dose-response check on yard quality", "rule": "is_handicap = 1 AND sp_rank <= 2 AND sp_decimal >= 6 AND field_size >= 14 AND trainer_runs >= 300 AND trainer_wins >= 0.16 * trainer_runs" } ], "control": { "description": "Same-race control: the other runners in these races should sit near par (about 0.95 to 1.01, as in the earlier big-yard control at 0.965), so any lift belongs to the selection and not to the race type. Rival-group control: big yards with a low strike rate, in the same price and field slots. If strike rate is the lever, these should be near par (1.00 or below) while the strong-yard rule is lifted. If they are lifted as much as the strong-yard pool, yard size is the lever and this rival fails.", "rule": "is_handicap = 1 AND sp_rank <= 2 AND sp_decimal >= 6 AND field_size >= 14 AND trainer_runs >= 1500 AND trainer_wins < 0.14 * trainer_runs" }, "pass_criteria": { "min_bets": 300, "min_ae": 1.05, "max_p": 0.05 }, "forward_bar": { "min_bets": 100, "min_ae": 1, "max_p": 0.2 }, "confounders": [ "Overlap with the big-yard pool (H-659f3a37): most strong yards are big, so the broad rule alone cannot separate quality from size. The strong-small refinement and the big-weak control do that job.", "trainer_runs and trainer_wins are cumulative from 2020-07, so strike rates in the early months are noisy. trainer_runs >= 300 limits this, and the period split should be checked.", "GB/IRE mix: small Irish yards scored 0.88 and the Irish short end has been at par throughout. The IRE split (via course) must sit above 1.00 or the prediction fails.", "Concentration: a few high-strike yards could carry the result, so check the share of bets and profit from the top 3 trainers.", "Price basis: the big-yard pool showed a BSP lift against SP ROI near zero, so A/E against SP may overstate how much of the edge can actually be taken.", "Time fade: the related second-favourite and small-yard pools faded from the early period to the later one.", "Strike rate covers all race types, not handicaps alone, so a yard strong in maidens or novice races may count as strong here without being good at placing handicappers." ], "mechanism": "Strong yards (high strike rate before today) get their handicappers to big-field targets well placed and fit. At 5/1+ in a 14+ runner handicap, the market prices the horse's own exposed form and mark and gives too little weight to how reliably the yard has a horse ready for the day. Yard size, in the form of a cumulative run count, is only a proxy for this, because big yards tend to be strong ones.", "market_miss": "The form book shows the horse's own figures and handicap mark, not the yard's record of producing winners. In a 14+ runner handicap a 5/1+ top-two runner looks like one of many, so punters and layers under-weight the yard's strength. This should show most clearly in strong yards that are not big, which do not have a big yard's market profile.", "prediction": { "direction": "positive", "size": "A/E 1.10 to 1.25 on 400+ bets, with IRE above 1.00 and the strong-but-not-big refinement also above 1.05", "falsified_if": "Any of these falsifies it: A/E 1.04 or below on 300+ bets; IRE at 1.00 or below; or the big-but-weak control lifted as much as the strong-yard rule while strong-but-small yards are at par. Each would mean yard size or particular trainers, not strike rate, is the lever." }, "notes": "I kept the rule sketch as written. trainer_runs and trainer_wins are pre-off ('record before today') and available from 2020-07 in both GB and IRE. I raised min_bets to 300 to match the falsification threshold. The key evidence against the size explanation is refinement 1 (strong yards under 1500 runs) set against the control (big yards with a low strike rate). IRE should be split using the course column, as the lab has done before." }
Timeline
Job 1944 finished
· engine:compute-1
H-0939d0ac Discovery → KILLED fails: 162 bets, needs 300; p 0.3671, needs 0.05 or lower; periods [1.29, 0.9], each needs 1.0 (not a niche pass: a period points the other way [1.29, 0.9])
· engine:evaluator
discovery result for H-0939d0ac (broad rule): fail
· engine:evaluator
H-0939d0ac Designed → RESEARCHdiscovery measuring on the discovery zone
· engine:orchestrator
compute-1 took job 1944 (evaluate, attempt 1)
· compute-1
Job 1942 finished
· engine:ai-1
Queued evaluate on the compute lane: discovery run of the broad rule
· engine:scheduler
H-0939d0ac Proposed → RESEARCHdesigned pre-spec written and hashed
· agent:designer@v1
ai-1 took job 1942 (design, attempt 1)
· ai-1
Queued design on the ai lane: write the pre-spec
· engine:scheduler
New idea H-0939d0ac: Rival: yard quality, not yard size, drives the big-handicap top-two lift (rival-explanation)
· agent:investigator@v1
Every change is an event with an actor: an agent and its version, an engine, a human, or the importer. Current stage: Killed.