X Facebook LINE Bookmark

ChatGPTのように株価を予測するAI「Kronos」 — 日本株20銘柄で現状維持の予測に負けた理由

  • 「次のローソク足」を生成するAI・Kronos(クロノス)を、学習に使われていない2024年7月以降の日本株20銘柄で試すと、「直近の終値のまま」という単純な予測に、どの期間でも負けた。20日先の誤差率は13.6%で、現状維持の7.6%の2倍近く、5日先で現状維持に勝った銘柄は一つもなかった
  • Kronosの予測は、直前1年(256営業日)の平均の方向へ株価を引き戻していた。株価が1年平均より22%以上高い起点では20日先に平均25%安を予測し(実際は平均5%高)、1年平均より低い起点では小幅高を予測した。上昇相場の検証期間では、この癖が平均8.6%の低すぎる予測になって表れた
  • 論文の設定(過去40本の入力、10本の経路の平均)に近づけて回し直すと、20日先の誤差率は8.9%まで下がり、下への偏りもほぼ消えた。それでもどの期間でも現状維持には届かず、銘柄の並び順は逆向きに外れた。1年という長い入力が、平均へ引き戻す癖を大きくしていた
ChatGPTのように株価を予測するAI「Kronos」を日本株で検証

「AIが株価を予測できる」と聞いて、本当だろうかと思う人は多いはずだ。値動きのデータを大量に学習させた金融専用のAIが次々に出ているが、実際の市場でどれくらい当たるのか。AI研究の主要な国際会議AAAI 2026に採択された金融AI「Kronos(クロノス)」を、手元のトレードDBにある日本株の値動きで試した。20銘柄で300回の予測を回すと、「直近の終値のまま」という単純な予測に負け、予測の外れ方には一定の癖があった。

1. Kronosとは — ChatGPTのローソク足版

Kronosは、清華大学の研究チームが2025年8月に発表した金融市場専用のAIだ(Kronos論文(arXiv: 2508.02739))。「金融時系列の基盤モデル」と呼ばれ、あらかじめ大量のデータで学習させておき、いろいろな予測に使い回せる汎用のAIを指す。ChatGPTの土台になっている言語モデルの、値動き版と考えると分かりやすい。

ChatGPTが「次の単語」を予測するのと同じ仕組みで、Kronosは「次のローソク足」を予測する。始値・高値・安値・終値・出来高・売買代金の組み合わせを一種の「単語」に置き換えてAIに学習させ、過去の並びから未来のローソク足を一本ずつ生成する。論文のタイトルが「A Foundation Model for the Language of Financial Markets(金融市場の言語のための基盤モデル)」なのは、この発想を表している。

論文は2025年11月にAAAI 2026に採択され、会議の論文集にも載った。公式リポジトリ(GitHub: shiyu-coder/Kronos)のスターは、公開から2か月ほどで6,500を超え、2026年5月中旬には2万4,000を超えた。モデルの重みはHugging Face Hub(NeoQuasar/Kronos-base)などで無料で公開されている。

Kronosの基本仕様
項目 内容
構造 ローソク足を「単語」に置き換える部分と、ChatGPTと同じ型(デコーダー型Transformer)で次の単語を順に生成する部分の2段
学習データ 世界45の取引所から集めた120億本以上のローソク足。日本取引所グループ(JPX)の株・ETFも含まれる
学習に使った時間足 1分・5分・15分・30分・1時間・日足・週足の7種類(日本株は1分足を除く6種類)
モデルの大きさ 論文はsmall(2,470万パラメータ)・base(1億230万)・large(4億9,920万)の3種類。公開されているのはmini(410万、リポジトリで追加)・small・baseで、largeは非公開
この検証で使ったモデル Kronos-small(Macのノートパソコンで動く大きさ)

2. 学習データと「試験範囲」の重なり

AIを評価するときは、学習に使ったデータと試験に使うデータが重なっていないかを最初に確かめる。学校の試験で、出題範囲の問題集とまったく同じ問題が本番に出れば、満点近い点が取れて当然だ。それでは本当の実力は測れない。

Kronosの論文の付録Dには、次の趣旨の記述がある(運営者による要旨の訳)。

Kronosの事前学習データは2024年6月までで、すべての評価の試験期間は2024年7月以降から始め、学習と評価を時間で厳密に分けている。

