第21章:期权隐含分布提取
从微笑曲线里提取风险中性分布,这事儿我干了快十年了。
很多人觉得期权交易就是看涨看跌,其实真正的门道藏在波动率微笑里。你想想看,如果市场完全有效,所有行权价的隐含波动率应该一样,对吧?但现实不是这样。价外期权和价内期权的波动率往往不同,这就形成了微笑曲线。
这个微笑曲线背后,藏着市场对未来价格分布的真实预期。说白了,就是市场在告诉你:未来价格可能怎么走,极端情况概率有多大。
21.1 从微笑到风险中性分布
风险中性分布,听着挺唬人。其实很简单——就是市场隐含的未来价格概率分布。
我刚开始做这个的时候,总觉得这东西太理论了。直到有一次,我在做跨式期权组合时,发现微笑曲线明显左偏,但我的模型还在用正态分布算概率。结果呢?亏了不少。从那以后,我再也不敢忽视隐含分布了。
21.1.1 提取方法
提取风险中性分布,最常用的方法是Breeden-Litzenberger公式。嗯,这里要注意,这个公式的核心思想是:
风险中性密度 = ∂²C/∂K²
其中C是看涨期权价格,K是行权价。
具体步骤是这样的:
- 获取不同行权价的期权价格数据
- 计算隐含波动率,构建微笑曲线
- 用Breeden-Litzenberger公式求二阶导数
- 得到风险中性概率密度函数
关键点:实际交易中,我们很少直接用原始数据求二阶导数。因为期权价格有噪音,直接求导会得到一堆毛刺。我习惯先用样条插值平滑微笑曲线,再求导。
21.1.2 代码实现
下面是我常用的Python实现,你直接拿去用就行:
import numpy as np
from scipy.interpolate import CubicSpline
def extract_rnd(strikes, option_prices, r, T):
"""
从期权价格提取风险中性分布
strikes: 行权价数组
option_prices: 对应期权价格
r: 无风险利率
T: 到期时间
"""
# 用三次样条插值平滑价格曲线
cs = CubicSpline(strikes, option_prices)
# 求二阶导数
d2C_dK2 = cs.derivative(2)(strikes)
# 风险中性密度
rnd = np.exp(r * T) * d2C_dK2
# 归一化
rnd = rnd / np.trapz(rnd, strikes)
return rnd
避坑指南:我曾经直接用原始数据求导,结果概率密度出现了负值。后来发现是数据噪音导致的。建议先用平滑处理,或者用更稳健的数值方法。
21.2 尾部风险度量
提取出风险中性分布后,下一步就是度量尾部风险。说白了,就是看市场认为极端行情发生的概率有多大。
我个人习惯用以下几个指标:
| 指标 | 含义 | 计算方法 |
|---|---|---|
| 尾部概率 | 价格跌破某个阈值的概率 | 对风险中性密度在尾部区域积分 |
| 尾部风险价值 | 极端情况下的预期损失 | 条件期望 |
| 偏斜度 | 分布不对称程度 | 三阶矩 |
| 峰度 | 尾部厚度 | 四阶矩 |
21.2.1 实战中的尾部风险
我记得有一次做美股期权交易,当时VIX指数很低,市场一片祥和。但我从风险中性分布里发现,左尾概率明显偏高。这意味着市场虽然表面平静,但隐含了对大跌的担忧。
我当时就加了一些价外看跌期权做保护。结果两周后,市场真的来了一波急跌。嗯,那次经历让我彻底信服了隐含分布的价值。
注意:风险中性分布不等于真实世界分布。它包含了风险溢价。所以尾部概率可能被高估或低估。我一般会结合历史数据做校准。
21.3 知识体系框架
下面这张图展示了本章的核心逻辑:
21.4 实战要点总结
做隐含分布提取这些年,我总结了几条经验:
- 数据质量第一:期权数据噪音大,一定要做预处理。我一般会剔除流动性差的合约。
- 插值方法要选对:三次样条是标配,但要注意边界处理。我曾经用线性插值,结果尾部概率失真严重。
- 尾部风险要动态监控:市场在变,隐含分布也在变。我习惯每天收盘后更新一次。
- 结合其他指标:隐含分布不是万能的。我会配合VIX、偏斜指数等一起看。
核心观点:隐含分布提取不是学术游戏,它是实打实的交易工具。你想想看,当市场恐慌时,价外看跌期权会变得很贵,这直接反映在尾部概率上。抓住这个信号,你就能提前布局。
好了,这一章就到这里。记住,微笑曲线不是用来欣赏的,是用来赚钱的。下一章我们聊聊如何用隐含分布做套利策略。