10、均值-方差优化在期权组合中的应用

聊到期权组合,很多人第一反应是「策略多、收益高」。但说实话,我见过太多人把期权组合做成了「赌大小」。你想想看,买几个虚值Call,再卖几个Put,方向对了赚翻,方向错了爆仓——这哪叫组合管理?这叫押注。

真正专业的做法,是用数学工具来平衡收益和风险。均值-方差优化,就是干这个的。它最早是Harry Markowitz在1952年提出的,用在股票组合上。但期权这东西,收益是非线性的,波动率是动态的,直接把股票那套搬过来用,会出问题。

我个人习惯,在做期权组合优化时,会把均值-方差框架做三处改造:收益用期权定价模型算期望、风险用希腊字母拆解、协方差矩阵用隐含波动率曲面校准。下面我一步步说清楚。

10.1 均值-方差优化的核心逻辑

先回顾一下基础。均值-方差优化的目标很简单:在给定风险水平下,最大化预期收益;或者在给定收益目标下,最小化风险

数学上,它求解的是:

最大化:μᵀw - λ · wᵀΣw

其中:
μ = 各资产的预期收益向量
w = 各资产的权重向量
Σ = 资产收益率的协方差矩阵
λ = 风险厌恶系数

嗯,这里要注意:λ越大,说明你越厌恶风险,组合会偏向低波动资产。我在项目中遇到过,有些交易员把λ设成0.5,结果组合里全是深度实值期权,波动是小了,但收益也几乎没了。这其实是个坑。

10.2 期权组合的特殊性

股票组合的收益近似正态分布,协方差矩阵相对稳定。但期权组合不一样:

  • 收益非线性:期权的Delta、Gamma会随标的价格变化,收益不是线性的
  • 波动率敏感:Vega暴露让你在波动率变化时承受额外风险
  • 时间衰减:Theta每天都在吃掉期权的时间价值

所以,直接把股票组合的均值-方差框架套用到期权上,结果会非常离谱。我曾经试过用历史收益率直接算期权组合的协方差矩阵,回测出来夏普比率高达3.0,但实盘一跑就崩了——因为历史数据里没有包含波动率突变的场景。

避坑指南:千万不要用期权历史价格直接算收益率协方差。期权价格受隐含波动率影响太大,历史数据无法反映未来波动率曲面的变化。我建议用希腊字母暴露来构建风险矩阵。

10.3 改造后的均值-方差框架

我个人习惯用以下三步来改造:

10.3.1 收益预测:用期权定价模型反推

期权的预期收益,不能简单用历史均值。我一般用Black-Scholes模型或者局部波动率模型,结合当前隐含波动率曲面,计算每个期权在持有期内的期望收益。

# 伪代码示例:计算单个期权的预期收益
def expected_option_return(option, S, T, r, sigma_surface):
    # 用当前隐含波动率计算理论价格
    current_price = black_scholes(option, S, T, r, sigma_surface)
    
    # 模拟标的价格路径,计算持有期结束时的期望价格
    expected_future_price = monte_carlo_simulation(option, S, T, r, sigma_surface)
    
    # 预期收益 = (期望价格 - 当前价格) / 当前价格
    return (expected_future_price - current_price) / current_price

这里有个细节:sigma_surface要用当前市场的隐含波动率曲面,而不是历史波动率。因为期权定价看的是市场对未来波动率的预期,不是过去。

10.3.2 风险度量:用希腊字母构建协方差矩阵

与其用价格收益率,不如用希腊字母暴露来度量风险。我通常构建一个因子暴露矩阵

期权 Delta暴露 Gamma暴露 Vega暴露 Theta暴露
Call 1 0.65 0.02 0.15 -0.03
Put 2 -0.40 0.01 0.12 -0.02
Call 3 0.80 0.03 0.18 -0.04

然后,用这些因子暴露乘以因子收益率的协方差矩阵,得到期权组合的风险矩阵。这样做的好处是:你可以单独控制每个风险因子的暴露。比如你想做Delta中性,就把Delta暴露设成0。

10.3.3 优化求解:带约束的二次规划