付録の取引所の一覧には日本取引所グループが入っていて、日本の株・ETFのデータは2020年1月31日から始まる。日本株を2020〜2024年の期間で試しても、Kronosがすでに学習した値動きを再現させるだけになる。

そこで、手元のトレードDB(2005年5月以降の個別銘柄の日足)を3つの期間に分けた。

3つの期間に分けて重なりを整理
期間 日付 性質
A 2020-01-31 〜 2024-06-30 Kronosの学習データと重なる
B 2024-07-01 〜 2026-05-14 学習に使われていない期間(454営業日。今回の検証はここ)
C 2005-05-02 〜 2020-01-30 日本株の学習データより前

今回は期間Bに絞り、論文と同じく2024年7月以降を試験の期間にした。ただし、予測に使う過去の本数(論文は日足で40本)、予測する長さ(論文は12本)、乱数の設定、成績の物差し(論文は予測と実際の相関)は論文と違うので、この検証は論文の評価を再現したものではない。

3. 検証した銘柄・期間・方法

検証の設定は次のとおり。

検証設計
項目 設定
対象銘柄 出来高の多い上位20銘柄(NTT・トヨタ・三菱UFJ・ソニーG・三菱商事など。全銘柄はAppendix)
予測の起点 2024年7月〜2025年12月の月初の営業日(15点)
入力(過去の参照期間) 直近256営業日(約1年)のローソク足
予測の長さ 20営業日先まで(途中の1日・5日・10日先でも誤差を測る)
予測の回数 20銘柄 × 15起点 = 300回(1回で20日先まで出すので6,000点)
比べる単純な予測 ①現状維持(直近の終値のまま)/②トレンドの延長(過去20日の平均の伸びを先に延ばす)
Kronosの設定 追加の学習なし(そのまま使う方式)。次のローソク足を確率で抽選して、20日先までの道筋を1本だけ作る(リポジトリの使用例と同じ設定。抽選のばらつきを決める温度は1.0)。Kronos-smallをMac上で実行

予測の入力と答え合わせに使った株価は、自分のデータベースに毎日取り込んでいる日次の始値・高値・安値・終値と出来高で、株式分割は調整済みだ。この検証では20銘柄・2023年1月〜2026年5月分の16,400行を読み込んだ。予測の中心部は次のとおりで、条件を満たさない起点はこの段階で外れる。

for anchor in anchor_dates:  # 月初の起点ごとに予測を回す
    idx = df.index[df['date'] == anchor].tolist()
    if not idx:
        continue  # その銘柄にこの日付のデータがなければ起点ごと捨てる
    a_idx = idx[0]
    if a_idx < LOOKBACK or a_idx + PRED_LEN > len(df):
        continue  # 過去256日+先20日がそろわない起点も捨てる
    x_df = df.loc[a_idx-LOOKBACK:a_idx-1, ['open','high','low','close','volume']]
    pred = predictor.predict(
        df=x_df, x_timestamp=x_ts, y_timestamp=y_ts,
        pred_len=PRED_LEN, T=1.0, top_p=0.9, sample_count=1,
    )
起点の採否から予測までを担う中心部(run_evaluation.py、2026年5月実行)

データの前提条件と制約

この検証のデータには次の制約がある。

  • 対象は出来高の多い20銘柄に限っており、中小型株や新興市場は含まない
  • 株価は株式分割を調整済みだが、配当による調整はしていない
  • 売買の手数料は考えていない
  • 予測は1回の抽選で作った1本の経路で、回すたびに数字が変わる(回し直した結果は8節)
  • 使ったKronos-smallは小さいモデルで、Kronos-baseでは結果が変わりうる

4. 結果①: 現状維持の予測より大きい誤差

予測がどれくらい外れたかは、MAPE(平均絶対誤差率)で比べた。予測と実際の差を実際の株価で割り、その大きさを平均した値で、小さいほど予測が近い。Kronosは、どの予測期間でも「直近の終値のまま」という現状維持の予測より誤差が大きかった。

予測誤差(MAPE)の比較
予測の誤差率(MAPE)の比較。横軸は何営業日先を予測したか、縦軸は誤差率。Kronos(青)はどの期間でも灰色の破線(現状維持)より上にある。

