【FX自動売買開発ログ #18】利益を伸ばす工夫を2つ試したら、どちらも同じ壁にぶつかった話

前回のおさらい

前回、regime_filterとmtf_theoryを組み合わせたバックテストで、絞り込むほど勝率・DDは改善するが総収益は伸びにくい、というトレードオフが確認できました。ここまでの改善はどれも「エントリーを絞る」方向のアプローチでしたが、今回は視点を変えて、「エントリー後の利益をどう伸ばすか」という出口側の工夫を試します。

トレーリングストップを試す

最初に試したのは、ATR距離ベースのトレーリングストップです。含み益がATR×N倍に達したら発動し、その後は価格の動きに追従してストップラインを切り上げていく(または切り下げていく)仕組みです。

まずは既存の設定(N=1.0/1.5/2.0、距離d=2.5)で検証したところ、トレーリングなしの基準(収益率3.81%、勝率50.00%、DD-3.46%、capture率66.3%)と比べて、N=2.0のときに収益率3.15%・勝率57.41%まで改善しましたが、それでも基準の収益率には届きませんでした。

距離をさらに狭めれば伸びしろを早めに確保できるのではないかと考え、d=1.0/1.5でも試しましたが、結果はむしろ悪化しました。最も良かったN=2.0・d=1.0でもcapture率62.1%で基準の66.3%に届かず、収益率は0.82%と基準を大きく下回っています。狭いトレーリング幅は、伸びかけたトレードを早い段階で刈り取ってしまうため、直感とは逆に「利益を伸ばす」方向には働かない、という結果でした。

利益ロック方式も試す

次に、利益ロック方式(含み益がピークからX%下がったら決済する)を実装しました。最初の素朴な実装(活性化の最低条件なし)は、想定通り機能しませんでした。エントリー直後のわずかな上下動でも即座に「ピーク」を記録してしまい、通常のノイズレベルの押し戻しで大半のトレードが1時間以内に決済されてしまったのです。勝率は100%でしたが、平均利益はごくわずかで、トレーリングストップ以下の成果でした。

これはトレーリングストップで確認した「活性化基準」と同じ話で、利益ロックにも最低限の含み益基準を設ける必要があることを示しています。profit_lock_activate_atrという活性化の閾値を追加し、改めて検証しました。

設定収益率%勝率%DD%ncapture率%平均利益(勝ち)
トレーリングなし(基準)3.8150.00-3.465466.30.6983
活性化1.0ATR,ロック30%0.6275.93-1.605469.60.1980
活性化1.5ATR,ロック30%0.6268.52-1.675469.50.2650
活性化2.0ATR,ロック30%2.7266.67-1.585471.00.3889

活性化基準を入れると、capture率は基準(66.3%)を上回るようになりました(活性化2.0ATR・ロック30%で71.0%)。勝率(50.00%→66.67%)・DD(-3.46%→-1.58%)も大きく改善しています。

ただし、収益率(円ベース)はすべての設定で基準の3.81%を下回りました。最も良い「活性化2.0ATR・ロック30%」でも2.72%(基準比-29%)です。capture率・勝率・DDの改善は、平均利益そのものの縮小(0.6983→0.3889)と引き換えになっており、「勝率を上げてDDを抑える」効果はあるものの「総収益を伸ばす」効果は確認できませんでした。

2つの方式が示した、同じ結論

トレーリングストップと利益ロック、アプローチは違いますが、行き着いた結論は同じでした。どちらの方式も、勝率とドローダウンは改善できるものの、当初の狙いだった「勝ちトレードの利益を伸ばして総収益を改善する」という目的には届きませんでした。

最終的にベースライン(トレーリング・利益ロックなし、ATR×2.5固定損切りのみ)を維持することにし、この発見をCLAUDE.mdに「既知の限界」として記録しました。あわせて記録したのが、次の解釈です。

このシステムの収益源は、少数の大きなトレンドをシグナル反転まで持ち続けることに依存している。途中で利益を確定・保護する仕組みは、まさにその大きなトレンドの利益を早期に刈り取ってしまい、収益を押し下げる。

これは地味に重要な気づきでした。「利益をどう守るか」ではなく「そもそも大きなトレンドを捉えられるエントリーの質をどう上げるか」の方が、収益改善のアプローチとして筋が良いかもしれない、という示唆です。実装したコード自体はbacktest/engine.pyに残していますが、デフォルト設定では既存動作と完全に同一であることも明記しています。

次回予告

利益を伸ばす方向の工夫が行き詰まったので、次回は逆に「損失をどれだけ早く抑えられたか」という観点から、損切りに至ったトレードを深掘りします。実際の損切りより前に、エントリー根拠そのものが崩れていたと言えるケースがどれくらいあったのかを分析します。

※本シリーズは個人の技術検証・学習を目的とした開発記録であり、特定の投資手法や金融商品を推奨するものではありません。自動売買には元本割れのリスクがあり、掲載する内容を参考にした取引の結果について一切の責任を負いかねます。投資判断はご自身の責任で行ってください。

コメントを残す

メールアドレスが公開されることはありません。 ※ が付いている欄は必須項目です