Files
tac-exp-dev/book/chapters/08-portfolio-construction.md
T
zhaoli 06fb1e8ee9 book: fold Q-campaign (exp 33-43) evidence into ledger, claims, and chapters
- EVIDENCE#022-032: Q01-Q11 runs (2 PASS / 9 FAIL) with run_ids and branches
- CLAIMS: promote M2 Sharpe-drift to PROVEN (Q01), refute Kelly (Q06), risk-limit-as-alpha (Q08), standalone reversal (Q11); add label-horizon + weekly-rebalance + long-short-turnover claims
- README: TOC + claim inventories for ch 04/05/07/08/09/10/12 updated to the Q-campaign
- new chapters 04 (prune), 05 (ensembles), 07 (isolation), 08 (construction), 09 (cost/turnover), 10 (risk limits & gates), 12 (synthesis); ch 00/02/03 updated
- Q08 calibration evidence persisted under book/data/evidence/q08-risklimit/
2026-08-20 01:23:21 +00:00

56 lines
4.7 KiB
Markdown
Raw Blame History

This file contains ambiguous Unicode characters
This file contains Unicode characters that might be confused with other characters. If you think that this is intentional, you can safely ignore this warning. Use the Escape button to reveal them.
# Chapter 08 — Portfolio Construction: Dropout, Sizing, and Cadence
Status: drafting. Claim inventory: see `README.md` ch. 08.
This chapter asks how a given signal should be turned into a book. The answer the TradeAC campaign converged on is that **construction is the performance lever** — more than features, more than seeds — and the best construction found on the clean lake is weekly recompute of a daily signal.
## The construction space tested
All runs share the compact stochastic signal, 5-seed ensemble, 5d label, $1M / SPY benchmark / 5bp·15bp·$5 costs. Only the construction varies:
| Construction | Run | Net ann | Net IR | MaxDD | Gross ann | Note |
|--------------|-----|---------|--------|-------|-----------|------|
| Topk10 n_drop1, daily (reference) | exp 26 | +2.13% | +0.21 | −7.69% | +7.02% | baseline |
| Topk20, daily | Q03 (exp 35) | −1.88% | −0.253 | −8.80% | +0.64% | wider, no edge |
| Fractional-Kelly (cap 0.5) | Q06 (exp 38) | +1.04% | +0.112 | −7.13% | +5.43% | sizing, below bar |
| **Weekly recompute** | **Q07 (exp 39)** | **+12.51%** | **+1.243** | **−4.13%** | **+13.59%** | **wins chapter** |
| Long-short top10/bottom10, daily | Q09 (exp 41) | −8.38% | −0.834 | −11.22% | +6.57% | $96.7k cost |
`PROVEN — EVIDENCE#024/027/028/030 → exp 35/38/39/41`.
## Weekly recompute: the campaign's best result
The reference strategy recomputes the topk book **daily** from the same 5-day-label predictions. Q07 kept the signal, topk, n_drop, and risk_degree identical and changed only the rebalance cadence to **weekly** (ISO-week, recompute topk from the freshest score each week). Result:
- net +12.51% (IR **1.24**) vs +2.13% (IR 0.21) daily;
- maxDD −4.13% vs −7.69%;
- cost drag collapsed to ~1.1pp (gross +13.59% → net +12.51%), versus the ~5–9pp drags that dominated every daily construction;
- signal metrics byte-identical to exp 26 (IC 0.0502, RankIC 0.0660).
`PROVEN — EVIDENCE#028 → exp 39`. The prediction is a 5-day-ahead cross-sectional rank; holding it weekly instead of churning it daily lets the edge survive the 20bp round-trip. This is the strongest single construction result in the book — `TODO(evidence-needed: reproduce on a second window, then take to a live round)`.
## What failed, and why
- **Wider book (Q03):** topk 10→20 halves per-name size and cuts book vol (std 0.0048 vs 0.0065) but adds no edge net of cost (−1.88%). Spreading the same signal thinner does not create value.
- **Fractional Kelly (Q06):** sizing by score magnitude at half-Kelly (cap_frac 0.5) turned the negative daily book mildly positive (+1.04%, IR 0.11) and trimmed maxDD to −7.13% — but it is a weak paste-over of the turnover problem, not a fix, and lands far below the 0.21 acceptance bar.
- **Long-short (Q09):** the top10/bottom10 market-neutral construction has a genuine *pre-cost* edge (gross +6.57%, IR 0.656) — the signal does rank longs over shorts — but daily long-short turnover is prohibitive: **total cost $96,721 ≈ 9.7% of a $1M book**, 2485 trades in ~150 days, fill rate 0.40, net −8.38%. `PROVEN — EVIDENCE#030 → exp 41`. The same weekly cadence that fixed Q07 was deliberately *not* applied here; the pair is a controlled comparison of cadence on the same signal family.
Pre-clean-lake context: stochastic-control OptimalStopControl constructions (exp 13/14) bled ~11pp to cost — the same turnover mechanism, different strategy class. Those are idea material only. `HYPOTHESIS (idea: pre-clean-lake) — EVIDENCE#006/007`.
## Desk rules distilled from this chapter
1. Construction is a first-class lever: identical signal, +10pp of net annual difference between daily and weekly recompute (exp 26 vs 39).
2. Before changing the signal, ask whether turnover is the binding constraint — weekly cadence buys more than most feature additions.
3. Market-neutral structures are only worth the cost if the long-short spread clears two-sided turnover; on this panel it does not.
4. `TODO(evidence-needed: weekly + long-short combination — the pre-cost edge of Q09 may clear costs at weekly cadence)`
## Evidence cited in this chapter
| Tag | Source |
|-----|--------|
| `EVIDENCE#028` | exp 39 (Q07), run `eb38588c…`, branch `exp/39-q07-weekly-rebalance-recompute-topkdropo` |
| `EVIDENCE#024` | exp 35 (Q03), run `2a844c02…`, branch `exp/35-q03-topk20-widen-topkdropout-portfolio-f` |
| `EVIDENCE#027` | exp 38 (Q06), run `afca4b80…`, branch `exp/38-q06-kelly-sizing-score-magnitude-fractio` |
| `EVIDENCE#030` | exp 41 (Q09), run `0647eadd…`, branch `exp/41-q09-long-short-market-neutral-long-top-1` |
| reference | exp 26, run `21afc6af…`, branch `exp/26-test-whether-reducing-topkdropout-daily` |
| pre-clean idea | exp 13/14, EVIDENCE#006/007 |