20日先では、Kronosの誤差率が13.6%、現状維持が7.6%だった。1回ごとに比べても、20日先でKronosが現状維持より近かったのは300回のうち29%にとどまる。銘柄別では、5日先で現状維持に勝った銘柄はなく、20日先でもKDDIの1銘柄だけだった。

株価の短い期間の動きは、向きも大きさも前もって読めないランダムウォークに近く、何もしない予測が当たりやすい。検証期間のTOPIXは38%上がったが、2024年8月5日には7月の高値から24%、2025年4月には3月末から19%下げる場面もあった。大きく上下したこの期間でも、現状維持のほうが近かった。

5. 結果②: 偶然と区別できない上げ下げの的中率

次に、上がるか下がるかの向きを当てられたかを見た。誤差の大きさは問わず、Kronosが「上がる」と予測したときに実際に上がったか、「下がる」と予測したときに実際に下がったかだけを数える。

方向性的中率の比較
「上がる/下がる」の的中率。赤い破線がランダムの水準(50%)。Kronosは50%前後。

Kronosの的中率は、1日先で51.7%、3日先で52.7%、5日先以降は50%を割り、15日先は46.3%だった。ただ、乱数の種を変えて同じ300回を回し直すと、1日先は47.7%、3日先は49.0%になった。50%をわずかに上回った数字は、抽選のぶれの範囲に入る。

銘柄の並び順を当てる力を測るRankIC(予測の高い順に銘柄を並べたとき、実際の値上がりの順とどれだけ一致するかを示す相関)も計った。1〜3日先は+0.04〜+0.07だったが、回し直すと3日先は+0.04になった。15回の起点の平均なので、この程度の差は偶然でも出る。並び順を当てる力も、ほぼゼロと見てよい。

6. 結果③: 直前1年の平均へ引き戻す予測の偏り

Kronosの予測には、外れ方に一定の偏りがあった。

予測の偏り(バイアス)
Kronosの予測の偏り。負の値(赤)は、Kronosが実際より低く予測したことを示す。先を予測するほど低すぎる幅が大きい。

予測する期間が延びるほど、Kronosは実際より低い数字を出した。実際の株価と比べた偏りは、1日先で平均-1.0%、5日先で-3.1%、10日先で-6.3%、20日先で-8.6%だった。20日先の予測の騰落率は平均で7.9%安で、実際の騰落率(平均2.3%高)に届かなかっただけでなく、多くの起点で「下がる」と予測していた。

予測が下に偏った理由を探すため、起点ごとに、株価が直前256日の平均からどれだけ離れていたかを計った。300回の起点を、その離れ具合で4つに分けると次のようになる。

起点の株価と直前1年の平均の差 起点の数 20日先の予測(平均) 20日先の実際(平均)
平均より下(-46%〜-0.5%) 75 +2.4% +2.0%
平均の近く(-0.5%〜+8%) 75 -1.6% +2.5%
平均より上(+9%〜+21%) 75 -7.5% -0.4%
平均よりかなり上(+22%以上) 75 -25.0% +5.3%

直前1年の平均は、起点より前の256営業日の終値を平均した値。予測と実際は、起点の前日の終値から20営業日後の終値までの騰落率。

株価が1年平均より上にある起点ほど、Kronosは大きく下がると予測した。1年平均より下の起点では、小幅高を予測している。両者の順位相関(順位どうしの相関で、-1に近いほど逆向きにそろう)は-0.75で、予測の向きと大きさは、株価が1年平均からどれだけ離れているかでほぼ決まっていた。実際の株価は、平均よりかなり上の起点でもその後20日で平均5.3%上がっている。

検証期間の日本株は上昇相場で、300回の起点のうち74%で株価が1年平均を上回っていた。1年平均へ引き戻す予測が並べば、全体では低すぎる予測になる。図の-8.6%は、この癖が上昇相場で表れたものだ。いちばん極端なメタプラネットでは、2024年9月2日の起点で、20日先の予測株価がマイナスになった。

7. ケーススタディ — 4銘柄の予測と実際の比較

2025年7月1日を起点にした20営業日先までの予測を、4銘柄について実際の株価と並べた。

ケーススタディ
2025年7月1日を起点にしたKronosの予測(青の破線)と実際の終値(紺の実線)。点線は予測時点の終値。

