見出し画像

ChatGPTを用いたテクニカル分析② Code Interpreterの活用

はじめに

近年、金融市場はますます複雑化し、競争が激化しています。この状況下で、投資家たちは最適な投資判断を行うために様々な手法を試みています。その中で、テクニカル分析は投資家にとって重要な分析手法の一つとなっています。

テクニカル分析は価格データや取引量などの市場データを用いて将来の価格変動を予測しようとするものです。より具体的にはMarketSpeedなどの取引ツールやTrading Viewなどのチャートツールで移動平均線やRSIを表示して、価格分析をしたり、トレンドの転換点を読む分析を指します。

Trading View

ただしこれらのツールでは機能が一部有料であったり、設定できる内容が限られているようなケースが存在します。
一方でプログラミングを使用することで、自由に様々なテクニカル分析機能を実装することが可能となります。

今回は自然言語処理を得意とするChatGPTのCode Interpreter機能を用いて自動でプログラムを生成/実行/デバッグさせ、テクニカル分析がへ応用可能かを検証します。

本アカウントについて

本アカウントではChatGPTを経済、株式等に応用する手法を考察、情報共有しています。過去にはファンダメンタルズ分析用にChatGPTを応用する手法、そのデータ収集のためのスクレイピングプログラムを紹介しております。よろしければご参照、アカウントのフォローをいただけますと幸いです。

⚠️注意事項

当アカウント発信の情報に基づいて投資判断を行い、損失が発生した場合でも、当方は一切の責任を負いません。
投資にはリスクが伴うため、投資判断は自己責任でお願い致します。
本記事は特定の商品の勧誘や売買の推奨等を目的としたものではありません

検証③:GPT上で解析する

Code Interpreterとは

Code Interpreter機能とは、ChatGPTにおいてユーザーからのコーディングに関する質問やリクエストに対して、リアルタイムでコードを解析し、実行結果を提供する機能です。

この機能を用いると、ChatGPTのインターフェイス上でGPTがコードを自動で実行及びデバッグを行い、その結果を表示してくれます。

今回の検証では、この機能を用いて特定企業の株価に対してテクニカル分析を実行してみます。

検証用データを入手する

今回は旭化成(3407)のデータを例として使用します。
財務分析の際と同様に、データの創作を防止するため必ず実データを用意し解析対象とします。

今回はChatGPTに下記のような形でコード作成してもらいました。

下記要件に従って株価データをダウンロードするpythonスクリプトを作成してください
#要件
・yfinanceから、日本の証券コード3407の日足データを過去3ヶ月分取得する
・日付、始値、高値、安値、終値、出来高の順でカンマ区切りのcsvで保存する

作成されたスクリプトは、下記のとおりです。

import yfinance as yf
from datetime import datetime, timedelta
import pandas as pd

# 証券コードと市場の接尾辞を指定(日本の場合は '.T' を使用)
ticker_symbol = "3407.T"

# 過去3ヶ月分の日付範囲を計算
end_date = datetime.now()
start_date = end_date - timedelta(days=90)

# yfinanceを使用してデータを取得
data = yf.download(ticker_symbol, start=start_date, end=end_date)

# 必要なカラムを選択し、日付をカラムに含める
data = data.reset_index()
data = data[['Date', 'Open', 'High', 'Low', 'Close', 'Volume']]

# CSVファイル名を定義(例: "3407_stock_data.csv")
csv_file_name = f"{ticker_symbol.replace('.T', '')}_stock_data.csv"

# CSVファイルに保存
data.to_csv(csv_file_name, index=False, date_format='%Y-%m-%d')

print(f"{csv_file_name}にデータを保存しました。")

上記を実行して、下記のデータを入手しました。

Date,Open,High,Low,Close,Volume
2023-11-14,1002.0,1018.0,1002.0,1012.5,5275900
2023-11-15,1019.0,1020.0,1009.5,1020.0,3927100

(中略)

2024-02-07,1109.5,1120.5,1035.5,1038.5,12795300
2024-02-08,1050.0,1051.5,1025.5,1032.0,8683100
2024-02-09,1032.5,1043.5,1021.5,1028.5,4296400

解析方針を決める

今回はお試しということで、実用性はさておき「ゴールデンクロスの検出」が可能か試してみます。

実行結果

※プロンプトは有料部にて公開しています

まず、実行方法ですが、用意した株価が書かれたCSVファイルをChatGPTの画面にドラックアンドドロップし、アップロードします。

CSVファイルをアップロードした状態

この状態で予め用意した解析用プロンプトを入力し、解析を開始します。

まずは提供されたCSVファイルを読み込み、必要な前処理を行いましょう。これらのステップを完了した後、終値の5日間および13日間の移動平均を計算し、ゴールデンクロスおよびデッドクロスの分析を進めます。

ChatGPT出力
ChatGPT出力(生成コードと実行結果)

CSVファイルが正常に読み込まれ、日付列がDataFrameのインデックスとして設定されました。データには「Open」、「High」、「Low」、「Close」、「Volume」の各列が含まれており、数値型になっているようです。次に、終値の5日間および13日間の移動平均を計算し、その後ゴールデンクロスおよびデッドクロスの分析を行います。 ​​

ChatGPT出力
ChatGPT出力(生成コードと実行結果)

ゴールデンクロスおよびデッドクロスの発生日は以下の通りです:
ゴールデンクロスが発生した日:2023年12月14日
デッドクロスが発生した日:2023年12月5日、2024年2月7日
次に、終値、5日間および13日間の移動平均、そしてゴールデンクロスおよびデッドクロス点を視覚化するグラフを作成します。 ​

ChatGPT出力
ChatGPT出力(生成コードと実行結果)
ChatGPT出力
Trading viewで同時期のデータを表示

Trading view の画面と比較しても、ゴールデンクロス、デッドクロスを正しく検知できている事がわかります。
今回は一番単純な移動平均に対する分析を検証しましたが、ChatGPTを活用すれば、より複雑な取引アルゴリズムの構築に役立てることができると考えられます。

次回はより複雑なテクニカル分析に対するChatGPTの応用について検証していきます。

今回使用したプロンプト(有料)

今回の検証を再現度高く実行できるようにChatGPTプロンプトを作成しました。有料になりますが、ご興味がある方は是非ご購入ください!

ここから先は

818字

¥ 1,000

この記事が参加している募集

この記事が気に入ったらサポートをしてみませんか?