AIを使いながら、日本株の売買判断を自動化するツールを作っています。
このツールはプログラミング未経験の状態から継続して開発しており、これまでの開発経緯は日本株AI自動売買ツール開発記録にまとめています。
これまでの開発では、20銘柄を対象に売買シグナルを検証し、固定STOPやトレーリングSTOPまで実装してきました。
→ トレーリングSTOPは有効?日本株バックテストで6パターン検証してみた
ここまでは売買ルールそのものを比較するため、1取引ごとの勝率や平均損益率、最大損失などを中心に検証しています。
そして今回から、次の段階として実際の運用資金を設定したポートフォリオ単位のバックテストに進みます。
初期資金50万円・100万円を設定し、日本株の100株単位、同時に保有できる銘柄数、現金残高などの制約を追加しました。
これによって、
「シグナルが出た取引の成績はどうだったか」
だけではなく、
「実際の資金でその取引ができたのか」「最終的に資産はいくらになったのか」
まで検証できるようにします。
1取引単位からポートフォリオ単位の検証へ
これまでのバックテストでは、20銘柄から発生した各取引について、勝率や平均損益率、最大損失などを比較してきました。
STOPなしでは、
224取引・勝率76.3%・平均損益率+8.23%
という結果が出ています。
固定STOPやトレーリングSTOPについても、この224取引を基準に比較してきました。
ただし実運用では、同じ日に複数のBUYシグナルが出ても、資金が足りなければすべて買えるわけではありません。
そこで今回は、資金残高や最大保有数まで管理するポートフォリオバックテストを実装しました。
50万円・100万円の実資金を設定
今回の初期資金は50万円・100万円にしました。
将来的に自動売買を実運用する場合も、最初から大きな資金を投入するつもりはありません。
まずは小さいロットで運用し、実際の取引でも継続してプラスにできることを確認できれば、その段階で追加資金の投入を検討します。
その初期運用を想定した金額として、今回は50万円・100万円を設定しました。
ポートフォリオバックテストに追加した条件
今回新たに実装した主な条件は以下です。
- 初期資金50万円 / 100万円
- 現物取引
- 100株単位
- 最大保有銘柄数1 / 2 / 3銘柄
- 同じ日に複数のBUY候補があればScore上位を優先
- Scoreが同じ場合はticker順
- 資金不足なら次の候補を確認
- SELLで戻った資金は同日のBUYにも使用可能
- 同一銘柄のナンピンなし
- 複利
- 現金残高の管理
- 未決済ポジションの時価評価
- Equity Curveの作成
- 最大ドローダウン(最大DD)の計算
これによって、
シグナルが出たからすべて買う
のではなく、
その時点の現金で実際に100株購入できる銘柄だけを買う
という資金制約がバックテストに加わりました。
まずSTOPなしで6パターンを比較
最初にSTOPは使わず、
初期資金2パターン × 最大保有数3パターン
の合計6ケースを比較しました。
今回のポートフォリオバックテストの検証期間は、
2021年8月26日〜2026年9月4日の約5年間(1,230営業日)
です。
20銘柄のデータを使って、この期間で資産がどのように推移したのかを検証しています。
なお、銘柄によって利用できるデータ期間は異なります。
たとえばキオクシア(285A)は2024年12月18日以降の417営業日分のデータとなるため、全20銘柄をそれぞれ5年間検証したという意味ではありません。
あくまで、ポートフォリオ全体の検証期間が約5年間です。
結果はこちらです。
| 初期資金 | 最大保有数 | 最終資産 | 累積リターン | 最大DD |
|---|---|---|---|---|
| 50万円 | 1銘柄 | 127.5万円 | +155.04% | -20.09% |
| 50万円 | 2銘柄 | 148.8万円 | +197.58% | -19.13% |
| 50万円 | 3銘柄 | 190.0万円 | +279.95% | -26.24% |
| 100万円 | 1銘柄 | 176.9万円 | +76.93% | -13.78% |
| 100万円 | 2銘柄 | 228.5万円 | +128.53% | -12.80% |
| 100万円 | 3銘柄 | 245.0万円 | +144.99% | -22.73% |
単純な累積リターンだけなら、
50万円・最大3銘柄の+279.95%
が最も高くなりました。
ただし、最大DDも-26.24%まで大きくなっています。
一方、100万円・最大2銘柄では、
約5年間で100万円 → 228.5万円
累積リターン +128.53%
最大DD -12.80%
となりました。
今回の6ケースの中では、リターンと最大DDのバランスを見るうえで興味深い結果だったため、次にこの条件を使ってSTOPを比較することにしました。
STOPも「100万円」で比較し直す
これまでSTOPを比較するときは、主に1取引あたりの損益率を見ていました。
しかし、実際の資金を設定するとSTOPには別の影響もあります。
STOPによって早く決済すれば現金が戻り、その資金で別のBUYシグナルを採用できる可能性があるからです。
そこで、
初期資金100万円・現物・100株・最大2銘柄
に条件を固定し、
- NO STOP
- Fixed -15%
- Trailing F(activation +15% / trail 10%)
- Combined F(Fixed -15% + activation +15% / trail 10%)
の4パターンをポートフォリオ全体で比較しました。
NO STOPが最終資産トップになった
結果はこちらです。
| 条件 | 最終資産 | 累積リターン | 取引数 | 勝率 | 平均損益率 | 中央値 | 最大利益率 | 最大損失率 | 最大DD | 平均保有日数 |
|---|---|---|---|---|---|---|---|---|---|---|
| NO STOP | 228.5万円 | +128.53% | 51 | 78.4% | +7.57% | +7.65% | +33.52% | -12.45% | -12.80% | 40.41日 |
| Fixed -15% | 203.8万円 | +103.83% | 63 | 73.0% | +5.66% | +6.48% | +34.22% | -17.70% | -16.23% | 32.27日 |
| Trailing F | 213.8万円 | +113.83% | 55 | 80.0% | +6.89% | +6.67% | +33.52% | -12.45% | -12.87% | 37.31日 |
| Combined F | 212.0万円 | +112.04% | 71 | 76.1% | +5.36% | +5.68% | +34.22% | -20.84% | -12.41% | 28.82日 |
約5年間の最終資産が最も多かったのは、
NO STOPの228.5万円
でした。
前回まで固定STOPやトレーリングSTOPを検証してきたので、この数字だけを見ると、
「結局STOPはいらなかったのか?」
とも見えます。
しかし、今回の結果はそう単純には判断できません。
NO STOPでも最大損失が-12.45%しかない
特に気になったのが最大損失です。
これまで20銘柄を1取引単位で検証したSTOPなしでは、
最大損失 -61.30%
という取引が存在していました。
ところが今回の100万円ポートフォリオでは、NO STOPにもかかわらず、
最大損失 -12.45%
です。
売買ロジック自体を変更したわけではありません。
大きく変わったのは、
100万円・現物・100株という資金制約が加わったこと
です。
そこで、実際にどの銘柄が購入されていたのかを確認しました。
値嵩株を一度も買えていなかった
確認すると、100万円・現物・100株という条件では、
- DISCO(6146)
- レーザーテック(6920)
- 東京エレクトロン(8035)
を一度も購入できていませんでした。
株価30,000円の銘柄を100株購入するには300万円必要です。
そのため、100万円ではBUYシグナルが出ても購入できません。

