Maximum Drawdown vs P(DD>X%) — リスクの語り方

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 を語る具体策:

  1. MaxDD だけで判断しない: 「MaxDD -X%」を見たら、Bootstrap で P(DD>1.5X%)、P(DD>2X%) を計算
  2. Underwater Curve をプロット: drawdown の「深さ」と「長さ」両方を可視化
  3. Time to Recovery を測る: 戦略毎に「復帰平均時間」を記録
  4. 「自分が耐えられる drawdown」を事前定義: 例 -25%、それを超える戦略は採用しない
  5. 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)”.

コメントする