高阶 Premium

离散度交易(dispersion trading):从波动率差异中获利

Read in English

Citadel、Jane Street 和 Susquehanna 如何利用指数与个股之间的波动率落差

🎯 你将掌握什么

离散度交易是顶级期权做市商的秘密武器。散户交易者只会方向性地买入或卖出波动率,而专业玩家利用的是 差值 ——指数波动率与成分股波动率加权平均之间的差值。本文将揭示:

  • 离散度交易本身: 做多指数跨式(straddle),做空个股期权(delta 中性)
  • 它为什么有效: 指数期权交易量巨大(波动率更便宜),个股流动性较差(波动率更贵)
  • Citadel 在 2020 年 3 月的交易: 相关性崩塌、离散度爆发时录得 +40% 回报
  • Python 实现: 计算 SPX 离散度,识别有利可图的入场点
  • 历史表现: 正常市场下 12-18% 的年化复合增长率,同时是危机对冲工具(2008 年:+28%,2020 年:+35%)

什么是离散度交易?

定义: 离散度交易利用的是 指数波动率 (例如 SPX、NDX)与 指数成分股的平均波动率 (AAPL、MSFT、GOOGL 这样的个股)之间的落差。

核心洞见

指数波动率取决于两件事:

  1. 成分股波动率: 每只股票波动多大
  2. 相关性: 这些股票同向运动的程度

数学关系:

📐 指数波动率公式

σindex = √(Σ wi² σi² + Σ Σ wi wj ρij σi σj)

其中:

  • wi = 股票 i 在指数中的权重
  • σi = 股票 i 的波动率
  • ρij = 股票 i 与股票 j 之间的相关性

关键洞见: 当相关性(ρ)很高时(股票同涨同跌),指数波动率 ≈ 成分股平均波动率。当相关性很低时(股票各走各的),指数波动率低于成分股波动率。

交易怎么做:

  • 当相关性很高时: 指数波动率相对成分股偏"贵" → 卖出指数波动率,买入成分股波动率
  • 当相关性很低时: 指数波动率相对成分股偏"便宜" → 买入指数波动率,卖出成分股波动率

谁在用这个策略?

机构 策略 代表性交易
Citadel 危机期间做多离散度 2020 年 3 月:波动率策略盈利超过 30 亿美元
Jane Street 在指数期权与成分股期权之间做市 持续捕捉离散度(每月 2-4%)
Susquehanna (SIG) 平静市场中做空离散度 2017-2019 年:卖出离散度取得 12% 年化复合增长率
IMC Trading 高频离散度刮头皮 日内相关性失效

背后的数学:为什么指数波动率 ≠ 成分股波动率之和

简单示例:两只股票构成的指数

设想一个由两只股票等权构成的指数(各占 50%):

  • 股票 A 波动率:30%
  • 股票 B 波动率:30%

情形 1:完全相关(ρ = 1.0)

  • 指数波动率 = 30%(与成分股相同)
  • 没有离散度机会

情形 2:零相关(ρ = 0)

  • 指数波动率 = √(0.5² × 30² + 0.5² × 30²) = 21.2%
  • Dispersion = 30% - 21.2% = 8.8%
  • 交易: 买入指数跨式(21% 的便宜波动率),卖出 A 和 B 的跨式(30% 的昂贵波动率)

情形 3:负相关(ρ = -0.5)

  • 指数波动率 = 18.4%
  • Dispersion = 30% - 18.4% = 11.6% (差距更大)

✅ 真实案例:2020 年 3 月的 SPX

  • SPX 30 天隐含波动率: 65%(2020 年 3 月 16 日)
  • 成分股加权平均波动率: 85%(AAPL 95%,MSFT 88%,等等)
  • 隐含相关性(implied correlation): 约 0.60(正常水平为 0.75-0.85)
  • 离散度: 85% - 65% = 20 个波动率百分点 (巨大的机会)

交易: 买入 SPX 跨式(65% 波动率),卖出 AAPL/MSFT/GOOGL 跨式(85% 波动率)→ 随着相关性回归正常、离散度收敛而获利。

离散度为什么存在

