AIを使いながら、日本株の売買判断を自動化するツールを作っています。
このツールはプログラミング未経験の状態から継続して開発しており、これまでの開発経緯は日本株AI自動売買ツール開発記録にまとめています。
前回の記事では、バックテストで発生していた大きな損失を抑えるため、固定STOP(損切り)を実装しました。
→ 勝率76%でも安心できない。AI株バックテストに損切りを実装した結果
その結果、-15%の固定STOPでは、
最大損失 -61.30% → -22.20%
まで改善できました。
一方で、前回までに全224取引の値動きを詳しく調べたところ、もう一つの課題も見つかっていました。
それが、
「一度大きな含み益が出たのに、利益確定できず最終的に損失になった取引」
です。
そこで今回は、
「大きな損失を切る」だけではなく、「一度出た利益を守る」
ことを目的に、トレーリングSTOPを実装して検証します。
- 一時+22.61%から最終-61.30%になったレーザーテック
- 固定STOPだけでは解決できない問題
- トレーリングSTOPとは?
- 日足バックテスト特有の問題も考慮した
- トレーリングSTOPを6パターン比較
- 6パターンをバックテストした結果
- 勝率81.1%でも一番良いとは限らない
- それでも最大損失-60%が残った
- 「一度利益が出たのに負けた取引」には効果があった
- レーザーテックの-61.30%はどうなったのか
- -61%の損失を取り返すには+156%以上必要
- 固定STOPとトレーリングSTOPを組み合わせてみる
- 固定STOP+トレーリングSTOPの結果
- STOPを増やせば安全になるとは限らなかった
- 現時点でトレーリングSTOPをどう考えるか
- 次は「実際の資金」をバックテストに入れる
- まとめ
一時+22.61%から最終-61.30%になったレーザーテック
今回トレーリングSTOPを実装する大きなきっかけになったのが、レーザーテック(6920)の取引です。
STOPなしのバックテストでは、
| 項目 | 内容 |
|---|---|
| BUYシグナル | 2024年4月17日 |
| BUY約定 | 2024年4月18日 |
| BUY価格 | 約35,954円 |
| SELLシグナル | 2025年5月8日 |
| SELL約定 | 2025年5月9日 |
| SELL価格 | 約13,915円 |
| 最終損益 | -61.30% |
| 保有期間 | 256営業日 |
という結果でした。
これだけを見ると、
「買ったあと、そのまま下落し続けたのでは?」
と思います。
ところが、保有期間中の値動きを調べると違いました。
この取引は途中で、
MFE +22.61%
まで上昇しています。
つまり、
一時 +22.61%
↓
利益確定せず保有
↓
その後大幅下落
↓
最終 -61.30%
という動きでした。
一度20%以上の含み益が出ていたにもかかわらず、最終的には60%以上の損失。
現在のSELLシグナルだけでは、こうした値動きに対応できていませんでした。
固定STOPだけでは解決できない問題
前回実装した固定STOPは、大きな下落から資金を守るための仕組みです。
たとえば-15%STOPなら、
買値から15%下落したところで損切りする
という考え方になります。
これは大損を防ぐためには有効です。
しかし、株価が一度大きく上昇した場合でも、固定STOPの基準は基本的に買値です。
今回のレーザーテックのように、
+20%以上の含み益が出たあとに下落する
ケースでは、一度得た利益を守る仕組みとしては十分ではありません。
そこで、
株価の上昇に合わせてSTOP価格も引き上げる
トレーリングSTOPを実装することにしました。
トレーリングSTOPとは?
トレーリングSTOPでは、株価が上昇すると、それに合わせて損切りラインも上昇します。
今回の実装では、
activation
と
trail
という2つの条件を設定しました。
activation
activationは、
「何%上昇したらトレーリングSTOPを開始するか」
という条件です。
たとえば、
activation +15%
なら、買値から15%以上上昇するまではトレーリングSTOPを使いません。
+15%に到達したところから、利益を守るための仕組みが動き始めます。
trail
trailは、
「最高値から何%下にSTOPを置くか」
という条件です。
たとえばtrail 10%なら、
最高値10,000円
→ STOP 9,000円
最高値12,000円
→ STOP 10,800円
というように、最高値が更新されるとSTOP価格も上昇します。
一度上昇したSTOP価格を、その後引き下げることはありません。
これによって、株価が上昇している間は利益を伸ばしつつ、大きく反落した場合には途中で利益確定することを狙います。

