物理学と金融が出会うとき:AIを用いてブラック・ショールズ方程式を解く

ここでは、物理学に基づくニューラル ネットワークを使用して、Python で金融モデルを解決する方法を説明します。

免責事項:これは金融アドバイスではありません。私は航空宇宙工学の博士号を取得しており、機械学習を専門としていますが、金融アドバイザーではありません。この記事は、金融分野における物理情報に基づくニューラルネットワーク(PINN)の有効性を示すことのみを目的としています。

私が16歳の時、物理学に夢中になった。理由は単純だが力強いものだった。物理学は公平だと信じていたからだ。

光速が一夜にして変わったとか、e x が突然負の値になったとかいう理由で、演習で間違いを犯したことは一度もありませんでした。物理学の論文を読んで「これは意味が分からない」と思った時はいつでも、結局は自分が理解していなかっただけだったのです。

したがって、物理学は常に公平であり、そのため常に完璧である。物理学はこの完璧さと公平さを、微分方程式と呼ばれる一連の法則を通して証明している。

私が知っている最も単純な微分方程式は次のとおりです。

とても簡単です。時刻 t=0 で、x₀ = 0からスタートし、5 m/s の一定速度で移動します。つまり、1 秒後にはスタート地点から 5 メートル (またはマイル) 離れ、2 秒後には 10 メートル、43128 秒後には…となります。お分かりいただけたでしょうか。

先ほども述べたように、それは石に刻まれたように完璧で、議論の余地のないものです。しかし、これを現実世界で想像してみてください。散歩に出かけたり、車を運転したりしているところを想像してみてください。目標速度で進むために最善を尽くしても、それを常に維持することは決してできません。ある時点では心がざわつき、気が散ったり、赤信号で止まったり、おそらくこれらの組み合わせが起こるでしょう。したがって、先ほど述べた単純な微分方程式では不十分かもしれません。私たちができることは、人工知能の助けを借り、微分方程式におけるあなたの位置を予測することです。この概念は、複雑なシステムをモデル化する上で非常に重要です。

この考え方は、物理法則に基づいたニューラルネットワーク(PINN)に応用されています。PINNについては後ほど詳しく説明しますが、基本的な概念は、現象を記述する微分方程式から得られる情報とデータを一致させようとすることですつまり、解が物理法則から期待される条件を概ね満たすように強制するということです。まるで魔法のように聞こえるかもしれませんが、この記事を読み進めるうちに、その意味がずっと明確になることをお約束します。

さて、大きな疑問は:

 

金融は物理学や物理学ベースのニューラル ネットワークとどのような関係があるのでしょうか?

微分方程式は、自然界の法則に関心のある人だけでなく、金融モデルにも役立つことがわかっています。例えば、ブラック・ショールズ・モデルは、特定の厳密な仮定の下で、コールオプションの価格を決定し、リスクフリーのポートフォリオを得るために微分方程式を使用します。

この非常に複雑な導入の目的は 2 つありました。

  • 少し混乱するかもしれませんが、読み続けてください:)
  • これが一体どこへ向かうのか、好奇心を持って見てみましょう。

成功したらいいな😁。そうした場合、この記事の残りの部分は次の手順に従います。

  1. 議論します ブラック・ショールズモデル、その仮定、およびその微分方程式
  2. これからお話しするのは 物理ベースニューラルネットワーク(PINN)、それがどこから来たのか、そしてなぜそれが役に立つのか
  3. ブラックショールズモデルを用いてPINNを訓練する独自のアルゴリズムを開発します。 Python و トーチ و OOP.
  4. アルゴリズムの結果を示します。

私は興奮しています!研究室へ! 🧪

1. ブラック・ショールズ・モデル:詳細

 

ブラック・ショールズモデルの原論文に興味がある方は、こちらからご覧いただけます。ぜひ読んでみてください🙂

