ロットをボラで調整するだけで効いた、初の本物の改善

リスク管理 · 1 min

前回の検証で、異なる手法を組み合わせる「スリーブ分散」は、v1.2.0のあたりで性能が頭打ちになることが分かりました。そこで今回は、複数のEAを混ぜるのではなく、時間軸に注目してリスクを平準化するアプローチを試しました。

前回の検証で、異なる手法を組み合わせる「スリーブ分散」は、v1.2.0のあたりで性能が頭打ちになることが分かりました。そこで今回は、複数のEAを混ぜるのではなく、時間軸に注目してリスクを平準化するアプローチを試しました。具体的には、ポートフォリオ全体の「実現ボラティリティ(過去の価格変動の激しさ)」を一定に保つよう、日々のポジションサイズを自動調整する仕組みです。相場が荒れているときは取引量を減らし、静かなときは拡大することで、リスクの偏りを抑える狙いです。 以前試した「利益が減ったらロットを半分にする」といった手法とは異なり、今回はリスクそのものに直接連動させるため、理屈として非常に筋が良いと感じています。

パラメータの頑健性

計算期間(窓)や上限倍率(cap)の組み合わせを全12パターンでテストしたところ、すべてで基準を上回る結果が出ました。特定の数値だけに頼った「過剰最適化(その期間のデータに合わせすぎて、実戦で通用しなくなること)」ではないことが確認できています。中でも最も良かった設定(窓40、上限1.5倍)では、最大ドローダウン(資産の山からの下落率)を10%に揃えた際の月利換算が1.63%となり、元の1.17%から大きく伸びました。

前進検証による改善効果

さらに、後知恵のバイアスを排除した「前進検証(過去のデータのみを使って未来を予測し続けるテスト)」を実施しました。

指標改善前改善後(vol-target適用)
全期間リターン+152.7%+185.1%
最大ドローダウン-9.9%-8.9%
Calmar比1.411.88
DD10%換算月利+1.17%+1.57%
MC合格率92%94%
Calmar比(リスクに対するリターンの効率を示す指標)が向上し、ドローダウンが抑えられつつリターンが増えるという、理想的な改善が見られました。特に相場が荒れた2021年以降は、ボラティリティが高い場面で適切にポジションを絞ることで、ドローダウンを低く抑えるという狙い通りの挙動を確認できました。これは今回のセッションにおいて、唯一v1.2.0を明確に超えた本物の上積みです。

システムへの実装と評価

この仕組みをエンジンへ組み込み、実際のコストやポジションサイズを考慮した環境で再検証した結果、すべての指標で改善が維持されました。

  • DD10%換算月利:+1.16% → +1.39%
  • PF(プロフィットファクター=総利益÷総損失。1を超えると黒字):1.45 → 1.48
  • M1日中最悪(1分足で構築した日中の最大損失):2.83% → 2.10% 高ボラティリティ時に取引を縮小することで、日中の急落リスクも抑えられています。これを受け、本システムを「Core System v1.3.0」として正式に採用することに決めました。

なぜ「分散型」を選んだのか

検証の過程で、全EAのボラティリティを中央で一括管理してレバレッジを配信する「集約版」も試しました。実は、この集約版は分散版よりもさらに高いパフォーマンス(月利+1.56%相当)を示しました。 しかし、今回はあえて「分散型(各EAが自律的にボラを管理する)」を採用します。集約版はすべてのEAを束ねるマスター機能が必要になり、運用が複雑になるうえ、そこが止まると全システムに影響が出る「単一障害点」となってしまうからです。プロップ運用の堅牢性と、デプロイのしやすさを最優先しました。集約版の技術は将来の統一口座運用のために残しておきますが、現時点の最適解は、各EAが自律して動くv1.3.0となります。

この検証のつながり

この検証は、過去の次の検証を踏まえています(前回ダメだった→今回こうした、別ロジックとの比較など)。

関連コード(再現用)

この検証は以下のスクリプトで再現できます(リポジトリ参照)。

  • btengine/portfolio_engine.py