投資のためのデータサイエンス

個人の投資活動に役立つデータ分析にまつわる話題を綴ります。

ChatGPTのCode Interpreterを用いた株価データの分析・予測

今年初めにChatGPTが登場した時は「ある言葉の次に何が来やすいかをモデル化した自然言語モデルをベースとしてこんなことまでできるのか」と驚愕しました。それから、自分の書いた英文Eメールの添削や本ブログで紹介した株価テクニカル分析などにChatGPTを活用していくうちに「なるほど、これは便利」ということで、必須のツールとなってきました。

ところが最近、以下の記事にあるChatGPTのCode Interpreter (現在はAdvanced Data Analysisというようです) を使ってみて再び驚愕しました。

medium.datadriveninvestor.com

これはもう、分析アシスタントを24時間雇用しているのと変わらないとも言えます。小生は自分のデータ分析以外にも、他の人のデータ分析の支援も数多く請け負って飯の種にしてきましたが、後者の仕事はもうAIに置き換わったということを痛感しました。

ここでは、上記英文記事に基づいて、ChatGPT Code Interpreterの使い方を概説します。尚、Code Interpreterは有料の"ChatGPT Plus"でのみ利用できる機能です。また、以下ではChatGPTの機能をフルに発揮させるために、すべて英語でやりとりしています。

まず、いつものようにYahoo! Financeから変数symbolで指定された銘柄の株価データを取得して、OHLCV形式で"stock_data"という名前のデータフレームに格納します。そして以下のPython文によってCSVファイルに出力します(日本企業を想定。データ獲得のPythonコードは当ブログの最近の大部分の記事に掲載されています)。

stock_data.to_csv('stock_data_'+symbol[0:4]+'.csv')

次にChatGPTを立ち上げ、画面下のメッセージ入力欄にあるクリップマークをクリックして上記のCSVファイルをChatGPTにアップロードし、さらに以下のプロンプトを入力します。


You are an expert in the analysis of stocks. I want you to analyze this data and provide the following information:
1. List and describe the data elements in this file.
2. Are there missing data values or does the data need to be cleaned?
3. Show me two data analysis visualizations.
4. Do you have any recommendations on how to further analyze this data to better understand the trends?

すると、ChatGPTは一つ一つについて、アップロードされたデータに基づいて回答してくれます。以下はChatGPTが描いたグラフです。

今度は、株価の予測値を求めるために、以下のプロンプトを入力します。


Use two machine learning models to predict future stock prices based on historical data.
Test using 80% of this data and show me the results for each machine learning model.

するとChatGPTは、機械学習の2つの手法(採用する手法は常に同じとは限らない)をデータにあてはめ、「平均二乗誤差」によって各手法の性能を評価した結果を返してきます。

尚、参照した英文記事は(出し惜しみで)ここで終わっていますが、肝心の予測値を得るためには、例えば以下のようなプロンプトを入力します。


Create a chart of the next 5 days' stock price forecasts using the random forest model.

すると、以下のような図が返ってきました。この場合は単なる直線外挿ですが、そうでないケースもあるようです。

このように、自らは何らコーディングをすることなく、アシスタントに仕事を依頼するような感覚で、株価の分析と予測を行うことができます。

ただし、これまで使ってみた範囲では、時々グラフの数字が不可解なものがあったり、作図を試みるも度重なるエラーでギブアップするといったケースもあります。使い方のコツについてはさらなるリサーチが必要なようです。