跳到主要内容

期权与隐含波动率入门(Black-Scholes)

直觉

期权给你「以约定价 KK、在到期 TT 买卖标的」的权利。看涨期权(call)的价值取决于:现价 SS 越高、越值钱行权价 KK 越低、越值钱到期越远、波动越大、越值钱(波动 = 机会)。Black-Scholes 给出这四者(加无风险利率 rr)到价格的解析公式。反过来,从市场报价倒推回波动率,就得到隐含波动率(IV)——它是市场对未来波动的「共识预期」。把同一到期日、不同行权价的 IV 画出来,常呈现**微笑(smile)**形态。

Black-Scholes 与 Greeks

看涨期权价格:

C=SN(d1)KerTN(d2),d1=ln(S/K)+(r+12σ2)TσT,d2=d1σTC = S\,N(d_1) - K e^{-rT} N(d_2),\qquad d_1 = \frac{\ln(S/K)+(r+\tfrac{1}{2}\sigma^2)T}{\sigma\sqrt{T}},\quad d_2 = d_1 - \sigma\sqrt{T}

主要希腊字母(风险敏感度):Δ=N(d1)\Delta=N(d_1)(价格弹性)、Γ=n(d1)SσT\Gamma=\dfrac{n(d_1)}{S\sigma\sqrt{T}}(凸性)、Vega=Sn(d1)T\text{Vega}=S\,n(d_1)\sqrt{T}(波动率敏感度)。

「人话」解释:什么是「隐含波动率微笑」?

Black-Scholes 假设波动率 σ\sigma 是常数——但真实市场里,不同行权价的期权定价隐含的波动率并不一样。把 IV 对行权价画出来,常像个笑脸:平值(ATM)处最低、两端深度虚值/实值更高。原因:市场对大跌极度恐惧(买虚值 put 做保险,推高左翼 IV),有时也对大涨抱幻想(推高右翼)。微笑的存在,等于市场在说「收益分布不是正态——尾部比正态厚」」,这正是模块 1 讲过的肥尾在期权价格里的直接体现。

可运行案例:BS 定价、Greeks、IV 反推与微笑

假设真实定价波动率随行权价变化(人为构造一个微笑),先用 BS 算出各档 call 价格,再用二分法反推 IV,复现微笑曲线。

import numpy as np
import matplotlib.pyplot as plt
from scipy.stats import norm

S, r, T = 100.0, 0.02, 0.25
def bs_call(sigma, K):
  d1 = (np.log(S/K) + (r + 0.5*sigma**2)*T) / (sigma*np.sqrt(T))
  d2 = d1 - sigma*np.sqrt(T)
  return S*norm.cdf(d1) - K*np.exp(-r*T)*norm.cdf(d2)
def iv(price, K):                          # 二分法反推: bs_call 关于 sigma 单调递增
  lo, hi = 1e-4, 3.0
  for _ in range(100):
      m = 0.5*(lo + hi)
      if bs_call(m, K) < price: lo = m   # 价格偏低 -> sigma 偏低
      else: hi = m
  return 0.5*(lo + hi)

sigma0 = 0.20
true_vol = lambda K: sigma0*(1 + 1.5*(np.log(K/S))**2)   # 人为微笑: OTM 更贵
strikes = np.linspace(80, 120, 21)
prices = [bs_call(true_vol(K), K) for K in strikes]
ivs = [iv(p, K) for p, K in zip(prices, strikes)]

# 平值期权的 Greeks
K_atm = 100.0; sig = sigma0
d1 = (np.log(S/K_atm)+(r+0.5*sig**2)*T)/(sig*np.sqrt(T))
print(f"ATM call: Delta={norm.cdf(d1):.3f}  Gamma={norm.pdf(d1)/(S*sig*np.sqrt(T)):.4f}  "
    f"Vega={S*norm.pdf(d1)*np.sqrt(T):.3f}")
print(f"真实定价波动率(ATM)={true_vol(K_atm):.3f}  反推 IV(ATM)={iv(bs_call(true_vol(K_atm),K_atm),K_atm):.3f}")

plt.figure(figsize=(9, 3.5))
plt.plot(strikes, [v*100 for v in ivs], 'o-', color='purple', lw=1.4)
plt.axvline(S, color='gray', ls='--', lw=0.8, label='平值 S')
plt.title('隐含波动率微笑(反推自 BS 价格)'); plt.xlabel('行权价 K'); plt.ylabel('IV (%)')
plt.legend(fontsize=9); plt.tight_layout(); plt.show()
print("\n→ 微笑形态说明市场为尾部定价高于正态, 收益分布肥尾。")

小结

  • Black-ScholesC=SN(d1)KerTN(d2)C=SN(d_1)-Ke^{-rT}N(d_2),连接 S,K,T,r,σS,K,T,r,\sigma 与期权价;
  • GreeksΔ,Γ,Vega\Delta,\Gamma,\text{Vega})量化对价格、凸性、波动率的敏感度;
  • 隐含波动率从市场价反推;其微笑形态是「市场认为分布肥尾」的直接证据。