ブラック・ショールズ方程式
ブラック・ショールズ方程式 は、オプション価格 を計算する際に使用される重要な式です。
ここでは、Pythonを使って、コールオプションの価格 をグラフ化する方法を示します。
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 import numpy as npimport matplotlib.pyplot as pltS0 = 100 K = 105 T = 1.0 r = 0.05 sigma = 0.2 def black_scholes (S0, K, T, r, sigma ): from scipy.stats import norm d1 = (np.log(S0 / K) + (r + 0.5 * sigma ** 2 ) * T) / (sigma * np.sqrt(T)) d2 = d1 - sigma * np.sqrt(T) call = S0 * norm.cdf(d1) - K * np.exp(-r * T) * norm.cdf(d2) return call S = np.arange(60 , 140 , 1 ) call_values = [black_scholes(s, K, T, r, sigma) for s in S] plt.figure(figsize=(8 , 6 )) plt.plot(S, call_values) plt.xlabel('Stock Price' ) plt.ylabel('Call Option Price' ) plt.title('Black-Scholes Option Pricing' ) plt.grid(True ) plt.show()
このコードでは、以下の手順を実行しています。
必要なライブラリ(numpy、matplotlib、scipy )をインポートします。
オプションのパラメータ(株価、権利行使価格、残存期間、無リスク利子率、ボラティリティ )を設定します。
ブラック・ショールズ方程式 を実装した関数black_scholes
を定義します。
グラフ化する株価の範囲を設定します。
その株価範囲に対してコールオプション価格 を計算します。
matplotlib を使ってグラフを描画します。
実行すると、横軸が株価 、縦軸がコールオプション価格 のグラフが表示されます。
[実行結果]
このグラフを見ることで、株価 とオプション価格 の関係を視覚的に確認できます。
ソースコード解説
ソースコードを詳しく説明します。
1. ライブラリのインポート 1 2 import numpy as npimport matplotlib.pyplot as plt
このコードでは、NumPy とMatplotlib をインポートしています。NumPy は数値計算に使用され、Matplotlib はグラフィックスを描画するために使用されます。
2. パラメータの設定 1 2 3 4 5 S0 = 100 K = 105 T = 1.0 r = 0.05 sigma = 0.2
ここでは、ブラック・ショールズ方程式 に必要なパラメータを設定しています。
S0
は現在の株価
K
は権利行使価格
T
はオプションの残存期間 (年数)
r
は無リスク利子率
sigma
はボラティリティ (株価の変動率)
3. ブラック・ショールズ方程式の実装 1 2 3 4 5 6 def black_scholes (S0, K, T, r, sigma ): from scipy.stats import norm d1 = (np.log(S0 / K) + (r + 0.5 * sigma ** 2 ) * T) / (sigma * np.sqrt(T)) d2 = d1 - sigma * np.sqrt(T) call = S0 * norm.cdf(d1) - K * np.exp(-r * T) * norm.cdf(d2) return call
この関数は、ブラック・ショールズ方程式 を実装しています。
引数として、株価、権利行使価格、残存期間、無リスク利子率、ボラティリティ を受け取ります。
関数内部では、d1
とd2
を計算し、それらを使ってコールオプション価格 を計算しています。
4. グラフ化するための株価の範囲の設定 1 S = np.arange(60 , 140 , 1 )
このコードは、グラフ化する株価の範囲を設定しています。
np.arange(60, 140, 1)
は、$60$から$139$までの整数を$1$つ飛ばしで生成します。
5. コールオプション価格の計算 1 call_values = [black_scholes(s, K, T, r, sigma) for s in S]
この行では、リストコンプリヘンションを使って、S
のそれぞれの値に対してコールオプション価格 を計算しています。
black_scholes
関数を呼び出し、その結果をリストに格納しています。
6. グラフの描画 1 2 3 4 5 6 7 plt.figure(figsize=(8 , 6 )) plt.plot(S, call_values) plt.xlabel('Stock Price' ) plt.ylabel('Call Option Price' ) plt.title('Black-Scholes Option Pricing' ) plt.grid(True ) plt.show()
最後に、Matplotlib を使ってグラフを描画しています。
plt.figure(figsize=(8, 6))
は、グラフのウィンドウサイズを設定しています。
plt.plot(S, call_values)
は、株価(S
)とコールオプション価格(call_values
)をプロットしています。
plt.xlabel
とplt.ylabel
は、$x軸$と$y軸$のラベルを設定しています。
plt.title
はグラフのタイトルを設定しています。
plt.grid(True)
は、グリッド線を表示します。
plt.show()
は、グラフを表示します。
このコードを実行すると、株価 とコールオプション価格 の関係を示すグラフが表示されます。
結果解説
[実行結果]
このグラフは、株価(横軸) とコールオプション価格(縦軸) の関係を示しています。
横軸は、株価の範囲 を表しています。 このコードでは、株価が$60$から$139$までの値をプロットしています。
縦軸は、その株価に対応するコールオプション価格 を表しています。 コールオプション価格は、ブラック・ショールズ方程式 を用いて計算されています。
グラフ上の曲線は、株価 とコールオプション価格 の関係を示しています。 曲線の形状から、以下の特徴が読み取れます。
1. 原点近くでは緩やかな上昇 : 株価が権利行使価格を下回る場合、オプションは価値がほとんどありません。 そのため、曲線の始まりは緩やかです。
2. 権利行使価格付近で急な上昇 : 株価が権利行使価格に近づくにつれ、オプションの価値が急激に上昇します。 これは、オプションの値が内在価値(権利行使価格と株価の差)に依存するためです。
3. 権利行使価格を超えた後は緩やかな上昇 : 株価が権利行使価格を上回ると、オプションの価値は時間的価値のみに依存するため、曲線の傾きは緩やかになります。
このようにグラフを見ることで、株価の変化に対するオプション価格の挙動 を視覚的に把握できます。
オプション取引 においては、この関係を理解することが重要です。