量化交易中文教材

第 13 章 交易商

对应 Harris《Trading and Exchanges》第 13 章 Dealers,原书第三部分"流动性提供者"的第一章。从本章起,视角从"谁在消耗流动性、如何利用别人"转到"谁在提供流动性、如何不被别人利用"。交易商(做市商)是最典型的流动性提供者,本章讲他们如何报价、管理存货、应对知情交易者。这些内容是做市算法的定性蓝图,下一章再把它变成定量的价差模型。

学习目标

读完本章,你应当能够:

  1. 解释交易商出售的是即时性,区分报价价差、内部价差与实现价差,并能用 Dell 的例子说明实现价差为何可能为负。
  2. 说出交易商控制存货的手段(同向移动 bid 和 ask、调整报价数量、主动吃单、对冲相关品种),并写成规则表。
  3. 区分两类存货风险:可分散存货风险与逆向选择风险,说明为什么前者长期不亏、后者长期必亏,以及"存货失衡与未来价格变化负相关"的含义。
  4. 写出逆向选择价差成分的条件期望表述:\(\text{Ask}=E[V\mid\text{下一笔为买}]\),\(\text{Bid}=E[V\mid\text{下一笔为卖}]\),并解释为什么大单价差更宽。
  5. 识别交易商的两类定价错误(调整不足、调整过度),用模拟量化存货偏斜和订单流学习的作用。

读前导读

**这一章在解决什么问题。**前几章站在“消耗流动性的人”一边,本章换到对面:做市商怎样报价才能活下来。你可以把交易商想成一家只卖一种商品的批发商:他的毛利是买卖价差,他的存货是持仓,他的坏账是“和知情者成交后的亏损”。会计上你熟悉的“存货周转越快、跌价损失越小”在这里同样成立;不同的是,交易商的部分跌价损失不是运气,而是因为卖货给他的人恰好知道货要跌价。本章把这两种损失分开:一种可以靠分散化抵消(可分散存货风险),一种不能(逆向选择风险)。这和 CFA 里“特有风险可以分散、系统性风险不能”的结构很像,但划分标准不同:这里看的是价格变化是否与交易商自己的持仓方向相关。

本章是定性蓝图,第 14 章会把逆向选择变成可计算的价差模型。

需要先想起来的数学。

  • 条件期望:\(E[V\mid A]\) 读作“已知事件 \(A\) 发生时,\(V\) 的平均值”。本章的核心公式 \(\text{Ask}=E[V\mid\text{下一笔为买}]\) 的意思是:交易商在报卖价时,就假设“有人来买”这件事已经发生,并据此修正对价值的估计。例:价值等可能为 99 或 101,若“有人来买”使 101 的概率升到 0.6,则 \(E[V\mid\text{买}]=0.6\times101+0.4\times99=100.2\)。见 第 00 册第 07 章 概率中的分析工具。
  • 贝叶斯公式:\(P(A\mid B)=P(B\mid A)P(A)/P(B)\),用来从“看到一笔买单”反推“价值高”的概率。CFA 一级定量方法里学过,本章只用到它的直观;第 14 章会正式用它推导价差。
  • 相关系数的符号:本章的结论“存货失衡与未来价格变化负相关”只需要你理解协方差的符号:两个量倾向于反向变动时,协方差为负。

**怎么读这一章。**13.2 的三种价差(报价、内部、实现)和 13.4 的存货控制表是基础,读一遍即可。13.5 的两类存货风险和 13.6.3 的逆向选择价差成分是全章核心,必读,后者直接通向第 14 章。13.6.4 到 13.9 以定性论述为主,可以较快读完,但表 13-3 的“调整不足 / 调整过度”值得记住,它是做市算法参数调优的直观框架。量化实战的代码建议先看输出表和五点解读,再回头读代码。


13.1 交易商是什么样的商人

交易商是通过低买高卖赚钱的商人(merchants)。商人有两种:交易商(dealers)既从客户那里买,也卖给客户;分销商(distributors)从供应商处买、卖给客户。为已发行证券做市的人是交易商;帮公司发行新证券或帮客户卖出大宗证券的人是分销商。

所有交易商都面临同样四个问题:定价、营销以获得客户、管理存货、避免与更知情的人交易。在金融市场里,他们在客户想卖时买、想买时卖,让人们能在想交易时交易,以低买高卖获利;当市场迫使他们低卖高买时亏损,这通常发生在与知情者交易之后。

交易商买入时通常不知道将卖给谁、以什么价格卖;卖出时也不知道回补价格。更重要的是,交易商是被动交易者:他们在别人想交易时交易,不控制交易时机。所以必须特别小心如何报价、向谁报价,确保交易对自己(而不只是对客户)有利,尤其要提防知情者和虚张声势者。

13.1.1 谁是交易商

交易商出售的流动性服务是即时性(immediacy),对急躁的交易者有价值:从急于卖的人那里低价买,卖给急于买的人高价,价差就是提供即时性的补偿。

交易商有很多形式:交易所场内或交易公司办公室里的职业交易者(常由计算机辅助或执行策略);也有通过经纪人提交限价单的个人。后者常意识不到自己在充当交易商,也就未必理解自己承担的风险及盈亏条件。许多市场把部分交易者正式注册为交易商,以特权换取其提供流动性的义务(第 24 章)。在期货交易所里,他们被称为 scalpers(抢帽子者)、day traders、locals(场内自营商)或 market makers;在许多股票和期权交易所称为 specialists(专家)或 market makers。很多交易商同时是经纪人(broker-dealer 的双重身份问题见第 07 章)。

