找回密码
立即注册
搜索
热搜: Java Python Linux Go
发回帖 发新帖

4964

积分

0

好友

665

主题
发表于 昨天 19:16 | 查看: 7| 回复: 0

不少期权做市策略都有这样的遭遇:回测跑得不错,实盘第一天就被连续吃单。

为了那条漂亮的收益曲线,你可能已经对波动率曲面做了精细校准,库存惩罚参数也反复调试过。可某个深度虚值合约的几笔市价单一出现,整个系统还是被打穿了。

试过把惩罚系数调高,报价立刻失去竞争力;调低一点,换个合约同样的情况又出现。问题到底出在哪里?或许不全是参数的问题。

根源在于市场博弈中几个容易被低估的基本特征。

描述期权回测与实盘差异的示意图

报价为何被利用?

第一个容易被忽略的特征,隐藏在回测的假设里。大多数回测都假设订单流的到达是随机的。每个时间点报出买卖价,散户订单按某个概率成交,定价准、库存管得好就能赚价差。

但实盘不是这样,报价并不是被所有交易者平等对待。

如果我们把买价报得比理论价略低,知情交易者会立刻买走;把卖价报得比理论价略高,他们不会卖给你。结果,真正成交的单子大多是知情交易者主动吃掉的“坏交易”,而散户的“好交易”因为报价不够有吸引力而流向别处。这是做市策略绕不开的逆向选择。Glosten 和 Milgrom 在1985年就证明过:

只要市场里有知情交易者,做市商的报价就天然带着逆向选择成本。

在股票做市中,这个成本可以近似成一个固定的价差。股票只有一个价格维度,知情交易者的信息优势是线性的——知道价格要涨就买,要跌就卖。期权则复杂得多。知情交易者的信息可能是关于标的资产的方向,也可能是关于波动率的变化。方向性信息会集中在平值附近的看涨或看跌期权上;而波动率信息则表现为同时买入多个虚值看涨和看跌期权(做多波动率)。

为什么虚值合约更容易被知情交易者盯上?因为杠杆。虚值合约的权利金低,同样的标的价格变动带来的百分比收益更高。知情交易者用同样的资金,在虚值合约上能撬动更大的收益。实践中能观察到,深度虚值合约的逆向选择成本可能是平值合约的数倍。然而,回测中我们常常假设每个合约的成交概率大致相同,或者与流动性成正比。但实盘里,真正促成成交的往往是那些我们报价偏低的合约,也就是最不该成交的那些。

换句话说,回测利润中相当一部分其实来自于“永远不会被对手选中的报价”。一旦上了实盘,这部分利润就消失了。

描述报价杠杆效应的示意图

库存的高维麻烦

外部攻击只是问题的一部分。但即使没有对手主动选择我们,我们自己内部的库存管理也面临巨大的维度困境。

期货和股票的库存是一维的。持有多少多头或空头,直接决定了价格风险。一种常见的做法是用线性惩罚项来管理库存,报价 = 理论价 - k × 持仓量,其中k是库存惩罚系数。在股票和期货做市中,这种方式常被采用。

但期权的库存远不止一两个数字。需要管理的风险是希腊字母:Delta、Gamma、Vega、Theta,以及次要的 Rho。这些因子构成一个向量,且彼此之间并不独立。

具体来说,假设持有一些平值看涨期权,每张期权具有正的 Delta、Gamma 和 Vega。当标的价格小幅上涨时,每张期权的 Delta 会因 Gamma 作用而略微增加,导致组合的总 Delta 微升,需要对冲这一微小变动,从而产生交易成本。同时,由于杠杆效应,隐含波动率通常与标的价格负相关——标的价格上涨往往伴随波动率的温和下降,此时 Vega 敞口会使期权价值遭受一定的损失。这样一来,标的价格的单一变动会通过 Delta、Gamma 和 Vega 等多个希腊字母同时影响期权组合。

当我们持有多个不同行权价、不同到期日的合约时,总 Gamma 不是简单相加。每个合约的 Gamma 依赖于标的价格和波动率,不同合约的希腊字母通过同一个标的和波动率曲面耦合。比如平值看涨和虚值看跌,Delta 一正一负,但 Gamma 可能都是正的(因为 Gamma 在平值附近最大),总 Gamma 可能比直觉估计的要大。

这种高维非线性使得线性库存惩罚在期权里几乎失效。连续时间做市模型表明,最优报价满足一个复杂的偏微分方程(HJB 方程),状态空间包括标的价格、波动率、库存向量。当合约数量超过几个时,这类方程已经无法解析求解。原因在于,状态空间维度每增加一维,计算量就会指数增长——这就是所谓的维数灾难。这种情况下,实时在线求解更是不可能。因此,任何试图把期权库存简化成一维的做法,在大多数情况下都会留下被对手利用的漏洞。

