【要約】自動売買botのドローダウン管理設計 — AutoTrader で資金を守るためにどこで止めるかを決めた話 [Zenn_Python] | Summary by TechDistill
> Source: Zenn_Python
Execute Primary Source
// Problem
開発者は、自動売買botの運用において、ロジックのバグや相場急変による致命的な損失を防ぐ仕組みを構築しようとした。しかし、実装にあたって以下の技術的課題に直面した。
- ・連続する不利なエントリーによる損失拡大リスク。
- ・取引所APIのレート制限による監視の遅延。
- ・戦略ごとにドローダウン管理を実装することによるコードの重複と保守性の低下。
// Approach
開発者は、戦略ロジックから独立した「ガードレイヤー」を設ける設計を採用した。API制限を回避しつつ、高精度な監視を実現するために以下の手法を講じた。
- ・約定履歴と未実現損益を合算し、自前DBのデータに基づき時価評価額を算出。
- ・Decimal型による計算精度の確保と、ピーク値のDB永続化。
- ・部分約定の二重計上を防ぐため、trade_idにDBのユニーク制約を適用。
- ・停止閾値と再開閾値を分けるヒステリシス制御の実装。
// Result
この設計により、botの運用における安全性と持続可能性が向上した。具体的には以下の成果が得られた。
- ・API制限に抵触せず、リアルタイムに近いドローダウン監視が可能になった。
- ・戦略ロジックと安全装置を分離し、保守性とテスト容易性が向上した。
- ・再開条件の導入により、機会損失と頻繁な状態遷移の課題を解決した。
- ・Decimalの採用やDB制約により、計算の信頼性が担保された。
Senior Engineer Insight
> 非常に実践的な設計である。特に「APIレート制限」と「データの整合性」という、実運用で必ず直面するトレードオフを、DB制約やキャッシュ、計算精度の確保といった泥臭い実装で解決している点が評価できる。単なるロジックの実装ではなく、システム全体の堅牢性を考慮した「ガードレイヤー」の分離は、金融系システムにおける定石と言える。