许多交易商也投机。在交易商之间竞争激烈的活跃市场里,仅靠为客户提供流动性赚不到钱,必须成功投机才能生存,这类人称为头寸交易者(position traders),对应只靠"在 bid 买、在 ask 卖"获利的价差交易者(spread traders)。本章只讨论交易商如何提供流动性。

交易商必须能承受风险,但并不享受风险。很多交易商因为风险失控而破产。他们时刻在想如何规避风险,被迫承担大风险时要求相应补偿。

现状补充:2008 年 NYSE 把"专家"(specialist)制度改为"指定做市商"(Designated Market Maker, DMM)制度。今天美国股市的流动性主要由电子化的自营做市公司提供,零售订单大多被批发商(如 Citadel Securities、Virtu)内部化成交。原书中"计算机辅助的交易商"在今天已经是主流。

13.2 报价与价差的基本概念

买价(bid)和卖价(ask,又称 offer)是交易商愿意买入和卖出的价格。卖方得到 bid,买方支付 ask。从卖方处买入叫吃卖单(take the offer),卖给买方叫打买单(hit the bid)。买卖价差(bid/ask spread)= ask − bid。

如果交易商能在不改价的情况下在两边都成交,低买高卖就能盈利。但实际上很难:买卖数量很少相等,意外价格变动又很普遍。所以要区分:

  • 报价价差(quoted spread):交易前报出的 ask − bid;
  • 实现价差(realized spread):交易商实际卖出价与买入价之差,通常小于报价价差,因为有时以优于报价的价格成交,而且常在两笔交易之间调整报价。

例 13.1(负的实现价差):交易商 Dell 报 35.0/35.3,客户以 35.0 卖给她。随后传来坏消息,为避免从知情者处继续买入,她把 bid 降到 34.6;为吸引买方让她卖出存货,她把 ask 降到 34.9。买方以 34.9 买入。交易前的报价价差是 0.3,但这次往返的实现价差是 \(34.9-35.0=-0.1\)。她亏钱,是因为价值下跌时持有股票。

金融直觉:可以把一次往返的结果拆成两块来记账:报价价差 0.3 是“毛利”,持有期间价值下跌 0.4(35.0/35.3 的中点 35.15 降到 34.6/34.9 的中点 34.75)是“存货跌价损失”,两者相减得到 −0.1。实务中常用的“实现价差 = 有效价差 − 价格冲击”就是这个分解:价格冲击部分衡量的是对手方是否知情。交易商不怕偶尔的跌价,怕的是跌价总发生在“刚从某类客户那里买入之后”,那就说明这类客户系统性地比自己知道得多。

同时报 bid 和 ask 称为双边市场(two-sided market),即"做市"。多数交易商报双边价,但通常只在想交易的一边报得有竞争力:想买时报高的(激进的)bid 吸引卖方,同时报高的、无竞争力的 ask 阻止买方;想卖时 bid 和 ask 都报低。

内部价差(inside spread)是所有交易商中最高 bid 与最低 ask 之差,通常远窄于单个交易商的平均价差。

例 13.2(内部价差):某市场有五位交易商:Charles 99.9/100.4,Cheryl 100.0/100.5,Goldie 100.1/100.6,Larry 100.2/100.7,Teri 100.3/100.8。每人的价差都是 0.50,但最佳买价是 Teri 的 100.3,最佳卖价是 Charles 的 100.4,内部价差只有 0.10。(原书图 13-1 中最优买卖价的人名标注有误,以正文为准。)

其他概念:

  • 确定报价(firm quotes)必须按报价成交,但只在交易商规定的最大数量内有效;软报价(soft quotes)只是意向表示(indication of interest),被要求成交时可修改甚至拒绝,但经常不兑现的交易商会失去客户。口头市场的期货交易员说,喊出的报价"只在呼吸还温热时有效"。
  • 有的市场只在请求时报价(多数公司债市场、部分外汇市场),有的要求连续报确定的双边价(如 Nasdaq 的注册交易商)。按请求报价时,报价只在很短时间内有效,在交易活跃、波动大或价差窄的市场尤其短。
  • 报价数量:bid size、ask size 是交易商必须买、卖的最大数量。

13.3 与交易商交易、吸引订单流

13.3.1 议价与价格改善

交易商常以优于公开报价的价格成交,对较小的客户、更活跃的客户、被认为不了解基本面的客户尤其如此。许多机构直接与交易商议价,交易商通常不收佣金,而把费用计入价格,称为净价(net price basis)交易。

散户通常通过经纪人交易,经纪人负责争取最优价格。小额订单逐笔议价不划算,经纪人就把单子发给他们认为价格与服务组合最好的交易商;若该交易商当前不是最优报价,经纪人会坚持其按市场最优价成交。以优于报价的价格成交称为价格改善(price improvement)。经纪人把订单发给特定交易商叫订单指定(preferencing),在 Nasdaq 等市场很普遍。主要与零售经纪人引入的客户交易的交易商叫批发商(wholesalers)。

议价技巧:有经验的交易者先要求双边报价,再说自己要买还是卖;价差太宽就去找别的交易商。这样可以防止交易商对已知买方报高价、对已知卖方报低价。在交易商少、竞争不足的市场里,这一点尤其重要。

13.3.2 吸引订单流

订单流(order flow)是其他交易者向交易商提出的交易请求流。获取方式有:报激进价格和大数量;以低价提供优质服务;广告;建立营销关系(提供市场信息、研究、培训、下单和会计系统,以及大量招待,原书提到超级碗、NBA 总决赛等);以及购买订单流。

订单流付费(payment for order flow, PFOF):交易商向收集订单的经纪人付费购买订单,在一些股票市场很常见,通常只买市价单。写作时美国平均每股不到 1 美分,过去某些股票曾高达每股 3 美分;有时以非现金服务或券商之间互换订单流的形式出现。

