AI・機械学習 2026.11.13

機械学習・深層学習で株価は予測できるか|日本株10年分のデータで検証した結果

約21分で読めます

日本株の過去10年分のデータを使い、LightGBM と LSTM で「来月上がる株」を予測できるかを検証しました。上がるかはほぼ当たらず、当たったのは値動きの荒さだけ。生存者バイアスで一度だまされた経緯も含めて、結果をまとめます。

「急落した優良株は買い」「上がっている株に乗れ」「配当の高い株が有利」。株の本やネットには、こうした経験則がたくさんあります。機械学習や深層学習で株価を予測する話もよく見かけます。

それらは本当に効くのか。自分の売買のルールを決める前に、日本株の過去 10 年分のデータを使って、機械学習(LightGBM)と深層学習(LSTM)で確かめました。この記事はその分析の結果です。

結論を先に

  1. 来月どの株が上がるかは、ほとんど当てられませんでした。 経験則でも、機械学習でも、深層学習でも同じです。
  2. 当てられたのは「どれだけ値動きが荒いか」だけで、こちらは 9 割近く当たりました。
  3. ここ数年に限れば、割安な株と配当の多い株が勝っていました。ただし、その前の数年は負けています。
  4. 検証のやり方を少し間違えるだけで、「勝てる方法」が簡単に見つかってしまいます。 実際に一度だまされました。

これは個人が自分の売買のルールを決めるために行った検証の記録で、投資の助言ではありません。対象は日本株です。過去に効いたことが、これからも効くとは限りません。

「効く・効かない」をどう測ったか

この記事の数字は、すべて同じやり方で測っています。

毎月末に並べる
対象の約 500 社を、ある基準で並べます(例: 配当の多い順)。
上位 2 割を買う
上位 2 割(約 100 社)を、同じ金額ずつ買ったことにします。
1 か月後に入れ替える
成績を記録し、並べ直して入れ替えます。これを 9 年分くり返します。
全部を買った場合と比べる
「500 社全部を同じ金額ずつ買った場合」との、1 年あたりの差を見ます。

「差 +3」は、その基準で選んだ方が、全部を買うより 1 年あたり 3% 多く増えたという意味です。マイナスなら、選ばない方がましだったことになります。

大事な決まりが 1 つあります。並べるときには、その時点までに分かっていた情報しか使いません。 たとえば 2020 年 3 月末の並べ替えに、4 月に発表された決算は使いません。

使ったデータ

データ出どころ量
毎日の株価と出来高J-Quants(日本取引所グループのデータ配信サービス)2,441 日 × 5,392 銘柄
決算と業績予想J-Quants189,622 件
各時点の上場会社の一覧J-Quants121 か月分
米国の金利・為替・恐怖指数(VIX)などYahoo Finance15 年分

主な対象は TOPIX500(東証に上場する会社のうち、規模の大きい約 500 社)です。

1. 「上がるか」は当たらない。「荒れるか」は当たる

同じ機械学習のモデルに、2 種類の予測をさせました。1 つは「来月、ほかの株より上がるか」、もう 1 つは「来月、ほかの株より値動きが荒いか」です。

「上位 2 割」と予測した株が、実際に上半分に入った割合(でたらめなら 50%)
TOPIX500、2021〜2026 年。モデルは LightGBM

「上がるか」は 52.6% で、でたらめとほぼ同じです。「荒れるか」は 88.6% で、10 回に 9 回近く当たります。

値動きの荒い株は、来月も荒い。これははっきりした性質で、機械学習を使わなくても「過去 1 年に荒かった株」を選ぶだけで 86.6% 当たります。一方で、上がった株が来月も上がるとは限りません。

予測した順位と実際の順位の似かたを表す順位相関(0 ならでたらめ、1 なら完全に一致)で見ても、「上がるか」は 0.03、「荒れるか」は 0.64 でした。

過去の値動きから分かるのは「危ない株」であって、「儲かる株」ではありません。

無料AI相談

AIで気軽にWeb相談してみませんか?

詳しく見る

2. 高度な方法を使っても、単純な方法に勝てなかった

手がかりを増やしたり、深層学習を使ったりすれば当たるようになるのか。単純な方法(過去 6 か月に上がった株を買うだけ)と、機械学習・深層学習を、同じ条件で比べました。