トヨタ自動車(7203)は起点の株価が1年平均より9%低く、Kronosの予測は2,480〜2,680円の範囲で小幅に上がる道筋だった。実際の株価は7月23日に急伸し、2,850円台まで上がった。三菱UFJ(8306)は1年平均より12%高く、Kronosは1,850円まで下がる道筋を出したが、実際は2,171円まで上がっている。

ソフトバンクグループ(9984)は1年平均より21%高く、Kronosは1日目から9%安く予測し、20日先には27%安の1,928円とした。実際は3,051円まで上がっている。メタプラネット(3350)は1年平均の4倍の水準にあり、Kronosは4日で1,580円から730円へ下がる道筋を出した。実際の株価も下げたが、20日後は1,194円で、予測の450円とは大きく離れた。どの銘柄でも、予測の向きは1年平均からの離れ具合で決まっていた。

8. Kronosが日本株で外れた理由

理由①: 直前の期間の平均と標準偏差で株価を置き換える仕組み

Kronosは、入力されたローソク足を、その期間の平均からの離れ具合に置き換えてから予測する。離れ具合は標準偏差(ばらつきの大きさ)の何倍かで表し、予測した後で元の株価に戻す。今回の入力は256営業日なので、直前1年の平均が基準になる。1年で大きく上がった銘柄は、最新の株価が平均から大きく離れた位置にあり、Kronosはその位置から平均の方向へ戻る道筋を出しやすかった。6節の表と7節の4銘柄は、この動きと合う。

元の記事は、学習データが2024年6月で終わり、その後の上昇相場を知らないことを主な理由に挙げていた。ただ、Kronosは日付のうち分・時・曜日・日・月だけを入力に使い、年は使っていない。入力も256日ごとに置き換え直すので、学習の打ち切りの時期だけで下への偏りを説明するのは無理がある。

入力の長さを変えると、この見方を確かめられる。論文が日足の評価で使った過去40本の入力に変え、温度0.6と10本の経路の平均も論文に合わせて、同じ300回を回し直した。株価が入力の期間の平均より上にあった起点は74%から60%に減り、20日先の予測の騰落率は平均7.9%安から1.5%安に縮んだ。20本の経路を平均しただけでは偏りが変わらなかったので、偏りを縮めたのは主に入力の長さだと見ている。ただし温度も同時に変えたので、その影響は切り分けていない。

理由②: 個別企業の出来事を取り込めない入力

Kronosの入力はローソク足だけで、決算の上振れ・下振れ、経営方針の転換、買収、規制の変更、政策保有株の売却といった株価を大きく動かす材料は、モデルの中に入ってこない。誤差が最も大きかったメタプラネット(3350)は、ビットコインを会社の資産として持つ方針に切り替えた銘柄で、株価を動かす材料は本業の業績からビットコインの値段に移った。トヨタの7月23日の急伸も、ローソク足の並びからは読めない。

理由③: 1本の抽選の経路と、追加の学習なしという使い方

今回の予測は、1回の抽選で作った1本の経路だ。論文は、複数の経路を作って平均すると予測が安定すると書いている。同じ300回を、乱数の種を変えて1本ずつ回し直した結果、20本の経路の平均をとった結果、論文の設定に近づけた結果を並べると次のようになる。

予測の作り方 1日先の誤差率 5日先の誤差率 20日先の誤差率 20日先の偏り
元の実行(1本、過去256本、温度1.0) 3.3% 9.7% 13.6% -8.6%
乱数の種を変えた再実行(同じ設定) 3.2% 9.4% 13.6% -8.1%
20本の経路の平均(過去256本、温度1.0) 2.9% 9.0% 12.8% -8.5%
論文の設定(10本の平均、過去40本、温度0.6) 2.1% 6.5% 8.9% -2.1%
現状維持(直近の終値のまま) 2.0% 5.9% 7.6% —

いずれも同じ20銘柄・15起点で300回ずつ予測した。株価は2026年5月14日までのデータを使い、2026年10月2日に回し直した(run_evaluation_v2.py)。偏りは、予測が実際の株価より何%高いかを平均した値で、マイナスは低すぎる予測を示す。

乱数の種を変えても20日先の誤差率は13.6%のままで、全体の数字は抽選ではほとんど動かない。20本の平均で誤差は12.8%まで縮んだが、偏りは-8.5%のまま残った。論文の設定では偏りがほぼ消え、誤差率も8.9%まで下がったが、どの期間でも現状維持には届かなかった。20日先で現状維持より近い予測は、300回のうち39%にとどまる。