现状补充:PFOF 在美国至今仍是零佣金券商的重要收入来源,也一直有争议;SEC 曾在 2022 年提出包括"订单竞价规则"在内的一揽子改革提案,但至今未实施。英国监管机构较早认定 PFOF 与经纪商的利益冲突规则不相容;欧盟在修订 MiFIR 时已决定禁止 PFOF(设有过渡期)。

13.4 存货:交易商的核心约束

交易商最重要也最难的决策是报价放在哪里。定价不当会导致"买了后悔没卖、卖了后悔没买"。设定报价有两个目的:控制存货和避免输给知情者。

13.4.1 存货与目标存货

存货(inventory)是交易商在所交易品种上的头寸,可多可空。由于客户决定交易方向,存货随客户需求波动:客户买入,存货下降;客户卖出,存货上升。

目标存货(target inventory)是交易商想持有的头寸。存货失衡 = 实际存货 − 目标存货。不投机、不对冲、不投资的交易商,若多空头寸的建立和持有成本相同,目标存货为零。在卖空比卖出现货更贵、持有空头比持有多头更贵的市场,交易商倾向持有正存货。兼做投机或对冲的交易商,其目标存货反映这些目的。

存货严重失衡时,交易商可能没有足够资本为买入融资或为卖空提供担保,清算方会强制平仓;如果已经亏损,可能破产。

13.4.2 交易商如何控制存货

存货低于目标时要买,高于目标时要卖。主要方式是影响客户的买卖决策:

  • 想降低存货:同时降低 bid 和 ask。更低的 ask 吸引客户买入,更低的 bid 阻止客户继续卖出。也可以降低 bid size、提高 ask size。
  • 想增加存货:同时提高 bid 和 ask,增大 bid size、减小 ask size。

急于调整时,交易商不等客户上门,而是主动和正在报价的其他交易者成交。这能迅速解决存货问题,但代价是在 ask 买、在 bid 卖,实现价差为负。

表 13-1 交易商管理存货与订单流的手段

状况 手段 目的
存货过低,或客户为净买方 提高 bid 价 / 增大 bid 量 鼓励客户卖出
提高 ask 价 / 减小 ask 量 阻止客户买入
吃其他交易者的 offer 立即提高存货
买入相关品种 对冲存货风险
存货过高,或客户为净卖方 降低 ask 价 / 增大 ask 量 鼓励客户买入
降低 bid 价 / 减小 bid 量 阻止客户卖出
打其他交易者的 bid 立即降低存货
卖出相关品种 对冲存货风险

存货平衡时,交易商希望买卖数量相等,即获得双边订单流(two-sided order flow)。寻找能产生双边订单流(供给等于需求)的价格的过程,叫价格发现过程(price discovery process),这个价格就是市场价值(market value)。买后能立即卖、卖后能立即买时交易最赚钱:快速再平衡存货,能把失衡期间价格不利变动的概率降到最低。

13.5 两类存货风险

存货风险分两类,区别在于未来价格变化是否与存货失衡相关。

13.5.1 可分散存货风险

由无人能预测的事件引起的价格变化,有正有负,平均为零(否则就可以预测了)。价格意外不利时亏,意外有利时赚,因为与存货失衡无关,盈亏概率相等。它让交易商的生意看起来很吓人,但长期不会让交易商亏损。还可以通过同时交易很多品种来分散:一些品种的意外收益抵消另一些的意外损失。所以做市公司常同时交易成百上千个品种。

13.5.2 逆向选择风险

与知情交易者交易时产生,不是良性的:任何人与更知情者交易都会亏。知情者认为价格要涨时买、要跌时卖;判断正确时,对手方亏损。与知情者交易后,交易商买入后价格倾向下跌,卖出后价格倾向上涨,难以完成盈利的往返,实现价差很小甚至为负。

知情者只在信息有利的一侧交易,使订单流单边化,存货偏离目标;如果价格在交易商恢复目标存货之前就反映了信息,交易商就会亏损。这叫逆向选择损失(adverse selection losses),因为知情者"选择"了对交易商不利的一侧。结果是:

\[\boxed{\text{存货失衡与未来价格变化负相关}}\]

知情者买入时,交易商存货低于目标,随后价格上涨;知情者卖出时,存货高于目标,随后价格下跌。逆向选择风险无法通过多品种分散,只能通过避开知情者来规避,最好的办法是把报价设在基本面价值附近,让知情者不想交易。

推导拆解:为什么一类风险长期为零、另一类长期为负。记交易商存货(相对目标)为 \(I_t\),下一期价值变化为 \(\Delta V_{t+1}\),存货盈亏为 \(I_t\Delta V_{t+1}\),长期平均为 \(E[I_t\Delta V_{t+1}]\)。 第一步,用协方差公式展开:\(E[I_t\Delta V_{t+1}]=\operatorname{Cov}(I_t,\Delta V_{t+1})+E[I_t]E[\Delta V_{t+1}]\)。价值是鞅,\(E[\Delta V_{t+1}]=0\),第二项为零。 第二步,若价格变化来自与交易商持仓无关的意外(可分散风险),\(\operatorname{Cov}=0\),长期平均盈亏为零,只有波动。 第三步,若有知情者:他们在价值将上涨时买入,交易商卖出,\(I_t\) 变负,随后 \(\Delta V>0\);反之亦然。于是 \(\operatorname{Cov}(I_t,\Delta V_{t+1})<0\),存货盈亏的长期平均是负数,分散到再多品种也只是把许多负数加在一起。 这正是框中“负相关”的含义,也是量化实战代码中“存货与未来报价变化相关”一列为负的原因。

