Skip to content

3.4 Black-Scholes 定价模型

核心概念

Black-Scholes 模型(1973 年由 Black、Scholes 和 Merton 提出)是期权定价的基石,适用于欧式期权(仅能在到期日行权)。

关键假设

  • 标的资产价格服从对数正态分布(几何布朗运动)
  • 无交易成本、无税收
  • 无风险利率 rr 和波动率 σ\sigma 为常数
  • 无股息(可扩展为有股息版本)

BS 看涨期权定价公式

C=S0×N(d1)K×erT×N(d2)C = S_0 \times N(d_1) - K \times e^{-rT} \times N(d_2)

其中:

d1=ln(S0/K)+(r+σ2/2)TσTd_1 = \frac{\ln(S_0/K) + (r + \sigma^2/2)T}{\sigma \sqrt{T}}

d2=d1σTd_2 = d_1 - \sigma \sqrt{T}

直观理解

符号意义直观理解
N(d1)N(d_1)Delta股价变化时期权价格的敏感度
N(d2)N(d_2)行权概率(风险中性)到期时期权处于实值的风险中性概率
S0×N(d1)S_0 \times N(d_1)预期买入成本风险中性下买入股票的价值
K×erT×N(d2)K \times e^{-rT} \times N(d_2)预期行权成本的现值风险中性下行权支付的现值

Quant Link:BS 公式中的 N(d2)N(d_2) 即为期权在风险中性测度下到期实值的概率。这是量化中"风险中性定价"思想的核心体现——期权价格等于未来预期收益在风险中性世界中的贴现。


手工计算:定价一个平值看涨期权

问题:标的股价 S0=100S_0 = 100,行权价 K=100K = 100,到期 T=1T = 1 年,无风险利率 r=5%r = 5\%,波动率 σ=20%\sigma = 20\%。求看涨期权价格。

分步计算

步骤公式计算结果
1. ln(S0/K)\ln(S_0/K)ln(100/100)\ln(100/100)ln(1)\ln(1)00
2. (r+σ2/2)T(r + \sigma^2/2)T(0.05+0.202/2)×1(0.05 + 0.20^2/2) \times 1(0.05+0.02)×1(0.05 + 0.02) \times 10.070.07
3. σT\sigma\sqrt{T}0.20×10.20 \times \sqrt{1}0.20×10.20 \times 10.200.20
4. d1d_1(0+0.07)/0.20(0 + 0.07) / 0.200.07/0.200.07 / 0.200.350.35
5. d2d_20.350.200.35 - 0.200.150.15
6. N(d1)N(d_1)标准正态 CDFΦ(0.35)\Phi(0.35)0.63680.6368
7. N(d2)N(d_2)标准正态 CDFΦ(0.15)\Phi(0.15)0.55960.5596
8. S0N(d1)S_0 N(d_1)100×0.6368100 \times 0.636863.6863.68
9. KerTN(d2)K e^{-rT} N(d_2)100×e0.05×0.5596100 \times e^{-0.05} \times 0.5596100×0.9512×0.5596100 \times 0.9512 \times 0.559653.2353.23
10. 期权价格 CC63.6853.2363.68 - 53.2310.4510.45

C=100×N(0.35)100×e0.05×N(0.15)=63.6853.23=10.45C = 100 \times N(0.35) - 100 \times e^{-0.05} \times N(0.15) = 63.68 - 53.23 = 10.45


Python 实现

python
import numpy as np
from scipy.stats import norm

def black_scholes_call(S, K, T, r, sigma):
    """
    S     : 标的资产当前价格
    K     : 行权价
    T     : 到期时间(年)
    r     : 无风险利率
    sigma : 波动率
    """
    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, K, T, r, sigma = 100, 100, 1.0, 0.05, 0.20
price = black_scholes_call(S, K, T, r, sigma)
print(f"BS 看涨期权价格: ${price:.2f}")
# 输出: BS 看涨期权价格: $10.45

看跌期权定价(Put-Call Parity)

平价关系(Put-Call Parity)将欧式看跌与看涨期权联系起来:

CP=S0KerTC - P = S_0 - K e^{-rT}

因此看跌期权价格为:

P=CS0+KerTP = C - S_0 + K e^{-rT}

代入上述结果:

P=10.45100+100×e0.05=10.45100+95.12=5.57P = 10.45 - 100 + 100 \times e^{-0.05} = 10.45 - 100 + 95.12 = 5.57


参数敏感性

参数增加看涨期权价格看跌期权价格
股价 SS
行权价 KK
到期时间 TT↑(通常)↑(通常)
波动率 σ\sigma
无风险利率 rr

Quant Link:BS 模型的迷人之处在于——唯一不可观测的参数是波动率 σ\sigma。这衍生出了"隐含波动率"(Implied Volatility)的概念:将市场价格代入 BS 公式反推 σ\sigma,用于比较期权是否被高估或低估。波动率微笑(Volatility Smile) 便是这一过程中观察到的经验现象——当行权价远离当前股价时,隐含波动率往往升高,形状像一张微笑的嘴。这说明市场认为极端行情比 BS 模型假设的更可能出现。


下一步3.5 Greeks 与风险管理 → 学习 Delta、Gamma、Theta、Vega、Rho 等风险指标。

Built with VitePress