Daily Risk Guard の上限超過はなぜ起きるか|検知型決済とバッファ設計の考え方
「日次損失上限を設定しておけば、損失はその金額でぴたりと止まる」。リスク管理 cBot を導入するとき、多くの方がこのように期待するのではないでしょうか。ところが実際には、設定した上限と最終的な損失額のあいだに小さなずれが生じる場面があります。ツールの不具合ではなく、成行決済という仕組みそのものに由来するずれです。
本記事では、ai-programming.xyz が無料公開している cTrader 専用 cBot Daily Risk Guard を題材に、「なぜ上限をわずかに超えることがあるのか」を仕組みの面から整理します。そのうえで、ずれを前提にして上限額と警告閾値を決める「バッファ設計」の考え方を紹介します。別のリスク管理ツールを使う場合や、自作 cBot に同種の機能を組み込む場合にも応用できる内容です。
なぜこの問題が起きるのか
ずれの原因は、大きく3つに分けて考えられます。
1. 「到達を検知してから決済する」という順序
Daily Risk Guard は、実現損益と未実現損益(保有中ポジションの含み損益)を合算して監視し、合計が上限に達した時点で全ポジションを成行で決済します。ここで押さえたいのは、決済は「上限に達した後」に始まるという順序です。検知した瞬間の損失額と、実際に約定した時点の損失額は、厳密には同じになりません。
2. 成行決済につきもののスリッページ
成行注文は、価格を指定せずにその時点で約定できる価格で決済する注文方式です。相場が速く動いている場面では、注文を出した時点の価格と約定価格に差が出ることがあり、これをスリッページと呼びます。日次上限に触れる場面は、相場が自分に不利な方向へ急に動いている最中であることが多いため、スリッページが出やすい条件と重なりがちです。基本的な仕組みはスリッページの基礎解説にまとめています。
3. スプレッド拡大と複数ポジションの同時決済
経済指標の発表前後や早朝など、流動性(市場での取引の厚み)が薄い時間帯には、スプレッド(買値と売値の差)が広がる傾向があります。含み損益はスプレッドの影響を受けるため、価格がほとんど動いていなくても評価損が膨らみ、そのまま上限に触れることがあります。また、複数のポジションを持っている場合は1本ずつ順番に決済されるため、最後の1本が閉じるまでのあいだに価格が進む余地も残ります。
Daily Risk Guard の機能
ずれが起こり得ることを踏まえたうえで、商品ページに記載されている機能を「どの段階で何が働くか」という視点で整理します。
- 合算損益のリアルタイム監視: 実現損益と未実現損益を足し合わせた日次損失と、上限までの残り余力をチャート上に常時表示します。現在地を自分で計算する手間が省けます
- 手前での警告アラート: 日次損失が上限の 80%(デフォルト、
WarningThresholdPercentで変更可)に達すると、サウンドとポップアップで知らせます。自動決済より前に人が判断できる段階です - 上限到達時の全ポジション自動決済: 上限に達した時点で、保有中の全ポジションを成行で決済します
- 到達後の新規注文の検知: 商品ページでは cTrader API の制約(AccessRights.None)として、手動注文を発注前に止めることはできないと明記されています。そのため「発注された注文を検知して決済する」動作になります
- 日次リセットまでの残り時間表示: サーバー時刻を基準に、次のリセットまでの時間を表示します
注目したいのは、4つ目の仕様が隠されずに開示されている点です。上限到達後に手動で新規注文を出すと、検知されて決済されるまでのわずかな時間、スプレッド分などの損失が上乗せされる可能性があります。「止まった後は触らない」という運用ルールとセットで考えるのが自然です。
こんな場面で役立ちます
バッファ設計の考え方は、次のような運用で特に検討する価値があります。
- Prop Firm(資金提供型のプロップトレーディング会社)の口座を運用している方: 日次損失の規定を超えると失格となるルールでは、わずかな超過でも結果が変わります。規定値そのものではなく、手前の値を上限に設定する発想が出発点になります
- 複数ポジションを同時に持つスタイルの方: 保有本数が多いほど、全決済が完了するまでのずれは広がりやすくなります
- 指標発表をまたいで保有することがある方: スプレッド拡大と急変が重なる時間帯は、ずれが大きくなりやすい場面です
具体的な手順の一例は次のとおりです。
- 守りたい本来のライン(業者の規定値や自分で決めた許容額)を書き出す
- 取引銘柄・保有本数・取引時間帯から、決済時に起こり得るずれの幅を見積もる
- 本来のラインからその幅を差し引いた金額を
DailyLossLimitに設定する - 警告が鳴った時点で何をするか(新規を控える、ロットを落とすなど)をあらかじめ決めておく
ずれの幅に決まった正解はなく、銘柄のボラティリティや口座の約定環境によって変わります。日次損失の数え方そのものが業者ごとに異なる点については、日次ドローダウンの算定方法の解説も参考になります。
導入時に意識したいこと
バッファを取れば安心、というわけではない点も整理しておきます。
まず、過信しないことです。週明けの窓開けや急変時には、想定した幅を超えてずれる可能性があります。自動決済は損失を抑えるための仕組みであり、損失額を保証するものではありません。個々のポジションに損切り注文を置いておくことは、cBot を導入した後も引き続き有効な備えです。
次に、cBot が動いていること自体が前提である点です。cTrader を閉じている、PC がスリープしている、回線が切れている、といった状況では監視も決済も行われません。稼働環境の確認は、パラメーター設定と同じくらい重要です。
最後に、デモ口座での確認です。小さめの上限額を設定してわざと上限に触れさせ、検知から決済完了までの挙動と、最終的な損失額が設定値からどの程度ずれたかを自分の環境で観察しておくと、バッファの見積もりに根拠が持てます。初期設定の流れはセットアップガイドで確認できます。
まとめ
日次損失上限は「そこで損失が止まる線」ではなく、「そこから決済が始まる線」と捉えると、設定値の決め方が変わってきます。検知から約定までの順序、成行決済のスリッページ、スプレッド拡大という3つの要因を理解しておけば、本来守りたいラインの手前に上限を置く理由が明確になります。
パラメーターの一覧や動作仕様の注意書きは、Daily Risk Guard 無料版の詳細ページに掲載されています。自分の運用ルールに合うかどうか、仕様と照らし合わせながら確認してみてください。こうしたリスク管理の仕組みを自分の手で実装してみたい方には、ai-programming.xyz のスクールや開発相談の窓口も参考になります。
本記事は一般的な情報提供を目的としています。投資助言ではありません。 取引判断はご自身の責任で行ってください。