Markets: A Rigorous Course

14.8 Risk limits and drawdown control

Foundation about 10 min

Motivation

Sizing each trade correctly (M03) does not size the book. Limits at two levels, plus a rule for drawdowns, keep a sequence of individually reasonable trades from producing an unreasonable loss.

14.8.1Position and portfolio limits#

Position-level limits

  • Risk per trade. Fixed fractional: shares =fE/(Pentry−Pstop)= fE/(P_{entry} - P_{stop}) where EE is equity and ff the fraction risked (M03; beginners commonly use 0.25–1%).
  • Notional cap per name (e.g. ≤ 20% of equity for swing trades), because a stop does not protect against gaps: an overnight gap through the stop turns a 1R loss into several R.
  • Liquidity cap: position ≤ a small fraction of average daily traded value (M05), so exits do not move the price.
  • Event rule: reduce or close before results, policy meetings or index rebalancing if the setup's statistics were not estimated over such events.

Portfolio-level limits

  • Open risk ("heat"): ∑ifi≤H\sum_i f_i \le H. If every stop is hit together (correlation 1), the loss is HH. With 5 positions at 1% each, H=5%H = 5\%.
  • Gross and net exposure, and beta-adjusted net exposure to the Nifty.
  • Sector/factor concentration: e.g. ≤ 2 positions per sector.
  • Stress loss: portfolio loss under a scenario (Nifty −10% gap, correlations to 1) ≤ a stated fraction of equity.

14.8.2Loss limits#

Loss limits A maximum daily loss (e.g. 2–3R) and weekly loss (e.g. 5–6R) stop trading for the period once hit. Their statistical role: after a cluster of losses, either the market regime has changed (the setup's distribution no longer applies) or the trader's decision quality has deteriorated (tilt; 14.9). Neither can be diagnosed in real time. Calibrate the limit so that it is rarely hit by chance: with 4 trades a day and a 60% loss rate, P(≥3 losses)=0.475P(\ge 3 \text{ losses}) = 0.475, so a "3 losses" daily stop would bind every other day and is too tight; with 6 trades a day, P(≥4)=0.544P(\ge 4) = 0.544. Set limits from the empirical distribution of daily R outcomes in your backtest (e.g. its 95th–99th percentile of daily loss), not from round numbers.

14.8.3Drawdown control#

Proposition 14.14A drawdown bound by cushion-proportional exposure

Let WtW_t be wealth, Mt=max⁡s≤tWsM_t = \max_{s\le t}W_s the running maximum, and fix d∈(0,1)d \in (0,1). Define the cushion Ct=Wt−(1−d)MtC_t = W_t - (1-d)M_t and hold risky exposure (in rupees) m Ctm\,C_t with m>0m > 0. If the risky asset's price path is continuous, then Wt>(1−d)MtW_t > (1-d)M_t for all tt: drawdown never reaches dd.

Proof

dWt=mCt dRtdW_t = mC_t\,dR_t, where dRtdR_t is the risky asset's return, and dCt=dWt−(1−d)dMtdC_t = dW_t - (1-d)dM_t. On any interval where MM is constant, dCt=mCt dRtdC_t = mC_t\,dR_t, so CC is a stochastic exponential, Ct=Cs E(mR)s,tC_t = C_s\,\mathcal E(mR)_{s,t}, which is strictly positive when Cs>0C_s > 0 and paths are continuous. MM increases only when Wt=MtW_t = M_t, at which point Ct=dMt>0C_t = dM_t > 0. Starting from C0=dW0>0C_0 = dW_0 > 0, CC stays positive.∎

This is the idea of Grossman & Zhou ("Optimal Investment Strategies for Controlling Drawdowns", Mathematical Finance 3(3), 1993) and of CPPI. In discrete time with gaps, a single return R<−1/mR < -1/m makes the cushion negative, so choose m<1/∣worst plausible gap∣m < 1/|\text{worst plausible gap}|. With d=10%d = 10\% and m=5m = 5, exposure is 50% of wealth at a new high and falls to zero as the drawdown approaches 10%; a 20% gap would take the cushion to exactly zero (a 10% drawdown) and any larger gap would breach the floor.

A practical drawdown rule in the spirit of 14.14 for discretionary traders: at a 5% drawdown from peak equity, halve ff; at 10%, stop live trading and return to paper until the review (14.10) is complete; restore size in steps as equity recovers. This sacrifices expected growth for a bound on the worst case, which, by M03's fractional-Kelly analysis, costs much less growth than it saves in ruin probability.

Create a free account

Reading is open to everyone. An account keeps your progress, answers, notes and code drafts, and gives you the study plan, the journals and the simulator. Running code needs an account approved for it.