第二章:期权定价模型——BSM模型核心假设与局限性,希腊字母初探
聊期权定价,绕不开BSM模型。这个模型在业内就像地基一样,几乎所有衍生品定价都跟它沾边。但我得先泼盆冷水——它是个理想化的模型,现实市场里没几个条件能完全满足。
我个人习惯把BSM当作一个“基准参照系”。就像物理里的无摩擦真空环境,你知道现实不是那样,但有了这个基准,你才能衡量偏差、找到套利机会。
2.1 BSM模型的核心假设
BSM模型有七个核心假设。我一个个拆开讲,每个假设背后都有坑。
| 假设 | 具体内容 | 现实偏差 |
|---|---|---|
| 1. 标的资产价格连续 | 价格服从几何布朗运动,无跳跃 | 财报发布、黑天鹅事件会跳空 |
| 2. 无交易成本 | 买卖无摩擦,可无限细分 | 手续费、冲击成本真实存在 |
| 3. 无风险利率恒定 | 借贷利率相同且不变 | 利率曲线是斜的,借贷利差大 |
| 4. 波动率恒定 | σ是常数,不随时间变化 | 波动率微笑/偏斜是常态 |
| 5. 无股息 | 标的资产不支付股息 | 指数、个股都有分红 |
| 6. 欧式期权 | 只能在到期日行权 | 美式期权可提前行权 |
| 7. 市场完全 | 可连续对冲,无套利机会 | 对冲有间隔,套利机会短暂存在 |
核心要点:BSM模型假设波动率是常数。但现实里,波动率会微笑、会偏斜。你想想看,如果波动率真是常数,那价差套利就没得玩了。恰恰是这些假设的失效,给了我们套利空间。
2.2 局限性——实战中必须知道的坑
我在项目中遇到过最典型的案例:2020年3月,原油期权市场。BSM模型算出来的价格跟实际成交价差了30%以上。为什么?因为波动率假设完全失效了。
具体来说,BSM有三大硬伤:
- 波动率不是常数:这是最大的问题。实际市场中,虚值期权和实值期权的隐含波动率不一样,形成“波动率微笑”。深度虚值期权的波动率往往更高,因为市场在定价尾部风险。
- 价格会跳空:BSM假设价格连续变化,但现实里财报、政策、突发事件都会导致跳空。跳空意味着你的Delta对冲会失效,因为价格不是一步步走的,是一步到位。
- 交易成本不可忽略:尤其是做价差套利时,你频繁调仓,手续费和滑点会吃掉利润。我曾经做过回测,一个看似年化20%的策略,扣掉交易成本只剩8%。
避坑指南:我曾经用BSM直接给深度虚值期权定价,结果发现市场报价比模型价格高出一大截。后来才意识到,市场在定价“尾部风险溢价”,而BSM根本不考虑这个。从那以后,我每次用BSM都会加一个“波动率调整因子”。
2.3 希腊字母初探——风险管理的基石
希腊字母是BSM模型的衍生品。说白了,它们衡量的是期权价格对各个因素的敏感度。做价差套利,你每天跟这些希腊字母打交道。
我按重要性排序,一个个讲:
Delta(Δ)——方向性风险
Delta衡量期权价格对标的资产价格变化的敏感度。看涨期权Delta在0到1之间,看跌期权在-1到0之间。平值期权Delta大约0.5。
做价差套利时,我习惯先让Delta中性。也就是组合的Delta总和为0,这样我就不赌方向了,只赚波动率的钱。
Gamma(Γ)——Delta的变化率
Gamma衡量Delta对标的资产价格的敏感度。Gamma越高,Delta变化越快。平值期权的Gamma最大,深度实值或虚值的Gamma接近0。
嗯,这里要注意:Gamma是双刃剑。高Gamma意味着你的Delta中性需要频繁调整,不然方向性风险会暴露。我一般用Gamma来评估对冲频率。
Vega(ν)——波动率敏感度
Vega衡量期权价格对隐含波动率变化的敏感度。这是波动率套利最核心的希腊字母。Vega越高,期权价格对波动率变化越敏感。
我个人习惯用Vega来构建波动率价差。比如做多Vega、做空Vega,赌波动率会扩张或收缩。
Theta(Θ)——时间衰减
Theta衡量期权价格随时间流逝的损失。期权是耗损资产,每天都会损失时间价值。平值期权的Theta最大。
做卖方策略时,Theta是你的朋友。每天收时间价值。但要注意,临近到期时Theta衰减加速,风险也急剧上升。
Rho(ρ)——利率敏感度
Rho衡量期权价格对无风险利率变化的敏感度。短期期权Rho很小,长期期权Rho相对大一些。但在低利率环境下,Rho的影响微乎其微。
实战技巧:我建议初学者先盯住Delta、Gamma、Vega三个字母。Theta和Rho可以后面再补。做价差套利时,我每天收盘前都会检查组合的希腊字母暴露,确保风险在可控范围内。
2.4 知识体系结构图
下面这张图展示了BSM模型、希腊字母和价差套利之间的关系。你可以把它当作本章的思维导图。
2.5 代码示例:计算希腊字母
下面是一个Python代码片段,用BSM公式计算五个希腊字母。我习惯用这个函数做快速定价和风险分析。
import numpy as np
from scipy.stats import norm
def bsm_greeks(S, K, T, r, sigma, option_type='call'):
"""
计算BSM模型的希腊字母
S: 标的资产价格
K: 行权价
T: 剩余期限(年)
r: 无风险利率
sigma: 波动率
option_type: 'call' 或 'put'
"""
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':
delta = norm.cdf(d1)
gamma = norm.pdf(d1) / (S * sigma * np.sqrt(T))
theta = (-S * norm.pdf(d1) * sigma / (2*np.sqrt(T))
- r*K*np.exp(-r*T)*norm.cdf(d2))
vega = S * norm.pdf(d1) * np.sqrt(T)
rho = K * T * np.exp(-r*T) * norm.cdf(d2)
else: # put
delta = norm.cdf(d1) - 1
gamma = norm.pdf(d1) / (S * sigma * np.sqrt(T))
theta = (-S * norm.pdf(d1) * sigma / (2*np.sqrt(T))
+ r*K*np.exp(-r*T)*norm.cdf(-d2))
vega = S * norm.pdf(d1) * np.sqrt(T)
rho = -K * T * np.exp(-r*T) * norm.cdf(-d2)
return {
'delta': delta,
'gamma': gamma,
'theta': theta / 365, # 转换为每日衰减
'vega': vega / 100, # 波动率变动1%的影响
'rho': rho / 100 # 利率变动1%的影响
}
# 示例:计算平值看涨期权的希腊字母
greeks = bsm_greeks(S=100, K=100, T=0.5, r=0.03, sigma=0.2, option_type='call')
print(greeks)
使用建议:我每次做策略回测前,都会先用这个函数算一遍希腊字母,确保组合的风险暴露符合预期。尤其是Vega,做波动率套利时,Vega的符号和大小决定了你的策略逻辑。
好了,BSM模型和希腊字母的基础就讲到这里。记住,模型是工具,不是真理。理解它的假设和局限,你才能用好它。希腊字母是风险管理的语言,做价差套利,你得学会用这五个字母说话。
公众号:蓝海资料掘金营,微信deep3321