TL;DR
- MaxDD は 1 回の実現値、再現性ゼロ。「将来の MaxDD が同じ」保証なし
- 正しい語り方は P(DD>X%): 「-15% drawdown が起きる確率は 35%」のような確率分布
- Calmar (年率 / MaxDD) は denominator が 1 sample でブレる
- Underwater curve、Time to Recovery が運用継続性の鍵
Hook
「-8% は数字、-8% を 6 ヶ月引きずる体感は別物」
backtest が「MaxDD -8%」と表示する。安心して live に入れる。実運用で -12% を喰らう。「この戦略は壊れた」と判断して停止。これは MaxDD の単発性を理解していないがゆえの判断ミス。
Background
Maximum Drawdown は portfolio 価値が peak から trough まで下落した最大幅。Magdon-Ismail & Atiya (2004) “Maximum Drawdown” がこの metric の統計性質を分析している。
問題は MaxDD は backtest 期間内の 1 sample。例えば 5 年 backtest で MaxDD -8% が出ても、それは「その特定 5 年の中で最大」だっただけ。次の 5 年では -15% が普通に来うる。
Theory — MaxDD の単発性
MaxDD は extreme value statistic
「期間内の最低点」を取る metric は、観測期間長と分布特性で大きくブレる。10 年 backtest で MaxDD -X% なら、20 年 backtest では同じ戦略でも MaxDD -1.5X〜-2X 程度。期間が長いほど worst case が深くなる (extreme value theory)。
正しい語り方: P(DD>X%)
「将来 1 年以内に -X% drawdown が起きる確率は Y%」という確率記述。これは Monte Carlo or Bootstrap で計算可能。
import numpy as np
returns = ... # historical returns
n_simulations = 10_000
window = 252 # 1 year
dd_distribution = []
for _ in range(n_simulations):
sim = rng.choice(returns, size=window, replace=True)
cumulative = (1 + sim).cumprod()
peak = np.maximum.accumulate(cumulative)
drawdown = (cumulative - peak) / peak
dd_distribution.append(drawdown.min())
# P(DD < -15%) = ratio of simulations
p_dd_15 = (np.array(dd_distribution) < -0.15).mean()これで「年内に -15% を経験する確率は X%」という形に翻訳できる。
Calmar Ratio の限界
Calmar = 年率リターン / MaxDD。シンプルだが分母が 1 sample でブレる。10 年 backtest で MaxDD が偶然小さければ Calmar inflate、深ければ deflate。年単位で見ると不安定。
Underwater Curve
portfolio が peak からどれくらい下にいるかの時系列プロット。MaxDD が単発の数字なのに対し、underwater curve は「いつ・どれくらい下にいたか」を可視化。retail が「精神的に耐えられるか」を判断するには underwater curve が直感的。
Time to Recovery
drawdown 開始から peak 復帰までの時間。MaxDD -8% でも 6 ヶ月で復帰なら短期の痛み、3 年かかるなら長期の苦しみ。「深さ」と「長さ」は別の dimension。
Concrete example
教科書的な戦略 (年率 10%、std 12%、MaxDD -15% backtest 観測) の P(DD>X%):
| DD threshold | 年内に経験する確率 |
|---|---|
| -5% | ~85% |
| -10% | ~50% |
| -15% | ~20% |
| -20% | ~7% |
| -25% | ~2% |
「MaxDD -15%」と聞くと「最悪 15%」と勘違いしがちだが、実際は「年に 5% の確率で -25% を経験」する戦略。
Limitation / Counter-argument
1. Bootstrap の iid 仮定
Bootstrap で DD 分布を作る場合、iid 仮定でリターンを resample する。実際は autocorrelation・volatility cluster があり、長い drawdown が連鎖する。Block Bootstrap (Künsch 1989) で時系列構造を保つ必要がある。
2. Regime change
Bootstrap は「過去のリターン分布が将来も成立」を仮定。regime change (例: 2020 vs 2024 の市場特性) で前提が崩れる。
3. Conditional Drawdown at Risk (CDaR)
Chekhlov, Uryasev, Zabarankin (2005) が提案した CDaR は VaR の drawdown 版。CVaR と同様に「最悪 X% の場合の平均 DD」を見る。MaxDD より robust な metric。
4. retail と機関の risk metric
機関は VaR / CVaR / CDaR を日次で測定。retail は「感情的に耐えられる drawdown」が実質的 metric。retail は sustainability を最重視、機関は capital efficiency を重視、という差がある。
Practical takeaway
retail で risk を語る具体策:
- MaxDD だけで判断しない: 「MaxDD -X%」を見たら、Bootstrap で P(DD>1.5X%)、P(DD>2X%) を計算
- Underwater Curve をプロット: drawdown の「深さ」と「長さ」両方を可視化
- Time to Recovery を測る: 戦略毎に「復帰平均時間」を記録
- 「自分が耐えられる drawdown」を事前定義: 例 -25%、それを超える戦略は採用しない
- CDaR を計算: 「最悪 5% の場合の平均 DD」が安心圏内か
ただしこれらの計算は backtest データ依存であり、未知の regime change で予想を超える drawdown が来る可能性は常にある。OOS 検証が future performance を保証しない。
まとめ
MaxDD -8% は「過去にあった 1 例」であって「将来の最悪値」ではない。retail の risk 判断はこの違いを理解するところから始まる。
P(DD>X%) で確率分布として語る習慣がつけば、「この戦略を 1 年運用すると、5% の確率で -25% を喰らう」のように rational な期待設定ができる。それが運用継続性 (sustainability) を支える。
参考文献
- Magdon-Ismail, M., Atiya, A.F. (2004). Maximum Drawdown. Risk Magazine, October 2004.
- Chekhlov, A., Uryasev, S., Zabarankin, M. (2005). Drawdown Measure in Portfolio Optimization. International Journal of Theoretical and Applied Finance, 8(1), 13-58.
- Lopez de Prado, M. (2018). Advances in Financial Machine Learning. Wiley. Ch. 13.
- Künsch, H.R. (1989). The Jackknife and the Bootstrap for General Stationary Observations.
- Wikipedia, “Drawdown (economics)”.