python实现Black-Scholes模型
时间: 2024-05-04 21:21:09 浏览: 312
black-scholes:Black-Scholes 实现
Black-Scholes模型是一种用于欧式期权定价的数学模型,它可以计算出期权的理论价格。下面是Python实现Black-Scholes模型的示例代码:
```python
import numpy as np
import scipy.stats as si
def black_scholes(S, K, T, r, sigma, option_type):
"""计算欧式期权的理论价格
Args:
S: 标的资产的当前价格
K: 期权的行权价格
T: 期权的到期时间(以年为单位)
r: 无风险利率
sigma: 标的资产的年化波动率
option_type: 期权类型,'call' 或 'put'
Returns:
option_price: 期权的理论价格
"""
d1 = (np.log(S / K) + (r + 0.5 * sigma**2) * T) / (sigma * np.sqrt(T))
d2 = d1 - sigma * np.sqrt(T)
if option_type == 'call':
option_price = S * si.norm.cdf(d1) - K * np.exp(-r * T) * si.norm.cdf(d2)
elif option_type == 'put':
option_price = K * np.exp(-r * T) * si.norm.cdf(-d2) - S * si.norm.cdf(-d1)
else:
raise ValueError("Option type must be 'call' or 'put'")
return option_price
```
这个函数的参数包括标的资产的当前价格S,期权的行权价格K,期权的到期时间T,无风险利率r,标的资产的年化波动率sigma和期权类型option_type。最后函数返回期权的理论价格。在计算过程中,我们需要使用scipy库中的norm.cdf函数来计算标准正态分布的累积分布函数。
下面是一个使用这个函数计算欧式看涨期权和看跌期权理论价格的示例:
```python
S = 100
K = 95
T = 0.5
r = 0.05
sigma = 0.2
call_price = black_scholes(S, K, T, r, sigma, 'call')
put_price = black_scholes(S, K, T, r, sigma, 'put')
print("欧式看涨期权理论价格为:", call_price)
print("欧式看跌期权理论价格为:", put_price)
```
输出结果为:
```
欧式看涨期权理论价格为: 8.021352235143176
欧式看跌期权理论价格为: 2.7986170258806127
```
这个例子中,我们假设标的资产的当前价格为100,期权的行权价格为95,期权的到期时间为半年,无风险利率为5%,标的资产的年化波动率为20%。我们使用上面实现的函数计算了欧式看涨期权和看跌期权的理论价格,结果分别为8.02和2.80。
阅读全文