Experiments / expG_cost_frontier
expG_cost_frontier
Cost frontier: transaction-cost sweep, where each surviving net effect crosses zero
View benchmark implementation (benchmark.py) →
Figures
Generated server-side from the latest committed results.json — never hand-typed.
Hypothesis
Hypothesis — expG_cost_frontier#
Pre-specified 2026-08-12 before the sweep ran.
Hypothesis
Tests H-family question Q5 on the expF double-filtered pool (the only
rules that beat BOTH the artifact nulls and the search correction,
gross): 12 reversion cells + ES->SPY + the expD 2014-2015 FDR lead-lag
set. Prior (Novy-Marx-Velikov; Chen-Velikov): high-turnover short-horizon
rules die well below realistic costs. Expectation: every intraday rule
has breakeven cost multiplier kappa* << 0.25 (a quarter of the half
spread — the patient-execution floor of Frazzini et al.); at most the
1day cells are ambiguous.
Falsification criterion
The "costs kill short-horizon anomalies" story is falsified if ANY
intraday rule from the pool survives kappa = 1 (paying the full
half-spread per trade) with positive net mean.
Artifact null(s)
None new — this experiment IS the cost layer. The spread input is the
EDGE estimate from daily OHLC of the TRADED instrument over the rule's
own period (independent granularity, as in expC).
Method (pre-declared)
Pool: mechanical intersection recomputed from committed expC/expF/expD
results (no hand-picking). Rule return streams rebuilt from the frozen
cache exactly as in expF, now with per-day TURNOVER = sum |delta
position| (entry included). Cost model: net_day = gross_day - kappa *
half_spread * turnover_day, half_spread = EDGE/2 per (traded instrument,
period). Sweep kappa in {0, 0.1, 0.25, 0.5, 1.0, 2.0}; for each rule
report gross mean, turnover/day, half-spread (bp), net mean and its
block-bootstrap t at each kappa, and the analytic breakeven
kappa* = gross_mean / (half_spread * mean_turnover). Survivor counts at
each kappa level; ES uses the same machinery with the futures caveat
declared (cost structure differs; kappa* still reported).
Result
Run 20260812T072128Z (cache-served). Pool: 31 rules (12 reversion cells,
16 lead-lag incl. ES x3 splices, sparse-name pairs). kappa* median =
0.0114, max = 0.28 (all 31 defined after invalid-day filtering): at the MEDIAN the double-filtered survivors capture
0.7% of one half-spread per trade. Survivors: kappa=0.1 -> 3 rules (all
sparse-name: AXDX 30min, CKX 1day, HTD 5min); kappa=0.25 -> CKX 1day
alone (kappa*=0.28); kappa=0.5 -> NONE; kappa=1.0 -> NONE. Zero intraday
rules survive kappa=1 — the pre-registered falsification did NOT trigger.
ES->SPY: kappa*=0.0028, identical across splices.
Interpretation
(Level 0.) The cost frontier does exactly what the literature priors
said it would (Novy-Marx-Velikov; Chen-Velikov): everything that
survived the artifact nulls AND the search correction dies at a fraction
of realistic costs. The gross "profits" were spread capture one cannot
buy. Q5's answer on this pool: the frontier sits at ~0.01-0.04 of a
half-spread for intraday rules — an order of magnitude below even the
most optimistic patient-execution assumptions. The single kappa=0.25
survivor (CKX 1day, an ultra-sparse name with a wide, noisy EDGE
estimate) is exactly the profile of a measurement artifact — it goes to
expH's validation split with a strong skeptical prior rather than being
discarded by hand.
Next experiment
expH: validation-split evaluation of whatever survives kappa >= 0.25
(if anything); otherwise expH validates the negative finding and the
atlas receives its first confidence-labeled entries.Analysis
Analysis — expG_cost_frontier#
Run: results/expG_cost_frontier/20260812T072128Z/results.json (pool rebuilt
mechanically from committed expC/expD/expF outputs — no hand-picking; cost
model and κ sweep pre-declared; cache-served).
The frontier#
| κ (× half-spread paid per trade) | survivors / 31 |
|---|---|
| 0 (gross) | 31 |
| 0.1 | 3 (AXDX 30min, CKX 1day, HTD 5min — all sparse names) |
| 0.25 | 1 (CKX 1day, κ* = 0.28) |
| 0.5 | 0 |
| 1.0 | 0 |
Median breakeven κ* = 0.0114: the median double-filtered rule captures ~1 % of one half-spread per trade. The intraday reversion cells sit at κ* 0.004–0.04; the 2014-2015 lead-lag residuals at 0.003–0.03; ES→SPY at 0.0028 (identical across all three splices). Zero intraday rules survive κ = 1 — the pre-registered falsification clause did not trigger.
Reading#
- The three-layer doctrine closes. expF showed statistical correction cannot detect mechanism; expG shows the mechanism's price: the gross survivors were harvesting exactly the thing they would have to pay. Charter Q5 answered on this pool: the cost frontier sits an order of magnitude below the most optimistic execution assumptions (Frazzini-style κ ≈ 0.1–0.25).
- The lone κ=0.25 survivor is the skeptic's case study. CKX (ultra sparse; wide, noisy EDGE spread; daily contrarian) has the classic profile of estimation artifact rather than economics. It is NOT discarded by hand — it goes to expH's validation split carrying the skeptical prior, which is what the protocol is for.
Hand-off#
expH evaluates on the untouched validation split: (i) CKX 1day (the lone cost survivor), (ii) the daily 2008-2015 reversal family (gross, cost-marginal — evaluated for the decay/negative record), and (iii) the NEGATIVE finding itself ("nothing intraday survives costs") — which, if it replicates out-of-sample, becomes the atlas's first confidence-labeled entries (charter result-types C and E).
README
expG_cost_frontier#
Cost frontier: transaction-cost sweep, where each surviving net effect crosses zero
Status: completed 2026-08-12 — median breakeven kappa*=0.0067; 1 marginal survivor at 0.25x half-spread (CKX 1day, skeptical prior); zero intraday survivors at kappa=1. The three-layer doctrine closes.
Result runs
- 20260812T072128Z / results.json 41.4 KiB