論文の設定では、銘柄の並び順が逆向きに外れた。20日先のRankICは-0.22で、15回の起点のうち12回でマイナスだった。Kronosは40日の平均より上にある銘柄ほど低く予測した。同じ起点の銘柄どうしで順位相関を計ると-0.52だが、実際の値動きでは+0.07で、その傾向はなかった。平均へ引き戻す癖は、入力を短くしても形を変えて残っている。

今回は日本株のデータで追加の学習をせず、公開されたモデルをそのまま使った。リポジトリには追加の学習(ファインチューニング)のスクリプトと中国株での例があり、日本株で学習させ直せば結果が変わる余地はある。論文自身は追加の学習を勧めておらず、学習し直さずに複数の経路の平均で精度を上げる方法を示している。

誤差が小さかった通信3社の読み方

5日先の誤差率が小さかったのはKDDI(2.4%)、NTT(2.9%)、ソフトバンク(3.1%)の通信3社だった。ただ、同じ銘柄の現状維持の予測はKDDIが2.2%、NTTが2.5%、ソフトバンクが2.4%で、Kronosはどれにも負けている。3社の株価はもともと動きが小さく、起点の株価も1年平均の近くにあった。誤差が小さいのは値動きが小さいからで、Kronosの腕前を示す数字ではない。

自分なら、Kronosの予測を使う前に、株価が1年平均からどれだけ離れているかという単純な数字と比べ、それで説明できない部分があるかを先に確かめる。

9. まとめと次に確かめること

そのまま使ったKronosの予測の実力

AAAI 2026に採択されたKronosを、学習に使われていない日本株の2年弱で試すと、追加の学習なしでは「直近の終値のまま」という単純な予測にどの期間でも負けた。予測は直前1年の平均へ株価を引き戻す向きに偏り、上昇相場だった検証期間では平均8.6%低い予測になった。上げ下げの的中率と銘柄の並び順を当てる力は、偶然と区別できなかった。

論文の設定に近づけると、誤差は現状維持に近づき、下への偏りもほぼ消えた。それでも現状維持には勝てず、銘柄の並び順は逆に外れた。個人的には、こうした基盤モデルは自分で作るモデルの出発点として使い、予測をそのまま株価の見通しにはしないのが現実的だと考えている。

次の検証として、次の3つを進めたい。

検証テーマ 確かめたいこと
期間Aでの再検証 学習データと重なる期間(2020年1月〜2024年6月)で同じ手順を試し、学習済みの期間ではどれだけ良く見えるかを測る
大きいモデル(Kronos-base) パラメータが約4倍のモデルで、1年平均へ引き戻す癖と誤差がどう変わるか
日本株での追加の学習 リポジトリのスクリプトで日本株を学習させ直し、そのまま使ったときからどれだけ変わるか

予測の向きが株価と1年平均の差でほぼ決まるなら、AIの予測と言っても、相場の動きの見方としては「平均から離れたものは戻る」という逆張りの考え方に近い。逆に、上昇の流れに乗る戦略が日本株でどう働くかは、業種の指数でトレンド追随の戦略を試した記事で確かめている。機械学習で景気後退を予測した日銀の研究所の論文は、新聞記事と金利差で景気後退を予測した論文の解説で取り上げた。

Appendix — 使用銘柄一覧

この検証で使った出来高の多い20銘柄は次のとおり。

コード 銘柄名 コード 銘柄名
3350メタプラネット8411みずほフィナンシャルグループ
4755楽天グループ8604野村ホールディングス
6758ソニーグループ8750第一生命ホールディングス
7203トヨタ自動車8801三井不動産
7453良品計画9107川崎汽船
8001伊藤忠商事9432NTT
8031三井物産9433KDDI
8058三菱商事9434ソフトバンク
8306三菱UFJフィナンシャル・グループ9501東京電力ホールディングス
8316三井住友フィナンシャルグループ9984ソフトバンクグループ

※本記事は公開情報に基づく情報整理であり、個人の見解を含みます。特定の銘柄の売買や投資を推奨するものではありません。投資判断はご自身の責任においてお願いいたします。

POPULAR ARTICLES