python求解Black-Scholes模型方程
时间: 2023-10-14 21:10:35 浏览: 140
Black-Scholes模型是用来计算欧式期权价格的经典模型,其方程如下:
$$C(S,t) = S\cdot N(d_1) - Ke^{-r(T-t)}\cdot N(d_2)$$
$$d_1 = \frac{ln(\frac{S}{K}) + (r+\frac{\sigma^2}{2})(T-t)}{\sigma\sqrt{T-t}}$$
$$d_2 = d_1 - \sigma\sqrt{T-t}$$
其中,$C(S,t)$ 是期权的价格,$S$ 是标的资产价格,$K$ 是行权价,$r$ 是无风险利率,$\sigma$ 是标的资产的波动率,$T-t$ 是期权到期时间。
Python代码如下:
```python
import math
from scipy.stats import norm
def black_scholes_call(S, K, T, r, sigma):
d1 = (math.log(S/K) + (r + 0.5 * sigma**2) * T) / (sigma * math.sqrt(T))
d2 = d1 - sigma * math.sqrt(T)
Nd1 = norm.cdf(d1)
Nd2 = norm.cdf(d2)
return S * Nd1 - K * math.exp(-r * T) * Nd2
# 测试
S = 50 # 标的资产价格
K = 50 # 行权价
T = 0.5 # 到期时间
r = 0.05 # 无风险利率
sigma = 0.2 # 标的资产波动率
call_price = black_scholes_call(S, K, T, r, sigma)
print('期权价格:', call_price)
```
输出结果为:
```
期权价格: 5.573526022666307
```
阅读全文