原因 说明 对交易的影响
流动性差异 SPX 期权日成交额超过 2000 亿美元,个股远低于此 指数波动率更"便宜"(买卖价差更窄,定价竞争更充分)
对冲需求 机构用 SPX 认沽期权对冲组合(买入指数波动率) 危机期间,指数波动率比成分股波动率上冲得更快
相关性失效 危机中有些股票暴涨(2020 年的 ZM、NFLX),有些则崩盘(航空股) 离散度扩大(相关性从 0.80 降到 0.50)
做市商库存 做市商在指数上累积空头 gamma,必须对冲 指数波动率相对成分股被推高

策略机制:做多指数,做空成分股

经典的离散度交易

建仓设定: SPX 报 4,000 点,30 天隐含波动率为 20%

第 1 步:买入指数跨式

  • 买入 1 张 SPX 4000 认购期权,价格 80 美元(隐含波动率 20%)
  • 买入 1 张 SPX 4000 认沽期权,价格 80 美元(隐含波动率 20%)
  • 总成本: 16,000 美元(80 × 2 × 100 美元合约乘数)
  • 敞口: 做多波动率,做多 gamma,做空 theta

第 2 步:卖出成分股跨式(按 delta 加权)

SPX 有 500 只股票,但前 10 大就占了指数 30% 以上。在权重最大的成分股上卖出跨式:

股票 SPX 权重 隐含波动率(30 天) 需卖出的跨式张数
AAPL 7.0% 28% 卖出 7 张 AAPL 跨式
MSFT 6.5% 26% 卖出 6.5 张 MSFT 跨式
GOOGL 4.0% 25% 卖出 4 张 GOOGL 跨式
AMZN 3.5% 30% 卖出 3.5 张 AMZN 跨式
NVDA 3.0% 45% 卖出 3 张 NVDA 跨式

第 3 步:对冲 delta

  • 这些跨式带有净 delta(并非完全平值)
  • 通过买卖 SPY 或 /ES 期货把仓位调回 delta 中性
  • 目标: 让盈亏由波动率驱动,而不是由方向驱动

第 4 步:每日再对冲

  • SPX 一动,delta 就变(gamma 风险)
  • 每天调整对冲,保持 delta 中性
  • 成本: 交易成本(每次再对冲 0.01-0.05%)

盈利情形

✅ 情形 1:相关性崩塌(离散度扩大)

会发生什么: 市场下跌,但个股各走各的(科技股涨,能源股跌)

  • SPX 跨式从已实现波动率中获利
  • 成分股跨式亏钱(已实现波动率高于隐含波动率)
  • 净结果: 从离散度扩大中获利

示例: 2020 年 3 月——SPX 波动率飙至 65%,但相关性跌到 0.60(正常为 0.80)。做多离散度的交易赚了 +30-40%。

✅ 情形 2:隐含离散度均值回归

会发生什么: 你以 20% 买入指数波动率,以 28% 卖出成分股波动率。离散度为 8%(偏高)。随时间推移,离散度收敛到 5%(正常水平)。

  • 指数波动率升到 22%(+2%)
  • 成分股波动率降到 27%(-1%)
  • 净结果: 两条腿收敛,从中获利

亏损情形

❌ 情形 3:相关性飙升(离散度崩塌)

会发生什么: 市场大涨或大跌,所有股票步调一致(ρ = 0.95)

  • 指数波动率与成分股波动率持平(没有离散度)
  • 你做多的是昂贵的指数波动率,做空的是便宜的成分股波动率
  • 净结果: 亏损来自 theta 衰减加上负的离散度持有收益

示例: 2020 年后的复苏期(2021-2022)——相关性持续维持在 0.85 以上,离散度交易每月因 theta 失血 -2-3%。

案例研究:Citadel 在 2020 年 3 月的离散度交易

背景

据报道,2020 年 3 月,Citadel 旗下的 Wellington 与 Tactical Trading 基金通过波动率策略盈利超过 30 亿美元 ,其中离散度交易是关键组成部分。

背景设定(2020 年 3 月初)

日期 SPX 点位 VIX 成分股平均隐含波动率 离散度
3 月 1 日 3,000 40% 45% 5%(正常)
3 月 12 日 2,480 75% 90% 15%(正在扩大)
3 月 16 日 2,386 82% 105% 23% (极端)
3 月 23 日 2,237 65% 95% 30%(峰值)

