第一章:Black-Scholes模型与希腊字母
做量化交易的人,没人能绕过Black-Scholes模型。说它是现代金融工程的基石,一点不过分。我入行那会儿,第一个任务就是复现BS模型的定价逻辑——当时觉得挺简单,后来才发现,真正吃透它,得花不少功夫。
1.1 BS模型的推导逻辑
BS模型的核心思想,说白了就是:用无风险资产复制期权收益。你想想看,如果我能用股票和债券的组合,完美复制一个期权的 payoff,那期权的价格就应该等于这个组合的成本。
推导过程其实不复杂。假设股票价格服从几何布朗运动:
dS = μS dt + σS dW
然后我们构造一个投资组合 Π = V - ΔS,其中V是期权价格,Δ是股票持仓。用伊藤引理展开dV,再让组合变成无风险的——也就是让dΠ = rΠ dt。整理一下,就得到了著名的BS偏微分方程:
∂V/∂t + ½σ²S² ∂²V/∂S² + rS ∂V/∂S - rV = 0
嗯,这里要注意:这个方程假设了无摩擦市场、连续交易、波动率恒定。现实中这些假设都不成立,但作为起点,它足够好用了。
核心结论:BS模型告诉我们,期权价格只取决于五个参数——S、K、T、r、σ。其中只有σ是未知的,这就是隐含波动率的由来。
1.2 Delta中性对冲
Delta是期权价格对标的资产价格的一阶导数。用数学语言说,Δ = ∂V/∂S。我习惯把它理解为「期权价格随股票价格变动的敏感度」。
Delta中性对冲,就是让整个组合的Delta为零。怎么做?很简单:
组合Delta = 期权Delta + 股票持仓 × 1 = 0
=> 股票持仓 = -期权Delta
举个例子。假设你持有100手看涨期权,每手Delta是0.6。那你的总Delta就是60。为了对冲,你需要卖空60股股票。
我在项目中遇到过一个问题:很多人以为Delta对冲一次就完事了。其实不是。Delta会随着股价、时间、波动率变化。你得动态调整——这就是所谓的「动态对冲」。我见过有人一天调一次,也有人每五分钟调一次。频率越高,对冲效果越好,但交易成本也越高。
我的经验:对于流动性好的标的,我一般每小时调一次。对于流动性差的,一天调一次就够了。别为了追求完美对冲把自己做死。
1.3 Gamma与Vega风险
Delta是一阶风险,Gamma是二阶风险。Gamma = ∂²V/∂S²,它衡量的是Delta对股价的敏感度。说白了,Gamma大的期权,Delta变得快,对冲起来更麻烦。
Vega呢?它是期权价格对波动率的敏感度。Vega = ∂V/∂σ。这个指标特别重要——因为波动率是BS模型中唯一不能直接观测的参数。
| 希腊字母 | 定义 | 实际意义 |
|---|---|---|
| Delta (Δ) | ∂V/∂S | 股价变动1单位,期权价格变动多少 |
| Gamma (Γ) | ∂²V/∂S² | Delta对股价的敏感度 |
| Vega (ν) | ∂V/∂σ | 波动率变动1%,期权价格变动多少 |
| Theta (Θ) | ∂V/∂t | 时间流逝对期权价格的影响 |
| Rho (ρ) | ∂V/∂r | 利率变动对期权价格的影响 |
我曾经吃过Gamma的亏。有一次做期权套利,只做了Delta对冲,没管Gamma。结果股价剧烈波动,Delta瞬间变了,组合亏了一大笔。从那以后,我每次做对冲都会检查Gamma暴露。
避坑指南:我曾经以为Vega风险只在期权到期前重要。后来发现,即使离到期还有一个月,波动率突变也能让你爆仓。永远不要忽视Vega。
1.4 隐含波动率曲面
隐含波动率,就是把市场价格代入BS公式反推出来的波动率。为什么叫「隐含」?因为它隐含了市场对未来波动率的预期。
理论上,对于同一个标的,不同行权价、不同到期日的期权,隐含波动率应该一样。但现实中不是这样。你会发现:
- 虚值期权和实值期权的隐含波动率通常比平值期权高——这就是「波动率微笑」
- 短期期权的波动率通常比长期期权高——这就是「期限结构」
把这两个维度结合起来,就得到了隐含波动率曲面。我每天开盘第一件事,就是看这个曲面有没有异常。
# 一个简单的波动率曲面插值示例
import numpy as np
from scipy.interpolate import griddata
# 假设我们有这些数据点
strikes = [90, 95, 100, 105, 110]
maturities = [0.1, 0.3, 0.6, 1.0]
implied_vols = np.random.rand(5, 4) # 实际数据从市场获取
# 用griddata做二维插值
points = np.array([(k, t) for k in strikes for t in maturities])
values = implied_vols.flatten()
# 生成网格
grid_strikes, grid_maturities = np.meshgrid(
np.linspace(90, 110, 50),
np.linspace(0.1, 1.0, 50)
)
# 插值
grid_vols = griddata(points, values,
(grid_strikes, grid_maturities),
method='cubic')
这个曲面能告诉你很多信息。比如,如果某个行权价的隐含波动率突然飙升,说明市场在赌那个价格会发生什么。我曾在2015年股灾前看到过这种信号——可惜当时没当回事。
实战要点:隐含波动率曲面不是静态的。它会随着市场情绪、事件驱动、流动性变化而变形。做套利策略时,我通常会监控曲面的斜率变化和凸度变化。
好了,这一章的内容就这些。BS模型是基础,Delta对冲是工具,Gamma和Vega是风险,隐含波动率曲面是实战。把这些吃透了,后面的章节会轻松很多。
我个人习惯把BS模型当作一个「基准框架」。实际交易中,我会用随机波动率模型或跳跃扩散模型来修正它。但无论如何,BS是起点,也是理解所有衍生品定价的基础。
公众号:蓝海资料掘金营,微信deep3321