13.5.3 市场价值与基本面价值

只要能快速恢复目标存货,交易商通常不在乎对手是否知情。所以多数交易商更关注发现产生双边订单流的市场价值,而不是基本面价值。许多交易商对学术界用"信息不对称"解释其行为感到不适:他们不太了解基本面价值,也不太关心,甚至不相信它存在;但他们也承认有些交易者"大多数时候是对的",意识到这些人的存在时交易得更好。无论怎么表述,逆向选择是交易商盈利能力最重要的决定因素。交易商通常是在寻找市场价值的过程中,顺带发现了基本面价值。

13.6 交易商如何应对逆向选择

交易商有三个目标:怀疑已经与知情者交易时正确反应;预期可能与知情者交易时正确报价;尽量避免与知情者交易。

13.6.1 与知情者交易之后

必须调整报价,以免继续亏损,并在价格不利变化之前快速平仓。怀疑从知情卖方处买入了,就同时降低 bid 和 ask:降 bid 阻止知情者再卖给他,降 ask 吸引其他人买走存货。怀疑卖给了知情买方,就同时提高 bid 和 ask。特别不想持有某头寸时,主动在 ask 买或在 bid 卖,把头寸"推"给别人,代价高但能迅速摆脱风险。

表 13-2 怀疑与知情者交易后的手段

怀疑情况 手段 目的
卖给了知情买方 提高 ask 价、降低 ask 量 阻止知情者继续买
提高 bid 价、增大 bid 量 鼓励客户尽快卖出,在涨价前恢复存货
按其他交易者的 ask 买入 迅速恢复目标存货;付出流动性成本,但可能小于空头期间的涨价损失
买入相关品种 对冲存货风险,并利用信息投机
从知情卖方买入 降低 bid 价、降低 bid 量 阻止知情者继续卖
降低 ask 价、增大 ask 量 鼓励客户尽快买入,在跌价前恢复存货
按其他交易者的 bid 卖出 迅速恢复目标存货
卖出相关品种 对冲并投机

13.6.2 报价以避开知情者:分蛋糕原理

知情者不会以高于基本面价值的价格买,也不会以低于基本面价值的价格卖。所以交易商努力把 bid 设在基本面价值略下方、ask 设在略上方。

原书用"两兄弟分蛋糕"作比喻:一人切、一人先选,切的人必须尽量切成两半。但选的人略占优势:只要切得不均,仔细的选择者总拿大块,切的人面临逆向选择。交易商报双边价,就像把价格数轴切成两段:报价太高或太低,知情者就选更有利的一侧。所以,交易商在不知道你要买还是卖时报出窄价差,你就可以相信这个报价是公平的:交易成本低,成交价接近交易商对市场价值的最佳估计(这也是 13.3 节议价技巧背后的道理)。

交易商很少像知情者那样了解基本面,但可以从看到的订单、价格和报价中推断价值:知情者在买,价值可能高于当前价格;在卖,则更低。推断准确需要判断谁是知情者、其信息有多重要。但交易商通常不知道谁知情:知情者很少暴露自己,通常通过经纪人匿名交易,还常自称不知情以骗取廉价流动性。交易商常用的经验法则是:

  • 为大型主动管理组合交易的人常是知情的;
  • 大交易者常比小交易者更知情;
  • 急躁的人常比耐心的人更知情;
  • 小散户往往不知情。

这些规则有用但不总可靠。因此交易商必须假设所有人都可能知情,从所有订单中推断价值,每笔订单的权重取决于它来自知情者的可能性。调价幅度还取决于信息的重要性。重大信息(material information)是一旦广为人知就会显著影响价格的信息;公开信息稀缺或高度模糊的品种,知情者更可能掌握重大信息,这些品种难以估值,波动也大。

13.6.3 逆向选择价差成分

好的交易商不只在交易之后调价,还在报价之前就考虑"下一个交易者可能是知情者"。若下一个是知情买方,价值应更高;是知情卖方,应更低。于是:

\[\text{Ask}=E[V\mid\text{下一笔为买单}],\qquad \text{Bid}=E[V\mid\text{下一笔为卖单}].\]

两个条件期望不同,所以 ask > bid。由这种"以下一笔交易方向为条件的价值推断差异"带来的那部分价差,就是逆向选择价差成分(adverse selection spread component)。实际报价还要在此基础上加减交易成本成分(第 14 章)。交易商事先构建这些推断,是为了交易之后不后悔。

如果交易商认为下一个交易者很可能基于重大信息交易,ask 将远高于 bid。

推导拆解:用一个最小的数值例子算出这两个条件期望(第 14 章 Glosten–Milgrom 模型的雏形)。设价值 \(V\) 等可能为 99 或 101;下一个交易者有 20% 的概率是知情者(价值高就买、低就卖),80% 是不知情者(买卖各一半)。 第一步,算“价值高时出现买单”的概率:\(P(\text{买}\mid V=101)=0.2\times1+0.8\times0.5=0.6\);同理 \(P(\text{买}\mid V=99)=0.2\times0+0.8\times0.5=0.4\)。 第二步,用贝叶斯公式反推:\(P(V=101\mid\text{买})=\dfrac{0.6\times0.5}{0.6\times0.5+0.4\times0.5}=0.6\)。看到买单,“价值高”的概率从 0.5 升到 0.6。 第三步,\(\text{Ask}=E[V\mid\text{买}]=0.6\times101+0.4\times99=100.2\);对称地 \(\text{Bid}=99.8\)。 第四步,价差 \(=0.4\),恰好等于“知情者比例 × 价值的高低差”\(=0.2\times2\)。知情者比例翻倍,价差翻倍;信息的重要性(高低差)翻倍,价差也翻倍。 检验交易商不亏:不知情者在 ask 买时付 100.2,平均价值 100,交易商赚 0.2;知情者在 ask 买时价值是 101,交易商亏 0.8。两类买单的占比是 0.8×0.5 : 0.2×0.5 = 4:1(以价值均等为前提),\(4\times0.2-1\times0.8=0\),正好打平。价差就是用不知情者的钱补知情者造成的亏损。

