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

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

免責事項これは財務アドバイスではありません。私は航空宇宙工学の博士号を取得しており、機械学習に重点を置いています。 私は違います ファイナンシャルアドバイザー。この記事は、金融分野における物理学に基づくニューラル ネットワーク (PINN) の威力を示すことのみを目的としています。

16歳のとき、私は物理学に夢中になりました。理由は単純だが強力だった。物理学は 公平.

光の速度が一夜にして変わったり、突然光が当たったりしても、練習でミスをしたことがありません。x 物理学の論文を読んでいつも思うのは、 「これは意味が分からない」 判明したのは、 理解できなかったのは私でした。

だから、物理学は常に公平であり、それが常に 数学。物理学は、この完璧さと正義を、 微分方程式.

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

とても簡単です。ここから始めましょう。0=0、時刻 t=0 では、一定速度 5 m/s で移動します。これは、5 秒後には、原点から 10 メートル (またはマイル) 離れることを意味します。 43128秒後、私たちは原点からXNUMXメートル離れます。 XNUMX 秒後...お分かりだと思います。

よく言われるように、これは石に刻まれた決まり文句です。完璧、完璧、そして議論の余地なし。しかし、これを現実に想像してみてください。散歩中や運転中を想像してください。目標速度で走ろうと全力を尽くしても、それを一定に保つことはできません。ある部分ではあなたの心は忙しく動き回るでしょう。気が散ったり、赤信号で止まったり、あるいはこれらが組み合わさった状況になる可能性もあります。したがって、先ほど述べた単純な微分方程式では不十分なのかもしれません。私たちにできるのは、微分方程式からあなたの位置を予測することです。 だが 助けを借りて 人工知能。この概念は複雑なシステムをモデル化する上で非常に重要です。

この考え方は、 物理学に基づくニューラルネットワーク (ピン)。詳細は後ほど説明しますが、その目的は、 誰でも データと、現象を記述する微分方程式から得られる知識。これは、私たちのソリューションが物理学から期待されるものを概ね満たすように強制することを意味します。これは黒魔術のように聞こえるかもしれませんが、この記事を読み進めていくうちに、より明確になることをお約束します。

さて、大きな疑問は:

 

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

微分方程式は自然宇宙の法則に興味がある人にとって役立つだけでなく、 財務モデル。例えば、このモデルでは ブラックショールズ コールオプションの価格を決定するための微分方程式。特定の厳密な仮定の下で、 リスクフリーポートフォリオ.

この非常に複雑な導入の目的は 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. 物理学に基づいたニューラルネットワーク

 

Physics Informed Neural Networks (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 ファイル)

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

私たちのコードの主要部分は main.pyTorchを使用してPINNネットワークをトレーニングするには、 ブラック・ショールズ.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:

データ ジェネレーター (構成ファイルの観点から) は、ファイル内にあります。 データ.py:

歪度を含む統合損失関数は 損失.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 ファイルとシンプルなテンプレートがあります。 例/BlackScholesModel.ipynb プロジェクトは段階的に説明されます。

 

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