見出し画像

ベイズ推定と生成AI(GPT)を組み合わせて分布推定の精度を向上させたEAの開発

以前の記事で、GOLDの価格変動はリターン(価格変動率)がt分布に従う傾向があるという特性を利用して、マルコフ連鎖モンテカルロ法(MCMC: Markov Chain Monte Carlo)によるt分布のパラメータのベイズ推定を導入したFX自動売買ツール(MCMC-EA)を作成し、実際にMT5上で稼働させるための方法について解説しました。

また、最近の記事では、定期的に生成AI(GPT API)にアクセスして情報を更新しながらFX取引を自動で行うFX自動売買ツール(GPT-EA)のテンプレートを公開しています。

今回は、これらを融合させて「ベイズ推定 × 生成AI(GPT)」タイプのEAの一つの形を作ります。具体的には、分布推定型EAであるMLD-EAやMCMC-EAに、GPTによる情勢判断を加えることで、分布のパラメータ精度を向上させたEAに進化させます。


概要

この記事では、以下の内容を中心に解説します。

  1. 分布のパラメータ推定をGPT(生成AI)で補完する必要性

  2. GPTの導入が分布のパラメータ推定精度に与える効果の検証

  3. 「MLD-EA」を「GPT-MLD-EA」にバージョンアップさせる方法

ベイズ推定とは?

MCMCを用いた分布推定は、ベイズ推定の枠組みの中で行われます。ベイズ推定では、「事前分布 × 尤度 = 事後分布」というベイズの定理を用いて、観測データをもとに確率分布を更新します。MCMCは、この事後分布を近似的に求めるためのアルゴリズムであり、t分布のような複雑な分布のパラメータ推定にも適しています。

GPT(生成AI)とは?

GPT(Generative Pre-trained Transformer)は、OpenAIによって開発された自然言語処理(NLP)モデルであり、大量のテキストデータをもとに事前学習(Pre-training)された後、特定のタスクに適応するように微調整(Fine-tuning)された生成AIの一種です。GPTは、入力された文章の文脈を理解し、適切な応答を生成することができるため、文章作成、要約、翻訳、プログラムコードの生成など幅広い用途に活用されています。

ベイズ推定 × 生成AI(GPT)とは?

MLD-EA(MCMC-EA)では、過去240分の価格データをもとにt分布のパラメータを推定し、その分布が将来240分にも適用できると仮定しています。しかし、市場は常に変動しており、過去と未来の価格変動が必ずしも一致するとは限りません。この問題を解決するために、GPTを用いて価格変動の傾向を分析し、将来の分布が過去と比べて変化するのかを予測させることで、より正確なパラメータ推定を目指します。

MLD-EAの構造

MLD-EAにおいては、以下のような構造でMQL5とPythonの連携を実現させていました。

MQL5とPythonの連携

この中で、t分布のパラメータ推定とターゲット価格計算は全てPythonスクリプト(get_target_prices.py)の中で行なっています。

今回は、この右側のPython部分について、以下のようなプロセスを構築します。 これは、OpenAIのPythonライブラリを用いてGPT APIにアクセスすることによって実現させます。

PythonとGPT APIの連携

つまり、MQL5のロジックは全く変えずに、Pythonのコードを変更するだけでMLD-EAからGPT-MLD-EAにバージョンアップすることが可能です。

損益シミュレーション方法

それでは、MLD-EAやMCMC-EAにGPT連携機能を追加してバージョンアップした場合のパフォーマンス比較結果をご紹介します。

具体的な手順

  • 2年分のGOLDの価格データからランダムで28時間分のデータを抽出

  • このうち最初の4時間分のデータからt分布のパラメータを推定

  • 推定されたt分布を前提としたターゲット価格を算出し、取引戦略を決定

  • 最初の4時間分を除いた後半の24時間分を取引シミュレーションに使用

  • 上記の方法でシミュレーションを100回繰り返す

具体的な取引パターンの紹介

今回のt分布の分位点を活用した取引戦略を改めて振り返ります。

