ドローダウン管理
ドローダウン管理では、最大ドローダウン、連敗確率、ロット縮小、回復期間、心理的耐性、月次リスク上限を一体で設計し、USD/JPY 取引の破綻確率を下げます。 利益目標より先に、1回あたりの損失率、連敗時の縮小ルール、月次停止ラインを事前に固定します。 どこで小さくするか、どこで止めるかを先に決める設計であり、USD/JPY のデイトレ、スイング、裁量補助、システム売買の資金管理で使います。 とくに米CPI、FOMC、日銀会合、為替介入警戒局面では欠かせません。
定義
ドローダウン
ドローダウンは、資金曲線が過去最高値からどれだけ沈んだかを示します。
ここで は時点 の有効証拠金または評価額、 は過去最高値です。 最大ドローダウンは期間中の最大値です。
Goldberg and Mahmoud は最大ドローダウンを「ピークからボトムまでの最大累積損失」と定義しています。 実務では、勝率やPFよりも先に見ます。 理由は単純で、退場すると期待値は実現しないからです。
回復必要リターン
ドローダウン後に元本へ戻すための必要リターンは線形ではありません。
| ドローダウン | 元に戻す必要リターン |
|---|---|
| 5% | 5.26% |
| 10% | 11.11% |
| 20% | 25.00% |
| 30% | 42.86% |
| 50% | 100.00% |
20% 以上のドローダウンは、心理面ではなく数学的に重いものです。 USD/JPY で「数回の大きな損切りを取り返すためにロットを上げる」行為は、回復必要リターンをさらに悪化させます。
USD/JPY での前提
BIS の 2025 年調査では、OTC FX 市場の1日平均売買高は 9.6 兆ドルです。 USD/JPY は 2025 年 4 月に 1日平均 1.372 兆ドル、全体の 14.3% を占める主要通貨ペアです。 流動性は高いですが、流動性が高いことは低リスクを意味しません。
USD/JPY の主なリスク源は次の通りです。
- 米金利イベント: CPI、雇用統計、FOMC、米国債入札で値幅が広がる
- 日本側イベント: 日銀会合、総裁会見、賃金や物価関連報道で円主導の急変が起きる
- 介入警戒: 水準そのものよりも、急速な円安、円高に対する当局発言で流動性が薄くなる
- 時間帯: 東京仲値、ロンドン入り、NY指標、NYカットでボラティリティ構造が変わる
- 週跨ぎ: 地政学、政策報道、ギャップで逆指値が滑る
したがって USD/JPY のロットは「普段のスプレッド」ではなく、「滑った場合の損失」と「月次停止ライン」から決めます。
1回あたりのリスク
1回の損失率を とします。 固定比率でリスクを取る場合、 連敗後の資金残高は次の通りです。
連敗によるドローダウンは次の通りです。
| 1回リスク | 5連敗 | 10連敗 | 15連敗 |
|---|---|---|---|
| 0.25% | 1.24% | 2.47% | 3.68% |
| 0.50% | 2.48% | 4.89% | 7.24% |
| 1.00% | 4.90% | 9.56% | 13.99% |
| 2.00% | 9.61% | 18.29% | 26.14% |
実務上の基準は次で十分です。
- 通常運用: 1回リスクは 0.25% から 0.75%
- 高信頼セットアップ: 上限は 1.00%
- 指標前後、介入警戒、週跨ぎ: 0.25% 以下、または見送り
- 月次損失が進行中: 通常ロットへ戻さない
1回あたりの損失額とロットの関係は ポジションサイズ計算ツール で確認できます。
USD/JPY のロット計算
JPY建て口座で USD/JPY を取引する場合、1 pip は通常 0.01 円です。 通貨数量 に対する 1 pip の損益は概算で次の通りです。
許容損失を 、損切り幅を とすると、数量は次で決まります。
例として、資金 1,000,000 円、1回リスク 0.5%、損切り 35 pips を考えます。
この場合は 1.4 万通貨程度が上限です。 10万通貨で入ると、同じ 35 pips の損切りで約 35,000 円、資金比 3.5% の損失になります。 これは資金管理ではなく、値ごろ感の賭けです。
USD建て口座の場合、USD/JPY の pip 価値は概算で次の通りです。
ここで は USD/JPY レートです。 損切り幅とロットからの損失額は、損切りの設計とあわせて先に固定します。
連敗確率
勝率を 、負け率を とします。
次の 回がすべて負ける確率は単純に次になります。
ただしこれは「任意の N 回の中で k 連敗が一度でも出る確率」ではありません。 後者はかなり高くなります。
近似として、重なりを無視すれば次を使えます。
この近似は厳密ではありません。 連敗区間が重なるため、正確に見るなら動的計画法で計算します。
目安
勝率 50%、100 トレード中に 5 連敗以上が一度でも出る確率は高いものです。 5連敗を「異常」と扱う戦略は、最初から運用に耐えません。
| 勝率 | 負け率 | 次の5回が全敗 | 次の10回が全敗 |
|---|---|---|---|
| 40% | 60% | 7.78% | 0.60% |
| 50% | 50% | 3.13% | 0.10% |
| 55% | 45% | 1.85% | 0.03% |
| 60% | 40% | 1.02% | 0.01% |
「次の10回が全敗」は低く見えます。 しかし、200回の取引履歴のどこかで 8連敗、9連敗が出る確率は無視できません。 裁量トレードで勝率を過大評価すると、ここを必ず見誤ります。
連敗時のロット縮小ルール
連敗時にロットを増やしてはいけません。 ナンピン、マーチンゲール、倍掛けは、回復ではなく破綻速度の加速です。
基本ルールは次の通りです。
| 状態 | 取引可否 | 1回リスク |
|---|---|---|
| 通常 | 可 | |
| 2連敗 | 可 | |
| 3連敗 | 条件付き | |
| 4連敗 | 原則停止 | 0 |
| 月次 -3% | 縮小運用 | |
| 月次 -5% | 停止 | 0 |
| 資金最高値更新 | 通常復帰 |
復帰条件は「1勝したら戻す」では弱いものです。 次のいずれかを満たすまで縮小を継続します。
- 資金曲線が直近高値を更新した
- 連敗後の損失の 50% 以上を通常リスク以下で回復した
- 20 トレード以上の検証で期待値が崩れていない
- 主要イベント週が終わり、スプレッドと滑りが通常化した
月次リスク上限
月次リスク上限は、戦略の良し悪しではなく、運用者の生存ラインとして決めます。
推奨設計は次の通りです。
| 月次損益 | 状態 | ルール |
|---|---|---|
| 0% から -2% | 通常 | 予定通り運用 |
| -2% から -3% | 警戒 | 新規ロットを半分にする |
| -3% から -5% | 防御 | A級セットアップのみ、1回リスク 0.25% 以下 |
| -5% 到達 | 停止 | 月末まで実弾停止、検証のみ |
| -7% 到達 | 破綻扱い | 戦略、執行、心理ログを全面レビュー |
月次上限は「守れたらよい」ではなく、発注システムまたはチェックリストに組み込みます。 裁量で解除できる停止ルールは停止ルールではありません。
資金曲線と回復期間
資金曲線は損益グラフではなく、運用継続可否の計器です。 見るべき項目は次の通りです。
- MDD: 最大の深さ
- DD duration: 高値更新までの日数またはトレード数
- Ulcer Index: ドローダウンの深さと長さを同時に見る補助指標
- Recovery factor: 純利益を MDD で割る
- Equity slope: 右肩上がりでも急すぎる場合は過剰リスクを疑う
回復期間は次で測ります。
ドローダウンが浅くても、回復に長くかかる戦略は心理的に壊れやすいものです。 USD/JPY のレンジ相場でトレンドフォローを続けると、浅い損切りが長く続き、資金曲線が横ばいから下向きになります。 この期間にロットを上げると、トレンド再開前に停止ラインへ到達します。
心理的耐性の設計
心理的耐性は気合いではなく、数値で設計します。
まず、次を事前に書き出します。
- 許容できる最大月次損失
- 許容できる最大連敗数
- 連敗時に見送る条件
- 取引を再開する条件
- 損失後に禁止する行動
次に、実際の耐性は半分で見積もります。 バックテスト上の MDD が 12% なら、実運用では 18% から 24% を想定します。 スプレッド、滑り、約定遅延、裁量ミス、指標回避漏れが加わるためです。
CFTC は FX について「変動が大きく相当なリスクがある」と警告しています。 さらに、失って困る資金を入れるなとも明記しています。 この警告は詐欺対策だけでなく、通常のレバレッジ取引にもそのまま当てはまります。
ルール例
保守型
- 1回リスク: 0.25%
- 月次警戒: -2%
- 月次停止: -4%
- 3連敗: ロット半分
- 4連敗: 当日停止
- 重要指標: 30分前から30分後まで新規禁止
標準型
- 1回リスク: 0.50%
- 月次警戒: -3%
- 月次停止: -5%
- 2連敗: ロット半分
- 3連敗: A級のみ
- 4連敗: 48時間停止
攻撃型
- 1回リスク: 1.00%
- 月次警戒: -4%
- 月次停止: -7%
- 2連敗: ロット半分
- 3連敗: 0.25%へ縮小
- 5連敗: 月内停止
攻撃型は推奨しません。 十分な検証、低い執行ミス、明確な優位性、停止ルールの自動化がある場合だけ使います。
落とし穴
- 勝率からロットを決める: 勝率 60% でも連敗は起きる。ロットは MDD と月次停止ラインから逆算する。
- 5連敗を異常扱いする: 5連敗は普通に起きる。5連敗で崩れるルールは実運用に向かない。
- 損切り幅を狭めてロットを増やす: USD/JPY は指標時に滑る。形式上の損切り幅だけで数量を増やすと実損が跳ねる。
- 含み損をドローダウンから除外する: 有効証拠金ベースで見る。確定損益だけを見ると危険を遅れて認識する。
- 月次停止を裁量で解除する: 停止ライン到達後の「今回は例外」が最大損失を作る。
- 回復のためにロットを上げる: 必要リターンが増えた状態でリスクを増やすため、破綻確率が上がる。
- バックテストの MDD をそのまま信じる: 実運用では滑り、スプレッド、未約定、心理ミスが加わる。
- USD/JPY の流動性を安全性と誤解する: 流動性が高い通貨ペアでも、イベント時の値幅と滑りは別問題。
Python 実装スケッチ
from __future__ import annotations
import numpy as npimport pandas as pd
def drawdown(equity: pd.Series) -> pd.DataFrame: peak = equity.cummax() dd = 1.0 - equity / peak return pd.DataFrame({ "equity": equity, "peak": peak, "drawdown": dd, "max_drawdown_to_date": dd.cummax(), })
def max_drawdown(equity: pd.Series) -> float: return float((1.0 - equity / equity.cummax()).max())
def recovery_return(drawdown_rate: float) -> float: if not 0 <= drawdown_rate < 1: raise ValueError("drawdown_rate must be in [0, 1).") return drawdown_rate / (1.0 - drawdown_rate)
def loss_streak_drawdown(risk_per_trade: float, losses: int) -> float: return 1.0 - (1.0 - risk_per_trade) ** losses
def usdjpy_units_jpy_account( equity_jpy: float, risk_rate: float, stop_pips: float, pip_size: float = 0.01,) -> float: risk_jpy = equity_jpy * risk_rate return risk_jpy / (stop_pips * pip_size)
def probability_next_k_losses(win_rate: float, k: int) -> float: q = 1.0 - win_rate return q ** k
def probability_at_least_one_loss_streak_exact( win_rate: float, trades: int, streak: int,) -> float: """ Exact DP for Bernoulli trials. State j means current consecutive losses length is j, where j < streak. Once j reaches streak, the path is excluded from 'no streak' probability. """ q = 1.0 - win_rate p = win_rate
states = np.zeros(streak) states[0] = 1.0
for _ in range(trades): nxt = np.zeros(streak)
# Win resets loss streak to zero. nxt[0] += states.sum() * p
# Loss moves j -> j + 1, unless that would hit the forbidden streak. for j in range(streak - 1): nxt[j + 1] += states[j] * q
states = nxt
probability_no_streak = states.sum() return 1.0 - probability_no_streak
def apply_lot_reduction(base_risk: float, consecutive_losses: int, monthly_pnl_rate: float) -> float: if monthly_pnl_rate <= -0.05: return 0.0 if monthly_pnl_rate <= -0.03: return min(base_risk * 0.25, 0.0025) if consecutive_losses >= 4: return 0.0 if consecutive_losses == 3: return base_risk * 0.25 if consecutive_losses == 2: return base_risk * 0.5 return base_risk検証手順
- 取引履歴から有効証拠金ベースの
equityを作る。 max_drawdown(equity)で過去最大ドローダウンを出す。- 勝率ではなく、平均損失、最大損失、連敗数、DD duration を見る。
probability_at_least_one_loss_streak_exact()で、100回、200回、500回の連敗発生確率を確認する。- 月次 -3%、-5% の停止ルールを過去履歴に当て、MDD と利益がどう変わるか比較する。
- USD/JPY の指標時、週跨ぎ、急変時を別タグにして、通常時と分けて検証する。
- バックテストの MDD に 1.5 倍から 2.0 倍の安全係数を掛ける。
- その数値に心理的に耐えられないなら、ロットを下げる。
参考
- Bank for International Settlements, Triennial Central Bank Survey 2025: OTC foreign exchange turnover in April 2025
https://www.bis.org/statistics/rpfx25_fx.pdf - Commodity Futures Trading Commission, Fraud Advisory: Foreign Currency (Forex) Fraud
https://www.cftc.gov/LearnAndProtect/AdvisoriesAndArticles/fraudadv_forex.html - Lisa R. Goldberg and Ola Mahmoud, Drawdown: From Practice to Theory and Back Again
https://arxiv.org/abs/1404.7493