さて、これから私たちが身を置いている金融の世界、つまりどのような変数があり、どのようなルールがそれを支配しているのかを理解する必要があります。金融の基本原理とブラック・ショールズ・モデルとの関係を理解することは非常に重要です。

まず、金融分野にはコールオプションと呼ばれる強力な金融商品があります。コールオプションとは、将来(例えば1年後)に特定の価格で株式を購入する権利(義務ではない)を与えるもので、この価格を権利行使価格と呼びます。

さて、それについて少し考えてみましょうか。今日の株価が 100 ドルだとします。また、行使価格が 100 ドルのコール オプションを所有していると仮定します。さて、150年以内に株価が150ドルに上昇すると仮定します。これはすごいですね!このコール オプションを使用すると、株を購入し、すぐに売り戻すことができます。たった今、100ドル - 50ドル = 80ドルの利益が出ました。一方、株価がXNUMX年以内にXNUMXドルまで下落した場合、そうすることはできません。実際のところ、お金を失わないように、購入する権利をまったく行使しない方がよいでしょう。

よく考えてみると、株式を購入しオプションを売却するというアイデアは、完璧にバランスが取れているように思えます。つまり、株価の変動性(上下動)は、適切な数のオプションを保有することで軽減できるということです。これはデルタヘッジと呼ばれ、基本的なリスク管理戦略です。

一連の仮定に基づき、リスクフリーのポートフォリオを得るための適正なオプション価格を導き出すことができる。この概念はブラック・ショールズ・モデルの基本となるものである。

導出の詳細をすべて説明して読者を退屈させたくはありませんが (率直に言って、元の論文を追うのは難しくありません)、リスクフリー ポートフォリオの微分方程式は次のようになります。

どこ:

  • C は時刻tにおけるオプション価格である
  • sigma それは株価の変動性です。
  • r それはリスクフリーレートです。
  • t は時間です(現在が t=0、終了日が T です)
  • S 現在の株価は

この式から、リスクフリー ポートフォリオのコール オプションの適正価格を導き出すことができます。この方程式は閉じた解析的なものであり、次のようになります。

と:

ここで、N(x) は標準正規分布の累積分布関数 (CDF)、K は行使価格、T は満期日です。

例えば、これはブラック・ショールズモデルに基づく株価(x)コールオプション(y)の関係を示すグラフです。

これは素晴らしいように思えますが、物理学や PINN とどのような関係があるのでしょうか?方程式は解析的であるように思われますが、なぜ PINN なのでしょうか?なぜ人工知能なのか?そもそもなぜこれを読んでいるのでしょうか?答えは以下の通りです👇:

 

2. 物理学に基づいたニューラルネットワーク

 

物理学に基づいたニューラルネットワーク(PINN)に興味がある方は、こちらの原著論文をご覧ください。これもまた、読む価値がありますよ。🙂

さて、上記の式は解析的なものですが、あくまで理想的なシナリオにおける適正価格を表しています。これを一旦無視して、株価と時間に基づいてオプション価格を推測してみるとどうなるでしょうか?例えば、フィードフォワードニューラルネットワークを用い、バックプロパゲーションで学習させることができます。このアプローチは、オプション価格設定におけるニューラルネットワーク利用の基礎となっています。

このトレーニング メカニズムでは、エラーを最小限に抑えます。

L = |Estimated C - Real C|:

これは良いことであり、実行できる最も単純なニューラル ネットワーク アプローチです。ここでの問題は、ブラック・ショールズ方程式を完全に無視していることです。それで、別の方法はあるのでしょうか?これらを統合することはできますか?

もちろん、エラーを次のように設定すれば可能です。

L = |Estimated C - Real C|+ PDE(C,S,t)

ここでPDE(C,S,t)は次のようになります。

可能な限り 0 に近くする必要があります。

