・約2分で読めます

FX Bot 資金管理の基本 — ロスカットを防いで長期運用するための設計原則


PR松井証券 MATSUI FX1通貨から取引可能で少額スタートに最適。100円からFXを始められる。
松井証券 FX 無料口座開設 →

Bot 運用で最もよくある失敗: 資金管理の甘さ

FX Bot を動かし始めて数ヶ月でロスカットになる人のほぼ全員が「資金管理の設計が甘かった」と振り返る。

戦略のロジックが正しくても、ポジションサイズが大きすぎる証拠金に対してリスクを取りすぎると、連続損失で口座が吹き飛ぶ。


基本概念: 3つの数字を決める

1. リスク許容率(1回の取引で失う最大割合)

一般的な目安は 口座残高の1〜2%

account_balance = 100_000  # 10万円
risk_per_trade = 0.02      # 2%リスク
max_loss_per_trade = account_balance * risk_per_trade  # 2,000円

2. ポジションサイズ(ロット計算)

損切り幅(ストップロス)から逆算してロットを決める。

def calc_lot_size(
    account_balance: float,
    risk_pct: float,
    stop_loss_pips: float,
    pip_value: float = 0.1  # USD/JPY 1000通貨あたり1pips = 0.1円
) -> int:
    """
    例: 10万円口座、リスク2%、SL 50pips の場合
    最大損失 = 2,000円
    ロット = 2,000 / (50 * 0.1) = 400 → 1000通貨単位に切り捨て → 0通貨... 最小1ロット(1000通貨)
    """
    max_loss = account_balance * (risk_pct / 100)
    lot_continuous = max_loss / (stop_loss_pips * pip_value)
    lot_units = int(lot_continuous // 1000) * 1000  # 1,000通貨単位
    return max(lot_units, 1000)  # 最低1,000通貨

3. 最大ドローダウン(DDmax)

口座残高のピークからの最大下落幅。

def calc_drawdown(equity_curve: list[float]) -> float:
    """ドローダウンをパーセントで返す"""
    peak = equity_curve[0]
    max_dd = 0.0
    for equity in equity_curve:
        if equity > peak:
            peak = equity
        dd = (peak - equity) / peak * 100
        max_dd = max(max_dd, dd)
    return max_dd

実践: 資金管理のフレームワーク

ハードリミット設計

class RiskManager:
    def __init__(
        self,
        initial_capital: float,
        monthly_loss_limit_pct: float = 5.0,  # 月次損失上限5%
        cumulative_loss_limit_pct: float = 20.0,  # 累積損失上限20%
    ):
        self.initial_capital = initial_capital
        self.monthly_limit = initial_capital * (monthly_loss_limit_pct / 100)
        self.cumulative_limit = initial_capital * (cumulative_loss_limit_pct / 100)
        self.monthly_loss = 0.0
        self.total_loss = 0.0

    def can_trade(self) -> bool:
        if self.monthly_loss >= self.monthly_limit:
            return False  # 月次上限達成 → 当月停止
        if self.total_loss >= self.cumulative_limit:
            return False  # 累積上限達成 → 永続停止
        return True

    def record_loss(self, loss: float):
        self.monthly_loss += loss
        self.total_loss += loss

    def reset_monthly(self):
        """月初に呼び出す"""
        self.monthly_loss = 0.0

実際の口座設定例

口座残高: 10万円、USD/JPY Bot の場合:

設定項目 根拠
1取引リスク 2%(2,000円) 標準的な推奨
月次損失上限 5%(5,000円) 超過で当月停止
累積損失上限 20%(2万円) 超過で永続停止
ポジション数上限 2件 相関リスク抑制
レバレッジ 実質 3〜5倍 25倍レバを使い切らない

よくある失敗パターン

失敗1: 全証拠金をフル活用

NG例: 10万円で25倍レバレッジ全開 → 最大4,000万円相当の取引
→ 0.25%の逆行でロスカット

失敗2: 連続損失を想定しない

勝率 60% の戦略でも、10連敗(確率 0.4^10 = 0.01%)は必ず起こる
→ 1回のリスクが5%なら、10連敗で残高がゼロ

失敗3: ストレスシナリオを考えない

Bot 開発時に「ブラックスワンイベント(相場の急変動)」でのシミュレーションをしていないと、想定外のドローダウンで心理的に耐えられなくなる。


資金管理チェックリスト

運用開始前:
[ ] 1取引のリスク率を設定(1〜2%推奨)
[ ] 月次損失ハードリミットを設定
[ ] 累積損失ハードリミットを設定
[ ] ポジション同時保有数の上限設定
[ ] 10連敗時の残高シミュレーション完了

運用中:
[ ] 日次でエクイティ確認
[ ] 週次でドローダウン率確認
[ ] 月次で損益サマリー記録

まとめ

FX Bot の資金管理で覚えておくべきことは3つだけ:

  1. 1回の取引で失うのは口座の1〜2%まで
  2. 月次・累積の損失ハードリミットを必ず実装する
  3. バックテストだけでなく最悪シナリオを想定する

ロジックが優れていても資金管理が甘ければ、長期運用は難しい。資金管理は Bot 開発の最初に設計するものだ。

関連記事

※ 当記事のリンクにはアフィリエイトリンクを含む場合があります。口座開設の費用には影響しません。

松井証券 MATSUI FX無料口座開設