t分布による取引戦略

平均値 (μ): 2,000、自由度 (ν): 1.99、標準偏差 (σ): 0.000929というパラメータの場合は、上記のグラフのように、

  • エントリーポイント(Entry Price):1996.49

  • 利確ポイント(Take Profit Price):1999.46

  • 損切りポイント(Stop Loss Price):1981.49

となります。

このように、インプットデータからt分布のパラメータを推定した上で、エントリーポイント、利確ポイント、損切りポイントの3つのターゲット価格を計算した上で取引シミュレーションを行います。

より詳しくは以下の記事もご参照ください。

GPTのモデルについて

OpenAIのGPTについては日々進化していて、続々と新しいモデルが発表されていますが、今回は、比較的コストもかからず精度の高いGPT-3.5 TurboとGPT-4oの2つのモデルで検証を行いました。
以下の記事では、GPT-3.5 TurboとGPT-4oの精度比較も行っています。GPT-4oの方が基本的に性能が上でコストも高いです。

損益シミュレーション結果

まずは、MLDと、MLDにGPT-3.5 Turboによる予測補整を加えた結果で比較してみましょう。

シミュレーション結果(MLE)

試行回数: 100回
エントリー数: 52回(エントリー率: 52%)
勝利数: 36回(勝率: 69.2%)
総損益: 8,970円 (総利益: 17,236円 総損失: 8,266円)
プロフィットファクター: 2.09
リカバリーファクター: 2.92(最大ドローダウン: 3,072円)

シミュレーション結果(MLE + GPT-3.5 Turbo)

試行回数: 100回
エントリー数: 39回(エントリー率: 39%)
勝利数: 24回(勝率: 61.5%)
総損益: 9,588円 (総利益: 16,320円 総損失: 6,732円)
プロフィットファクター: 2.42
リカバリーファクター: 3.47(最大ドローダウン: 2,766円)

損益比較グラフ 

上記の通り、GPT-3.5 Turboによる予測補整を加えた結果、加えない場合と比較して、良い感じに損益パフォーマンスが向上しました。期待と反しない悪くない結果のように思います。

続いて、MCMCと、MCMCにGPT-4oによる予測補整を加えた結果でも比較してみます。

シミュレーション結果(MCMC)

試行回数: 100回
エントリー数: 52回(エントリー率: 52%)
勝利数: 36回(勝率: 69.2%)
総損益: 9,014円 (総利益: 17,284円 総損失: 8,270円)
プロフィットファクター: 2.09
リカバリーファクター: 2.93(最大ドローダウン: 3,075円)

シミュレーション結果(MCMC + GPT-4o)

試行回数: 100回
エントリー数: 48回(エントリー率: 48%)
勝利数: 30回(勝率: 62.5%)
総損益: 9,451円 (総利益: 17,755円 総損失: 8,304円)
プロフィットファクター: 2.14
リカバリーファクター: 2.57(最大ドローダウン: 3,674円)

損益比較グラフ

こちらも、GPT-4oによる予測補整が損益パフォーマンスにつながっていると言えそうな結果が得られました。

損益比較(MLE × MCMC × GPT)

4つ全ての結果を損益グラフで重ねてみます。

損益比較グラフ

MLEやMCMCによる分布推定結果を、GPTを導入することによって補完し、パラメータ推定の精度を向上させることができるかどうかを検証することが今回の目的でしたが、損益結果を比較してみたところ、GPT導入がプラスに働いている可能性も高いと判断できます。これは、GPT-3.5 Turbo、GPT-4oのどちらのモデルであってもある程度効果が期待できそうです。

まとめ

