Black-Scholes模型详解与Python代码示例
一、模型简介
Black-Scholes模型,简称BS模型,是由经济学家费雪·布莱克(Fischer Black)和迈伦·舒尔斯(Myron Scholes)于1973年共同提出的一种为期权等金融衍生工具定价的数学模型。该模型基于一系列假设,通过复杂的数学推导,得出了欧式期权定价的公式。尽管模型在现实中存在一些局限性,如假设市场无摩擦、资产价格服从对数正态分布等,但其在金融领域的应用仍然十分广泛,对期权市场的繁荣起到了重要的推动作用。
二、模型假设
- 金融资产价格服从对数正态分布,即金融资产的对数收益率服从正态分布。
- 在期权有效期内,无风险利率和金融资产收益变量是恒定的。
- 市场无摩擦,即不存在税收和交易成本。
- 金融资产在期权有效期内无红利及其他所得(但这一假设在后续的研究中被放宽)。
- 该期权是欧式期权,即在期权到期前不可实施。
三、模型公式
Black-Scholes模型的核心公式如下:
C = S * N(d1) - e^(-r * T) * L * N(d2)
其中:
- C:期权初始合理价格
- S:所交易金融资产现价
- L:期权交割价格
- T:期权有效期
- r:连续复利计无风险利率
- σ:资产价格波动率
- N():正态分布变量的累积概率分布函数
- d1 和 d2 是两个中间变量,具体计算公式略。
四、Python代码示例
以下是一个使用Python实现Black-Scholes模型的简单示例代码:
import numpy as np
from scipy.stats import norm
def black_scholes(S, K, T, r, sigma):
"""
根据Black-Scholes模型计算欧式期权价格
参数:
S: 标的资产当前价格
K: 期权行权价格
T: 期权到期时间(年为单位)
r: 无风险利率(连续复利)
sigma: 资产价格波动率
返回:
期权价格
"""
# 计算d1和d2
d1 = (np.log(S / K) + (r + 0.5 * sigma ** 2) * T) / (sigma * np.sqrt(T))
d2 = d1 - sigma * np.sqrt(T)
# 计算期权价格
call_price = S * norm.cdf(d1) - K * np.exp(-r * T) * norm.cdf(d2)
# 这里只计算了看涨期权的价格,如果需要看跌期权价格,可以添加相应代码
return call_price
# 示例参数
S = 100 # 标的资产价格
K = 100 # 行权价格
T = 1 # 到期时间(年)
r = 0.05 # 无风险利率
sigma = 0.2 # 波动率
# 计算期权价格
call_price = black_scholes(S, K, T, r, sigma)
print("看涨期权价格:", call_price)
这段代码定义了一个名为black_scholes
的函数,该函数根据Black-Scholes模型计算欧式看涨期权的价格。函数接受标的资产当前价格、期权行权价格、到期时间、无风险利率和资产价格波动率作为输入参数,并返回计算得到的期权价格。在示例中,我们给出了一组示例参数,并调用black_scholes
函数计算了看涨期权的价格。