金融直觉:这和保险定价完全同构。保险公司不知道哪位投保人风险高(信息不对称),只能按“来投保的人”的平均风险定价;而愿意来投保的人本身就偏向高风险(逆向选择),所以保费必须高于全体人群的平均风险。交易商的 ask 就是“来买的人”的平均价值,而不是全体人眼中的平均价值。“逆向选择”这个词正是从保险业借来的。

大单交易很贵:交易商一般认为大单交易者往往知情,因为知情者想建大仓以最大化利润,大机构也能把研究成本摊到大组合上。所以交易商对大单报宽价差,在认为有人把大单拆成小单时也大幅调价。这使大单产生很大的市场冲击(market impact),匿名大单很难交易(第 15 章讨论解决办法)。换句话说,逆向选择价差成分随交易规模增大。

白话解释:在上面那个数值例子里,把“知情者比例”换成“这个规模的订单里知情者的比例”就能看出原因。如果 100 股的订单里只有 5% 来自知情者,而 10 万股的订单里有 40%,那么按同样的计算,大单的 ask 与 bid 之差是小单的 8 倍。交易商并不是在惩罚大客户,而是在按“这类订单的平均信息含量”定价。这也是第 10 章 Kyle 模型中价格冲击系数 \(\lambda\) 的来源:价格对订单量的反应,本质上是交易商对“订单里有多少信息”的估计。

边栏:Madoff 如何控制逆向选择

原书写作时,Bernard L. Madoff Investment Securities 是美国最大的 NYSE 上市股票交易商(但不是 NYSE 会员),约占 NYSE 上市股票成交笔数的 15%(成交量份额更小,因为平均单笔较小)。其订单流主要来自与零售经纪商的订单指定安排。由于不是 NYSE 会员,它可以选择交易对手:主要为零售客户在大公司股票上提供流动性,因为他们和多数专业人士都认为散户交易大盘股时一般不知情。它因此比不能挑选客户的 NYSE 场内交易商面临更少的逆向选择,常能提供更好的流动性。许多机构想与它交易,但除非确信对方一般不知情,否则不接。它为机构提供 Time Slicing(时间切片)服务:机构把大单交给 Madoff,由计算机拆成小块定期执行,满足不希望立即产生市场冲击、或想要时间加权平均价(TWAP)的机构;对 Madoff 而言,这给了它调整存货的时间,也保证了机构客户中没有急于立即成交的人,因此对掌握即将公开重大信息的知情者没有吸引力。

重要说明:原书写于 2002 年前后,当时该公司的做市业务是合法、知名的。Bernard Madoff 主导的庞氏骗局于 2008 年 12 月暴露,骗局发生在其投资顾问业务中,与本边栏描述的做市业务不是同一块业务;Madoff 本人 2009 年被判处 150 年监禁。本边栏保留,是因为它所说明的经济学原理(通过选择客户和执行方式降低逆向选择)本身是正确的,不应把它理解为对该公司或其人的正面评价。

13.6.4 有时拒绝,有时选择与知情者交易

若能识别且规则不禁止,许多交易商拒绝与知情者交易。所以知情者偏好匿名,通过经纪人安排,经纪人称之为给交易戴上胡子(bearding the trade)。有的交易商只做散户、拒绝与主动管理的大机构交易、只与熟悉的客户交易。多数交易商不愿显示大数量,而希望对方主动来询量:迫使对方询量,才能更好地判断对方是谁。

反过来,交易商有时也会选择与已知的知情者交易:所获信息的价值可能超过成本,可以知道自己报价太高还是太低,从而消除后续的逆向选择,还能利用二手信息投机。但不能给知情者太多流动性,必须能迅速平仓。

13.7 交易商的两类定价错误

  1. 调整不足:与知情者交易后调价不够,价格变动时存货亏损。
  2. 调整过度:误以为与知情者交易,把价格推离基本面价值,为价值交易者创造盈利机会。价值交易者会迅速帮交易商恢复目标存货,但交易商这次往返的实现价差变小。

表 13-3 与知情 / 不知情买方交易后的反应与后果

买方类型 上调报价 不动 主动在 ask 买入
知情 正确:阻止进一步知情交易,提高在价格变化前回补的概率;实现价差下降 错误:更多知情买方跟进,价格变化时亏损,实现价差大幅下降 可能正确:若价格将很快大涨则正确,限制后续损失
不知情 错误:价值交易者会卖出,实现价差和利润下降 正确:价格大概仍正确,若下一客户是卖方可赚满报价价差 大错:无谓支付流动性,实现价差大幅下降

问题在于交易商很少知道对方是否知情。所以他们利用一切可得信息:自己的订单流,其他交易商的成交和报价变化,电子新闻服务。好交易商常是出色的牌手:记得出过什么牌、谁出的,能快速估计条件概率、隐藏意图。原书的一句话很传神:"职业交易员邀你打扑克时,准备好学到的比赢到的多。"

原书还提醒,试图利用从订单流推断出的信息投机的交易商,可能被知情者反过来操纵("套住抢先交易的交易商"):知情者想大量卖出时,先给交易商一个小买单;交易商据此大量买入投机,知情者再通过经纪人匿名卖给他。

