Python 代码实现 Black-Scholes 期权定价模型
金融期权定价模型是金融数学中的一个重要分支,其中Black-Scholes模型是最著名的期权定价模型之一。它由Fischer Black和Myron Scholes在1973年提出,用于估算欧式看涨期权和看跌期权的理论价格。本文将使用Python语言实现Black-Scholes模型,并对其原理和代码进行详细解析。
Black-Scholes 模型原理
Black-Scholes模型假设股票价格遵循几何布朗运动,并基于以下五个参数:
1. ( S_0 ):股票的当前价格。
2. ( K ):期权的执行价格。
3. ( T ):期权到期时间(以年为单位)。
4. ( r ):无风险利率。
5. ( sigma ):股票价格的波动率。
根据这些参数,Black-Scholes模型给出了欧式看涨期权和看跌期权的理论价格公式:
看涨期权价格公式:
[ C = S_0N(d_1) - Ke^{-rT}N(d_2) ]
其中:
- ( N(d) ) 是标准正态分布的累积分布函数。
- ( d_1 = frac{ln(S_0/K) + (r + sigma^2/2)T}{sigmasqrt{T}} )
- ( d_2 = d_1 - sigmasqrt{T} )
看跌期权价格公式:
[ P = Ke^{-rT}N(-d_2) - S_0N(-d_1) ]
Python 代码实现
以下是一个使用Python实现的Black-Scholes模型代码示例:
python
import math
from scipy.stats import norm
def black_scholes(S0, K, T, r, sigma):
"""
Black-Scholes期权定价模型
:param S0: 股票当前价格
:param K: 执行价格
:param T: 到期时间(年)
:param r: 无风险利率
:param sigma: 股票波动率
:return: 看涨期权和看跌期权的理论价格
"""
d1 = (math.log(S0 / K) + (r + 0.5 sigma 2) T) / (sigma math.sqrt(T))
d2 = d1 - sigma math.sqrt(T)
call_price = S0 norm.cdf(d1) - K math.exp(-r T) norm.cdf(d2)
put_price = K math.exp(-r T) norm.cdf(-d2) - S0 norm.cdf(-d1)
return call_price, put_price
示例参数
S0 = 100 股票当前价格
K = 100 执行价格
T = 1 到期时间(年)
r = 0.05 无风险利率
sigma = 0.2 股票波动率
计算期权价格
call_price, put_price = black_scholes(S0, K, T, r, sigma)
print(f"看涨期权价格: {call_price}")
print(f"看跌期权价格: {put_price}")
代码解析
1. 导入库:我们导入了`math`库用于数学运算,以及`scipy.stats`库中的`norm`函数,用于计算标准正态分布的累积分布函数。
2. black_scholes函数:定义了一个名为`black_scholes`的函数,它接受五个参数:股票当前价格`S0`、执行价格`K`、到期时间`T`、无风险利率`r`和股票波动率`sigma`。
3. 计算d1和d2:根据Black-Scholes模型公式,计算d1和d2的值。
4. 计算看涨期权和看跌期权价格:使用d1和d2的值,根据公式计算看涨期权和看跌期权的理论价格。
5. 示例参数:定义了一组示例参数,用于演示如何调用`black_scholes`函数。
6. 打印结果:打印出计算得到的看涨期权和看跌期权的理论价格。
总结
本文使用Python语言实现了Black-Scholes期权定价模型,并对其原理和代码进行了详细解析。通过理解模型原理和代码实现,读者可以更好地掌握金融期权定价的基本方法。在实际应用中,可以根据需要调整参数,以计算不同条件下的期权价格。
Comments NOTHING