しかし、疑問はまだ残ります。なぜこれが単純なブラック・ショールズ方程式よりも「優れている」のでしょうか?微分方程式を使わないのはなぜでしょうか?なぜなら、人生においては、微分方程式を解くことが必ずしも「真の」解を保証するわけではないからです。物理学は通常、物事を近似しますが、それは私たちが期待するものと実際に見るものとの間に違いを生み出す可能性があります。これが、物理学に基づいたニューラル ネットワーク (PINN) が非常に驚くべきすばらしいツールである理由です。物理学に一致させようとしますが、結果がデータセットから「見える」ものと一致しなければならないという事実に厳密に従います。物理モデルと実験データの統合こそが、このアプローチの特徴です。

私たちの場合、リスクのないポートフォリオを得るためには、理論上のブラック・ショールズ・モデルが、観測されるノイズの多い、偏った、または不完全な市場データと完全には一致しないことが判明するかもしれません。おそらくボラティリティは一定ではないのでしょう。おそらく市場は効率的ではないのでしょう。おそらく、この方程式の背後にある仮定は成り立たないのでしょう。ここで、PINN のようなアプローチが役に立ちます。ブラック・ショールズ方程式を満たす解を見つけるだけでなく、データから得られる結果を「信頼」することになります。これにより、より柔軟で実際の市場状況に適応できるモデルが可能になります。

はい、理論は十分です。コードを書いてみましょう。 👨‍💻

 

3. Pythonを使った実践

完全なコード、優れたREADME.mdファイル、素晴らしいワークブック、そして非常に分かりやすいベンチマークコードは、こちらから入手できます。このコードは、金融モデリング分野における高度な技術であるPINNニューラルネットワークを用いて、ブラック・ショールズ方程式を解くために特別に設計されています。

注: この部分は少し集中的になります (コードが多い)。ソフトウェアに興味がない場合は、次の章に進んでください。結果をもっと簡単な方法で紹介します:)

ここまで読んでくださって本当にありがとうございます❤️
これをどのように実装できるか見てみましょう。ここで、この手法をブラック・ショールズ方程式の解決にどのように適用するかを、実用的かつ詳細な側面に焦点を当てて見ていきましょう。

3.1 Config.json ファイル

コード全体は、config.jsonという名前の非常にシンプルな設定ファイルを使用して実行できます。

後ほど説明しますが、好きな場所に配置できます。

このファイルは、シミュレーション、データ生成、およびモデルトレーニングを制御するすべてのパラメータを定義するため、不可欠です。それぞれの値が何を表しているかを簡単に説明します。

  • K: 執行価格 – オプションによって将来株式を購入する権利が付与される価格。
  • T: 期日までの時間(年)許可 T = 1.0 これは、オプションが今から 1 単位 (たとえば 1 年後) で期限切れになることを意味します。
  • r: 無リスク金利 将来の価値を割り引くために使用されます。これはシミュレーションで指定する金利です。
  • sigma: 変動 株価を予測することがどれだけ難しいか、またはどれだけ「リスクが高い」かを決定する株価。繰り返しますが、これはシミュレーション パラメータです。
  • N_data: 番号 合成データポイント トレーニング用に作成します。これによってパターンのサイズも決まります。
  • min_S و max_S: 株価の範囲 合成データを作成するときにサンプリングするデータです。当社の最低株価と最高株価。
  • bias: オプション価格にオプションのオフセットを追加データの体系的なシフトをシミュレートします。これは、現実世界とブラック・ショールズ・データの間に対比を生み出すために行われます。
  • noise_variance: 騒音レベル 測定または市場ノイズをシミュレートするためにオプション価格に追加されます。このパラメータは以前と同じ理由で追加されました。
  • epochs: 番号 繰り返し モデルがトレーニングされる対象。
  • lr: 学習率 恩人のために。これは、トレーニング中にモデルが更新される速度を制御します。
  • log_interval:私たちが望む回数(年齢の観点から) 印刷記録 トレーニングの進捗状況を監視します。

これらのパラメータはそれぞれ特定の役割を果たし、シミュレーションする金融の世界を形成するものもあれば、ニューラル ネットワークがその世界とどのように相互作用するかを制御するものもあります。ここでの小さな変更により、まったく異なる動作が生じる可能性があり、このファイルは強力かつ機密性の高いものになります。この JSON ファイルの値を変更すると、コードの出力が根本的に変わります。