これまで問題になっていたレーザーテックの、
一時+22.61% → 最終-61.30%
となった取引も、今回の100万円ポートフォリオには入っていません。
つまり今回NO STOPの最大損失が-12.45%に収まった背景には、
大きな損失を出した値嵩株を資金制約によって購入できなかった
という要因があります。
そのため、
「NO STOPの方が優秀だった」
と単純に結論づけることはできません。
100万円で検証するなら、対象20銘柄のままでいいのか
この結果を見たとき、正直なところ、
「そりゃそうだよね」
と思いました。
100万円・100株単位なら、値嵩株を買えないこと自体は当然です。
それより気になったのは、
100万円という資金制約を入れてバックテストするのに、検証対象20銘柄に値嵩株が多いままで意味があるのか
という点でした。
これまでの20銘柄は、同じ対象で売買ロジックやSTOPを比較するためには使えます。
しかし、実際のポートフォリオを評価する段階では、買えない銘柄が多いほど実質的な選択肢は少なくなります。
今後、より実運用に近づけるのであれば、
- 検証対象を20銘柄から広げる
- 100万円でも購入可能な銘柄を増やす
- 株価だけでなく流動性なども考慮して対象銘柄を選ぶ
- 信用取引を使った場合との違いを検証する
といった方向が考えられます。
今回、予定していた資金管理を実装したことで、
次は対象銘柄そのものも見直す必要がある
ことが見えてきました。
STOPで資金回転を上げても最終資産は増えなかった
もう一つ確認できたのが、STOPによる資金回転です。
STOPを入れるとポジションを早く決済するため、その資金で新しい銘柄を買えるようになります。
実際の購入件数は、
- NO STOP:53件
- Fixed:65件
- Trailing:57件
- Combined:73件
となりました。※購入件数には期末時点で未決済のポジションも含むため、上表の決済済み取引数とは一致しません。
Combinedでは、NO STOPにはなかった追加購入も26件発生しています。
それでも最終資産は、
NO STOP:228.5万円
Combined:212.0万円
でした。
今回の条件では、
STOPによって資金を早く空けて取引機会を増やしても、それだけで最終資産が増えるわけではない
という結果になりました。
取引回数や資金回転率を高めること自体が目的ではなく、その資金で次にどの取引をするのかまで含めて評価する必要があります。
まとめ
今回は、売買ロジック単体の検証から一歩進めて、実際の運用資金を設定したポートフォリオバックテストを実装しました。
検証期間は、
2021年8月26日〜2026年9月4日の約5年間(1,230営業日)
です。
今回確認できた主な結果は、
- 100万円・最大2銘柄では、約5年間で100万円→228.5万円、累積リターン+128.53%、最大DD-12.80%だった
- 同条件でSTOPを比較すると、NO STOPの最終資産が最も多かった
- STOPで取引機会は増えたが、今回の条件では最終資産の増加にはつながらなかった
- 100万円・100株では一部の値嵩株を購入できず、実際に選ばれる取引が変わった
- そのため、今回の結果だけでNO STOPが最適とは判断できない
という結果でした。
そして今回、個人的に一番気になったのは、
100万円でポートフォリオを検証するなら、現在の20銘柄という対象自体も見直す必要があるのではないか
という点です。
売買ルールだけでなく、資金量に対してどの銘柄を対象にするのか。
次の検証では、この部分も含めて実運用に近いバックテストへ進めていきます。



コメント