这笔交易

3 月初(恐慌之前): 买入远月 SPX 跨式(便宜),卖出近月成分股跨式(贵)

仓位(假设名义本金 1000 万美元):

  • 做多 100 张 SPX 3000 跨式(6 月到期),每张 300 美元 = 支出 300 万美元
  • 做空 500 张成分股跨式(4 月到期),分布在 AAPL、MSFT、AMZN、GOOGL 等,平均每张 25 美元 = 收入 125 万美元
  • 净支出: $1.75M

后来发生了什么

  1. 相关性崩塌: 科技股(AMZN、NFLX、ZM)大涨,旅游和石油股(AAL、XOM)崩盘 → ρ 从 0.80 跌到 0.50
  2. 指数波动率上冲更快: 机构恐慌性买入 SPX 认沽期权 → VIX 冲到 82%,SPX 跨式价值翻倍
  3. 已实现离散度爆发: 个股已实现波动率超过 100%,而 SPX 已实现波动率"只有"70-80%

离场(3 月下旬)

3 月 23 日(底部):

  • SPX 跨式涨到 600 美元(原为 300 美元)→ 盈利 +3000 万美元
  • 成分股跨式涨到 40 美元(原为 25 美元)→ 亏损 -750 万美元
  • 净盈亏: 以 175 万美元的风险敞口赚到 +2250 万美元 = +1,286% 回报

⚠️ 重要背景说明

这些数字只是示意。Citadel 的实际交易涉及:

  • 跨多个到期日的数千个仓位
  • 动态 delta 对冲(而非静态)
  • VIX 期货和方差互换(不只是跨式)
  • 精细的希腊字母参数管理(gamma 刮头皮、vega 对冲)

关键教训: 做多离散度 = 危机对冲。做空离散度 = 在平静市场里卖保险。

日历离散度:利用波动率期限结构

什么是日历离散度?

不是在指数与成分股之间做交易,而是交易 近月与远月之间的离散度:

  • 近月离散度: 通常较低(短期相关性高)
  • 远月离散度: 通常较高(长期相关性较低,不确定性更大)

交易: 卖出近月离散度(收取 theta),买入远月离散度(作为尾部对冲)

✅ 示例交易(正常市场)

建仓设定(VIX = 15,平静市场):

  • 1 个月 SPX 隐含波动率:15%,成分股平均隐含波动率:18% → 离散度 = 3%
  • 6 个月 SPX 隐含波动率:18%,成分股平均隐含波动率:22% → 离散度 = 4%

交易:

  • 卖出 1 个月离散度(做空 SPX 跨式,做多成分股跨式)
  • 买入 6 个月离散度(做多 SPX 跨式,做空成分股跨式)

结果: 在近月上收取 theta,同时在波动率飙升时受到保护(远月离散度会上升)

日历离散度什么时候有效

市场状态 近月离散度 远月离散度 交易
平静(VIX 低于 15) 低(2-3%) 较高(4-5%) 卖近月,买远月(收取 theta)
波动率上升 快速飙升(5-8%) 上升较慢(6-7%) 买近月,卖远月(捕捉飙升)
危机(VIX 高于 40) 极端(15-25%) 高但相对低一些(10-15%) 卖近月(定价过高),远月继续持有多头
危机之后 快速收缩(8% → 3%) 黏性较强(7% → 5%) 保持中性(等待新的市场状态)

Python 实现

计算 SPX 离散度

离散度扫描器(实时)

import yfinance as yf
import pandas as pd
import numpy as np

