AIで株の50パターンを試したら、全部不合格だった|日経225で76万回超の売買を検証
「AIを使って、株の買い方を50パターン試したら、1つくらい当たりが見つかるんじゃない?」
そう思って、本当にやってみました。
公式の日経225構成銘柄225社を対象に、Yahoo Financeの5分足をPythonライブラリ yfinanceで取得し、50種類の売買ルールを検証しました。
合計の売買回数は、763,181回です。
結果はどうだったか。
今回の固定条件と合格基準では、50パターンすべて不合格でした。
次の検証段階へ進める候補も0件でした。
でも、これはかなり面白い結果だと思っています。
なぜなら、「たくさん試せば何か勝てるだろう」という考えが、実際にはそう簡単ではないと分かったからです。
30秒で結論
今回やったことは、とても単純です。
今回の検証条件
・対象:公式の日経225構成銘柄225社
・構成銘柄の基準:日経225公式の構成銘柄ページ(更新日 2026年9月9日)のスナップショット
・データ提供元:Yahoo Finance
・取得方法:Pythonライブラリ yfinance
・足種:5分足
・データ取得要求期間:2026年7月12日 ~ 2026年9月10日
・実際に検証へ使用できた期間:正確な開始・終了時刻は、元の実行データでmin/max timestampを再確認するまで未確定です。取得要求期間とは分けて扱います。
・5分足総数:581,725本
・1銘柄あたり:2,471~2,599本
・データ取得失敗:0銘柄(225/225 PASS)
・売買回数:763,181回
・検証対象:事前登録した50戦略
・期間分割:時系列順に60%/20%/20%(発見・検証・未使用テスト)
・コスト確認:事前固定した標準・悪化・厳しい条件の3段階(内部名:BASE/ADVERSE/SEVERE)
・注意:今回使った225社は検証実行時点の日経225構成銘柄です。過去の各時点の構成銘柄を日ごとに再現したものではないため、構成銘柄の入れ替えによる偏りが残ります。
その結果、
今回の固定条件と合格基準では、50戦略すべて不合格でした。
これは「株の50戦略はすべて使えない」という意味ではありません。今回のデータ・コスト仮定・判定基準では、次の検証へ進める条件を満たした戦略が0件だった、という結果です。
次に進める戦略は0件でした。
今回試した50個を、超かんたんに言うと
「50個って、結局どんな方法?」という人向けに、難しい言葉をできるだけ使わずにまとめます。
大きく分けると、「上がっている流れについていく」「高値を抜けたらついていく」「上がりすぎ・下がりすぎから戻るのを狙う」「売買量が増えたときだけ狙う」といった考え方です。
1〜5:上がる・下がる流れを見る方法
S01:直近9本の平均価格と21本の平均価格を比べ、短い方が長い方を抜いた動きを狙う。
S02:20本と50本の平均価格を比べる。S01より少しゆっくりした流れを見る。
S03:同じく20本と50本の平均価格を見るが、平均の計算方法を変えたもの。
S04:全体では上向きのときに、いったん少し下がってから再び上がる動きを狙う。
S05:長めの平均価格より上か下かを見て、今の流れが続く方を狙う。
6〜11:高値・安値を抜ける動きを見る方法
S06:直近10本の高値や安値を抜けたときに、その方向へ動くかを見る。
S07:S06を20本まで広げ、もう少し長い範囲の高値・安値を使う。
S08:朝の最初の15分でできた値動きの範囲を抜けたら、その方向を狙う。
S09:S08の30分版。朝30分の高値・安値を基準にする。
S10:前日の高値や安値を当日に抜けたとき、その動きが続くかを見る。
S11:前日より値動きの幅が大きく広がった場面を狙う。今回の50個では最後のテストで一番マシだったが、それでもマイナスだった。
12〜15:その日の平均的な売買価格を見る方法
S12:その日の平均的な売買価格より少し上や下へ離れたとき、流れが続くかを見る。
S13:上向きの流れの中で、その日の平均的な売買価格あたりまで戻ってから再び進む動きを狙う。
S14:平均的な売買価格から大きく離れすぎたら、元に戻る動きを狙う。
S15:平均的な売買価格をまたいだうえ、売買量も増えているときだけ狙う。
16〜20:価格がいつもの範囲から外れたかを見る方法
S16:最近の平均価格から見て、いつもの値動きの範囲を上や下へ抜けたときに狙う。
S17:逆に、いつもの範囲から外れすぎた価格が平均へ戻る動きを狙う。
S18:値動きが小さくなったあと、一気に動き始める場面を狙う。
S19:最近の値動きの大きさを基準にして、いつもの範囲を抜けたときに狙う。
S20:S19とは逆に、離れすぎた価格が平均へ戻る動きを狙う。
21〜25:上がりすぎ・下がりすぎを見る方法
S21:短期間で下がりすぎたと判断したとき、反発するかを見る。
S22:短期間で上がりすぎたと判断したとき、反落するかを見る。
S23:値動きの勢いが弱い側から強い側へ切り替わる場面を狙う。
S24:下がりすぎの状態から、上向きへ切り替わる瞬間を別の計算方法で見る。
S25:上がりすぎの状態から、下向きへ切り替わる瞬間を見る。
26〜30:値動きの勢いを見る方法
S26:短い流れと長い流れの差を比べて、勢いが切り替わったところを狙う。
S27:上向き・下向きの勢いがゼロ付近をまたいだときに狙う。
S28:少し前と比べて価格が強く上がり始めたかを見る。
S29:S28より長い期間で価格の勢いを見る。
S30:直近20本と比べて価格が強い方向へ進んでいるかを見る。
31〜35:強いトレンドが出ているかを見る方法
S31:上昇・下降のどちらかにはっきりした強い流れがあるときだけ、その流れを狙う。
S32:上向きと下向きの力関係が入れ替わった場面を狙う。
S33:値動きが小さく縮んだあと、大きく動き出す場面を狙う。
S34:複数の過去価格から作る「雲」と呼ばれる範囲を価格が抜けたときに狙う。
S35:短めの基準線と長めの基準線が交差したときに狙う。
36〜38:前日の終値と当日の始値の差を見る方法
S36:前日より高く始まった日に、そのまま上方向へ進むかを見る。
S37:前日より大きく安く始まった日に、そこから戻る動きを狙う。途中のテストまでは良かったが、最後のテストで崩れた戦略。
S38:前日との差が小さい日に、朝30分の高値・安値を抜ける動きを狙う。
39〜41:売買量が急に増えた場面を見る方法
S39:普段より売買量がかなり増え、価格も高値・安値を抜けた場面を狙う。
S40:高値・安値を抜ける動きに、売買量が増えている条件も加えたもの。
S41:普段より大きく売買量が増えたあと、その方向への動きが続くかを見る。
42〜44:いったん下がってから再び進む動きを見る方法
S42:上向きの流れの中で、前より安値が切り上がっている形を狙う。
S43:平均価格の上向き傾向と、安値が切り上がる形を組み合わせる。
S44:一度高値を抜けたあと、その付近まで戻って再び進む動きを狙う。
45〜46:前日の値段を基準に戻りを狙う方法
S45:前日の安値付近まで下がったあと、反発する動きを狙う。
S46:前日の高値と安値の真ん中あたりを一度下回ったあと、再び上へ戻る動きを狙う。
47〜50:2つ以上の条件を組み合わせた方法
S47:全体の流れが上向きで、短期的には少し売られすぎた場面を狙う。
S48:上向きの流れに加えて、売買量が増え、高値を抜けたときだけ狙う。
S49:その日の平均的な売買価格と、安値が切り上がる形を組み合わせる。
S50:強いトレンドが出ていて、さらに直近の高値・安値を抜けたときだけ狙う。
つまり50個といっても、完全にバラバラな50個ではありません。
「流れについていく」
「高値を抜けたらついていく」
「上がりすぎ・下がりすぎから戻るのを待つ」
「売買量が増えたときだけ狙う」
「条件を2つ以上組み合わせる」
という有名な考え方を、少しずつ条件を変えながら50種類にしたものです。
そして今回、その50種類を日経225全銘柄で同じルールのもと試しましたが、最後のテストまで残ったものはありませんでした。
「最初は良かったのに、最後に崩れた」戦略もあった
今回、一番面白かったのはS37という戦略です。
この戦略は、最初の期間ではプラスでした。
次の確認期間でもプラスでした。
ここまで見ると、
「これ、いけるんじゃない?」
と思います。
でも最後に残しておいた期間で試すと、マイナスになりました。
1株・1回の売買あたり、平均で約10.5円のマイナスです。
つまり、
前半では良さそうに見えた。
でも、最後のテストでは通用しなかった。
ということです。
これが「過去のデータでは強そうに見えても、本当に強いとは限らない」という分かりやすい例でした。
一番マシな戦略でも負けていた
50個の中で、一番成績が良かった戦略も見ました。
それでも、最後のテストでは1株・1回の売買あたり平均約5.7円のマイナスでした。
「50個の中では一番良い」と「本当に使える」は、全然違うということです。
1位だから採用、ではダメでした。
手数料を入れると、さらに厳しかった
株の売買では、実際には手数料や価格のズレがあります。
バックテストでこれを無視すると、結果が良く見えすぎることがあります。
今回は、通常のコストだけでなく、少し悪い条件、かなり悪い条件でも試しました。
結果は全部同じでした。
プラスになった戦略は、50個中0個。
コストが悪くなるほど、成績はさらに落ちました。
AIを使えば勝てる方法が簡単に見つかるわけではなかった
今回AIを使って良かったのは、「勝てる方法を見つけてくれたこと」ではありません。
むしろ、
大量に試す
↓
良さそうなものを疑う
↓
最後のテストでもう一度確認する
↓
ダメなら全部落とす
という作業を、225銘柄×50戦略という大きさでできたことです。
AIは「必勝法を作る機械」というより、
「怪しい勝ち方をふるい落とす道具」
として使う方が、今回の実験では役に立ちました。
50戦略すべて不合格なら、実験は失敗?
私はそうは思っていません。
もし途中で成績が良かったS37だけを見て、
「勝てる戦略を発見しました」
と記事にしていたら、最後のテストで負けることは分かりませんでした。
今回は最後まで検証したから、
「途中では良く見えても、最後には崩れる戦略がある」
と確認できました。
これは実際にお金を入れる前に分かったので、かなり大事な結果です。
次はどうする?
今回の50戦略は、このまま終了にします。
結果を見たあとで数字を少しずつ変えて、同じデータで「勝てる形」を探すことはしません。
それをすると、今回のデータにだけ合うルールを作ってしまう可能性があるからです。
次は別の考え方を試します。
候補は、
・会社の売上や利益、受注などを見る方法
・数日〜数週間持つ、もう少し長めの売買方法
です。
短期チャートだけで50個試し、今回の基準では全部不合格だったので、次は違う方向から探します。
まとめ
今回、公式の日経225構成銘柄225社に対して、Yahoo Financeからyfinanceで取得した5分足を使い、50個の売買ルールを試しました。
売買回数は763,181回。
結果は、50個すべて不合格でした。
次に試す候補も0件です。
でも、一番大きな収穫は、
「良さそうに見えた戦略でも、最後のテストで崩れることがある」
と実際のデータで確認できたことです。
AIでたくさん試せば、簡単に勝てる方法が見つかる。
今回は、そうはなりませんでした。
だからこそ、次も「勝てそうな話」だけを見るのではなく、本当に残る方法があるのかを検証していきます。
※この記事は過去データを使った検証記録です。特定の銘柄や売買方法をおすすめするものではありません。過去の結果は、将来の利益を保証するものではありません。