Black-Scholes期权定价模型是一种用于估算欧式期权价格的数学模型,其核心思想是基于期权的价格与标的资产的价格、行权价、时间、无风险利率和波动率之间的关系。
下面简要说明一下公式的计算。我们可以将该定价公式分为两个部分:期权定价公式、d1和d2的计算。
- 期权定价公式
根据BS定价模型,我们有:
- C(S, K, r, T, σ) = S * N(d1) - K * e^(-r * T) * N(d2)
- P(S, K, r, T, σ) = K * e^(-r * T) * N(-d2) - S * N(-d1)
其中:
-
C(S, K, r, T, σ) 代表欧式看涨期权的价格。
-
P(S, K, r, T, σ) 代表欧式看跌期权的价格。
-
S 代表标的资产的当前价格。
-
K 代表期权的行权价。
-
r 代表无风险利率(连续复利)。
-
T 代表期权的剩余到期时间(年为单位)。
-
σ 代表标的资产的年度波动率。
-
N(d1) 和 N(d2) 代表标准正态分布函数中的累积概率。
- d1和d2的计算
- d1 = (ln(S/K) + (r + (σ^2)/2) * T) / (σ * √T) d2 = d1 - σ * √T
其中:
- ln 表示自然对数。
- σ^2 表示波动率的平方。
转化成代码时注意导入math库:
def call_option_pricer(spot,strike,maturity,r,vol):
from math import log,sqrt,exp
from scipy.stats import norm
d1=(log(spot/strike)+(r+0.5*vol*vol)*maturity)/vol/sqrt(maturity)
d2=d1-vol*sqrt(maturity)
price=spot*norm.cdf(d1)-strike*exp(-r*maturity)*norm.cdf(d2)
return price
可以加上一个输出指令明确各个部分的数据:
print('50etf购12月2700期权价格:%.4f'%call_option_pricer(spot=2.466,strike=2.7,maturity=111/365,r=0.044,vol=0.2285))
#当前价 spot : 2.466
#行权价 strike : 2.7
#到期期限 maturity : 111/365
#无风险利率 r : 0.044
#波动率 vol : 0.2285
#0.058