第 11 章 订单预期者
对应 Harris《Trading and Exchanges》第 11 章 Order Anticipators。前面几章讨论的知情交易者靠"东西值多少钱"的信息赚钱;本章的主角靠的是"别人要做什么交易"的信息。他们不给市场带来新的价值信息,也不提供流动性,只是在别人的交易冲击价格之前先下手。量化交易者要了解他们,主要不是为了模仿,而是为了在执行大单、挂限价单、设止损、做空小盘股时不被他们吃掉。
学习目标
读完本章,你应当能够:
- 说出订单预期者(order anticipators)的三种类型:抢跑者、情绪导向技术交易者、挤压者,以及它们各自依赖的信息。
- 解释抢跑激进交易者为什么会拿走大交易者的价格歧视收益,用 Stuart 的数值例算出被抢跑前后的平均成交价。
- 用期权语言刻画报价匹配(quote matching / penny jumping):股票多头 + 被抢跑限价单隐含的看跌期权 = 合成看涨期权;说明最小报价单位(tick)为什么是插队的价格。
- 区分合法的观察推断与违法的抢跑、逼空、猎杀止损,知道监管为什么难以取证。
- 把本章结论落到执行算法与风控上:拆单与随机化、止损单设置、做空小流通盘股票的逼空风险、tick 制度对排队策略的影响。
读前导读
**这一章在解决什么问题。**第 10 章的知情交易者靠“资产值多少钱”的信息赚钱;本章的订单预期者靠“别人马上要做什么交易”的信息赚钱。前者在做研究,后者在“看牌”。你在 CFA 道德准则里学过的“优先顺序”标准(客户交易优先于本人交易,不得抢先交易)和“重大非公开信息”标准,禁止的就是本章最典型的一类行为;本章讲的是这类行为的经济机制:钱从谁那里来、为什么会让市场变差、以及合法的“观察推断”与违法的“抢跑”边界在哪。
对量化交易者,本章主要是防守手册。你的 VWAP 拆单、挂在盘口的限价单、设在整数关口的止损单、做空的小盘股,都是订单预期者的猎物。
**需要先想起来的数学。**本章数学很少,只有期权收益和期望值:
- 期权到期收益:看涨期权 \((S_T-K)^+\),看跌期权 \((K-S_T)^+\),其中 \(x^+=\max(x,0)\)。看跌–看涨平价 \(S+P=C+K e^{-rT}\) 的直观是“股票加保护性看跌 = 看涨加债券”,两边到期收益都是 \(\max(S_T,K)\)。本章用它说明报价匹配者的头寸像一张看涨期权。
- 期望值与鞅:“价值是鞅”指未来价值的期望等于当前价值(见第 10 章)。由此有一个常用结论:只要你的离场规则不偷看未来,按鞅的价值买卖,期望盈亏为零(“可选停时定理”的白话版)。所以任何正期望利润都必须来自别人。见 第 00 册第 07 章 概率中的分析工具。
- Gamma:期权价格对标的价格的二阶导数,衡量 Delta 随标的变化的速度。动态对冲者每当标的变动就要按 Gamma 调整仓位,这是 11.3 节“动态期权复制”可以被预测的原因。二阶导数与泰勒展开见 第 00 册第 02 章 导数与泰勒展开。
**怎么读这一章。**11.2 的抢跑者(尤其 11.2.3 报价匹配和 11.2.4 tick size)是核心,期权视角那段值得逐字读。11.3 情绪导向技术交易者和 11.4 挤压者以案例为主,可以较快读完,但要记住“难估值品种”和“卖空者要提防逼空”两个结论。11.5 猎杀止损很短,读完后直接对照量化实战第 5 条检查自己的止损设置。代码段可以先看输出表和下面的四点解读。
11.1 订单预期者是谁
订单预期者是一类投机者:他们试图赶在其他交易者之前交易,在正确预测他人交易对价格的冲击、或者从他人挂出的订单里提取期权价值时获利。按照他们对别人交易了解多少,可以分成三类:
| 类型 | 掌握的信息 | 例子 |
|---|---|---|
| 抢跑者(front runners) | 别人已经决定、已提交或即将提交的订单 | 从经纪人处得知大额买单;在大额限价单前挂一档 |
| 情绪导向技术交易者(sentiment-oriented technical traders) | 预测不知情交易者将会决定做的交易 | 预测年终奖、养老金缴款带来的买盘;预测期权动态对冲的买卖 |
| 挤压者(squeezers) | 别人不得不做的交易 | 囤积可交割现货逼空期货空头;轧空借券卖空者 |
Harris 把他们统称为寄生型交易者(parasitic traders):只有在捕食他人时才能获利。他们通常不让价格更有信息含量,也不让市场更流动。原书给了几条理由说明为什么必须了解他们:
- 大交易者最容易被他们伤害。要理解大交易者应该如何暴露订单,就必须先理解这些人如何利用暴露出来的订单。
- 有些抢跑者的信息来自经纪商。和经纪商打交道、当经纪商或监管经纪商的人,都得知道订单会在哪些环节被有意或无意地泄露。
- 订单预期者的交易经常让价格更波动、市场更无效率。
- 不知情交易者有时会显著推动价格。即使事前无法预测,事后识别出"刚才是谁在推价格"也有助于理解自己的策略为何成败。
- 在执行时间优先(time precedence)的市场里,订单预期者至少要改善一个最小价格变动单位才能排到别人前面,所以 tick size 直接决定其策略能否赚钱。要对"合理的最小报价单位"形成判断,就得懂这些策略。
11.2 抢跑者
抢跑者收集他人已经决定安排的交易的信息,并设法在对方完成交易之前交易。"front runner"的字面意思就是"跑到别人前面"。按照被抢跑的对象,可以分为抢跑激进交易者(aggressive traders,需求流动性,通常用市价单)和抢跑被动交易者(passive traders,提供流动性,通常用限价单)。
11.2.1 合法与违法的界限
先把法律边界说清楚,因为本章后面的很多策略都处在灰色地带。
违法的抢跑:在多数市场,如果抢跑者是不当获取了即将到来的订单信息,抢跑就是违法的。典型情形是违反保密的经纪关系,或者窃听保密通信。泄露可能发生在经纪商接单到最终执行之间的任何环节。原书的边栏讲了一个案例:期货交易所的场内跑单员 Rob 和在交易池为自己交易的 Nate 约定了一套暗号(看钟、用哪只手拿单、笔插在口袋还是耳后,并经常更换),Rob 用暗号告诉 Nate 自己拿着大额买单还是卖单。Nate 抢先买入,等 Rob 的经纪人把价格推高后获利,有时还把刚买的合约卖给这个经纪人,事后两人分钱。利润来自经纪商的客户:客户买得更贵、卖得更便宜,因为 Nate 拿走了本应属于他们的流动性。后来交易所的无线电子订单递送系统取消了场内跑单员,这个环节的舞弊才随之消失。
合法的观察推断:交易大厅里善于观察的交易者,常能从经纪人处理订单的方式推断出订单的存在。原书的 Rifka 和 Jon 是例子:Rifka 为自己交易,Jon 是大公司的场内经纪人。Rifka 发现 Jon 拿到大单和小单时的行为有极细微的差别,她自己都说不清差在哪里;她还注意到 Jon 买过之后往往还会再买,卖过之后往往还会再卖,说明他的某个客户在拆分大单。她据此抢先下单,或者等 Jon 暴露方向后改善他的价格,期待他的客户回来时获利。她的交易是合法的:利润来自识别 Jon 作为经纪人的破绽和他客户的拆单模式,靠的是观察力和反应速度,而不是窃取保密信息。
经纪人为安排大额交易而打电话询价时也会暴露订单,这叫兜售大宗(shop the block)。广泛兜售大宗买单时价格倾向上涨,兜售卖单时倾向下跌。抢跑者可以合法地利用这些信息,代价是损害与这些经纪人的关系。所以经纪人只应向最可能接对手盘的人展示订单。
现状补充:美国 FINRA 现行规则中,Rule 5270 专门禁止会员在掌握即将发生的大宗交易这类重大非公开信息时抢先交易,Rule 5320 禁止经纪商在持有客户订单时以同等或更优价格为自营账户抢先成交。中国《刑法》第 180 条第 4 款规定的"利用未公开信息交易罪"(俗称"老鼠仓"),针对的是基金、券商等机构从业人员利用职务便利获知的未公开信息、先于或同步于所在机构交易,本质上就是对自家机构订单的抢跑。
11.2.2 抢跑激进交易者:拿走价格歧视收益
激进交易者通常发市价单,买时推高价格、卖时压低价格。抢跑者在他们之前交易,从他们的价格冲击中获利。
更深一层的机制与第 06 章讲的价格歧视有关。在连续竞价市场里,大交易者通常拆单:先和报价最好的人成交,必要时再和报价较差的人成交。这样平均成交价优于整单一次按最差价格成交。抢跑者的做法是先从报价最好的人那里拿走流动性,再以较差的价格卖回给大交易者。成功抢跑的效果,是迫使大交易者支付一个更统一(也就是更差)的价格。
白话解释:“价格歧视”在这里是指大交易者对不同的流动性提供者“分别出价”:对愿意在 100.00 卖的人只付 100.00,对只肯在 100.40 卖的人才付 100.40,而不是对所有人统一付最高价。这和经济学里垄断厂商对不同顾客收不同价格是同一个词,只是方向反过来(这里是买方对卖方分档付价)。抢跑者把便宜的那几档先买走,大交易者面对的就只剩一个统一的高价。差价(统一价减去分档平均价)就从大交易者口袋转到了抢跑者口袋。
例 11.1(Stuart 被抢跑):Stuart 要买 15 万股一只流动性一般的股票。
- 若无人干扰,他可以在 100.00 买 3 万股,然后在 100.10、100.20、100.30、100.40 各买 3 万股,平均价 \((100.00+100.10+100.20+100.30+100.40)/5 = 100.20\),明显好于整单按 100.40 成交。
- 如果出现一个比 Stuart 更会找流动性的抢跑者,在 100.00、100.10、100.20 各找到 5 万股(平均 100.10),再以 100.20 整批卖给 Stuart,Stuart 的成本不变。若抢跑者替他省了搜寻成本,他甚至可能更喜欢被抢跑;谈判得好,还可能把价格从 100.20 压向 100.10。
- 但如果抢跑者有市场势力,可能反过来挤压 Stuart,让他必须付 100.40 以上才能成交。
这个例子说明,抢跑者只有在非常有限的条件下才对大交易者有益:他比大交易者更会找流动性、多个抢跑者之间不互相竞争抢建同一头寸、建仓后不挤压被抢跑者。这些条件很少同时成立。现实中通常的情况是:许多相互竞争的抢跑者一起抢建同一头寸,造成的价格冲击远大于一个有策略的交易者自己慢慢做的冲击;而且抢跑者往往交易太快,效率低于大交易者本人。
认识到自己交易能力不如专业人士的大交易者,会雇用大宗经纪人做代理,或请大宗交易商协助:后者按统一价格接下客户的整笔大单,再设法以更好的平均价格在市场中分批卖出,赚取差价。Harris 的说法很形象:大宗交易商就是大交易者雇来替自己解决交易问题的抢跑者(第 15 章详述)。真心相信抢跑对自己有利的大交易者,应当以可信的方式把订单广泛公告出去,也就是做阳光交易者(sunshine trader,第 15 章)。
11.2.3 抢跑被动交易者:报价匹配
被动交易者向市场提供流动性,相当于给别人一个"想交易时就能交易"的期权,通常以限价单或报价的形式出现。抢跑被动交易者的人试图提取这个期权的价值,经济学家称之为报价匹配者(quote matchers)。在美国股市小数化之后,这种做法也叫跳一分钱(penny jumping)。
做法:在一张大额耐心限价单的前面、同一方向挂单。例如别人挂了 20.00 的大额买单,报价匹配者就挂 20.01 的买单。一旦自己成交,被抢跑的那张大单就成了他的保险:
- 价格上涨,他充分获利;
- 价格下跌,他把股票卖给那张 20.00 的买单,只亏一个 tick。
期权视角:这种收益一边无界、一边有限。在大额限价买单前面买入的报价匹配者,持有的是"股票多头 + 该买单隐含的看跌期权"。由看跌-看涨平价的直觉,
对称地,在大额卖单前面卖出的人持有"股票空头 + 卖单隐含的看涨期权",收益形状等同于看跌期权。
推导拆解:把 Maria 的盈亏写成一个式子,期权结构就一目了然。设她在 \(B+\text{tick}\) 买入,Jose 的买单在 \(B\) 一直不撤,期末价值为 \(S_T\)。 第一步,她的离场价是“市场价值和 Jose 出价中较高的那个”:\(\max(S_T,B)\)(价值高于 \(B\) 就按市场卖,低于 \(B\) 就卖给 Jose)。 第二步,盈亏 \(=\max(S_T,B)-(B+\text{tick})\)。 第三步,用恒等式 \(\max(S_T,B)=B+(S_T-B)^+\) 改写:盈亏 \(=(S_T-B)^+-\text{tick}\)。 这正是“花 tick 的权利金,买入一张执行价为 \(B\) 的看涨期权”。所以 tick 不仅是插队的价格,也是这张期权的权利金。 第四步,验证例 11.2:\(S_T=B+\text{tick}\pm\Delta\) 各占一半,\(\Delta>\text{tick}\)。上涨时 \((S_T-B)^+=\text{tick}+\Delta\),下跌时为 0,期望 \(=\tfrac12(\text{tick}+\Delta)-\text{tick}=\tfrac12\Delta-\tfrac12\text{tick}\),与正文一致。 期权价值随波动率上升而上升,所以报价匹配在波动大、tick 相对小的股票上最划算。
例 11.2(Maria 抢跑 Jose):Jose 挂了 20 比索的大额限价买单,Maria 立即挂 20.01 的买单,随后一张市价卖单与 Maria 成交。设此后价格以各 \(1/2\) 的概率上涨或下跌 \(\Delta\)(\(\Delta\) 大于一个 tick)。上涨时 Maria 赚 \(\Delta\);下跌时她以 20 卖给 Jose,只亏 0.01。若 Jose 不撤单,期望利润约为
钱从哪里来:报价匹配者的利润来自被动交易者。他拿走了本属于 Jose 的成交机会;价格上涨时,Jose 的单子没成交,失去了本该由他赚的那部分利润;价格下跌时,Jose 以 20 买到的股票其实已经不值 20。本章"量化实战"的模拟会显示,在价值为鞅的假设下,报价匹配者的期望盈利恰好等于被抢跑者的期望损失。
推导拆解:为什么正好相等(练习 6 的思路)。设 Maria 买入时价值 \(V_0=B+\text{tick}\),她按某个规则在时刻 \(\tau\) 离场(\(\tau\) 只依赖到当时为止的信息,不偷看未来)。 第一步,如果她离场时都按当时价值 \(V_\tau\) 成交,盈亏是 \(V_\tau-V_0\)。价值是鞅,按“可选停时定理”(鞅在一个不偷看未来的时刻停下来,期望值仍等于起点值),\(E[V_\tau]=V_0\),期望盈亏为零。 第二步,实际上,在“价值跌破 \(B\) 且 Jose 还在”的路径上,她按 \(B\) 而不是 \(V_\tau\) 卖出,多拿了 \(B-V_\tau>0\)。 第三步,所以她的期望盈亏 \(=0+E\big[(B-V_\tau)\cdot\mathbf 1\{\text{卖给 Jose}\}\big]\)(\(\mathbf 1\{\cdot\}\) 是示性函数,事件发生取 1,否则取 0)。 第四步,这一项恰好是 Jose 以 \(B\) 买到价值 \(V_\tau\) 的股票所承受的损失。两者逐路径相等,期望当然也相等。 结论:报价匹配者没有创造任何价值,他的全部期望利润都是从那张“不随价值调整的挂单”上转移过来的。
何时不赚钱:
- 被抢跑的挂单不在了。如果 Jose 撤单、频繁根据价值调整订单、或订单被别人成交,Maria 在价格下跌时就没有退路。所以报价匹配者必须比被抢跑者更快,需要极好的市场接入:场内市场中多为场内交易者,屏幕市场中多为计算机交易者。
- 必须大幅改善价格才能插到前面。改善价格本身是交易成本:策略成功时减少利润,失败时扩大损失。
例 11.3(诱捕报价匹配者):Jose 知道有人常抢跑他,于是在怀疑被抢跑时撤单。有时他还设陷阱:本来想卖出,却先挂一张大额限价买单作诱饵;一旦有报价匹配者在前面挂买单,他就立刻把股票卖给对方,同时撤掉自己的诱饵买单。报价匹配者于是接手了 Jose 的卖出问题,而他赖以保护自己的"买方"已经消失。
法律提示:原书把这种做法当作被动交易者的防御技巧来描述。按今天的规则,挂出无意成交的订单来诱导他人交易、随后撤单,可能构成幌骗(spoofing)。美国 2010 年的《多德-弗兰克法案》在《商品交易法》中明文禁止期货市场的幌骗行为;中国《证券法》(2019 年修订)第 55 条把"不以成交为目的,频繁或者大量申报并撤销申报"列为操纵行为。算法交易系统不能实现这类"诱饵单"逻辑。
11.2.4 tick size:插队的价格
在执行时间优先的市场中,报价匹配者必须至少改善一个 tick 才能排到别人前面。因此,最小报价单位就是报价匹配者为抢跑被动交易者而付出的价格。tick 越大,报价匹配越不划算。
金融直觉:比较 tick 要看“相对 tick”,即 tick 除以股价。A 股一只 2 元的股票,0.01 元的 tick 相当于 50 个基点,插队一次的成本已经接近很多策略一笔交易的全部预期收益,排在队首的位置非常值钱;一只 200 元的股票,同样 0.01 元只有 0.5 个基点,插队几乎免费。所以同一个市场里,低价股的盘口往往排着很厚的队、价差常常是一个 tick;高价股的盘口则不断被一分一分地改善。
一个容易忽略的细节是:这个价格并不是付给被抢跑的被动交易者,而是付给与报价匹配者成交的对手方。这些对手方本来会和被动交易者成交,报价匹配者必须付出溢价,才能阻止他们"行使"被动交易者提供的那份交易期权。
这一点直接关系到市场设计:时间优先规则只有在 tick 足够大时才真正保护先挂单的流动性提供者(本章小结会再提到)。但 tick 太大又会让价差被人为撑宽,增加所有市价单交易者的成本。原书思考题 4、5 讨论的就是这个权衡。
被动交易者的防御办法包括:通过场内经纪人隐藏订单、拆分订单、从限价单策略改为市价单策略。代价是他们自己的交易成本上升,市场上展示的数量减少,透明度下降。
现状补充:美国股市 2001 年完成小数化,报价单位从 1/16 美元降到 1 美分;2005 年通过的 Reg NMS 规则 612 禁止对 1 美元以上股票以小于 1 美分的价格报价。2016–2018 年 SEC 做过 Tick Size Pilot,对部分小盘股把报价单位放大到 5 美分,研究的就是本节的问题。A 股的最小报价单位为 0.01 元,对低价股而言相对 tick 很大,排队位置因此很有价值。
11.2.5 自我抢跑?
原书讲了一个真实故事。1998–1999 年的几个月里,一位经纪人常到 AMEX 交易 SPDR(标普 500 ETF)的极大订单,最大约 85 万股(按当时每股约 100 美元计,约 8,500 万美元)。做市商起初接单后总是亏钱:他大额交易后 5 分钟内市场几乎总朝同一方向走,而他通常当天平仓获利。于是做市商改为接单后立即用标普 500 期货对冲,并继续在期货上同向交易。大约 9 个月里发生了 70–90 次,然后突然停止,做市商因此赚了一小笔。
做市商推测,客户在抢跑股票市场的巨额程序交易。如果抢跑的是别人的程序交易,就是违法的。另一种可能是客户在抢跑自己:比如投资政策禁止交易期货的大型股票基金,同时向 SPDR 和股票市场下单,就能同时获得两个市场的流动性,而任何一个市场都看不到它的全部规模。在两个高度相关但不完全同步的市场间同时执行,可以降低程序交易的总成本。
11.2.6 抢跑对效率和流动性的影响
对价格效率:无论抢跑的是谁,抢跑都会加速被抢跑者的价格冲击。
- 抢跑不知情交易者,通常使价格信息含量下降。如果交易前价格等于基本面价值,不知情交易必然把价格推离价值;即使价格原本偏离价值,不知情交易也只是偶然地把它推回去。
- 抢跑知情交易者,短期内使价格更早接近基本面价值;但长期看可能降低价格信息含量。抢跑压缩了知情交易者的利润,部分人退出,剩下的也会减少研究投入。
对流动性:抢跑者一般使市场更不流动。这是零和游戏,他们的利润就是别人的交易成本,而他们并没有提供流动性作为交换。他们插队改善价格时,与之成交的对手方受益,但他们之所以能给出更好的价格,是因为能从被抢跑者身上榨取更多价值,被抢跑者承担的额外成本超过了对手方得到的价格改善。此外,有些交易者为了不输给抢跑者变得更激进,有些则干脆减少交易,后者直接降低流动性。
Harris 的结论很干脆:没有人可抢跑时,抢跑者不会提出任何交易。他们没有给市场带来任何新东西,还倾向于把他们赖以获利的订单赶走。
11.3 情绪导向技术交易者
情绪导向技术交易者试图预测不知情交易者将要做出的交易决策,并抢在前面交易。他们和抢跑者的区别在于:抢跑者依据的是已经提交或打算提交的订单;情绪导向技术交易者预测的是别人尚未做出的决定。
顺带一个推论:能成功预测知情交易者交易的人,本身就是知情的。因为知情者依据信息交易,只有拥有同样信息的人才能预测他们的交易。所以情绪导向技术交易者盯的是不知情交易者。
不知情交易者的交易动机(第 08 章)可能是理性的(投资、借贷、对冲、资产交换、赌博),也可能来自错误信念(拙劣投机者的错误)。针对不同对象,需要的信息不同:
| 预测对象 | 所需信息 |
|---|---|
| 投资者与借款人 | 工资、年终奖、股息支付、养老金缴款、特别认购、纳税的时点与规模 |
| 对冲者 | 他们担心的风险:生产、库存、业务承诺 |
| 资产交换者 | 生产、销售和国际资金流如何迫使他们换汇或换资产 |
| 赌徒 | 让赌徒兴奋的东西:哪些品种波动大、哪些股票上了新闻 |
| 犯错的投机者 | 他们如何形成看法:历史量价、情绪指数等心理调查 |
原书给了三个例子。
一月效应:1926–2000 年这 75 年间,美国股市一月收益平均比其他月份高 0.85 个百分点(CRSP NYSE/AMEX 市值加权含股息月收益),统计上很难归于偶然。可能的解释是一月投入的年终奖和养老金缴款推高市场,12 月的税收卖出也可能有关。能预测这些资金流的人会在 12 月甚至更早买入;如果很多人这样做,效应就会被提前交易,时间点前移甚至消失。
动态期权复制:期权交易商用标的资产对冲期权头寸,交易速率取决于标的价格变化和 Black–Scholes 等公式中的其他参数,这类对冲必须随价格变化而交易,称动态对冲(dynamic hedges)。组合保险(portfolio insurance)也是用动态交易模拟期权收益。善于观察的交易者可以从标的近期价格变化预测这些对冲者的交易,并通过期权未平仓量、调查交易者或其顾问、分析量价关系来估计对冲者要保护的头寸规模。今天市场上所说的"做市商 gamma 敞口"分析就是这一思路。
金融直觉:为什么动态对冲可以预测。做市商卖出一张看涨期权后,持有 \(\Delta\) 股标的来对冲(\(\Delta\) 是期权价格对标的价格的一阶导数)。标的上涨时 \(\Delta\) 变大(变大的速度就是 Gamma,二阶导数),他必须追加买入;下跌时必须卖出。也就是说,“卖出期权的一方”在对冲时总是追涨杀跌,而且买卖数量约等于 Gamma × 价格变动 × 持仓规模,可以从期权未平仓量大致估算。1987 年的组合保险就是这种机制的放大版:下跌引发对冲卖出,卖出又加剧下跌。情绪导向技术交易者看到价格开始下跌,就抢在这些必然到来的卖单之前卖出。反过来,当做市商整体持有正 Gamma 时,他们低买高卖,会压低波动。
亚洲的 IPO 与汇率:许多亚洲国家的新股认购要求投资者事先把全额认购款存入投行,超额认购时按比例配售,热门发行可能超额认购数百倍。若国际投资者追捧某只新股,为认购而买入当地货币可能使其升值。能预判哪些发行会很热的人,可以提前买入该货币。
风险:不知情交易常把价格推离基本面价值,这会吸引价值交易者站到对面。价值交易者一旦激进地把价格拉回,情绪导向技术交易者就会亏损。所以关键在于知道何时离场。由此可推出他们最适合的标的:难以估值的品种,因为价值交易者在这类品种上不敢激进。典型是互联网之类发展中行业的股票、新兴市场的股票和债券,以及价值主要取决于难测因素的资产。原书点名了三个最重要的难测因素:预期通胀、未来政治不确定性、股权风险溢价。
Iomega 的教训:Iomega 的 100MB Zip 驱动器相对 1.44MB 软驱是巨大进步。1995 年 6 月到 1996 年 5 月股价上涨超过 1000%,峰值时市值超过 IBM 的 10%,随后几个月跌去三分之二。很多投资者把好公司当成了好投资,没有考虑价格是否已经反映了他们自以为掌握的信息。早早看穿这种错误的投机者即使在股票已经高估时买入也能赚很多钱,但必须在下跌前卖出,风险很大。
资产泡沫(asset bubbles)是同一机制的极端形式:交易者因为期待资产像过去一样继续升值而买入,他们的买盘让预期自我实现,价格可以远高于基本面价值。押注"不知情者会继续买"的人必须极其小心,情绪一变,泡沫破裂时价格跌得极快。
对效率和流动性的影响:和抢跑者一样,情绪导向技术交易者加速了他人对价格的冲击;因为他们抢在不知情交易者前面,其交易倾向于降低价格信息含量,追涨泡沫时尤其如此。他们也降低了流动性:受害者付出的额外成本超过了对手方得到的价格改善。
11.4 挤压者
11.4.1 逼空的机制
挤压者试图垄断市场的一边,使任何必须在另一边平仓的人只能和他谈判。成功逼仓(corner the market)之后,他可以随意要价。通常的做法是在其他人意识到只能从他那里买之前,秘密买下所有可得供给。挤压者属于订单预期者,因为他在别人交易之前交易;与前两类不同的是,他刻意制造了迫使别人和他交易的局面。
1888 年 Hutchinson 小麦逼仓:Benjamin P. Hutchinson 在 1888 年春夏于芝加哥期货交易所买入数千张 9 月小麦期货,同时买下大部分可交割现货。到 9 月底,他控制了芝加哥粮仓里的大部分小麦,并持有数百万蒲式耳的 9 月合约多头。临近交割,空头必须买回合约或交出小麦,而他拒绝卖给他们。9 月 22 日到 30 日,麦价从约 1 美元涨到 2 美元,最后由他决定以什么价格放过空头,他赚了数百万美元。
仙股欺诈中的轧空:XYZ 是交易清淡、低价、流通盘(float,公众可交易股份)很小的股票。价值交易者 Ian 研究后确信它被高估,于是借券卖空。他判断得没错:股票被不诚实的交易商过度推销,准备高价卖给不知情的投资者。Ian 的卖出削减了推销者的利润。不巧的是,他借来的部分股票正是推销者借出的。推销者买入抬价,然后要求 Ian 还券;其他出借人也纷纷召回,好把股票高价卖给推销者。Ian 借不到券,只能在公开市场从挤压者手里高价买回。他对价值的判断完全正确,却在轧空中损失惨重。
金融直觉:卖空者的风险结构和卖出无担保看涨期权相似:收益有上限(股价最多跌到零),损失没有上限。轧空利用的正是这一点,再叠加一个卖空特有的约束:借来的券随时可能被召回。所以卖空者面对两层风险:价格风险(判断错了)和融资风险(判断对了但撑不到价格回归)。这和 LTCM 的教训一样:“市场保持非理性的时间,可能比你保持偿付能力的时间更长”。在小流通盘股票上,融资风险常常比价格风险更致命。
"全收"类比:红心大战里,拿到黑桃 Q 或太多红心的人输;但如果一个人拿到黑桃 Q 和全部 13 张红心(shooting the moon),他大赢、其他人全输。前提是必须隐藏意图,而且只收到"大部分但不是全部"的牌会输得很惨。逼仓者就是在"全收":成功则所有对手都输;如果控制的供给不够,价格会在他卖出之前下跌,而他是靠推高价格建仓的,于是大亏。
11.4.2 监管现实
逼仓在美国是违法的。期货市场中,CFTC 在合约到期时密切监控交易和持仓,若认为交易者没有恰当使用市场可能介入,判断依据通常是交割要求在当时市场条件下是否合理。SEC 和各交易所也监控股票逼空,但无法识别全部。难点在于:逼空者总会辩称自己只是依据信息投机,而监管者很难区分"故意逼空"和"诚实投机引起的价格变化所导致的被动逼空"。因此,卖空者必须时刻提防逼空。
11.5 猎杀止损
使用止损单(stop orders)的交易者必须非常小心地隐藏订单。知道止损单设在哪里的人,可以采用一种叫打止损(gunning the market)的操纵策略:
- 把价格推到止损价位,触发止损单;
- 被触发的止损单变成市价单,进一步加速价格变动;
- 操纵者与这些止损单成交,平仓获利。
例 11.4(白银期货):白银期货现价 4.96 美元/盎司,P. J. 知道很多空头在 5.00 设了止损买单。她激进买入,把价格从 4.96 推到 5.00 触发止损,再把头寸卖给这些在 5.00 触发的买单。若她的平均买入成本是 4.98,名义收益率约为
由于期货只需缴纳名义价值一小部分的保证金,她的资本收益率要高得多。事后白银价格大概率又会回到 4.96 附近。
法律困境:美国等国家禁止这种操纵,但几乎无法执法,因为很难证明交易者是在"打止损"。被问起时,操纵者会说"我买是因为觉得价格太低,我卖是因为市场达到了我的预期";再问"价格跌回来后为什么不再买",他会说"既然我没料到会跌,说明我没看懂,所以不想再碰"。没有可靠记录证明其真实意图,就无法定罪。
防御:隐藏止损单;只在操纵成本高的高流动性市场交易;否则就必须盯市,判断不利价格变动是基本面价值变化,还是有人在猎杀止损。
11.6 小结:防御与市场制度
Harris 对三类订单预期者给出了对应的防御方式:
- 防抢跑者:严守交易意图信息;
- 防情绪导向技术交易者:交易要快;
- 防挤压者:确保总有多种平仓途径。
市场制度也能提供保护。对报价匹配者,市场可以用时间优先规则保护先暴露订单的流动性提供者;但只有同时存在足够大的最小报价单位,迫使抢跑者必须显著改善价格才能排到前面,时间优先才有实际意义。
量化实战
1. 执行算法中的反抢跑设计
本章几乎就是执行算法"防侦测"功能的需求说明:
- 拆单要随机化。Rifka 能识别 Jon 的客户,是因为"买了还会再买"这个模式太规律。VWAP/TWAP 算法如果每隔固定时间下固定数量,同样会被高频交易者识别。实践中会随机化子单的时间间隔和数量,并混用限价单、隐藏单和不同场所。
- 跨相关市场分散执行。SPDR 自我抢跑的故事说明,把一笔大交易同时分布到 ETF、期货、成分股上,任何一个市场都看不到全貌。
- 衡量自己是否被抢跑。事后可以计算"下单前 \(k\) 秒到成交时"的价格漂移,与随机基准比较;若子单发出前价格就系统性朝不利方向走,说明意图在泄露。
2. 挂单策略的期权视角
限价单是送给市场的免费期权。做市或被动执行时,排在一张大挂单后面的位置价值、被人 penny jumping 的概率,都取决于 tick 相对于价格波动的大小。A 股低价股相对 tick 大,排队位置值钱;美股高价股相对 tick 小,插队便宜,队列价值低。
3. 资金流预测类策略
情绪导向技术交易对应今天的资金流与日历效应策略:指数调仓前交易、月末/季末再平衡、养老金缴款、ETF 申赎、期权 gamma 对冲流、IPO 资金需求。本章提示两点风险:效应被提前交易后会前移甚至消失;价值交易者会反向交易,持仓不能太久。
4. 做空风控
仙股轧空例说明做空小流通盘股票时要监控:借券集中度(是否少数出借人)、流通盘中被锁定的比例、空头持仓相对日均成交量(days to cover)、借券召回风险。回测做空策略时,要把"被强制买入"的情景纳入压力测试。
5. 止损单设置
止损不要设在整数关口等显眼价位;回测止损策略时,要考虑止损聚集点被冲击后的滑点,真实成交价可能远差于止损价。
代码:报价匹配的期权价值与 tick 的作用
下面的蒙特卡洛模拟把例 11.2 推广为多期:Jose 在 \(B=20\) 挂大额买单,只会以每期概率 \(h\) 撤单,不随价值调整;Maria 在 \(B+\text{tick}\) 买入(买入时价值恰为 \(B+\text{tick}\),即她付的是公平价)。价值此后每期做正态随机游走,波动大于 tick。价值首次跌破 \(B\) 时,若 Jose 还在,Maria 以 \(B\) 卖给他;若 Jose 已撤单,她只能持有到期末。
import numpy as np
import pandas as pd
rng = np.random.default_rng(11)
def quote_matching(tick, cancel_h, n_paths=200_000, T=20, sigma=0.05, B=20.00):
"""报价匹配(penny jumping)蒙特卡洛。
Jose 在 B 挂大额限价买单(不随价值调整,只会以概率 cancel_h/期 撤单);
Maria 在 B+tick 买入,此时价值 V0 = B+tick。价值每期正态变动 sigma(> tick)。
Maria 的规则:价值第一次跌破 B 时,若 Jose 仍在 -> 以 B 卖给 Jose(只亏 tick);
若 Jose 已撤单 -> 持有到期末按价值平仓;未跌破 -> 期末平仓。
返回 Maria 的每股期望盈亏、5% 分位数,以及 Jose 因此承受的每股期望损失。"""
V = (B + tick) + np.cumsum(rng.normal(0, sigma, (n_paths, T)), axis=1)
below = V < B
first = np.where(below.any(axis=1), below.argmax(axis=1), T)
cancel_t = rng.geometric(cancel_h, n_paths) - 1 if cancel_h > 0 else np.full(n_paths, 10**9)
put_used = (first < T) & (cancel_t > first) # 行使了 Jose 免费提供的"看跌期权"
pnl = V[:, -1] - (B + tick)
pnl[put_used] = -tick
idx = np.where(put_used)[0]
jose_loss = np.zeros(n_paths)
jose_loss[idx] = B - V[idx, first[idx]] # Jose 以 B 买到价值 V<B 的股票
return pnl.mean(), np.percentile(pnl, 5), jose_loss.mean(), put_used.mean()
rows = []
for tick in [0.01, 0.05, 0.10]:
for h in [0.0, 0.05, 0.20]:
m, q5, jl, pu = quote_matching(tick, h)
rows.append(dict(tick=tick, 撤单概率=h, 匹配者期望盈亏=m, 盈亏5分位=q5,
被抢跑者期望损失=jl, 卖回给被抢跑者的比例=pu))
print(pd.DataFrame(rows).round(4).to_string(index=False))
输出:
tick 撤单概率 匹配者期望盈亏 盈亏5分位 被抢跑者期望损失 卖回给被抢跑者的比例
0.01 0.00 0.0287 -0.0100 0.0286 0.8476
0.01 0.05 0.0250 -0.0709 0.0249 0.7286
0.01 0.20 0.0178 -0.2403 0.0177 0.5067
0.05 0.00 0.0210 -0.0500 0.0213 0.7241
0.05 0.05 0.0167 -0.1431 0.0167 0.5715
0.05 0.20 0.0094 -0.2816 0.0095 0.3275
0.10 0.00 0.0164 -0.1000 0.0164 0.5654
0.10 0.05 0.0114 -0.2007 0.0114 0.3974
0.10 0.20 0.0038 -0.3140 0.0048 0.1715
读这张表要抓住四点:
- 零和:每一行中,匹配者的期望盈利与被抢跑者的期望损失几乎相等(差异是模拟误差)。价值是鞅,Maria 买入时付的是公平价,她的全部利润都来自 Jose 那张不会随价值调整的挂单,即"寄生"的数学含义。
- 期权形状:撤单概率为 0 时,5% 分位数恰好是 \(-\text{tick}\),下行被 Jose 的买单截断,这正是"股票 + 看跌期权"的收益形状。
- tick 越大越不划算:撤单概率为 0 时,tick 从 0.01 升到 0.10,期望盈利从 0.0287 降到 0.0164。tick 就是插队的价格。
- 被抢跑者撤单越积极,策略越危险:\(h=0.20\) 时尾部损失大幅加深,期望盈利接近消失。这就是"报价匹配者必须比被动交易者更快"的量化表述,也是被动交易者通过频繁撤改单来自我保护的理由。
本章小结
订单预期者靠"别人要做什么交易"的信息获利,而不是靠"东西值多少钱"的信息。抢跑者利用已决定的交易,在激进交易者前面交易时夺走其价格歧视收益,在被动交易者前面挂单时(报价匹配)获得期权式收益;情绪导向技术交易者预测不知情交易者将要做的交易,适合难估值的品种,风险来自价值交易者的反向交易和泡沫破裂;挤压者垄断供给,迫使对手按其价格成交,判断正确的空头也可能被轧空。三者都加速他人的价格冲击、降低流动性,常降低价格信息含量,所以是寄生型的。合法与违法的界线在于信息是否不当获取、行为是否以制造虚假交易条件为目的,但逼空和猎杀止损都很难取证。时间优先只有配合足够大的 tick 才能保护挂单者。
| 概念 | 要点 |
|---|---|
| 抢跑者 | 利用已提交/即将提交订单的信息;不当获取信息即违法 |
| 抢跑激进交易者 | 先拿走最优流动性再卖回,迫使大交易者支付更统一的价格 |
| 报价匹配 / penny jumping | 股票多头 + 挂单隐含的看跌期权 ≡ 合成看涨;\(E[\pi]\approx\tfrac12\Delta-\tfrac12\,\text{tick}\) |
| tick size | 时间优先市场中插队的价格;付给对手方而非被抢跑者 |
| 情绪导向技术交易者 | 预测不知情者尚未做出的交易;适合难估值品种;需及时离场 |
| 挤压者 / 逼仓 | 秘密控制供给后迫使对手按其价格成交;"全收"式高风险 |
| 猎杀止损 | 推价触发止损、与止损单成交获利;违法但难以证明 |
| 防御 | 隐藏意图、快速交易、保留多条平仓路径;时间优先 + 足够大 tick |
练习
基础题
- 用自己的话区分抢跑者、情绪导向技术交易者和挤压者,并各举一个现代市场的例子。 提示:按"已决定的交易 / 将决定的交易 / 不得不做的交易"区分;现代例子如算法拆单被识别、指数调仓前交易、借券召回引发的轧空。
- 在例 11.1 中,如果 Stuart 改为每档买 5 万股,只用 100.00、100.10、100.20 三档就能买完,他的平均价是多少?抢跑者以 100.20 卖给他时,Stuart 多付了多少? 答案要点:平均价 100.10;多付 \(0.10\times150{,}000=15{,}000\) 美元。
- 在例 11.2 中,若 \(\Delta=0.05\) 比索,Jose 撤单概率为 0,Maria 的期望利润是多少?若 tick 改为 0.05 比索呢? 答案要点:\(\tfrac12(0.05)-\tfrac12(0.01)=0.02\);tick 为 0.05 时,Maria 要挂 20.05,上涨赚 \(\Delta\)、下跌亏 0.05,期望为 0,策略失去吸引力。
- 为什么说"最小报价单位是报价匹配者付出的价格",这个价格付给了谁? 提示:付给与之成交的对手方,用来阻止对方去和被动交易者成交。
- 例 11.4 中,若期货保证金比例为 5%,P. J. 的资本收益率约为多少(忽略成本)? 答案要点:约 \(0.4\%/5\% = 8\%\)。
进阶题
- 证明(或用模拟说明):若价值是鞅、报价匹配者以公平价买入,则其期望利润等于被抢跑者的期望损失。这说明了"寄生"的什么含义? 提示:可选停时定理;整体是零和,利润只能来自被抢跑挂单的定价滞后。
- 某交易所把 tick 从 10 美分降到 5 美分。一家上市公司想维持原来的"相对 tick",可以怎么做?对其股票上的报价匹配有什么影响? 提示:相对 tick = tick / 股价。tick 减半后,要恢复原相对 tick,就要把股价也减半,即 1 股拆 2 股。相对 tick 恢复后,报价匹配者插队的相对成本也恢复到原水平,对挂单者的保护不变。原书思考题 5。
- 设计一个指标,用逐笔数据检测自己的 VWAP 算法是否被抢跑。需要哪些数据?如何构造对照组? 提示:子单发出前后的中间价漂移,与随机时点或与未发单日的同时段对照;按子单规模、场所分组。
- 为什么情绪导向技术交易在难以估值的品种上最可能盈利?在 A 股市场中,哪些板块或品种可能符合这一特征? 提示:价值交易者在难估值品种上不敢激进;新兴行业、小盘题材股等。
- 多头能不能被逼?构造一个情景。 提示:原书思考题 12。例如必须在某时点卖出的多头(期货多头不愿接实物交割)遇到买方全部撤出;或现货持有人必须交付而运输/仓储被垄断。
原书推荐习题:第 11 章思考题 4、5(tick 与时间优先、拆股);7、8(报价匹配对价差与流动性的双重影响);12、13(多头能否被逼、打止损的归类)。思考题共 13 题,均为开放讨论题。
原书对照
| 本章小节 | 原书章节 | PDF 页码 | 原书页码(约) |
|---|---|---|---|
| 11.1 订单预期者是谁 | 第 11 章章首 | p.258 | p.245 |
| 11.2 抢跑者 | 11.1 Front Runners(含 11.1.1–11.1.4) | p.258–264 | p.245–251 |
| 11.3 情绪导向技术交易者 | 11.2 Sentiment-oriented Technical Traders | p.264–267 | p.251–254 |
| 11.4 挤压者 | 11.3 Squeezers | p.267–269 | p.254–256 |
| 11.5 猎杀止损 | 11.4 Manipulation of Stop Orders | p.269–270 | p.256–257 |
| 11.6 小结 | 11.5 Summary、11.6 Some Points to Remember | p.269–270 | p.256–257 |
| 练习 | 11.7 Questions to Think About | p.270–271 | p.257–258 |
原书页码按"PDF 页码 − 13"估算。