選んだ場合と、全部を買った場合の差(1 年あたり、ポイント)
2017〜2026 年。この図の数字は、次の章で説明する間違いを含んでいます

手がかりを 16 個から 26 個に増やしても(出来高や、米国の金利・為替などの相場全体の数字を追加)、成績は変わりませんでした。

深層学習の LSTM には、過去 120 営業日の値動きと出来高の並びをそのまま読ませました。結果はでたらめと同じです。チャートの形から来月を読むことは、少なくともこの方法ではできませんでした。

深層学習の設定は 1 通りしか試していません。設定を何十通りも試せば良い数字は出ますが、それは過去のデータに合わせただけになります。

3. 検証のやり方を間違えると、「勝てる方法」が見つかってしまう

前の章で「年 3〜4% 勝てる」と出た方法は、本物だったのか。答えは「いいえ」でした。

最初の検証には、気づきにくい間違いがありました。対象を「今、大きい 500 社」にしていたのです。

今の 500 社には、「この 10 年で株価が大きく上がったから、大きい会社の仲間入りをした会社」が含まれます。逆に、業績が落ちて外れた会社や、上場廃止になった会社は入っていません。つまり、勝ち残った会社だけを集めて、過去にさかのぼっていたことになります。これでは「最近上がっている株を買う」方法が、実際より良く見えてしまいます。

J-Quants には「その時点で、どの会社が大きい 500 社だったか」の記録があります。それを使って対象を直すと、延べ 619 社になりました。うち 118 社は今は 500 社から外れていて、54 社は上場廃止などで株価が付いていません。

同じ方法・同じ期間で、直す前と後を比べる(全部を買った場合との差、1 年あたり)
2018〜2026 年

「最近上がった株を買う」方法の優位は、消えました。年 3% の差は、対象の選び方が作り出した見かけでした。全部を買った場合の成績も、年 12.7% から 10.6% に下がっています。

この現象は生存者バイアスと呼ばれ、投資の検証でいちばん有名な落とし穴の 1 つです。知っていても、実際に踏みました。

過去のデータで「勝てる方法」を見つけたら、方法より先に、データの集め方を疑ってください。

4. 効いていたのは「割安さ」。ただし、時期による

株価の動きではなく、会社の業績を見れば差が出るのか。10 年分の決算(約 19 万件)を使い、7 つの基準を試しました。決算の数字は、発表された日より後にだけ使っています。

買う株の選び方2018〜2020 年2021〜2023 年2024 年〜全期間
資産に比べて株価が安い(PBR が低い)−6.4+13.2+10.9+4.9
利益に比べて株価が安い(PER が低い)−5.6+15.1+4.1+3.8
配当が多い(配当利回りが高い)−3.5+17.1+4.6+5.5
決算の発表日に株価が上がった+0.5−1.2+2.4+0.5
会社が業績予想を引き上げた−2.2+1.1+0.9−0.2
利益の伸びが大きい−1.4+0.6−0.2−0.4
稼ぐ力が高い(ROE が高い)+5.6−3.2−1.9+0.4

数字は、全部を買った場合との 1 年あたりの差(ポイント)です。

差が出たのは、割安さを測る基準(上の 3 行)でした。偶然でこうなりにくいかの目安になる t 値(2 を超えると偶然では出にくい)で見ても、2 を超えたのは割安さと配当だけです。

「決算が良かった会社を買う」という基準(下の 4 行)は、大きな会社ではほとんど差が出ていません。良い決算は、発表されたその日のうちに株価に織り込まれてしまうようです。

ただし、割安な株も配当の多い株も、2018〜2020 年には負けています。勝ち始めた 2021 年以降は、世界的に金利が上がり始めた時期です。2023 年 3 月には、東京証券取引所が上場企業に、株価が純資産を下回っている状態の改善を求めました。「割安株は常に勝つ」ではなく、「この数年は割安株の時代だった」と読むのが安全です。

5. 「業績が良いのに急落した株」を買っても、勝つのは半分以下

「良い会社の株が一時的な理由で急落したときは買い時」という有名な経験則を確かめました。「1 年の高値から 30% 以上下げた株」を買って 12 か月持った場合と、そのうち業績が良い会社(売上も利益も増えていて、業績予想を下げていない)に絞った場合を比べています。

