Hypotheses · yard-planned-move · H-a584956c
Negative: short-priced new-yard runners after a heavy beating are over-bet, whatever the yard's record
vault CONTRADICTED: A/E 1.019 on 1793 bets, p 0.6508 against BH threshold 0.001724 over 58 vault tests
Part of the thread “Recruit to a yard good with new arrivals, after a heavy beating for its old trainer” 3 hypotheses
- Proposed
- Designed
- Discovery
- Promising
- Falsification
- Frozen
- Vault
- Provisional
- Shadow
- Validated
- Live
- Source
- Investigator agent, v1
- Made by
- generalise
- Created
- 17 Oct, 05:07
- Tests logged
- 10
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-53ab001f (Recruit to a yard good with new arrivals, after a heavy beating for it) was predicted positive but came out the other way: A/E 0.93 on 422 bets (p 0.399 for the opposite direction). O-0f113025
- H-61d14772 (Negative: short-priced recruits to a strong new yard after a heavy bea) pointed the predicted way but failed the bar: A/E 0.81 on 84 bets (p 0.809), control 1.04. O-282acadf
- H-432686d7 (Negative: short-priced planned moves from yards proven poor at that mo) pointed the predicted way but failed the bar: A/E 0.87 on 195 bets (p 0.82), control 1.05. O-bc2c08d8
- AskedAre short-priced horses having their first run for a new trainer after a heavy beating over-bet whatever the new yard's record, i.e. does the market price the move itself rather than the yard? answered
- MechanismA horse beaten heavily and then moved is backed by connections and punters who assume the new yard will fix it. The horse's ability has not changed, and a heavy beating often reflects a real limit. Money for the switch shortens the price beyond what the horse's form supports.
- Why the market misses itThe trainer change is visible on every racecard and draws stable-switch money. The heavy beating is put down to the old yard instead of being read as a true measure of the horse, so the short price carries narrative more than form.
- Predictednegative, A/E 0.82 to 0.92 on 300+ bets
Mechanism and rationale
A horse beaten heavily and then moved is backed by connections and punters who assume the new yard will fix it. The horse's ability has not changed, and a heavy beating often reflects a real limit. Money for the switch shortens the price beyond what the horse's form supports.
The rule
trainer_id <> last_trainer_id AND last_field_size >= 6 AND last_position >= 0.6 * last_field_size AND sp_decimal <= 8
Reads: trainer_id, last_trainer_id, last_field_size, last_position, sp_decimal
Pre-registration
- Spec hash (sha256 of the canonical pre-spec)
- ff4decec480d8581ace11424d1c77309b1cf20746da4a1ff5c916f24c2184189
- Frozen
- 17 Oct, 05:13
- Nothing in the definition can change after this.
- Confounders
- Country mix: GB recruits after a beating scored 0.81 on 316 and IRE 1.35 on 106 in the strong-yard version. No country column exists, so report the split by course or region after the fact and do not filter on it
- Big-yard dispersal and owner-driven mass transfers, where many horses move at once for reasons that have nothing to do with the horse
- Field size and favourite status: short prices concentrate in small fields and among favourites, and the favourite-longshot bias works the other way. Check A/E within favourite and non-favourite subsets
- Seasonal clustering of transfers (end of season, sales periods) and switches between codes that come with a trainer change
- Price band inside the short range: the effect may sit entirely at SP 5.0 or shorter
- Short price after a bad run regardless of trainer, which the same-trainer comparison is there to separate out
- Last-run non-finishers are excluded, because last_position is NULL and the predicate drops them, so pulled-up runners are not in the set
- Control
Discovery result
pass broad rule · 17 Oct, 05:11
- Bets
- 400
- 65 winners
- A/E
- 0.81
- 95%: 0.63 to 1.03
- SP return
- -31.2%
- level stakes
- Betfair SP return
- -20.5%
- 380 bets with a BSP
Strike rate 16.2%. p = 0.96. Same-race control: the other runners in these races had A/E 1.05, so the selection did not 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.
- control: Control: same trainer, same heavy beating, same short pricepass
8,095 bets · A/E 1.00 (0.95 to 1.05) · control 1.00 · 17 Oct, 05:13
Breakdown
betsA/E0.71.01.32025-10-01 to 2026-04-273,8611.04after 2026-04-274,2340.96Bars grow from 1.00, the market. Faded bars have fewer than 40 bets. - perturbation: Perturb looser: beating cut 0.5, field 5+, SP 9.0 or shorterpass
651 bets · A/E 0.94 (0.78 to 1.13) · control 1.01 · 17 Oct, 05:13
Sealed holdout (vault)
- Bets
- 1,793
- 17 Oct, 05:13
- A/E
- 1.02
- p = 0.65
- BH threshold then
- 0.0017
- over every vault test so far
- Outcome
- Failed
- vault query (contradicted)fail
1,793 bets · A/E 1.02 (0.92 to 1.13) · control 1.00 · 17 Oct, 05:13
Breakdown
betsA/E0.71.01.32020-227680.992023 to Sept 20251,0251.04
Forward record
No forward record. Shadow tracking starts after the vault and counts only races run after the freeze.
Lineage
Agent runs
designer v1ok · 52s · 17 Oct, 05:07
Output (schema-checked)
{ "rule": "trainer_id <> last_trainer_id AND last_field_size >= 6 AND last_position >= 0.6 * last_field_size AND sp_decimal <= 8", "refinements": [ { "label": "Shorter prices only (SP 5.0 or shorter): switch money should distort most where the price is shortest", "rule": "trainer_id <> last_trainer_id AND last_field_size >= 6 AND last_position >= 0.6 * last_field_size AND sp_decimal <= 5" }, { "label": "Heavier beating (bottom quarter of a field of 8+): the more decisive the beating, the more it reflects a real limit that the new-yard story ignores", "rule": "trainer_id <> last_trainer_id AND last_field_size >= 8 AND last_position >= 0.75 * last_field_size AND sp_decimal <= 8" } ], "control": { "description": "Same-race control: the other runners in the same races. They should score close to 1.00 (earlier new-yard and planned-move rules had controls of 1.00 to 1.05). The effect only counts if the rule's A/E is at least 0.05 below the same-race control. A second comparison is reported for reference and is not part of the pass test: short-priced runners with the same heavy beating last time that stayed with the same trainer. This shows whether the over-betting comes from the trainer switch or simply from a short price after a bad run.", "rule": "trainer_id = last_trainer_id AND last_field_size >= 6 AND last_position >= 0.6 * last_field_size AND sp_decimal <= 8" }, "pass_criteria": { "min_bets": 250, "min_ae": 1.05, "max_p": 0.05 }, "forward_bar": { "min_bets": 120, "min_ae": 1, "max_p": 0.2 }, "confounders": [ "Country mix: GB recruits after a beating scored 0.81 on 316 and IRE 1.35 on 106 in the strong-yard version. No country column exists, so report the split by course or region after the fact and do not filter on it", "Big-yard dispersal and owner-driven mass transfers, where many horses move at once for reasons that have nothing to do with the horse", "Field size and favourite status: short prices concentrate in small fields and among favourites, and the favourite-longshot bias works the other way. Check A/E within favourite and non-favourite subsets", "Seasonal clustering of transfers (end of season, sales periods) and switches between codes that come with a trainer change", "Price band inside the short range: the effect may sit entirely at SP 5.0 or shorter", "Short price after a bad run regardless of trainer, which the same-trainer comparison is there to separate out", "Last-run non-finishers are excluded, because last_position is NULL and the predicate drops them, so pulled-up runners are not in the set" ], "mechanism": "A horse beaten heavily and then moved to a new trainer is backed by connections and punters on the assumption that the new yard will fix it. The horse's ability has not changed, and a heavy beating (finishing in the bottom 40% of a field of 6 or more) often reflects a real limit. Money for the switch shortens the price beyond what the form supports. If the story is right, the over-betting comes from the visible move itself and not from the new yard's record: it showed up for strong-record yards (0.81 on 84) and for poor-record yards on other moves (0.87 on 195).", "market_miss": "The trainer change is printed on every racecard and draws stable-switch money. The heavy beating is put down to the old yard instead of being read as a true measure of the horse, so a short price on such a runner carries narrative more than form. Because this happens whatever the new yard's record, punters are pricing the switch itself and not any evidence about the yard.", "prediction": { "direction": "negative", "size": "A/E 0.82 to 0.92 on 300+ bets, at least 0.05 below the same-race control", "falsified_if": "A/E at or above 0.97 on 250+ bets, or A/E not at least 0.05 below the same-race control; also counts against the switch mechanism if the same-trainer comparison is just as low" }, "notes": "The rule sketch is kept as written. Every column is pre-off and available from mid-2020 in both countries. The rule generalises H-61d14772 by dropping the tx_new_yard record conditions, which answers Q-281e16e3 (is it the move or the yard?). Pass and forward criteria are read in the negative direction: the vault judges whether the runners are over-bet, i.e. the inverse ratio is at least 1.05. Min bets is raised to 250 to match the falsification clause. There is no country column, so the GB/IRE split cannot be a refinement and must be reported after the fact." }
Timeline
Job 3178 finished
· engine:compute-1
H-a584956c Vault → KILLEDfailed the vault vault CONTRADICTED: A/E 1.019 on 1793 bets, p 0.6508 against BH threshold 0.001724 over 58 vault tests
· engine:orchestrator
vault result for H-a584956c (vault query (contradicted)): fail
· engine:orchestrator
H-a584956c Frozen → FROZENvault vault query started
· engine:orchestrator
compute-1 took job 3178 (vault, attempt 1)
· compute-1
Job 3170 finished
· engine:compute-1
Queued vault on the compute lane: frozen: one sealed vault query
· engine:scheduler
H-a584956c Falsification → FROZEN survived falsification
· engine:falsification
falsification result for H-a584956c (partition: Partition: non-favourites only, to remove favourite-status confounding): pass
· engine:evaluator
compute-1 took job 3170 (attack, attempt 1)
· compute-1
Job 3169 finished
· engine:compute-1
falsification result for H-a584956c (partition: Partition: handicaps only, where a mark should already price in the beating): pass
· engine:evaluator
compute-1 took job 3169 (attack, attempt 1)
· compute-1
Job 3168 finished
· engine:compute-1
falsification result for H-a584956c (perturbation: Perturb tighter: beating cut 0.7, field 7+, SP 7.0 or shorter): pass
· engine:evaluator
compute-1 took job 3168 (attack, attempt 1)
· compute-1
Job 3167 finished
· engine:compute-1
falsification result for H-a584956c (perturbation: Perturb looser: beating cut 0.5, field 5+, SP 9.0 or shorter): pass
· engine:evaluator
compute-1 took job 3167 (attack, attempt 1)
· compute-1