13.8 消息灵通与消息不灵通的交易商

  • 消息不灵通的交易商更难判断客户是否知情,更常把不知情者误当成知情者,所以倾向于快速交易,让存货贴近目标,赚取较小的实现价差。快速周转、不长期持大仓也能很赚钱。他们多见于活跃市场,常被称为 day traders 或 scalpers。原书比喻:高频交易商像在压路机前捡硬币,一不小心就被压到,失去一切。
  • 消息灵通的交易商报价接近基本面价值,收到的订单大多来自不知情者,逆向选择较少,定价对订单流的依赖也小,所以更愿意持大仓、持有更久,可以耐心等客户上门,赚更大的实现价差。愿意承接大头寸的交易者常称为大宗交易者(第 15 章)。

外汇市场的"烫手山芋":2001 年 4 月全球外汇市场日均成交约 1.21 万亿美元,年化约为世界 GDP 的 15 倍、国际贸易额的 40 倍,大部分是交易商之间的交易。原因是外汇市场历来很不透明,看不到别人的成交和报价,交易商必须彼此积极交易才能了解市场状况;被询价时不交易的交易商下次可能不被询价,也就无从得知市场在发生什么。于是一笔本可由撮合机制直接匹配的交易,常经过许多交易商之手,每人接过头寸再转出,直到某个交易商接到恰好能恢复其目标存货的头寸。学界称之为"烫手山芋"效应(hot potato,原书未用此词)。1998 年 4 月到 2001 年 4 月外汇成交量下降 19%,很可能是因为市场变得更透明、撮合机制发展了。

现状补充:此后外汇成交量重新大幅增长,BIS 三年一度调查显示 2022 年 4 月全球外汇日均成交约 7.5 万亿美元,电子化交易和非银行做市商的份额也大幅上升。

交易商转移头寸(dealer layoffs):一个大的不知情交易者分多笔从许多消息不灵通的交易商处买入股票。交易商存货下降,于是提高 ask 以免继续把存货卖给疑似知情者,提高 bid 以恢复存货。价值交易者看到价格高于基本面价值,便卖给交易商,使其恢复目标存货。交易商实际上把空头头寸"转移"给了价值交易者,后者再耐心等待价格回落。

13.9 交易商、价值交易者与虚张声势者

交易商与价值交易者:对基本面极为了解的交易商本质上就是价值交易者。价值交易者在价格显著偏离基本面价值时交易,这常发生于消息不灵通的交易商把不知情者误当成知情者,或风险厌恶的交易商为承接大头寸要求了大幅价格让步。交易商主要提供即时性(immediacy),价值交易者主要提供深度(depth)。市场有深度,指能买卖大量而不显著影响价格(第 16 章)。

交易商与虚张声势者:交易商根据订单流调价,而虚张声势者能控制订单流的构成,所以能操纵交易商的价格。对无法识别的交易者,买入和卖出时必须按相同的每单位速率调价;无论订单到达快慢、规模大小、是否紧跟同类订单,速率都必须相同(第 12 章 12.5 节)。


量化实战

1. 做市算法的状态机

本章的表 13-1、13-2 几乎可以直接转写为做市算法的规则:

  • 存货偏斜(inventory skew):报价中心 \(m=\hat V-\gamma I\),存货偏多就同时下调 bid 和 ask。这对应 Avellaneda–Stoikov 模型中的"保留价格"(reservation price)。

金融直觉:\(\gamma\) 不是随便拍的参数。在 Avellaneda–Stoikov 模型里,保留价格是 \(r=s-q\,\gamma_{\text{AS}}\sigma^2(T-t)\),其中 \(s\) 是中间价,\(q\) 是存货,\(\gamma_{\text{AS}}\) 是风险厌恶系数,\(\sigma^2(T-t)\) 是到收盘前剩余时间里的价格方差。翻译成白话:每多持有一单位存货,报价就让出“风险厌恶 × 剩余风险”那么多。这和 CFA 里均值–方差效用 \(E(r)-\tfrac12A\sigma^2\) 的逻辑一样:持仓越大、波动越大、离平仓期限越远,你愿意为“把仓位交给别人”付的价格就越高。所以 \(\gamma\) 应随波动率上升而加大,临近收盘(\(T-t\) 变小)而减小。

  • 从订单流学习:每笔成交后按方向修正价值估计 \(\hat V\leftarrow\hat V+\kappa\cdot\text{sign}\),\(\kappa\) 应随订单规模、对手方类型、波动率调整,这是第 14 章 Glosten–Milgrom 模型的离散近似。
  • 毒性检测:用 markout(成交后 \(h\) 秒的中间价变化)按客户、场所、时段分组,识别"有毒"的订单流(今天常用 VPIN 等指标衡量),对应原书的"狼探测器"(第 15 章)。
  • 对冲:存货超阈值时用相关品种(股指期货、ETF)对冲,对应表中的"买卖相关品种"。

2. 评价做市与被动执行的质量

实现价差 vs 报价价差、成交后价格漂移(post-trade markout)是评价做市业务和被动执行算法的核心指标。可分散风险看的是盈亏波动,逆向选择看的是 markout 的均值,两者要分开报告。

3. 市场结构研究

PFOF、批发商内部化、零售订单流"低毒性"的经济学都源于本章的逻辑:能挑选不知情客户的交易商,可以给出更好的价格。Madoff 边栏讲的 Time Slicing 就是 TWAP 算法的早期商业形态:拆单执行可以向对手方"自证不知情",换取更好的流动性。

代码:存货偏斜、订单流学习与逆向选择

下面模拟一个做市商:新闻以小概率到达,使真实价值跳动 ±0.5;知情者立即知道,100 步后新闻公开,交易商一次性修正价值估计。报价中心 \(m=\mu-\gamma I\),半价差 0.05。比较五种设置:不学习也不偏斜、只有存货偏斜、只有订单流学习、两者结合、学习过快。