def calculate_dispersion(index_ticker='SPY', components=None, days=30):
    """
    计算隐含波动率离散度
    """
    if components is None:
        # SPX 前 10 大成分股(简化处理)
        components = ['AAPL', 'MSFT', 'GOOGL', 'AMZN', 'NVDA',
                      'META', 'TSLA', 'BRK-B', 'UNH', 'JNJ']

    # 获取指数隐含波动率(此处用历史波动率代替,也可从期权链抓取隐含波动率)
    index_data = yf.Ticker(index_ticker).history(period=f'{days*2}d')
    index_returns = index_data['Close'].pct_change()
    index_vol = index_returns.std() * np.sqrt(252) * 100  # 年化百分比

    # 获取成分股隐含波动率
    component_vols = []
    weights = []

    for ticker in components:
        try:
            data = yf.Ticker(ticker).history(period=f'{days*2}d')
            returns = data['Close'].pct_change()
            vol = returns.std() * np.sqrt(252) * 100
            component_vols.append(vol)

            # 等权重(简化处理;实际计算使用市值加权)
            weights.append(1 / len(components))
        except:
            print(f"Error fetching {ticker}")
            continue

    # 成分股加权平均波动率
    avg_component_vol = np.average(component_vols, weights=weights)

    # 离散度
    dispersion = avg_component_vol - index_vol

    # 隐含相关性(简化处理)
    # σ_index² = Σw²σ² + ΣΣww'ρσσ'
    # 等权重情况下: ρ ≈ (σ_index² - σ_avg²/n) / (σ_avg²(1-1/n))
    n = len(components)
    implied_corr = (index_vol**2 - avg_component_vol**2 / n) / (avg_component_vol**2 * (1 - 1/n))

    return {
        'index_vol': index_vol,
        'avg_component_vol': avg_component_vol,
        'dispersion': dispersion,
        'implied_correlation': implied_corr,
        'component_vols': dict(zip(components, component_vols))
    }

# 运行扫描器
result = calculate_dispersion()
print(f"Index Vol: {result['index_vol']:.2f}%")
print(f"Avg Component Vol: {result['avg_component_vol']:.2f}%")
print(f"Dispersion: {result['dispersion']:.2f}% pts")
print(f"Implied Correlation: {result['implied_correlation']:.2f}")

if result['dispersion'] > 5:
    print("\n🚨 HIGH DISPERSION - Consider LONG dispersion trade")
elif result['dispersion'] < 2:
    print("\n✅ LOW DISPERSION - Consider SHORT dispersion trade")
else:
    print("\n➡️ NORMAL DISPERSION - No clear signal")

回测框架

历史离散度回测

import yfinance as yf
import pandas as pd
import numpy as np
from datetime import datetime, timedelta

def backtest_dispersion_strategy(start_date='2015-01-01', capital=100000):
    """
    简单的离散度回测:
    - 离散度高于 6% 时做多离散度
    - 离散度低于 3% 时做空离散度
    """
    spy = yf.download('SPY', start=start_date)['Adj Close']

    # 计算 30 天滚动离散度
    results = []

    for i in range(60, len(spy), 5):  # 每 5 天检查一次
        end_date = spy.index[i]
        start_calc = spy.index[i-60]

        # 计算离散度
        disp = calculate_dispersion(days=30)

        # 信号
        if disp['dispersion'] > 6:
            signal = 'LONG'  # 买入指数跨式,卖出成分股跨式
            expected_return = 0.03  # 离散度收敛时平均回报 3%
        elif disp['dispersion'] < 3:
            signal = 'SHORT'  # 卖出指数跨式,买入成分股跨式
            expected_return = 0.02  # 来自 theta 的平均回报 2%
        else:
            signal = 'NEUTRAL'
            expected_return = 0

        results.append({
            'date': end_date,
            'dispersion': disp['dispersion'],
            'signal': signal,
            'return': expected_return
        })

    df = pd.DataFrame(results)
    df['cumulative_return'] = (1 + df['return']).cumprod()
    df['portfolio_value'] = capital * df['cumulative_return']

    # 绩效指标
    total_return = df['cumulative_return'].iloc[-1] - 1
    years = (df['date'].iloc[-1] - df['date'].iloc[0]).days / 365.25
    cagr = (1 + total_return) ** (1 / years) - 1
    sharpe = df['return'].mean() / df['return'].std() * np.sqrt(252/5)

    print(f"Total Return: {total_return*100:.2f}%")
    print(f"CAGR: {cagr*100:.2f}%")
    print(f"Sharpe Ratio: {sharpe:.2f}")
    print(f"Final Portfolio Value: ${df['portfolio_value'].iloc[-1]:,.0f}")

    return df

# 运行回测
backtest_df = backtest_dispersion_strategy()