描述高维库存耦合的拓扑示意图

订单簿的曲面耦合

库存是内部风险状态,订单簿是观察外界的窗口。股票里只需要盯一个不平衡指标,而期权里每个行权价、每个到期日都有自己的订单簿,构成一张曲面。

不同合约的订单簿相互关联。知情交易者做多波动率时,会同时买入多个虚值看涨和看跌期权,导致这些合约的买压同时增大。用 $b_i$ 表示每个合约的局部不平衡(也就是,主动买量与主动卖量之差除以买卖深度总和)。这些 $b_i$ 同时为正,并且沿着行权价轴呈现出某种模式。做市商的最优报价调整量,通常与各合约订单簿不平衡的加权和存在关联,权重反映各合约对流动性的吸收能力。这意味着我们不能孤立地看单个合约,必须考虑整个曲面的联合状态。

库存和订单簿之间会相互影响。具体来说:

  • 做市商的库存水平会影响报价: 当某一合约的持仓越集中,做市商越倾向于通过调整价格来吸引反向交易,以平衡库存。
  • 订单簿本身也会影响报价: 当观察到订单流出现不平衡压力时,做市商会主动拉宽买卖价差,以规避信息优势交易者的“毒单”风险。

这两种机制各自独立作用,但在实盘中同时存在。因此,对买价而言,报价策略可以看作是在理论价格的基础上,减去库存项的调整,再减去订单簿不平衡项的调整;而卖价则相应加上这两项调整。

描述期权订单簿曲面耦合的示意图

理想情况下,每份合约的报价只取决于自身合约的库存和订单簿状况,互不干扰。但在实际市场中,不同合约之间存在不可忽略的交叉影响。例如,平值期权的库存会通过 Gamma 效应影响虚值期权的风险暴露,对手盘一旦探测到这种关联,可能会故意交易虚值合约,间接攻击做市商在平值合约上的脆弱部位。回测时我们常常假设各合约独立、调整系数固定不变,忽略了这种跨合约的连锁反应。而实盘中,这些调整系数是随时间变化的,且合约之间相互牵连,对手方甚至还会主动学习做市商的模型结构并加以利用。

以上这些都解释了为什么回测表现很好的策略,实盘却可能难以盈利。面对这种高维耦合,一个自然的念头是:能不能用 深度强化学习 之类的方法,让模型自己学会最优报价?

边界与妥协

深度强化学习听起来是个不错的思路。但在多合约场景下,它的样本复杂度极高,实盘中很难落地。而且,定价精度和反应速度之间存在一个绕不开的权衡。模型越精确(比如用随机局部波动率拟合曲面),计算时间就越长,延迟也就越大;响应要快,就只能用更简单的模型(比如 BS 线性插值),精度自然下降。虽然没有严格的理论证明期权做市存在一个不可突破的乘积下界,但从实盘经验看,同时追求两者往往两头落空。

现实中能够在市场立足的期权做市策略大致分两类:

  • 放弃定价精度,只做流动性最好的主力合约,把延迟压到微秒级,靠做市返佣和极薄价差盈利。
  • 放弃速度,专注复杂定价模型,只在自己有优势的领域做市,愿意承受被高频对手抢先的风险。

而试图在所有合约上同时追求高精度、强风控、快速度,几乎很难实现。

那我们还能做些什么?

描述在精度与速度间权衡的天平示意图

1. 用报价区间代替点估计

常见做法是必须给出精确的理论价,然后围绕它加减价差。但如果定价模型本身就有不确定性(高维曲面下这是必然的),为什么不把这种不确定性显式表达出来?

对此,可以估计一个定价区间,使真实理论价有较高概率落在里面。报价时,买价取区间的下界减去一个与净 Delta 绝对值成正比的库存惩罚项,卖价取区间的上界加上同样的库存惩罚项。这样,定价误差被区间吸收,我们只需要管理一维的库存风险(净 Delta 的绝对值),而不需要面对高维库存向量。

那我们该如何构造这个区间?可以考虑:

  • 集成模型加分位数回归: 同时运行多个定价模型(如 BS、SABR、一个简单的神经网络),把它们的预测值以及当前市场状态作为特征,用分位数回归学习出低分位数(比如 $\tau=0.1$)和高分位数(比如 $\tau=0.9$)。
  • 共形预测: 使用一个点预测模型,保留最近一小部分历史数据作为校准集,根据残差分布来构建区间。

这种用报价区间代替点估计的做法需要足够的历史数据,流动性极差的合约可能不适用——那些合约可以直接用固定宽价差。

