Skip to content

Drawdown

One-line definition

The peak-to-trough decline in cumulative portfolio value.

Formula

Given a wealth path W_t = prod(1+r_s) for s<=t:

DD_t = W_t / max(W_0..W_t) - 1

Max drawdown = min(DD_t) over the path.

Units

Decimal or percent, always <= 0.

Why PMs care

It measures realized pain along the path, not just end-of-period volatility. Two strategies with identical Sharpe ratios can have very different worst-case drawdowns, which matters for client tolerance, leverage limits, and redemption risk.

Worked example

Period returns +10%, -20%, +5%:

W = [1.10, 0.88, 0.924], running max = [1.10, 1.10, 1.10]

DD = [0, -0.20, -0.16] -> max drawdown = -20%

Code recipe

import numpy as np

def max_drawdown(returns):
    r = np.asarray(returns, float)
    wealth = np.cumprod(1 + r)
    running_max = np.maximum.accumulate(wealth)
    drawdown = wealth / running_max - 1
    return float(drawdown.min())

Common mistakes

  • computing drawdown on returns instead of the cumulative wealth path
  • resetting the running peak too early (must be the max seen so far, not a rolling window)
  • reporting drawdown as a positive number and forgetting the sign convention elsewhere

Limitations / approximations

  • Path-dependent: same returns in a different order produce a different max drawdown.
  • A single historical path is one draw from many possible outcomes — pair with scenario/stress analysis for forward-looking risk.

Free resources