3.2 main.py (main.py ファイル)

ここで、コードの残りの部分でこの構成が実際にどのように使用されるかを見てみましょう。

コードの主要部分は、Torch を使用して PINN ネットワークをトレーニングするためのmain.pyblack_scholes.pyから来ています。

これは main.py ファイルです:

したがって、できることは次の通りです:

  1. 独自のconfig.jsonファイルを作成する
  2. コマンドを実行 python main.py --config config.json

main.py ファイルは他の多くのファイルによって使用されます。

3.3 black_scholes.pyとそのプラグイン

ブラック・ショールズモデルの適用箇所は、black_scholes.pyファイル内にあります。

このファイルは、モデルの構築、トレーニング、エクスポート、予測に使用できます。
この関数は、data.py、loss.py、model.py などのヘルパー ファイルも使用します。
ファイル内には Torch テンプレートがあります。 モデル.py:

データコンストラクタ(設定ファイルを参照)は、data.pyファイル内にあります。

スキュー値を含む組み込み損失関数はloss.pyです。この関数はモデルの精度を向上させるために不可欠です。

4. 結果

さて、main.py を実行すると、フィードフォワード ニューラル ネットワーク (FFNN) がトレーニングされ、次の結果が得られます。

ご覧のとおり、モデル誤差は正確に 0 ではありませんが、モデルの PDE 方程式はデータよりもはるかに小さくなっています。これは、モデルが(当然のことながら)予測を微分方程式を満たすように強く強制することを意味します。これはまさに先ほど言ったとおりです。つまり、保有するデータとブラック・ショールズ・モデルの観点からパフォーマンスが向上します。

定性的に、ノイズとバイアスが加わった(かなり現実的な)現実世界のデータセットと PINN ネットワークの間に高い一致が見られます。

これらは t = 0 のときの結果であり、株価は固定値の t でコール オプションによって変化します。かなりクールだと思いませんか?しかし、まだ終わりではありません!上記のコードを使用して、次の XNUMX つの方法で結果を調べることができます。

  1. たくさんの人と遊ぶ パラメータ config.json にあります
  2. 予測を見る t>0

聞きますよ! :)

5. 結論

来てくれて本当にありがとう。本当に長い旅でした😅
この記事で取り上げた内容は次のとおりです。

  1. 私たちは物理学から始めました。そして、微分方程式として書かれたその法則が公平で美しく、(通常は)予測可能であることを説明します。
  2. 金融業界に転身そして、私たちはブラック・ショールズ・モデルに出会いました。これは、リスクのない方法でオプションの価格を決定することを目的とした微分方程式です。
  3. 私たちは物理学に基づいたニューラル ネットワーク (PINN) を調査しました。は、単にデータを適合させるだけでなく、基礎となる微分方程式を尊重するニューラル ネットワークの一種です。 PINN は複雑なシステムをモデル化するための強力なツールです。
  4. すべてをPythonで行いました。PyTorch とクリーンなベンチマーク データベースを使用して、パラメータを微調整し、合成データを生成し、独自の PINN をトレーニングして Black-Scholes 方程式を解きます。
  5. その結果を写真に撮りました。 ネットワークが、ノイズの多いデータだけでなく、ブラック・ショールズ方程式から予想される動作にも一致するように学習する方法を確認しました。

これらすべてを一度に理解するのは容易ではないことは承知しています。一部の箇所では、説明を簡潔にせざるを得ず、必要以上に短くしてしまったかもしれません。しかし、より明確な理解を得たいのであれば、GitHubフォルダをご覧ください。ソフトウェア自体に興味がなくても、分かりやすいREADME.mdファイルと、プロジェクトの手順を段階的に説明したシンプルなexample/BlackScholesModel.ipynbファイルが用意されています。

 

コメントは締め切りました。