12 か月後に、全部を買った場合より良い成績だった割合(%)
TOPIX500。50% に届かなければ、負けた方が多い

どの条件でも、勝ったのは半分以下でした。業績の良い会社に絞ると、平均の成績は少し良くなります(全部を買った場合との差が +3.0% から +4.6% に)。それでも勝った割合は 44% です。

「平均はプラスなのに、勝つのは半分以下」というのは、少数の大当たりが平均を引き上げているということです。急落した株を 1 つか 2 つ買っても、その大当たりを引ける見込みは低く、多くの場合は平均に負けます。

6. 小さな会社では差が大きく出る。そして、急落は逆効果

注目する人が少ない小さな会社なら、まだ差が残っているのではないか。大きい 500 社の外にある会社(毎月の平均で 1,752 社。ほとんど売買されていない会社は除く)で、同じ検証をしました。

全部を買った場合との差(1 年あたり、ポイント)
2018〜2026 年

割安さの差は、小さな会社の方が大きく出ました。大きな会社では効かなかった「業績予想を引き上げた会社を買う」も、小さな会社では効いています。

一方で、急落した小さな会社の株は、その後も負け続けました。 12 か月後に平均より良かったのは 36% だけです。小さな会社の急落には、たいてい本当に悪い理由があるようです。

ただし、小さな会社の株は、思った値段で買えない・売れないことが多く、実際の成績はこれより悪くなります。

まとめ

問い答えどのくらい確かか
過去の値動きから、上がる株を当てられるかほぼ当てられない確か。経験則・機械学習・深層学習のどれでも同じ
値動きの荒い株は当てられるか当てられる(約 9 割)確か
上がっている株に乗る方法は効くか正しく検証すると、差は無いまずまず。検証できたのは 9 年分
割安な株・配当の多い株は有利かこの 5〜6 年は有利だった弱い。負けた時期と勝った時期が 1 回ずつ
急落した株を買うのは有利か大きな会社ではほぼ差が無い。小さな会社では不利まずまず
業績が良ければ、急落は買い時か平均は少し良いが、勝つのは 44%まずまず。「業績が良い」の決め方は簡易なもの

個人の売買にとっての意味は、次の 4 つだと考えています。

  • 市場全体をまとめて買う方法(インデックス投資)を土台にするのは、理にかなっています。 どの検証でも、確実に勝てる選び方は見つかりませんでした。
  • 個別の株を買うなら、「当てる」より「1 つあたりの金額を小さくする」。 当てられない以上、外れたときの傷を小さくすることが、いちばん確かな守りです。
  • 値動きの荒さは、金額を決める材料になります。 荒い株ほど少なく買う、という決め方には裏付けがあります。
  • 「勝てる方法を見つけた」という話は、検証のやり方を確かめてから信じる。

技術的にしたこと

ここからは、分析の中身を知りたい方向けです。

未来の情報を混ぜない

過去のデータで検証するときにいちばん多い失敗は、「その時点では知りえなかった情報」をうっかり使ってしまうことです。少しでも混ざると、成績は実際よりずっと良く見えます。次の対策をしました。

落とし穴何が起きるかした対策
未来のデータで学習する答えを見てから問題を解くことになる予測する年より前のデータだけで学習し、1 年進むたびに学習し直す(ウォークフォワード)。前年 12 月の分は正解がまだ出ていないので学習から外す
決算を、発表より前に使う良い決算の会社を、発表前に買えたことになる決算は発表日で管理。取引が終わる 15 時以降の発表は、翌営業日から使う
海外の指標の時差東京の取引終了時点では、同じ日付の米国の数字はまだ出ていない米国の指標と為替は、前日の値を使う
勝ち残った会社だけを使う3 章のとおり各月末時点の上場会社の一覧から、対象を決め直す
上場廃止になった会社消えた会社の損が、成績から抜け落ちる翌月に株価が無いときは、最後に付いた値段で売ったことにする
株式分割1 株を 2 株に分けると株価が半分になり、暴落に見える分割を調整した株価を使い、1 株あたりの利益や配当も同じ比率でそろえる
成績を見て設定を調整する何十通りも試せば、偶然うまくいく設定が必ず見つかるモデルの設定は最初に決めて変えない。乱数を変えた複数回の平均を使う
売買の費用を無視する毎月たくさん入れ替える方法ほど良く見える入れ替えた分に 0.1% の費用がかかるとして、引いた成績も出す

