LOG 002 — 停止条件 / リスク設計

停止条件を最初に設計する

研究ログ

売買ロジックより先に停止条件を設計する、という方針について整理する。

問題意識

自動売買システムの設計では、エントリー条件(いつ買うか・売るか)から考え始めるのが自然に見える。しかし、この順序には問題があると考えている。

エントリーロジックは、失敗しても機会損失で済む。一方、停止の仕組みが欠けたシステムは、想定外の状況で損失を拡大し続ける。被害の非対称性を考えると、先に設計すべきは「動かし方」ではなく「止め方」である。

停止条件の分類

現時点では、停止条件を次の3層に分けて考えている。

層1: 技術的停止(システム異常)

  • API エラーが一定回数連続した場合
  • 取引所との接続が一定時間回復しない場合
  • システムが把握するポジション・残高と取引所側の値の不整合を検出した場合
  • 想定しない例外が発生した場合

この層の停止は「何かがおかしい。原因が分かるまで動かさない」という判断であり、無条件・即時であるべきだと考えている。

層2: 損失ベースの停止(リスク限界)

  • 最大ドローダウンが事前に定めた閾値に達した場合
  • 連敗数が事前に定めた閾値に達した場合
  • 単一日の損失が事前に定めた閾値に達した場合

閾値は稼働開始前に固定し、稼働中に緩める変更は行わない。稼働中の閾値緩和は、損失を正当化したいという心理の現れである可能性が高いため、手続きとして禁止しておく。

層3: 前提崩壊による停止(環境変化)

  • バックテスト時の前提(ボラティリティの範囲、スプレッドの水準など)から市場環境が大きく外れた場合
  • 取引所の仕様変更、規制の変更があった場合

この層は自動検出が難しい項目を含むため、定期的な手動レビューと組み合わせる。

「停止」の定義

停止条件と同じくらい重要なのが、「停止」が具体的に何を指すかの定義である。少なくとも次を区別する必要がある。

  1. 新規停止 — 新規注文を止める。既存ポジションは維持。
  2. クローズ停止 — 新規を止め、既存ポジションを解消してフラットにする。
  3. 完全停止 — 未約定注文をすべてキャンセルし、プロセス自体を終了する。

どの停止条件がどの停止動作に対応するかを、実装前に表として固定しておく。これを曖昧にしたまま実装すると、「止まったはずなのにポジションが残っていた」という事故につながる。

検証方法

停止条件は、発火しないことを祈る仕組みではなく、発火することを確認済みの仕組みでなければならない。テストネット上で、各停止条件を意図的に発火させる試験を行う予定である。

  • 異常系(層1): API エラーの注入、接続の強制切断
  • 損失系(層2): 閾値を極端に低く設定し、通常の値動きで発火させる

この試験の結果は、実施後に別記事として記録する。

現時点の結論

停止条件・停止動作・その検証記録の3点が揃っていない状態を、このシステムの「未完成」と定義する。エントリーロジックの精度は、その後の課題である。

無料配布

実弾投入前チェックリスト

AI自動売買で資金を壊さないための12項目

利益より先に、止め方を確認する。

実弾投入前チェックリストを受け取る

本配信は投資助言ではありません。

売買シグナルの提供ではありません。

第三者資金の運用は行いません。

実資金での運用を推奨するものではありません。

テストネットとバックテストを中心とした研究ログです。