25 — Performance & Attribution

Drawdown Analysis#

Peak-to-TroughStatistical1 min read
◆ The PatternPeak-to-trough losses and recovery time

Maximum drawdown (MDD) is the largest peak-to-trough decline in portfolio equity. It measures the worst pain an investor endures.

MDD = maxt [ (Peakt − Trought) / Peakt ]
Recovery time — how long to regain the prior peak — matters as much as depth. A 50 % drawdown requires a 100 % gain to recover. The underwater curve plots drawdown depth over time.
// Interactive — volatility and underwater equity curve
Volatility
DrawdownRequired Gain
10 %11.1 %
25 %33.3 %
50 %100 %
75 %300 %
Behavioral impact. Drawdowns are a leading reason investors abandon strategies — even profitable ones.
Pattern bridge: Drawdowns test behaviour as much as capital: loss aversion and regret aversion are why investors sell near the bottom. The measurement itself is in maximum drawdown.
Worked example

A year of month-end equity. The peak of 108 comes in the third month; the trough of 89 five months later: a maximum drawdown of 17.6%. Getting back to 108 needed +21.3%, and took four months after the bottom. The deeper the fall, the steeper the climb: −50% needs +100%.

Where it misleads
  • Maximum drawdown is one path. A strategy with the same returns in a different order would have a different number, and a longer history almost always shows a deeper one (Magdon-Ismail & Atiya 2004).
  • A backtest drawdown is a minimum, not a forecast of the worst.
  • Duration matters as much as depth: a long shallow drawdown can be harder to sit through than a short deep one.
In code
equity = pd.Series([100, 104, 108, 103, 97, 91, 94, 89, 95, 99, 104, 110, 113])   # month-end, made up
peak = equity.cummax()
dd = equity / peak - 1
mdd = dd.min()
trough = dd.idxmin()
start = equity[:trough].idxmax()
recovered = equity[(equity.index > trough) & (equity >= peak[trough])].index.min()
to_recover = 1 / (1 + mdd) - 1                             # gain needed from the bottom
Python, in your browser — edit the code and run it again

Assumes import numpy as np and import pandas as pd. Each snippet carries its own example numbers; the comments say which are made up or simulated.

Sources
  • M. Magdon-Ismail & A. F. Atiya, “Maximum Drawdown”, Risk 17(10), 2004
  • A. Chekhlov, S. Uryasev & M. Zabarankin, “Drawdown Measure in Portfolio Optimization”, International Journal of Theoretical and Applied Finance 8(1), 2005
  • A. W. Lo, “The Statistics of Sharpe Ratios”, Financial Analysts Journal 58(4), 2002

Last reviewed October 2026 · How this site checks its content · Report a mistake

Check yourself

1. After a 50% drawdown, what gain is needed to get back to the peak?

Show answer

C. Half of the money must double. Losses and the gains needed to recover them are not symmetric.

2. Why does the maximum drawdown of a longer backtest tend to be larger?

Show answer

B. Maximum drawdown is an extreme, and extremes grow with sample length.

3. What is the Calmar ratio?

Show answer

A. The second is the Sharpe ratio, the third the Sortino ratio. Calmar penalises the single deepest fall.

Linked from 3
← Previous
Risk-Adjusted Performance
Open in the full reader, with the topic sidebar