import numpy as np
import pandas as pd

def simulate_dealer(kappa, gamma, half_spread=0.05, T=200_000, p_news=0.002, jump=0.5,
                    delay=100, p_inf=0.15, p_uninf=0.5, h=150, seed=13):
    """单个交易商的报价、存货与逆向选择模拟。
    新闻以概率 p_news 到达,使真实价值 V 跳动 ±jump;知情者立即知道,
    delay 步后新闻公开,交易商把价值估计 mu 一次性修正到位。
    报价中心 m = mu - gamma*I(I 为存货,目标为 0),bid/ask = m ∓ half_spread。
      kappa:每笔成交后从订单流学习(客户买 -> mu 上调 kappa,卖 -> 下调)
      gamma:存货偏斜(存货偏多 -> bid、ask 同时下调)
    知情者:V 高于 ask 时买、低于 bid 时卖;不知情者:随机买卖。"""
    rng = np.random.default_rng(seed)
    V, mu, I, cash = 100.0, 100.0, 0, 0.0
    pending = []                                        # (公开时刻, 跳幅)
    Vs, Ms, Is = np.empty(T), np.empty(T), np.empty(T)
    side_arr, px_arr, inf_arr = np.zeros(T), np.zeros(T), np.zeros(T, bool)
    for t in range(T):
        if rng.random() < p_news:
            j = jump if rng.random() < 0.5 else -jump
            V += j
            pending.append((t + delay, j))
        while pending and pending[0][0] == t:           # 新闻公开:交易商一次性修正
            mu += pending.pop(0)[1]
        m = mu - gamma * I
        bid, ask = m - half_spread, m + half_spread
        side, u = 0, rng.random()
        if u < p_inf:
            side = 1 if V > ask else (-1 if V < bid else 0)
            inf_arr[t] = side != 0
        elif u < p_inf + p_uninf:
            side = 1 if rng.random() < 0.5 else -1
        if side == 1:      # 客户买,交易商在 ask 卖出
            cash += ask; I -= 1; mu += kappa; px_arr[t] = ask
        elif side == -1:   # 客户卖,交易商在 bid 买入
            cash -= bid; I += 1; mu -= kappa; px_arr[t] = bid
        Vs[t], Ms[t], Is[t], side_arr[t] = V, m, I, side
    pnl = cash + I * V
    traded = side_arr != 0
    idx = np.where(traded[:-h])[0]
    mk = -side_arr[idx] * (Vs[idx + h] - px_arr[idx])   # 交易商视角 markout,正 = 赚
    inf_tr = inf_arr[idx]
    corr = np.corrcoef(Is[:-h], Ms[h:] - Ms[:-h])[0, 1]
    return dict(kappa=kappa, gamma=gamma, 成交笔数=int(traded.sum()),
                知情成交占比=inf_arr.sum() / traded.sum(),
                每笔盈亏=pnl / traded.sum(), 平均绝对存货=np.abs(Is).mean(),
                markout_知情=mk[inf_tr].mean(), markout_不知情=mk[~inf_tr].mean(),
                存货与未来报价变化相关=corr)

settings = [(0.0, 0.0), (0.0, 0.002), (0.005, 0.0), (0.005, 0.002), (0.02, 0.002)]
pd.set_option("display.width", 200)
print(pd.DataFrame([simulate_dealer(k, g) for k, g in settings]).round(4).to_string(index=False))

输出:

 kappa  gamma   成交笔数  知情成交占比    每笔盈亏   平均绝对存货  markout_知情  markout_不知情  存货与未来报价变化相关
 0.000  0.000 105755  0.0534 -0.0772 555.1421     -0.4833       0.0485       0.0012
 0.000  0.002 108824  0.0801  0.0195  16.3429     -0.3081       0.0484      -0.1243
 0.005  0.000 111606  0.1030  0.0197   8.9815     -0.2355       0.0485      -0.1406
 0.005  0.002 112804  0.1125  0.0193   7.6268     -0.2146       0.0485      -0.1134
 0.020  0.002 117099  0.1451  0.0154   5.1798     -0.1841       0.0490       0.0731

如何解读:

  1. markout 的不对称就是逆向选择。每一行中,与不知情者成交平均赚约 0.048(接近半价差 0.05),与知情者成交平均亏 0.2–0.5。交易商的生意就是用前者补贴后者。

白话解释:markout 就是“成交后 \(h\) 步再看一眼,这笔交易按那时的价值算赚了多少”。代码里 mk = -side * (V[t+h] - price):客户买(side=+1)时交易商卖出,若之后价值涨了,交易商这笔就亏了,所以前面有负号。它是交易商版的“逐笔事后归因”,把每笔成交的盈亏和它之后的价格走势挂钩,按客户、场所、时段分组求均值,均值显著为负的那一组就是“有毒”订单流。

  1. 既不学习也不偏斜(第 1 行)是"调整不足":新闻公开前报价完全不动,知情者在 100 步里一直单边交易,平均绝对存货高达 555,每笔亏 0.077。
  2. 只做存货偏斜(第 2 行)也能救命。存货偏斜在数学上等价于一种粗糙的订单流学习:知情者单边交易使存货偏离,偏斜就自动把报价推向知情者的方向。这解释了为什么很多交易商"只关心市场价值和存货",却也能在不懂基本面的情况下存活。
  3. 存货与未来报价变化负相关(第 2–4 行约 −0.11 到 −0.14):交易商存货偏多(从知情卖方买入),随后新闻公开、报价下跌。这正是 13.5.2 节的结论。
  4. 学习过快(第 5 行)是"调整过度":\(\kappa=0.02\) 时,噪声订单也会把报价推离价值,知情者(在这里扮演价值交易者的角色)反向交易的比例升到 14.5%,每笔利润从约 0.019 降到 0.015,相关系数也翻成正值,说明报价先过冲再回归。这对应表 13-3 中"对不知情买方上调报价"的错误。

