From 0f0ffa7e187a934a40e95625230e01ff7fe86921 Mon Sep 17 00:00:00 2001 From: TradeAC Book Agent Date: Tue, 18 Aug 2026 23:21:21 +0000 Subject: [PATCH] =?UTF-8?q?book:=20ch10=20risk=20limits=20that=20work=20?= =?UTF-8?q?=E2=80=94=20exp=2018/20,=20round=203,=20evidence=20#008/#009/#0?= =?UTF-8?q?20?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- book/chapters/10-risk-limits.md | 42 +++++++++++++++++++++++++++++++++ 1 file changed, 42 insertions(+) create mode 100644 book/chapters/10-risk-limits.md diff --git a/book/chapters/10-risk-limits.md b/book/chapters/10-risk-limits.md new file mode 100644 index 0000000..1215154 --- /dev/null +++ b/book/chapters/10-risk-limits.md @@ -0,0 +1,42 @@ +# Chapter 10 — Risk Limits That Work + +Status: drafting. Claim inventory: see `README.md` ch. 10. HITL review gate applies: risk-limit advice. + +Risk limits gate the live book before execution: a liquidity floor, a size cap, a concentration cap, and a drawdown pause. This chapter is deliberately careful about what it claims: the **A/B evidence** that the liquidity floor beats concentration caps is a pre-reset idea (not comparable post-reset); what is PROVEN is that the spec **executed** in round 3 and the funnel held. Any desk acting on the A/B numbers is acting on a hypothesis until the post-reset rerun lands. + +## The spec as executed + +Round 3 ran with `risk_limits`: liquidity floor **$5M** (min 20-day average dollar volume), size cap **12%** of book per name, concentration cap **95%**, drawdown pause **10%** (pause new buys if equity ≤ 90% of peak) `(PROVEN → round 3, EVIDENCE#020)`. The gates acted: the liquidity floor dropped **8** names from the target list before placement, and one further name was skipped at decision time (SLV, `delta_zero`) — the funnel closed 10 → 10 → 10 → 9 `(PROVEN → round 3 funnel, EVIDENCE#020)`. + +Two facts stand out. First, the liquidity floor was the *active* gate — it removed 8 of 10 low-liquidity ETF names, which is exactly the gate's purpose on a panel of thinly-traded funds. Second, the drawdown-pause gate did not trip (equity stayed above the pause threshold), so this round is **not** evidence about the pause's behavior — only about its non-interference. + +## What is PROVEN vs what is idea material + +- **PROVEN (execution):** the risk-limit spec runs, gates, and does not break the funnel — round 3 `(EVIDENCE#020)`. +- **HYPOTHESIS (idea, pre-clean-lake):** the A/B that the $5M floor *improves* the book — net IR 0.81→0.98 and drawdown 7.9%→5.4% in exp 18 — and that size/concentration caps *hurt* by cutting deployed capital (IR 0.816) `(idea → exp 18, EVIDENCE#008; not comparable post-reset, exp 20 R0 note)`. These are exactly the numbers the book must NOT cite as fact. +- **HYPOTHESIS (idea, pre-clean-lake):** entry/risk gates (momentum, HMM regime) were byte-identical no-ops in exp 20, supporting "the signal is the bottleneck, not the risk layer" `(idea → exp 20, EVIDENCE#009)`. + +`TODO(evidence-needed: risk-limit A/B on the post-reset reference — rd_risk_calibrate on the exp-26 lineage, comparing floor-on vs floor-off and the cap grid)` + +## Design guidance (derived, hedged) + +Reading across the (pre-reset, idea-tier) A/B and the (clean, proven) execution, the book offers hedged guidance — each item marked for what it is: + +1. **Liquidity floor first.** It was the only gate that acted in round 3, and it removes names the book cannot actually trade at size. `HYPOTHESIS` that it is the highest-value limit (pre-reset A/B + round-3 execution consistent, not a clean A/B). +2. **Caps that cut deployed capital cost edge.** On a thin-cost book, a size cap that forces smaller positions than the strategy wants spends the exact budget ch. 09 says is binding. `HYPOTHESIS` (idea-tier evidence, mechanism consistent with exp 26). +3. **Gates are no-ops when the signal is weak.** A regime/momentum gate that rarely trips adds complexity, not protection. `HYPOTHESIS` (idea-tier evidence). +4. **Pause gates are for tail events.** The drawdown pause is untested in round 3; it is cheap insurance, and its behavior under stress is unknown. `HYPOTHESIS`. + +## Where risk limits sit in the loop + +Risk limits are a post-signal gate — they cannot create edge, they can only destroy or preserve it (ch. 02). The campaign's reading is that the signal is the bottleneck (exp 20 idea, consistent with the clean-lake cost finding of ch. 09): limits should remove untradeable names and stop the book from self-destructing in a drawdown, and otherwise stay out of the way. That is a working posture, not a proof. + +## Practice note + +Run limits as a pre-gate on the same spec that gates backtests (`rd_backtest`/`rd_strategy_targets` share the `risk_limits` spec, so backtest and live are gated identically — the setup the campaign used). Reconcile each round's gate actions (names dropped, pauses tripped) in the trail (ch. 11). Until the post-reset A/B lands, treat the floor's benefit as hypothesis and the spec's execution as fact. + +## Open questions + +- `TODO(evidence-needed: post-reset risk-limit A/B on the exp-26 lineage)` +- `TODO(evidence-needed: drawdown-pause behavior — it never tripped; no evidence on its trigger/recovery)` +- `TODO(evidence-needed: liquidity floor level sensitivity — is $5M the right cutoff on this panel?)` \ No newline at end of file