予測に使ったモデル

モデルどういうものか設定
LightGBM条件分岐(決定木)を何百本も組み合わせる方法。表の形のデータに強く、この種の問題の定番木 300 本、学習率 0.03、葉 15 枚。乱数を変えた 5 回の平均。CPU で 1 分ほど
LSTM時間の順に並んだデータを読む深層学習。過去 120 営業日の毎日の値動きと出来高をそのまま読ませた2 層、隠れ状態 64、6 エポック。乱数を変えた 3 回の平均。GPU(NVIDIA RTX 3060)で数分

どちらのモデルにも、当てさせたのは「来月、その株の上昇率が、全部の会社の中で何番目か」です。株価そのもの(来月いくらになるか)は予測させていません。株価は相場全体の上げ下げに大きく左右されるので、「ほかの株と比べてどうか」に絞った方が、銘柄選びの力を測れるからです。

モデルに渡した手がかり(特徴量)

種類数中身
値動き16過去 1・3・6・12 か月と 3 年の上昇率、1 年の高値・安値からの距離、値動きの荒さ、移動平均からの離れ具合、配当利回りなど
出来高3売買される金額の大きさ、最近の売買の増え方
相場全体7米国の金利、為替、日経平均の下げ幅、恐怖指数(VIX)など
業績8割安さ(PER・PBR の逆数)、ROE、配当利回り、売上と利益の伸び、業績予想の修正、決算発表日の株価の反応

会社ごとの数字は、毎月、全部の会社の中での順位(0〜1)に直してから渡しています。「PER 10 倍」が安いか高いかは時代によって変わるので、「その月の中で何番目に安いか」にそろえるためです。

動かした環境

自宅の Linux サーバー(12 コア、メモリ 32GB、GPU は NVIDIA RTX 3060 12GB)で、Docker のコンテナの中で実行しました。言語は Python で、pandas(表の計算)、LightGBM、PyTorch(深層学習)を使っています。データの取得に約 1 時間、検証の計算は全部で 10 分ほどでした。

無料AI相談

AIで気軽にWeb相談してみませんか?

詳しく見る

このAI技術、御社の業務にも導入できます

AI導入・業務自動化

ChatGPT活用や業務自動化など、最新のAI技術を御社に合わせてご提案します

200件以上の制作実績 顧客満足度97% 初回相談無料

※ 通常1営業日以内にご返信します

この分析の限界

  • 第三者の確認を受けていません。 3 章のような間違いが、ほかにも残っているかもしれません。
  • 期間が 9 年です。 割安な株が負けた時期と勝った時期が、1 回ずつ入っているだけです。
  • 配当は近似です。 会社が予想した年間の配当を、年 2 回に分けて受け取ったとして計算しています。
  • 税金を入れていません。 毎月入れ替える方法は、利益が出るたびに約 20% の税金がかかります。
  • 月末の終値で売買できたと仮定しています。 特に小さな会社では、実際にはその値段で買えないことがあります。
  • 2 章の数字は、3 章で分かった間違いを含んだままです。 直した後のデータ(2021〜2026 年)でも、業績の手がかりを足した機械学習(全部を買った場合との差 年 +5.3)は、「資産に比べて安い順に買う」だけの方法(年 +12.1)に及びませんでした。
A
この分析では、来月どの株が上がるかはほとんど当てられませんでした。「上位 2 割」と予測した株が実際に上半分に入った割合は 52.6% で、でたらめ(50%)とほぼ同じです。深層学習(LSTM)でも同じでした。
A
来月の値動きの荒さ(ボラティリティ)は、9 割近く当たりました。ただし、過去 1 年に荒かった株を選ぶだけでも 86.6% 当たり、機械学習の上乗せは小さいものでした。
A
今残っている会社だけを集めて過去を検証してしまう誤りです。上場廃止や指数からの除外で消えた会社が抜け落ちるため、成績が実際より良く見えます。この分析では、直す前に年 3% あった「最近上がった株を買う」方法の優位が、直した後には消えました。

この記事をシェア

AI技術の導入・活用をサポートします

業務に合わせたAI活用のご提案が可能です。 初回相談は無料です。

※ 1営業日以内にご返信いたします

この技術でお困りなら

無料でプロに相談できます

相談する
AIに無料相談