实践中,这种做法能显著降低被攻击的概率,主要是因为对手盘很难在一个区间里找到精确的套利点。

描述利用价格区间进行报价的示意图

2. 期权版的订单流毒性检测

股票上经典的 VPIN(成交量合成订单流不平衡)能有效检测知情交易。而期权需要监测多个合约的联动不平衡。

具体来说,我们可以先选一个主力到期日,以及流动性最好的若干个行权价(比如平值上下各五档)。对每个合约,计算局部不平衡指标——主动买量与主动卖量之差除以买卖深度的总和。然后,沿着行权价轴,计算相邻合约之间该指标的差值(梯度)和二阶差分(曲率)。最终构造一个毒性指标,取以下两者中的较大值:所有梯度绝对值中的最大值(但要求所有梯度符号一致),以及所有曲率绝对值中的最大值。

直觉上,如果多个相邻合约同时出现同向的不平衡压力(比如都在被买入),并且这种不平衡沿着行权价方向呈现出一致的趋势(梯度同号),那么很可能是有人在交易波动率方向。此时应该拉宽价差,以保护自己的库存。

需要注意的是,流动性差的合约上,局部不平衡指标波动极大,一笔零星成交就能让它剧烈跳动,梯度计算很容易被虚假信号带偏。对此,处理方式可以有:

  • 先对每个合约的该指标做指数加权移动平均(半衰期设为几秒到几十秒),过滤掉瞬时噪声。
  • 只计算那些在过去一段时间内成交量达到一定阈值的合约的梯度。只有经过平滑和筛选后的信号才可靠。

阈值需要根据品种校准。比如,可以先试试这样的阈值:当毒性指标超过过去一小时中位数的两倍时,就触发保护——将价差放大到正常水平的二到三倍,并撤掉被动单;等到指标回落到中位数的 $1.5$ 倍以下再恢复。经验上,该指标能在波动率套利流攻击之前提前识别出来,具体提前量因市场环境而异。

描述期权订单流毒性梯度计算的示意图

3. 极端市场降级策略

当遇到流动性枯竭、波动率尖峰或交易所风控触发时,如果仅靠前面的方法可能还不够。我们可以设置一些保护机制,比如:

  • 价差保护: 当毒性指标超过正常值的三倍,或者波动率指数(如 VIX)单日涨幅超过 $20\%$ 时,将所有合约的价差固定放大到正常水平的三到五倍,暂停主动撤单策略。
  • 被动模式: 当连续多次被吃单,并且净 Delta 绝对值超过某个阈值(如总风险限额的一半)时,撤掉所有主动报价,只保留最优价上的被动限价单。也就是,只做流动性接收者,不再主动提供流动性。
  • 熔断暂停: 出现交易所级别的风控事件(如指数熔断、期权合约暂停交易)或自身亏损超过日限额时,可以完全停止报价,发送警报,交给人工介入处理。

这些规则应写入风控模块,且优先级要高于策略引擎。回测时我们要模拟一些极端场景来验证降级逻辑的有效性。

描述极端市场行情波动形态的示意图

最后

期权做市自动化,常被认为是建立波动率预测模型。但实际上它更接近设计一个在信息不对称和高维约束下能存活的博弈策略。市场总会暴露模型中的漏洞,而且是反复。

参数优化解决不了结构性问题。如果只盯着调参,忽略对手,漏洞就躲不掉。

而逆向选择是内生的,高维耦合没有封闭解,精度与速度不能两全。我们要承认这些,然后做几个工程妥协,给极端市场备一套降级方案。

下次回测曲线理想的时候,或许还可以思考:

定价区间在概率上是否覆盖了真实价值的绝大部分?——而不是点估计有多准。
极端行情下,系统会自动降级,还是会直接崩溃?

如果两个答案都是肯定的,实盘可以接受。否则,回测的那条曲线可能并不可靠。

以上是关于期权做市策略从回测到实盘所遇挑战的一些思考,更多关于量化交易与技术实现的深度讨论,欢迎到 云栈社区 交流探讨。




上一篇:视觉设计解析:2026上海国际花卉节的全城花艺装置与创意IP
下一篇:ITIL4实战指南:数据中心运维全景视图构建与落地实践
您需要登录后才可以回帖 登录 | 立即注册

手机版|小黑屋|网站地图|云栈社区 ( 苏ICP备2022046150号-2 )

GMT+8, 2026-4-19 02:42 , Processed in 0.614684 second(s), 41 queries , Gzip On.

Powered by Discuz! X3.5

© 2025-2026 云栈社区.

快速回复 返回顶部 返回列表