# Chapter 09 — The Cost/Turnover Frontier Status: drafting. Claim inventory: see `README.md` ch. 09. This chapter is the empirical core of the book's cost argument: **turnover, not signal, is the binding constraint.** Ch. 03 established the gross→net collapse on the reference. Ch. 08 showed the fix. This chapter quantifies the frontier — what turnover costs at 20bp round-trips and what the trade-off looks like when you cut it. ## The frontier on the clean lake The 50-ETF panel, $1M book, 5bp open / 15bp close / $5 minimum. The same underlying signal (compact stochastic set, 5-seed ensemble, 5d label — IC 0.050, RankIC 0.066) expressed at different turnover levels: | Construction | Turnover character | Cost drag | Net ann | Net IR | Source | |--------------|--------------------|-----------|---------|--------|--------| | daily topk10, n_drop 2 | daily forced replacement | ~9–10pp | −3.21% | −0.32 | exp 24 | | daily topk10, n_drop 1 | daily, hold dropped name | ~5pp | +2.13% | +0.21 | exp 26 | | **weekly recompute** | **weekly refresh** | **~1.1pp** | **+12.51%** | **+1.24** | **exp 39 (Q07)** | | daily long-short top10/b10 | two-sided daily | ~9.7% of NAV | −8.38% | −0.83 | exp 41 (Q09) | `PROVEN — EVIDENCE#015 (exp 26), #028 (exp 39), #030 (exp 41)`. The n_drop 2→1 step (exp 26) already showed the mechanism with byte-identical signal metrics — the entire net gain was cost relief `(EVIDENCE#015)`. The weekly step (Q07) went further: same signal, same topk/n_drop, cadence only, and cost drag fell to ~1.1pp while net went to +12.51%. ## The long-short lesson Q09 is the cleanest demonstration that cost, not signal, is the frontier: the long-short construction had a *positive* pre-cost excess (+6.57%, IR 0.656) — the signal genuinely separates longs from shorts — yet cost **$96,721 ≈ 9.7% of NAV** in ~150 days (2485 trades, fill rate 0.40) and net was −8.38%. `PROVEN — EVIDENCE#030 → exp 41`. A construction that spends ~10% of the book annually on two-sided turnover cannot be rescued by signal alone. ## Where the frontier bends - **Cadence (proven).** Weekly recompute of a 5-day signal is the single biggest lever found: ~1.1pp drag, +12.51% net. `PROVEN — EVIDENCE#028 → exp 39`. - **Dropped-name policy (proven).** n_drop 2→1 (hold, don't re-trade) bought ~5pp. `PROVEN — EVIDENCE#015 → exp 26`. - **Sizing (weak).** Kelly-style sizing scaled exposure but did not change the turnover bill (Q06, +1.04% net). `PROVEN — EVIDENCE#027 → exp 38`. - **Label horizon (counterintuitive).** Longer labels improve the *signal* monotonically (22d IC 0.097, RankIC 0.117) but *worsen net* under daily churn (Q05: −4.60%). The horizon gain is real but unmonetized. `PROVEN — EVIDENCE#026 → exp 37`. ~~`TODO(evidence-needed: long-horizon label at weekly cadence — the combination is untested and is the book's most promising open cell)`~~ — **ANSWERED:** Q12 (exp 44): 22d+weekly net −4.88% IR −0.566. Q21 (exp 51): 10d+weekly net +1.19% IR 0.148. Both below IR 0.5 acceptance. Weekly is a universal cost lever (~10pp improvement) but the5d label remains the sweet spot. `EVIDENCE#036/042`. ## Desk rules distilled from this chapter 1. Compute cost drag as a share of NAV before believing any net number; at 20bp round-trips, 1% NAV per quarter is easy to spend. 2. Rank construction changes by cost drag first: cadence > dropped-name policy > sizing > gates. 3. Report gross and net side by side in every experiment; a positive-gross/negative-net run is a turnover problem, not a signal verdict. 4. `TODO(evidence-needed: realized-cost comparison of the weekly construction against the 5bp/15bp/$5 model once it trades live)` ## Evidence cited in this chapter | Tag | Source | |-----|--------| | `EVIDENCE#015` | exp 26, run `21afc6af…`, branch `exp/26-test-whether-reducing-topkdropout-daily` | | `EVIDENCE#028` | exp 39 (Q07), run `eb38588c…`, branch `exp/39-q07-weekly-rebalance-recompute-topkdropo` | | `EVIDENCE#030` | exp 41 (Q09), run `0647eadd…`, branch `exp/41-q09-long-short-market-neutral-long-top-1` | | `EVIDENCE#026` | exp 37 (Q05), run `daad5042…`, branch `exp/37-q05-label22d-22d-forward-return-label-vs` | | `EVIDENCE#027` | exp 38 (Q06), run `afca4b80…`, branch `exp/38-q06-kelly-sizing-score-magnitude-fractio` | | `EVIDENCE#013` | exp 24, run `fe469a19…`, branch `exp/24-run-the-rankic-ensemble-in-mlflow-experi` |