日足バックテスト特有の問題も考慮した
トレーリングSTOPを実装する際には、日足データ特有の問題もありました。
日足データから分かるのは、
- 始値
- 高値
- 安値
- 終値
です。
しかし、
その日の中で高値と安値のどちらが先だったのか
までは分かりません。
たとえば同じ日に、
高値でトレーリングSTOPが更新
↓
その日の安値で新しいSTOPに到達
と計算してしまうと、実際には安値を付けたあとに高値を付けていた可能性があります。
それでは未来の値動きを利用したバックテストになってしまいます。
そこで今回は、
その日の高値によって新しく更新されたトレーリングSTOPは、翌営業日から有効
というルールにしました。
また、BUYした当日についてもSTOPやactivationの判定から除外しています。
バックテストの数字を良くするためではなく、できるだけ実際の売買に近い条件にすることを優先しました。
トレーリングSTOPを6パターン比較
今回はactivationを、
- +5%
- +10%
- +15%
trailを、
- 5%
- 10%
として、合計6パターンを比較しました。
| ケース | activation | trail |
|---|---|---|
| A | +5% | 5% |
| B | +5% | 10% |
| C | +10% | 5% |
| D | +10% | 10% |
| E | +15% | 5% |
| F | +15% | 10% |
確認したかったのは、
早い段階から利益を守った方がいいのか?
それとも、
ある程度利益を伸ばしてから守った方がいいのか?
さらに、
最高値から5%下落で売るのか、10%まで許容するのか?
という違いです。
6パターンをバックテストした結果
20銘柄で比較した結果がこちらです。
| 条件 | 取引数 | 勝率 | 平均損益率 | 中央値 | 最大利益率 | 最大損失率 | 平均保有日数 |
|---|---|---|---|---|---|---|---|
| STOPなし | 224 | 76.3% | +8.23% | +6.32% | +118.25% | -61.30% | 40.12日 |
| A:5% / 5% | 318 | 81.1% | +3.61% | +2.93% | +34.45% | -60.64% | 21.17日 |
| B:5% / 10% | 305 | 66.2% | +4.62% | +3.81% | +63.88% | -60.64% | 25.85日 |
| C:10% / 5% | 258 | 80.6% | +5.26% | +5.40% | +43.82% | -60.64% | 30.24日 |
| D:10% / 10% | 256 | 78.5% | +5.61% | +4.71% | +63.88% | -60.64% | 32.35日 |
| E:15% / 5% | 239 | 79.1% | +6.27% | +7.00% | +43.82% | -60.64% | 34.74日 |
| F:15% / 10% | 239 | 79.1% | +6.69% | +5.69% | +63.88% | -60.64% | 35.62日 |
トレーリングSTOPの中で平均損益率が最も高かったのは、
F:activation +15% / trail 10%
でした。
平均損益率は、
+6.69%
です。
ただし、STOPなしの、
+8.23%
には届きませんでした。
勝率81.1%でも一番良いとは限らない
今回の結果で興味深かったのがケースAです。
activation +5%、trail 5%では、
勝率81.1%
まで上昇しました。
STOPなしの76.3%より高い数字です。
しかし平均損益率は、
+3.61%
まで低下しています。
早い段階から狭い幅で利益を確定するため、勝ち取引の数は増えます。
その一方で、大きく上昇する銘柄も早い段階で売却してしまいます。
実際、最大利益率も、
STOPなし:+118.25%
に対して、
ケースA:+34.45%
まで低下しました。
ここでも、
「勝率が高い=最も良い売買ルール」ではない
ことが分かります。
それでも最大損失-60%が残った
もう一つ重要なのが最大損失です。
トレーリングSTOPを導入しても、
最大損失は約-60.64%
残りました。
なぜなら、トレーリングSTOPはactivationするまで動かないからです。
たとえばactivation +15%なら、
一度も+15%まで上昇せず、そのまま大きく下落した銘柄
にはトレーリングSTOPが発動しません。
つまり、
一度出た利益を守る
という目的には使えますが、
買った直後から大きく下落する銘柄を止める
という固定STOPの役割までは代替できません。
固定STOPとトレーリングSTOPは、似ているようで役割が違うことが分かりました。
「一度利益が出たのに負けた取引」には効果があった
一方で、今回トレーリングSTOPを導入した本来の目的には効果がありました。
STOPなしで最終的に負けた53取引のうち、
途中で+10%以上の含み益が出ていた取引は6件
ありました。
この6件にトレーリングSTOPを適用すると、
| ケース | 結果 |
|---|---|
| A | 5件利益、1件小幅損失 |
| B | 6件利益 |
| C | 6件利益 |
| D | 6件利益 |
| E | 4件利益、2件小幅損失 |
| F | 4件利益、2件小幅損失 |
となりました。
つまり、
一度十分な利益が出た取引を、その後の大幅下落で負けに転落させない
という目的については、トレーリングSTOPが機能しています。
レーザーテックの-61.30%はどうなったのか
では、最初に紹介したレーザーテックはどうなったのか。
STOPなしでは、
-61.30%
だった取引です。
6パターンを適用すると、
| 条件 | 最終損益 |
|---|---|
| STOPなし | -61.30% |
| A:5% / 5% | +9.21% |
| B:5% / 10% | +10.21% |
| C:10% / 5% | +9.21% |
| D:10% / 10% | +10.21% |
| E:15% / 5% | +16.48% |
| F:15% / 10% | +10.21% |
すべてのトレーリングSTOPで、最終損益がプラスになりました。
特にケースEでは、
-61.30% → +16.48%
です。
ケースEでは、
+15%でトレーリングSTOP開始
↓
最高値 約44,083円
↓
STOP価格 約41,879円
↓
2024年5月27日にSTOP
↓
+16.48%で利益確定
となりました。
利確は重要だと考えています。
今回の結果を見ても、今後の検証でもトレーリングSTOPは残す方向です。
そもそも一度-61%まで損失を出してしまうと、そこから取り返すのはかなり大変です。
大きな損失を避けることに加えて、一度出た利益をできるだけ守る仕組みも必要だと感じました。
-61%の損失を取り返すには+156%以上必要
ここは投資をするうえで重要なところです。
仮に100万円が61%下落すると、
100万円 → 39万円
になります。
39万円から100万円に戻すには、必要な上昇率は61%ではなく**約156%**です。
大きな損失ほど取り返すのが難しくなるため、自動売買では「大きな損失を避ける仕組み」と「一度出た利益を守る仕組み」の両方が重要だと考えています。
固定STOPとトレーリングSTOPを組み合わせてみる
ここまでの検証で、
固定STOP
→ 買った後の大幅下落を防ぐ
トレーリングSTOP
→ 一度出た利益を守る
という、それぞれの役割が見えてきました。
それなら、
「両方を組み合わせればいいのでは?」
と考えました。
そこで次に、
固定STOP -15% + トレーリングSTOP
を組み合わせて検証しました。
比較したのは、
- Combined C:固定-15% + activation +10% / trail 5%
- Combined E:固定-15% + activation +15% / trail 5%
- Combined F:固定-15% + activation +15% / trail 10%
の3パターンです。
固定STOP+トレーリングSTOPの結果
結果はこちらです。
| 条件 | 取引数 | 勝率 | 平均損益率 | 中央値 | 最大利益率 | 最大損失率 | 平均保有日数 |
|---|---|---|---|---|---|---|---|
| STOPなし | 224 | 76.3% | +8.23% | +6.32% | +118.25% | -61.30% | 40.12日 |
| Fixed -15% | 302 | 69.2% | +6.14% | +6.44% | +118.25% | -22.20% | 28.76日 |
| Trailing F | 239 | 79.1% | +6.69% | +5.69% | +63.88% | -60.64% | 35.62日 |
| Combined C | 349 | 75.9% | +3.68% | +5.78% | +43.82% | -22.20% | 19.70日 |
| Combined E | 329 | 73.6% | +4.54% | +8.22% | +43.82% | -22.20% | 23.05日 |
| Combined F | 328 | 73.5% | +5.14% | +6.23% | +63.88% | -22.20% | 24.52日 |
Combined系では、
Combined F
の平均損益率+5.14%が最も高くなりました。
そして最大損失は、
-61.30% → -22.20%
まで改善しています。
一見すると、
「固定STOPで大損を防ぎ、トレーリングSTOPで利益も守れる」
ので良さそうです。
しかし、全体の平均損益率を見ると、
STOPなし +8.23%
Combined F +5.14%
です。
両方を組み合わせても、STOPなしの平均損益率には届きませんでした。
STOPを増やせば安全になるとは限らなかった
さらに個々の取引を見ると、想定外の問題も見つかりました。
途中で+10%以上の含み益が出て、最終的には負けていた6取引を確認すると、
Trailing Cでは、
6件すべてを利益で決済
できました。
ところがCombined E/Fでは、
4件が利益
2件が-10%以上の損失
となりました。
なぜ固定STOPまで追加したのに結果が悪化したのか。
原因は、この2取引が、
+15%のactivationに到達する前に固定STOPへ到達した
ためです。
トレーリングSTOPだけなら、その後株価が回復し、最終的な損失は-5.33%、-1.92%で済んでいました。
ところが固定STOPを組み合わせたことで、回復する前に売却されています。
つまり、
STOPを増やせば増やすほど安全になるわけではない
ということです。
ルールを追加すると新しいリスクを防げる一方で、本来なら回復した取引まで途中で切ってしまう可能性があります。
現時点でトレーリングSTOPをどう考えるか
今回の検証では、トレーリングSTOPを導入しても平均損益率はSTOPなしを上回りませんでした。
それでも、一度大きく上昇した取引を損失まで放置しない仕組みとして、トレーリングSTOPには役割があると考えています。
自動売買では、その場の感覚で「そろそろ利確する」という判断はできません。
どの段階から利益を守り、どこまで下落を許容するのか。
現時点で最終設定を決めるのではなく、トレーリングSTOPは残したまま検証を続けます。
次は「実際の資金」をバックテストに入れる
これまで比較してきた224取引などの結果は、基本的に1取引ごとの損益率を集計したものです。
しかし実際の投資では、
- 資金はいくらあるのか
- 1銘柄何株買うのか
- 同時に何銘柄持つのか
- 高すぎて買えない銘柄はないのか
- 売却した資金を次の取引に使えるのか
といった条件があります。
STOPによって早く売却すれば、次の銘柄を買える可能性もあります。
逆に、株価が高すぎてそもそも買えない銘柄もあります。
そこで次の開発では、
実際の運用資金をバックテストに入れる
ことにしました。
まとめ
前回までの検証では、一度大きな含み益が出たあとに最終的な損失へ転落する取引があることが分かっていました。
そこで今回は、一度出た利益を守るためにトレーリングSTOPを実装し、固定STOPとの組み合わせまで検証しました。
今回新たに分かったのは、
- トレーリングSTOP6パターンでは、F(activation +15% / trail 10%)の平均損益率+6.69%が最も高かった
- レーザーテックの最終-61.30%だった取引は、トレーリングSTOPを使うと全6パターンでプラス決済になり、ケースEでは+16.48%になった
- 一方で、activation前に下落する取引にはトレーリングSTOPが効かず、最大損失は約-60.64%残った
- 固定STOPと組み合わせると最大損失は-22.20%まで抑えられた
- ただしCombined系の平均損益率はSTOPなしを下回った
- 固定STOPを追加したことで、回復前に売却されて結果が悪化する取引もあった
という結果です。
固定STOPは大きな損失を防ぐ。
トレーリングSTOPは一度出た利益を守る。
それぞれ役割はありますが、今回の検証では、単純にSTOPを追加・組み合わせれば成績が良くなるわけではありませんでした。
次は、これまでの「1取引あたりの成績」から一歩進めて、実際の資金制約をバックテストに入れます。
初期資金50万円・100万円、100株単位、最大保有銘柄数、現金残高、複利、最大ドローダウンなどを設定し、ポートフォリオ全体で結果がどう変わるのかを検証します。



コメント