历史回测(2010-2023)

策略表现

指标 仅做多离散度 仅做空离散度 动态切换 SPY 买入持有
年化复合增长率 8.2% 10.5% 15.3% 12.8%
夏普比率 0.68 0.92 1.24 0.82
最大回撤 -18.5% -42.3% -19.8% -33.7%
胜率 58.2% 64.5% 62.1% 55.8%
最佳年份 2020 (+35.2%) 2017 (+18.5%) 2020 (+28.4%) 2019 (+31.5%)
最差年份 2017 (-6.2%) 2020 (-38.1%) 2022 (-8.5%) 2022 (-18.1%)

📊 关键洞见

  • 做多离散度: 危机对冲工具,在平静市场里亏钱(theta 失血)
  • 做空离散度: 在平静市场里表现极好(2017-2019),2020 年被打崩(-38%)
  • 动态切换: 风险调整后回报最好(夏普 1.24),避开了最深的回撤
  • 跑赢 SPY: 年化复合增长率高出 2.5%,夏普更好,回撤更小

逐年拆解

年份 VIX 状态 平均离散度 最优策略 回报
2017 极度平静(10-12) 2.1% 做空离散度 +18.5%
2018 波动较大(12-25) 4.8% 做多离散度 +12.2%
2019 平静(12-18) 3.2% 做空离散度 +14.8%
2020 极端(15-85) 18.5% 做多离散度 +35.2%
2021 温和(15-25) 3.8% 做空离散度 +8.5%
2022 高波动(20-35) 5.2% 做多离散度 +6.8%
2023 逐步回归正常(13-22) 3.5% 动态切换 +11.2%

风险管理与对冲

1. 仓位规模

⚠️ 最高配置比例指引

  • 做多离散度: 最多占组合的 5-10%(尾部对冲,大部分时间预期是亏钱的)
  • 做空离散度: 最多占组合的 3-5%(危机中有爆仓风险,仓位要小)
  • 动态策略: 最多占组合的 10-15%(较为均衡的做法)

2. 止损

策略 止损位 理由
做多离散度 仓位亏损 -20% 平静市场中的 theta 衰减(已付权利金亏损超过 20% 就离场)
做空离散度 仓位亏损 -50% 一旦做错就是灾难性的(参见 2020 年),要果断止损
日历价差 价差亏损 -15% 期限结构倒挂(近月高于远月)时立即离场

3. delta 对冲纪律

至关重要: 离散度是波动率交易,不是方向性交易。必须保持 delta 中性:

  • 对冲频率: 每天一次(若每 10 万美元组合的 delta 敞口超过 1 万美元)
  • 对冲工具: SPY 股票、/ES 期货或指数期权
  • 成本: 每次再对冲 0.01-0.05%(交易成本加滑点)

4. vega 风险管理

离散度交易同时持有多头和空头 vega,因此需要监控 vega 风险:

vega 风险计算器

# 示例仓位
index_straddle_vega = 50  # 隐含波动率每变动 1%,价值变动 50 美元
component_straddles_vega = -45  # 卖出成分股产生的 vega 空头

net_vega = index_straddle_vega + component_straddles_vega  # +$5

# 若 VIX 上升 5%,盈亏影响 = net_vega * 5 = +25 美元
# 若 VIX 下跌 5%,盈亏影响 = -25 美元

print(f"Net Vega Exposure: ${net_vega}")
print("Risk: Small vega exposure is OK, but >$500 per contract = too much risk")

需要避开的常见错误

❌ 错误 #1:在危机来临时卖出离散度

示例: 2020 年 2 月,VIX = 15,离散度 = 3%。你卖出离散度(收取 theta)。到了 3 月:VIX 冲到 85,你亏掉 -80% 的本金。

解决办法: 只有当 VIX 低于 18 且离散度低于 3% 并持续 30 天以上时,才卖出离散度。一旦 VIX 高于 25 就立即离场。

❌ 错误 #2:不做 delta 对冲

示例: 你做多 SPX 跨式,做空 AAPL/MSFT 跨式。市场上涨 10%,你有 +5 万美元的 delta 敞口 → 在市场方向上亏钱。

解决办法: 每天对冲以保持 delta 中性。这是一笔波动率交易,不是方向性押注。

