generated at
Black-Scholes equation
1973

原資産✖️正規分布の適当な範囲に収まる確率

C = S_0 N(d1)e^{-qt} - S_1N(d2)e^{-rt}
ここで
S0 = 資産の現在の価格(given)
S_1 = 権利行使価格
q = 元資産の利回り
t = 満期までの時間(年単位)
d1 = \ln\frac{S_0}{S_1} + \frac{(r + \sigma^2 / 2) t}{\sigma \sqrt{t}}
d2 = d1 - {\sigma \sqrt{t}}
σ ボラティリティ(given)

簡単にして意味を把握する
S1=S0, t=1, r=q=0とすると
S0(N(σ/2) - N(-σ/2))
σ=2とすると、カッコの中は標準正規分布で±1σの範囲に収まる確率となる
対称性からN(-σ/2) = 1 - N(σ/2)なので
S_0(2N(σ/2) - 1)
S_0(2N(1)-1)\sim0.68S_0
$ 2*CDF[NormalDistribution[0,1],1]-1
GPT-4
標準正規分布の累積分布関数(CDF)の表は、標準正規分布の確率を示しています。この表の軸は以下のようになります:
縦軸(または行): これはZスコアの整数部分または十の位を示しています。
Zスコアは、データポイントが平均からどれだけ離れているかを示す統計的測定です
標準正規分布では、平均は0で、標準偏差は1です。
横軸(または列): これはZスコアの小数部分または一の位を示しています。


py
import numpy as np from scipy.stats import norm import matplotlib.pyplot as plt def black_scholes_call(S0, X, r, q, t, sigma): d1 = (np.log(S0 / X) + (r - q + sigma**2 / 2) * t) / (sigma * np.sqrt(t)) d2 = d1 - sigma * np.sqrt(t) call_price = S0 * np.exp(-q * t) * norm.cdf(d1) - X * np.exp(-r * t) * norm.cdf(d2) return call_price # Parameters S0 = 15000 # asset price X = 15500 # strike price r = 0.0 # risk-free rate q = 0.0 # yield on the underlying asset t = 1.0/12 # time to expiration in years # Create a range of volatilities sigmas = np.arange(0.1, 0.4, 0.01) # Calculate call option prices for each volatility call_prices = [black_scholes_call(S0, X, r, q, t, sigma) for sigma in sigmas] # Plot plt.figure(figsize=(10, 6)) plt.plot(sigmas, call_prices, label='Call Option Price') plt.xlabel('Volatility (σ)') plt.ylabel('Call Option Price') plt.title('Call Option Price vs. Volatility') plt.legend() plt.grid(True) # Set y-axis ticks max_price = max(call_prices) plt.yticks(np.arange(0, max_price, 50)) plt.show()

GPT-4に聞いたら微妙に間違えた式を出してきた


のリスト
高校数学 + αぐらいで導出できる