この記事では、様々なLLMを用いて、株価を予測するPythonプログラムのコーディングの性能を、使いやすさも含めて検証していきます。LLM登場以前は、素人が株価の予測モデルを実行することは考えられなかったでしょう。しかし、現代ではLLMを活用して上手くプロンプトを書けば、簡単な予測モデルを実行することができます。今回はその一例として、「株価の予測モデル」を、過去の株価のデータのみをもとに予測するというタスクを、いくつかのLLMで検証していきます。
仮説と検証方法
はじめに、Appleの株価をもとに株価の予測精度を検証します。今回の比較対象とするモデルは、以下の4つのモデルとします。
- GPT-4o (OpenAI)
- Gemini 2.0 Pro Experimental 02-05 (Google)
- Gemini 2.0 Flash-Lite 02-05 (Google)
これらはマルチモーダルモデルとなっており、株価のデータを読み込むのに十分なトークン数を確保できるため、今回の比較対象としました。また、コードの実行環境は、Google Colaboratoryとします。
取得する株価のデータは、2019年から2024年末までの約5年間のAppleの株価とします。これをもとに、約一年後の2024年12月末での株価を予測します。これが実際の株価と比べて、最も近いものを精度の高いモデルとします。
今回の検証では、GPT-4oとGemini 2.0 Proが同等の予測精度を示すと仮説を立てました。Gemini 2.0 ProはGoogleの最新モデルであり、高い精度を期待したいところです。Gemini 2.0 Flash-Liteはベンチマークの結果からも分かる通り、それほど高い性能を持たないため、Gemini 2.0 Proには及ばないと予想されます。
実験
①データの取得
はじめに株価のデータを取得します。今回は、PythonでYahoo Financeの金融データにアクセスするためのオープンソースのライブラリ「yfinance」を利用しました。これをGoogle Colaboratory上で実行し、csvファイルとして保存します。
株価データセット
②モデルへのプロンプト
株価のデータが取得できたら、データをモデルに入力してコードの生成を行います。分析するデータを入力することで、データの型や形式の食い違いをなくすことができます。入力するプロンプトは、Google Colaboratoryでの実行のため、次のようにします。
『添付した金融データを分析し、1年後の推移を予測するためのPythonプログラムを生成してください。読み込みファイル名は「”AAPL_stock_data.csv”」とし、最終的に「”/content/drive/My Drive/Colab Notebooks “」の直下に保存してください。また、最後の2024年12月28日の予想株価を数値データで出力してください。』
このような設計で検証をしてみた結果をまとめていきます。
検証結果
①GPT-4oの検証結果
GPT-4oはOpenAIのGPTシリーズで現段階における最高峰モデルです。GPT-4oにプロンプトを入力した結果を以下にまとめます。
- データの変換、クリーニングを自動的に行う。
- 時系列データをプロットする。
- 時系列のトレンドを分析する。
- SARIMAモデルを適用する。
- 次の1年間の株価を予測してプロットする。
このような流れで予測モデルを実行するコードを生成してくれます。その結果、以下のグラフのような株価予測が出力されました。この結果によると、2024年12月28日の予測株価は237.76 USDとのことでした。
②Gemini 2.0 Pro Experimental 02-05による検証結果
Gemini 2.0 Pro Experimental 02-05はGoogleが2月5日に公開したモデルで、特にコーディングと複雑なプロンプトの理解に優れているとされています。本モデルは、2.0 Proが公開されているGoogle AI Studio上で実行していきます。先ほどと同様のプロンプトで実行した結果を以下にまとめます。
- ファイルの読み込み
- データの前処理
- データをトレーニング用とテスト用に分割
- 線形回帰モデルをトレーニング
- テストデータで予測・評価
- モデルを用いて株価を予測し、数値を出力
以上のような流れでコードが生成され、実行を試みた結果、2024年12月28日の予測株価は191.58 USDとのことでした。
③Gemini 2.0 Flash-Lite 02-05による検証結果
Gemini 2.0 Flash-Lite 02-05はGoogleが2月5日に公開したモデルで、強化学習による思考力の強化が特徴です。本モデルは、2.0 Flash-Liteが公開されているGoogle AI Studio上で実行していきます。先ほどと同様のプロンプトで実行した結果を以下にまとめます。
- ファイルの読み込み
- データの前処理
- データをトレーニング用とテスト用に分割
- ランダムフォレスト回帰モデルをトレーニング
- テストデータで予測・評価
- モデルを用いて株価を予測し、数値を出力
大まかには2.0 Proの出力と類似していましたが、2.0 Flash-Liteは異なるモデルを選択しました。実行を試みた結果、2024年12月28日の予測株価は176.06 USDとのことでした。
各モデルの予測結果と実際のAppleの株価の比較
以上の結果から、同一の株価データを与えても、LLMごとに異なる機械学習モデルを選択する可能性があることが確認されました。また、実際の株価と比較すると、GPT-4oが選択したSARIMAモデルが最も高い精度を示し、Gemini 2.0 Proは期待した精度には及びませんでした。
3つのLLMを比較した結果、GPT-4oはGoogle Colaboratoryで実行する前にデータの前処理を行い、不適切な部分を整理した点でGeminiモデルを上回りました。一方、Geminiモデルは入力データの形式に対して一般的な前処理方法を提示するのみで、今回のデータに最適な処理とは言えませんでした。
具体的には、日付データを取得するコードにおいて、年月日の順序が従来のデータと異なる点を考慮し、GPT-4oは適切なエンコーディング手法を提案できたことが、精度の向上に繋がったと考えられます。
応用編
ここまでは、LLMを用いた株価予測のPythonプログラムを検証してきました。その結果、単一の株価データセットを使用した場合、SARIMAモデルが有効である可能性が示唆されました。
そこで、現在話題となっているNVIDIAの株価を対象に、引き続きGPT-4oを用いてSARIMAモデルによる予測を行います。データセットには、2022年1月から2024年12月まで(3年間)のNVIDIAの株価を使用し、1年後(2025年12月)の株価を予測しました。
その結果を以下のグラフに示します。
この予測モデルによると、2025年12月17日のNVIDIAの株価はおよそ173.12 USDとなると計算されました。ここ最近では株価の減少傾向が見られましたが、まだまだ半導体の分野は期待しても良いのかもしれません。
予測結果の再検討
今回は、3つの異なるLLMを用いて株価予測のPythonプログラムを生成し、その予測精度を検証しました。予測に使用したデータセットは過去の株価データのみでした。しかし、実際の株価の値動きは社会情勢や経済指標、企業の業績など多様な要因に影響を受けるため、単一のデータセットで高精度な予測を行うことは困難です。
また、同一のデータとプロンプトを使用しても、LLMごとに採用する機械学習モデルが異なるという興味深い結果が得られました。これは、生成AIの出力にバリエーションがあることを示す一方で、再現性の欠如という課題も浮き彫りにしました。この点は、金融市場で生成AIを活用する際の難しさにつながる可能性があります。したがって、今回の予測結果を鵜呑みにせず、さまざまなデータを考慮し、より総合的な分析を行うことが重要です。
さらに、Pythonプログラムで実行できる標準的な予測モデルに限らず、気候予測や金融予測など、特定の分野に最適化された高度なモデルの開発も進んでいます。今後は、こうした専門モデルの活用も視野に入れながら、より精度の高い予測手法を探求していくことが求められるでしょう。
まとめ
この記事では、LLMを活用した株価予測のPythonプログラムを生成し、その精度を検証しました。GPT-4o、Gemini 2.0 Pro、Gemini 2.0 Flash-Liteの3つのモデルを比較した結果、GPT-4oが最も使いやすいと感じられました。その理由のひとつは、データの自動確認と適切な前処理を行う機能にあります。また、今回の検証では、GPT-4oが選択した機械学習モデルが最も高い精度を示したことも、高評価につながる要因となりました。
AIを活用した予測技術は、今後さらに精度が向上していくことが期待されています。しかし、それ以上に重要なのは、適切なデータの収集と管理です。株価予測に限らず、AIを用いた分析や意思決定は、さまざまな分野で広がりを見せています。AIの活用が進む時代だからこそ、信頼性の高いデータの蓄積と安全な管理が、より一層重要になってくるでしょう。
当社では、安全にデータを活用できるAIプラットフォーム「IDX AI孔明™」をご提供しております。ご興味のある方は、以下のリンクよりお気軽にお問い合わせください。