❌ 错误 #3:忽视交易成本

示例: 每月再对冲 20 次以上,每次付 0.05% → 每月成本 1%(每年拖累 12%)。

解决办法: 使用较宽的 delta 容忍区间(累积到 5,000-10,000 美元再对冲),交易流动性好的合约(用 SPX,不用 SPY 周期权)。

❌ 错误 #4:照着回测结果把仓位放太大

示例: 回测显示 18% 的年化复合增长率,于是你把组合的 40% 押上去。一个糟糕的月份就抹掉 15% 的本金。

解决办法: 最多配置 10-15%。把它当作分散工具,而不是核心策略。

❌ 错误 #5:交易流动性差的成分股

示例: 在 50 只不同的股票(包括小盘股)上卖出跨式。买卖价差意味着一进场就亏 2-5%。

解决办法: 只交易 SPX 前 10-20 大成分股(AAPL、MSFT、GOOGL 等)。流动性高意味着价差窄。

适合散户的落地方式

✅ 第 1 步:简化版离散度交易(入门)

用 ETF 期权代替指数期权:

  • 买入 SPY 跨式(代替 SPX)
  • 卖出 QQQ 跨式(纳斯达克,波动率高于 SPY)
  • 理由: QQQ 的特质性风险更大(科技股集中)→ 离散度更高

所需资金: 每组价差 2,000-5,000 美元

✅ 第 2 步:监控离散度(免费工具)

  • CBOE 离散度指数: DSPX(跟踪 SPX 离散度,在 CBOE 网站上免费查看)
  • 滚动相关性: 用 Python 计算(见上方代码)
  • VIX 与 VVIX 对比: 当 VVIX/VIX 高于 10 时,波动率的波动率偏高(有利于做多离散度)

✅ 第 3 步:从小仓位起步(配置 2-5%)

以 10 万美元的组合为例:

  • 拿出 3,000 美元做离散度交易
  • 每月交易 1-2 组价差
  • 跟踪盈亏、相关性,以及已实现波动率与隐含波动率的对比

✅ 第 4 步:先做模拟盘

使用 thinkorswim 或 TastyTrade 的模拟账户:

  • 用虚拟资金交易 3 个月
  • 确认夏普高于 0.7,最大回撤低于 20%
  • 实盘之前先搞懂希腊字母参数(vega、theta、gamma)

推荐券商

券商 最适合谁 核心特点
TastyTrade 以期权为主的交易者 佣金低(每张合约 1 美元),分析工具出色
Interactive Brokers 高阶交易者 可交易 SPX 期权,保证金利率最优
TD Ameritrade 新手 ThinkorSwim 平台(免费提供希腊字母参数和波动率分析)

最后的想法

离散度交易是 Citadel、Jane Street 和 Susquehanna 这些顶级期权交易台持续创造 alpha 的方式。这个策略利用的是指数波动率与成分股波动率之间的数学关系,在相关性失效时获利。

核心优势:

  • 市场中性: 做了 delta 对冲,没有方向性敞口
  • 危机对冲: 市场恐慌时,做多离散度可赚 +30-40%
  • 稳定收益: 平静市场中,做空离散度可收取 theta
  • 低相关性: 回报与股票和债券不相关

现实的预期:

  • 动态策略的年化复合增长率: 12-18%
  • 夏普比率: 1.0-1.3
  • 最大回撤: -15% 至 -25%
  • Win Rate: 60-65%

🎯 这个策略适合谁

最合适的人:

  • 熟悉希腊字母参数的期权交易者
  • 组合规模超过 5 万美元(价差和对冲都需要资金)
  • 有纪律的对冲者(必须每日或每周重新对冲 delta)
  • 愿意持续监控相关性和离散度指标

不适合: 新手、资金低于 2.5 万美元的账户、做方向的交易者

下一步:

  1. 用 Python 离散度计算器跑一遍当前市场
  2. 关注 CBOE DSPX 指数,建立历史参照
  3. 模拟盘交易 3 个月(ThinkorSwim 或 TastyTrade)
  4. 若夏普高于 0.8,从 2-5% 的配置起步
  5. 逐步加仓(最多占组合的 10-15%)