ニューラル ネットワーク オプションのヘッジ

Github リンク: https://github.com/ithakis/Option-Replicating-Portfolio-with-Neural-Networks/blob/main/Value%20of%20portfolio%20using%20BS.ipynb

1. 説明

モンテカルロとニューラルネットワークを使用してオプションをヘッジするにはどうすればよいですか? プロジェクトは 2 つのステップに分かれています。

  • 準モンテカルロ (Sobol) 株式のパス シミュレーションのための高度なモンテカルロ手法。
  • 時間 T でのオプションのペイオフを計算した後。t=0 でのオプションを評価する複製ポートフォリオ戦略を作成するにはどうすればよいでしょうか。

2. 準モンテカルロ

オプション値の SE は平均に近いため、シミュレートするパスの数の平方根に応じて減少します。より高度な手法を使用して、推定値の変動を減らすために時間を費やす必要があります。これらの手法は、対立変数、制御変数、層化サンプリングです。これを確認すると、金融アプリケーションにおける MC の分散削減テクニックについて詳しく知ることができます。(擬似乱数と準乱数 – QuantPy )

次のコード スニペットを使用すると、幾何学的なブラウン運動を使用した S(stock) の対数の在庫パス シミュレーション用の正規分布変数を生成できます。

株式の GBM ログ

import scipy.stats as stats
from scipy.stats import qmc

def sobol_norm(m, d=1):
    sampler = qmc.Sobol(d, scramble=True)
    x_sobol = sampler.random_base2(m)
    return stats.norm.ppf(x_sobol)

""" Simulate Stock Data """
W       = sobol_norm(n_paths, d=n_time_steps)
S_paths = np.empty((2**n_paths, n_time_steps))
S_paths[:,0] = S
for t in range(1,n_time_steps):
    S_paths[:,t] = (S_paths[:,t-1] * np.exp((r-sigma**2/2)*dt + sigma * np.sqrt(dt)*W[:,t] ).squeeze())

株価のモンテカルロシミュレーション

この例ではヨーロッパのオプションが使用されており、時間 T でのペイオフは max(S_T -K, 0) として計算されます。

3. ニューラルネットワーク

        複製理論は、オプションの価値が株式数 (phi) と債券数 (psi) に等しい場合に使用されます。考えられる結果 S_t は 2 つ以上あるため、問題は誤差を最小限に抑えることになります。V_t の値をできるだけ正確に再現する psi と phi の値を見つけようとします。

        株式と債券を使用してオプションのポートフォリオをコピーする

        これまでに機械学習に取り組んだことのある人にとっては、このタスクを実行するための関数をどのようにインストールしようとしているのかについて、憂慮すべきことに聞こえるはずです。

        私たちが最小限に抑えようとする問題

        (1) t=T-1 から始めて、この時点で V_{t+1} がわかっています

        (2) フィッティングのために NN: S_{t+1}、B_{t+1}、V_{t+1} に渡します。

        (2) S_{t}、B_{t} を考慮して V_{t} を予測します

        (3) 予測された V_{t} をステップ 1 の入力として使用します。

        (4) t=0の値が計算されるまで繰り返す

3.1 ニューラルネットワークアーキテクチャ

       S_{t} は NN アーキテクチャを通過し、推定値psiとファイ値を出力します。その後、これらの値に S_{t} と B_{t} が散在して V_{t} が計算されます。この例では、S 字型活性化は ReLU よりもはるかに優れています。ただし、大規模なハイパーパラメータ調整は行われませんでした。

        使用されるハイパーパラメータ:

  • 損失関数としての「MSE」
  • アダムとlr: 1e-2
  • フィッティング時間ステップごとのサイクル数: 10 (最初のステップの 300 を除く)
  • バッチサイズ: 512 (各バックプロパゲーションの代表的なサンプリングを確保するには、大きなバッチサイズが重要です)

        エラーを減らすためのいくつかのヒントとヒント:

  • オプション中にフィットを複数回繰り返します。この例では、これを 5 回繰り返します。
  • 適合は、最初に多数のエポックを使用して実行されます。値の近似における誤差の伝播により、ネットワークが最初の試行でできるだけ多くのパラメータを学習できるため、これは理想的です。その後、サイクルを短縮してトレーニング時間を節約できます。
  • ブートストラップはすべての期間にわたって実行され、すべての時間ステップの平均ポートフォリオ値の平均標準を推定します。
Model: "Replicating_Portfolio"
__________________________________________________________________________________________________
Layer (type)                    Output Shape         Param #     Connected to                     
==================================================================================================
input: S_{t}  (InputLayer)      [(None, 1)]          0                                            
__________________________________________________________________________________________________
Sigmoid_1 (Dense)               (None, 8)            16          input: S_{t} [0][0]              
__________________________________________________________________________________________________
Sigmoid_2 (Dense)               (None, 8)            72          Sigmoid_1[0][0]                  
__________________________________________________________________________________________________
linear (Dense)                  (None, 2)            18          Sigmoid_2[0][0]                  
__________________________________________________________________________________________________
input: S_{t}, B_{t}  (InputLaye [(None, 2)]          0                                            
__________________________________________________________________________________________________
V_t (Dot)                       (None, 1)            0           linear[0][0]                     
                                                                 input: S_{t}, B_{t} [0][0]       
==================================================================================================
Total params: 106
Trainable params: 106
Non-trainable params: 0
__________________________________________________________________________________________________ 

        以下のチャートでは、t=0 における株式のポートフォリオ価値を確認できます。V_{t} (赤い線) の予測誤差は、アルゴリズムによって実行される最初の逆方向ステップ中に高くなることに注意してください。異なるニューラル ネットワーク アーキテクトまたは異なる馬力を使用すると、誤差はさらに最小限に抑えられます。この値はより正確に収束します。

実験で使用したパラメータ:

  • S = 100、K = 100、T = 1.0、r = .055、シグマ = 0.3、dt = 1/100

私たちはヨーロッパのオプションを評価しているので、その価値を分析的に計算できます。これは次のようになります。

  • ブレイク スコールズ ヨーロッパ 電話: 14.47320
  • ポートフォリオのコピー ユーロ コール オプション: 14.49997
  • レプリケーション P 標準誤差 = 0.0508
  • 10,000 MC パス、100 タイム ステップ、および 5 ループの合計実行時間: ~ 14 分 (M1、Metal、および GPU で TensorFlow が有効)

3.2 ヘッジパラメータ

「線形」レイヤーのレイヤー出力は、時間 t = 0 で購入する必要がある株式および債券資産を照合するために使用できます。

ヘッジパラメータ - 時刻 t=0 の株式と債券

平均値または期待値を使用すると、t=0 で投資に必要な合計金額は次のようになります。

  • 平均ファイ: 0.6238
  • 平均ポンド/平方インチ: -47.9307

参考リソース:

アレクサンダー・ソスクノグル

·

4. 今後の取り組み

        NN を使用してポートフォリオを複製してオプション値を計算するタスクを実行できることが示されたので、このアプローチを実際に適用するには追加の作業が必要です。

  • より多くの資産を含む複製されたポートフォリオを構築する
  • NN アーキテクチャとハイパーパラメータを最適化して、トレーニングの高速化と精度の向上を実現します。(より高速なハードウェアを使用してください)
  • より複雑なシミュレーション モデルは、価格をシミュレーションするため、評価とは独立しています。
  • エキゾチックな派生品

おすすめ

転載: blog.csdn.net/gongdiwudu/article/details/133511168
おすすめ