参数 \(\kappa\)、\(\gamma\) 的最优值取决于知情者比例和信息幅度,第 14 章的 Glosten–Milgrom 模型给出了贝叶斯意义下的最优学习规则。


本章小结

交易商向客户出售即时性,买卖价差是流动性的价格;他们通过激进报价、服务、广告和订单流付费获得客户。交易商希望买后迅速卖、卖后迅速买,用同向移动 bid 和 ask、调整报价数量、主动吃单、对冲相关品种来保持目标存货和双边订单流。存货风险分两类:可分散风险长期不亏,可以靠多品种分散;逆向选择风险来自知情者,使存货失衡与未来价格变化负相关,长期必亏,只能靠定价和客户筛选控制。交易商在报价前就以"下一笔交易的方向"为条件估计价值,由此形成逆向选择价差成分,它随交易规模增大,使大单冲击更大。交易商可能调整不足或调整过度;消息不灵通者靠快速周转生存,消息灵通者可以持有更大头寸。

概念 要点
即时性 交易商出售的服务;价差是其价格
报价价差 / 内部价差 / 实现价差 ask−bid;全市场最优 ask−最优 bid;实际卖价−买价(可为负)
存货失衡 实际存货 − 目标存货;通过同向移动双边报价引导客户
可分散存货风险 与失衡无关,平均为零,可多品种分散
逆向选择风险 存货失衡与未来价格变化负相关,长期必亏
逆向选择价差成分 \(\text{Ask}=E[V\mid\text{买}]\),\(\text{Bid}=E[V\mid\text{卖}]\);随规模增大
两类定价错误 调整不足(被知情者持续收割);调整过度(送钱给价值交易者)
即时性 vs 深度 交易商提供即时性,价值交易者提供深度

练习

基础题

  1. 在例 13.1 中,若坏消息后 Dell 只把 bid 降到 34.8、ask 降到 35.1,并且下一位客户是买方,实现价差是多少?比较两种调价方案的利弊。 答案要点:\(35.1-35.0=0.1\)。调价少,实现价差大,但更可能继续从知情卖方处买入,且存货可能更久卖不出去。
  2. 例 13.2 中,若 Teri 把报价改为 100.4/100.9,内部价差变为多少? 答案要点:最优 bid 变为 100.4(Teri),最优 ask 仍为 100.4(Charles),市场处于"锁定"状态,内部价差为 0。
  3. 为什么交易商降低存货时要同时降低 bid 和 ask,而不是只降 ask?
  4. 用一两句话解释:为什么可分散存货风险长期不会让交易商亏损,逆向选择风险却会?
  5. 存货失衡与未来价格变化是正相关还是负相关?为什么? 提示:原书思考题 6。

进阶题

  1. 若交易商不知道下一个对手是否知情,为什么说他的报价"总是错的"? 提示:原书思考题 7。事后看,对知情买方 ask 太低,对不知情买方 ask 太高;报价只是条件期望。
  2. 既然所有订单流都含有信息,为什么交易商不逐笔改价? 提示:原书思考题 13。改价有成本,订单流信号噪声大,tick 限制最小调整幅度,频繁改价也可能被虚张声势者利用。
  3. 自营公司能否编程让计算机做市盈利?有哪些风险?哪些市场最适合? 提示:原书思考题 5,即算法做市。风险包括逆向选择、技术故障、陈旧报价被狙击;适合高成交量、低信息不对称、tick 合理的品种。
  4. 修改本章代码,让知情者比例 p_inf 从 0.05 增加到 0.30,观察最优 \(\kappa\) 如何变化,并用第 14 章的 Glosten–Milgrom 思路解释。
  5. 交易商与公共限价单交易者,谁更容易被报价匹配者利用? 提示:原书思考题 15。交易商改价更快,限价单交易者监控成本高、更新慢。

原书推荐习题:第 13 章思考题 5(算法做市)、6 和 7(存货失衡与未来价格的相关符号、为何报价总是"错的")、13 和 14(为何不逐笔改价、大 tick 对报价行为的影响)、15(做市商与限价单交易者被报价匹配的脆弱性)。思考题共 15 题。

原书对照

本章小节 原书章节 PDF 页码 原书页码(约)
第三部分导言 Part III Liquidity Suppliers p.289–290 p.276–277
13.1 交易商是什么 章首、13.1 Who Are Dealers? p.291–293 p.278–280
13.2 报价与价差 13.2 Dealer Quotations p.293–294 p.280–281
13.3 交易与订单流 13.3 Trading with Dealers、13.4 Attracting Order Flow p.294–296 p.281–283
13.4 存货 13.5 Dealer Quotation Decisions、13.6 Dealer Inventories p.296–298 p.283–285
13.5 存货风险 13.7 Inventory Risk p.298–300 p.285–287
13.6 应对逆向选择 13.8 Dealer Responses to Adverse Selection(含 Madoff 边栏) p.300–304 p.287–291
13.7 定价错误 13.9 Pricing Mistakes Dealers Make p.304–305 p.291–292
13.8 消息灵通程度 13.10 Well-informed and Poorly Informed Dealers p.305–307 p.292–294
13.9 与价值交易者、虚张声势者 13.11、13.12 p.307 p.294
小结与练习 13.13–13.15 p.307–309 p.294–296

原书页码按"PDF 页码 − 13"估算。