以上、今回の取り組みを整理してみます。

  • MLD-EA(MCMC-EA)では、過去240分の価格データをもとにt分布のパラメータを推定し、その分布が将来240分にも適用できるという仮定を置いていました。

  • 上記の仮定は、価格変動(ボラティリティ)が大きいGOLDなどにおいては、常に適切とはならない可能性も高いです。ボラティティが今後広がっていくのか、縮小していくのか、そのまま変わらないのか、という要素を考慮した方が、より良い推定結果が得られることが期待できます。

  • そのボラティリティの将来予測(拡大するのか縮小するのか)を、GPTの判断結果によって予測パラメータに反映させることにしました。

  • 損益シミュレーションで結果を比較したところ、一定程度の効果が表れていることが観察できました。今後の展開としては、GPTのモデルをより良いものに変えたり、公開されているモデル自体が勝手に進化することによって、EAの能力が向上していくことも期待できます。

MLD-EAにGPT連携機能を追加する方法

それでは、MLD-EAをGPT連携機能を追加する方法のご紹介です。
まずベースモデルとして、以下の記事のMLD-EAが必要です。

GPT-MLD-EAの作成方法の概要は以下の通りです。

  1. MLD-EAを稼働するために必要な以下の3ファイルを用意する。

    • MLD-EA_note.mq5

    • get_target_prices.bat

    • get_target_prices.py

  2. get_target_prices.pyを、このページでダウンロードしたファイルに置き換える。

  3. OpenAIのAPIキーを発行する。

  4. OpenAIの Pythonライブラリをインストールする。

GPT-EAを動作させるための環境設定

今回のEAはGPT APIとアクセスする必要がありますので、APIキーの発行やPythonの環境設定を含めた一通りの準備が必要です。
基本的には、以下のGPT-EAと同じ事前準備が完了していればOKです。

👉 GPT-EAを動かすための事前準備はこちら

有料部分の内容

GPT-MLD-EAの実装方法とロジック解説

MLD-EAをベースにGPT APIとのやり取りを実装するためのコードを掲載しつつ、各処理について詳しく解説しています。

GPT APIへのプロンプト(AIへの指示)内容

GPTにどのような情報を渡して、どのような指示をして、どのような回答を得ているかといった詳細内容と、それをPythonスクリプトで実装する方法について解説しています。

Pythonスクリプト「get_target_prices.py」のダウンロード

MLD-EAをGPT-MLD-EAに進化させるためのPythonスクリプト「get_target_prices.py」をダウンロード可能にしています。MLD-EAの「get_target_prices.py」と置き換えるだけで、GPT-MLD-EAとして使用可能です。また、MLD-EAをMCMC-EAにバージョンアップするのと同様の方法で、GPT-MLD-EAもGPT-MCMC-EAにバージョンアップ可能です。

注意点

  • 当記事で掲載しているコードはPythonの環境設定含め、必要な準備が整っている上での実行を想定しています。以下のページでご紹介している環境と同等の事前準備が必要です。

👉 GPT-EAを動かすための事前準備はこちら

  • MLD-EAをベースとした変更用ファイル「get_target_prices.py」のコードしか掲載していませんので、当記事の有料部分の内容だけでは実際に動かすことはできません。以下の記事の内容と組み合わせる必要があります。

👉 MLD-EAのダウンロードはこちら

  • 記事執筆時点で稼働確認を行なっており、エラーが出ないことを確認しておりますが、その後の環境変化等で想定通りに稼働しない可能性はございます。動作保証等はいたしかねますのでご了承ください。

  • リアル口座にアクセスして取引を行うことも可能なコードになっておりますが、必ずデモ口座で事前に稼働確認をしていただくことを推奨いたします。

  • 当記事で解説しているロジック通りの動作を保証するものではございません。あくまでFX自動売買ツール開発のためのサンプルコードとしてご活用ください。

コード解説

ここからは、GPTにアクセスしてパラメータ推定の精度を向上させたバージョンのPythonスクリプト(get_target_prices.py)について、コードの内容を抜粋して取り上げて順番に解説します。最後に、「get_target_prices.py」をダウンロード可能にしていますので、そのまま使用することも可能です。

ここから先は

8,734字 / 2画像

¥ 3,000

よろしければ応援お願いします。いただいたチップは今後の記事の執筆に活用させていただきます。