Why risk management is the real edge
Losses are asymmetric, ruin is permanent, and survival compounds. Why the trader who manages risk beats the trader with the better signal.
Most beginners obsess over the signal β the entry rule, the indicator, the machine-learning model. Professionals obsess over the money management: how much to bet, where to stop, how much total risk to carry. This part is where amateurs and professionals separate, because a mediocre strategy with great risk control survives, and a great strategy with no risk control eventually blows up. Every time.
Losses are asymmetric
Here is the fact that reorganises how you think about trading forever: a loss and an equal-sized gain are not symmetric. If you lose 50% of your account, you do not need +50% to get back β you need +100%, because you are now growing a smaller base. The maths is unforgiving:
To recover from a drawdown of d, the gain you need is d / (1 - d). Lose 10%, you need +11.1%. Lose 25%, you need +33.3%. Lose 50%, you need +100%. Lose 90%, you need a +900% return just to break even.
def gain_to_recover(drawdown):
class="s">""class="s">"drawdown as a fraction, e.g. class="n">0.5 for -class="n">50%. Returns required gain."class="s">""
return drawdown / (class="n">1 - drawdown)
for d in [class="n">0.10, class="n">0.20, class="n">0.30, class="n">0.50, class="n">0.75, class="n">0.90]:
print(f"Lose {d:.class="n">0%} -> need +{gain_to_recover(d):.class="n">0%} to break even")
class="c"># Lose class="n">10% -> need +class="n">11% to break even
class="c"># Lose class="n">20% -> need +class="n">25% to break even
class="c"># Lose class="n">30% -> need +class="n">43% to break even
class="c"># Lose class="n">50% -> need +class="n">100% to break even
class="c"># Lose class="n">75% -> need +class="n">300% to break even
class="c"># Lose class="n">90% -> need +class="n">900% to break evenThe chart is the whole argument. Small drawdowns are survivable β you claw them back with a normal winning run. Big drawdowns are a different category of problem: they demand returns so large that no honest strategy produces them, so the account that gets there usually never recovers. Your first job is to never reach the steep part of the curve.
Risk of ruin: the silent killer
Even a strategy with a genuine edge can go broke if it bets too big, purely from an unlucky streak. This is risk of ruin β the probability that a run of losses wipes you out before your edge has time to pay off. For a simple even-money game where you win with probability p and risk a fixed fraction, ruin becomes near-certain as bet size grows, *even when the edge is positive*.
import random
def prob_of_ruin(win_rate, risk_fraction, ruin_level=class="n">0.5,
trials=class="n">20000, trades=class="n">300):
class="s">""class="s">"Fraction of simulated paths that fall below ruin_level of start equity."class="s">""
ruined = class="n">0
for _ in range(trials):
equity = class="n">1.0
for _ in range(trades):
class="c"># win: +risk_fraction, loss: -risk_fraction (even payoff)
if random.random() < win_rate:
equity *= (class="n">1 + risk_fraction)
else:
equity *= (class="n">1 - risk_fraction)
if equity <= ruin_level:
ruined += class="n">1
break
return ruined / trials
for f in [class="n">0.02, class="n">0.05, class="n">0.10, class="n">0.20, class="n">0.40]:
r = prob_of_ruin(win_rate=class="n">0.55, risk_fraction=f)
print(f"Risk {f:class="n">5.0%} per trade -> {r:class="n">5.1%} chance of losing half")
class="c"># Risk class="n">2% per trade -> class="n">0.0% chance of losing half
class="c"># Risk class="n">5% per trade -> class="n">1.8% chance of losing half
class="c"># Risk class="n">10% per trade -> class="n">17.4% chance of losing half (approx)
class="c"># Risk class="n">20% per trade -> class="n">46.9% chance of losing half
class="c"># Risk class="n">40% per trade -> class="n">72.5% chance of losing halfSame 55% win rate β a real, healthy edge β in every row. The *only* thing that changes is bet size, and it swings the outcome from "perfectly safe" to "coin-flip whether you survive". The edge did not save the aggressive bettor. Position sizing is not a detail on top of the strategy; it is a first-order determinant of whether you make money at all.
Survival compounds
Growth is multiplicative, and multiplication punishes volatility. Two traders can have the *same average* return per trade, yet the one with smaller swings ends up far richer, because a big loss permanently shrinks the base that every future gain multiplies. This is the difference between the arithmetic mean (what looks good in a brochure) and the geometric mean (what actually accrues in your account).
import numpy as np
class="c"># Two return streams with the SAME arithmetic mean (+class="n">5% per period)
smooth = [class="n">0.05, class="n">0.05, class="n">0.05, class="n">0.05, class="n">0.05, class="n">0.05]
wild = [class="n">0.55, -class="n">0.45, class="n">0.55, -class="n">0.45, class="n">0.55, -class="n">0.15]
print(class="s">"arithmetic means:", np.mean(smooth), round(np.mean(wild), class="n">3))
def compound(returns):
eq = class="n">1.0
for r in returns:
eq *= (class="n">1 + r)
return eq
print(fclass="s">"Smooth path ends at {compound(smooth):.2f}x") class="c"># class="n">1.34x
print(fclass="s">"Wild path ends at {compound(wild):.2f}x") class="c"># class="n">0.68x -> a LOSS
class="c"># Identical average return. The wild path still LOSES money,
class="c"># because volatility is a drag on compound growth.Both streams average +5% per period. The smooth one turns 1.0 into 1.34; the wild one β same average β ends at 0.68, a net loss. The gap is pure volatility drag: the mathematical penalty that big swings impose on compounding. Reducing the size of your losses does not just feel better; it directly raises your long-run growth rate. That is the deep reason risk management *is* the edge, and everything in the rest of this part is a tool for controlling it.
Rule number one: never lose money. Rule number two: never forget rule number one. And the subtext of both rules is: stay in the game long enough for your edge to show up.
Next we make this concrete: how many shares or contracts to actually buy, derived from how much of your account you are willing to risk on the trade.