有了预期收益向量μ和风险矩阵Σ,剩下的就是求解二次规划问题。但期权组合通常有额外约束:

  • 保证金约束:期权交易需要保证金,不能无限加杠杆
  • 希腊字母约束:比如Delta中性、Gamma中性
  • 持仓限制:单个期权持仓不能超过总资金的20%
from scipy.optimize import minimize

def optimize_option_portfolio(mu, Sigma, max_leverage=2.0):
    n = len(mu)
    
    # 目标函数:最大化收益 - 风险惩罚
    def objective(w):
        return -(mu @ w - 0.5 * w @ Sigma @ w)
    
    # 约束条件
    constraints = [
        {'type': 'eq', 'fun': lambda w: np.sum(w) - 1},  # 满仓
        {'type': 'ineq', 'fun': lambda w: max_leverage - np.sum(np.abs(w))}  # 杠杆限制
    ]
    
    # 边界:每个期权权重在-1到1之间
    bounds = [(-1, 1) for _ in range(n)]
    
    result = minimize(objective, x0=np.ones(n)/n, 
                      bounds=bounds, constraints=constraints)
    return result.x
个人经验:我建议在优化时加入一个「尾部风险约束」。比如限制组合在标的价格下跌20%时的最大亏损不超过10%。这可以通过压力测试来实现,而不是单纯依赖协方差矩阵。

10.4 实战案例:构建一个Delta中性的波动率套利组合

说个我实际做过的案例。当时市场隐含波动率偏高,我想构建一个做空波动率、Delta中性的组合。

步骤是这样的:

  1. 选期权:选择近月平值Call和Put各5个,共10个期权
  2. 算收益:用当前隐含波动率曲面,计算每个期权在持有期内的期望收益(假设波动率回归均值)
  3. 建风险矩阵:用Delta、Gamma、Vega、Theta四个因子构建协方差矩阵
  4. 加约束:Delta暴露=0,Vega暴露<0(做空波动率),保证金不超过总资金
  5. 求解:用二次规划求出最优权重

结果出来,组合的权重分布很有意思:卖Call和卖Put各占40%,再买一些远月的期权来对冲Gamma风险。这个组合在波动率下降时赚了钱,而且Delta始终保持在0附近。

核心要点:均值-方差优化在期权组合中的关键,不是数学公式本身,而是如何定义「收益」和「风险」。用希腊字母暴露来度量风险,用期权定价模型来预测收益,这才是实战中能用的方法。

10.5 知识体系总览

下面这张图,我把本章的核心逻辑画出来了。你看一眼就能明白整个框架:

均值-方差优化在期权组合中的应用 期权定价模型 预期收益向量 μ 希腊字母暴露 风险因子矩阵 隐含波动率曲面 协方差矩阵 Σ 二次规划求解器 最大化 μᵀw - λ · wᵀΣw 带约束:Delta中性、保证金限制等 最优期权组合权重 w* 每个期权的持仓比例 回测验证 & 压力测试

这张图把整个流程串起来了:输入是期权定价模型、希腊字母暴露、隐含波动率曲面;中间是带约束的二次规划求解;输出是最优权重;最后还要做回测验证。每一步都不能少。

10.6 常见问题与避坑

最后,我总结几个实战中容易踩的坑:

  • 协方差矩阵不稳定:期权市场的波动率结构变化很快,建议用滚动窗口(比如60天)重新估计协方差矩阵
  • 忽略交易成本:期权买卖价差大,频繁调仓会吃掉收益。我一般会在优化中加入一个「调仓成本惩罚项」
  • 过度依赖历史数据:期权组合的尾部风险远大于正态分布假设。建议用蒙特卡洛模拟做压力测试
我曾经犯过的错:有一次优化出来的组合,权重集中在几个深度虚值期权上。回测收益很高,但实盘遇到一次波动率飙升,组合直接亏了30%。后来我才意识到,均值-方差优化对输入参数非常敏感,尤其是预期收益的估计。从那以后,我每次都会做敏感性分析,看看参数变化10%时,最优权重会怎么变。

好了,均值-方差优化在期权组合中的应用,说白了就是用数学工具帮你做决策,而不是凭感觉。但记住,工具只是工具,市场永远比模型复杂。保持敬畏,持续验证,才是长期盈利的关键。


公众号:蓝海资料掘金营,微信deep3321