第5章 交易成本模型
TL;DR:阿尔法模型是异想天开的乐观者,风险模型是紧张兮兮的担忧者,交易成本模型则是那个吝啬的会计——它只干一件事:告诉你这笔交易要花多少钱。 交易成本由佣金和费用、滑点、市场冲击三部分构成:第一类基本固定且容易算,后两类要事后才知道,是建模的难点。 关键的观念纠正:交易成本模型不是用来”省钱”的,它只负责描述成本;省钱是第7章执行算法的活儿。 低估成本会交易过频、入不敷出;高估成本会交易过少、持仓过长——两头都不是最优。 四类模型(常值型、线性、分段线性、二次型)按复杂度递增。二次型最准,分段线性因为在简洁与准确之间折中,在宽客中最流行。
详读
吝啬的会计:这一章在黑箱里的位置
作者用一句萨缪尔·约翰逊的格言开场,“奢难达富,俭不致贫”。接续前两章的拟人比喻:阿尔法模型是异想天开的乐观者,风险模型是紧张兮兮的担忧者,那么交易成本模型就是个吝啬的会计。
它的基本理念只有一句:交易是有成本的,除非有足够的理由,否则便不应该进行交易。分量有多重?作者给了一个具体的量级——很多非常成功的宽客估计,他们的交易成本侵蚀了收益的 20%~50%。
在量化交易界,进行交易只有两个原因:增加盈利的概率或量(阿尔法模型驱动),或降低亏损的概率或量(风险模型驱动)。但两个原因都附带同一条警告:组合收益或风险的一点点改进,可能并不足以支付交易成本。作者的措辞很冷峻——市场和经纪商关心的不是你的交易收益,不管交易的目的和价值如何,交易一旦发生,就会消耗服务、产生成本。
描述成本,不是最小化成本
这是本章最容易被误读的一点,作者专门点破:设计交易成本模型并不是为了最小化交易成本,而是告知构建投资组合过程中进行交易的成本。极小化执行成本是黑箱里另一个部件(执行算法)的任务,放在第7章讨论。
作者承认”描述成本没有最小化成本那么有吸引力”,但估准了才有意义:低估交易成本,会导致交易次数过多、入不敷出,损失慢慢扩大;高估交易成本,会导致交易次数过少、持仓时间过长。两种情形都得不到最优结果。由此又引出本章贯穿始终的权衡:用更准确但复杂的模型,还是用计算负荷小、速度快的简单模型。
佣金和费用:固定、可知、但不止是佣金
第一类成本,是支付给经纪商、交易所和监管者的费用,买的是市场接入通道、交易安全保障和基础设施。对很多宽客来说这笔钱很低——宽客通常不用银行的人工和服务,只借它的基础设施直连市场;对银行而言一笔交易的增量成本很少,低费率也照样盈利。但宽客交易量大,经纪商的总利润仍极为丰厚。
佣金之外还有清算和结算费(通常含在佣金里)。清算包括监管报告、实时监控、税务处理和破产处理,必须在结算前完成;结算是以有价证券的交割换取资金交付,是交易的最后一步。这些都是真实的工作量,尤其考虑到每天有大量宽客在做成千上万笔交易。
交易所和电子撮合成交网络卖的是另一种服务:流动性资金池的接入通道。交易所要吸引交易量,交易量又吸引其他寻求流动性的人,同时它保证双方履约,因此按笔收取小额费用。作者在此提到暗池已占美国股市交易量的很高比例——2012 年达 32%(Tabb Group 数据,出处见本节脚注引用的 Businessweek 报道)。
滑点:从”决定”到”成交”之间的价格漂移
佣金和费用不可避免,但对绝大部分宽客而言都不是主要部分——它们基本固定、容易计算。作者用一个干净的算术说明:假设佣金加费用合计每股 0.001 美元,宽客很容易判断,只要这笔交易带来的阿尔法收益或降低的风险超过每股 0.001 美元就划算。真正棘手的是滑点和市场冲击,它们在度量、建模和管理上都更难。
滑点是从交易者决定开始交易,到订单进入交易所系统实际被执行,这段时间内发生的价格变动。 作者的例子:想在 100 美元/股卖出 100 股雪佛龙(CVX),等订单走完经纪商和交易所,价格已回落到 99.90 美元——0.10 美元就是滑点成本。反过来若涨到 100.10 美元成交,滑点也可以是正收益。
滑点有两个决定性变量:
- 时间(反应速度)。滑点是决策到成交这个时间间隔的函数。交易系统与市场之间的滞后越多,订单到达市场越慢,价格偏离决策价越多。作者补了一句反直觉的结论:预测尤其是短期预测越准确,滑点的破坏性反而越大——因为价格确实按你预测的方向走了,但收益不归你,这笔交易还没真正发生。
- 波动性。90 天期国债价格变化很缓慢,有时几周没什么变化,滑点就不是主要因素;换成高波动的互联网股票就完全不同。
滑点还挑策略:它给趋势跟随策略带来很多损失,因为这类策略的买卖时点通常是在价格已经沿着预料的趋势波动时;给均值回复策略的损失就少,甚至可能是正收益,因为这类策略的下单时点通常与现有趋势相反。
存疑:原书此处写”谷歌股价的每日平均波动幅度可以达到开盘价的 2.6%,这是其日股价波动幅度均值的 16 倍还多”。按上下文(紧接 90 天期国债的对比),16 倍的比较对象应是国债一类的低波动品种,而非谷歌自身;提取到的中译文在此处指代不清,2.6% 这个数值可用,倍数关系的比较对象存疑。
市场冲击:你自己把价格推走了
第三类,也是对宽客可能最重要的一类。基本问题很朴素:你买入的行为本身会推高价格,你卖出会压低价格。小订单的价格波动通常介于最优买卖价之间,大订单会造成巨大波动,极端情况下高达几个百分点。市场冲击成本通常定义为订单进入市场时的价格与订单被执行价格之间的差价,衡量的是给定订单通过流动性需求对市场造成的价格变动。
原理简单——就是无处不在的供需关系:你要的规模越大,就得吃掉越多供给,价格就越差。但量化很难:通常直到交易完成,我们才能衡量冲击有多大,这时候的结论已经没有太大意义。还有一堆干扰项,比如同一时间同向操作的其他交易数量、是否有消息正让股市处于非正常波动——它们都影响度量,都难以量化、难以预测、更谈不上控制。因此,交易成本建模中的市场冲击通常不包含这些因素,只关注”相对于当时市场流动性的订单规模”。流动性的定义方法很多(买卖单的数量规模、订单簿深度),但都跟偏离最优买卖价的挂单信息有关。
滑点和市场冲击会重合,且都可能是负的
作者专门讲了一个两者纠缠的情形,这是本章最有意思的一段。设想要卖掉一只正在上涨的股票:
- 100 美元时决定卖出,订单真正进场时股价已涨到 100.05 → 滑点是 -0.05 美元(进场价对他更有利);
- 价格继续涨,买单远超卖单,他的卖单排队等待,最终以 100.20 成交 → 又产生 -0.15 美元的市场冲击成本。
结果是:交易者可能觉得他卖出股票没有被收取交易成本,反而是别人为了买入付给了他成本。作者随即泼冷水:不断涌来的卖单并不总能带动股价上涨,而这种情况发生时,几乎不可能把市场冲击与滑点(或其他独立于该订单的价格波动因素)区分开。真正要回答的问题是——他的卖单是否稍微减缓了股价上升?如果是,减缓了多少?这就是构建交易成本模型时必须面对的难题。
流动性的两端:ECN 的返佣结构与暗池
前面讨论的都是需求流动性的交易:你要流动性,提供流动性的人就收你钱。反过来看,流动性的供给方因此获得收益。历史上供给方通常是做市商或专业人士,职责就是确保交易者有意愿时能成交。近年电子平台上很多产品交易量大幅上涨,意味着即使没有做市商,市场依然能有序运行。
ECN(电子通信网络) 是这类平台的例子。它的主要工作是吸引足够多用户以显示流动性充足,并提供稳健技术保证连续运作。为吸引流动性供给方,股票市场中绝大部分 ECN 采取了一套返佣结构,作者给出了具体数字:
| 角色 | 行为 | 每股现金流 |
|---|---|---|
| 流动性需求方 | 以卖出报价购入、或以买入报价卖出 | 付出约 0.03 美元 |
| 流动性供给方 | 提供卖出价和买入价(挂单) | 得到约 0.02 美元 |
| ECN | 撮合 | 留下约 0.01 美元 |
于是对一些需要被动执行的策略(通常是均值回复策略),提供流动性通常被看作利润的来源。但作者提醒这不是普适规则:一些 ECN 和交易所,尤其是股票市场之外,并不提供折扣、也不向流动性需求方收费;还有一些交易所是反过来的——向供给方收费,付费给需求方。
暗池是另一条直接交易的路。它是经纪商或独立公司设立的、允许交易者匿名直接成交的场所,产生的部分原因就是出于对大单市场冲击的担忧。暗池不提供限价交易簿信息,看不到做市商或其他参与者提供的流动性;交易者只是把单挂出来,恰好有人愿意做反向操作就成交。由于匹配是匿名的,波动比公开市场小——在公开市场上,交易的主动方要补偿接单的一方。作者点出暗池一个与众不同之处:它是在场外交易场内的金融产品。没有公开市场,暗池就无法存在——暗池里交易的证券都是交易所的品种,而且公开市场提供的价格发现透明性,正是暗池参与者决定买卖价的依据。这一点加上暗池只对特定顾客开放,造成了对它的争议不断。
四类模型:从常值型到二次型
作者先立一个共识:保持流动性、趋势、波动率等因素不变,把订单规模(以货币、股份数、合约数量度量)作横轴、交易成本作纵轴,宽客们普遍认为这条曲线应该是二次型——随着交易规模增大(由于市场冲击),交易成本上升的速度会更快。
模型里,佣金和费用这类固定已知的成本被当作基准线:交易费用低于该基准线的交易根本不可能发生。滑点和市场冲击则是变的:滑点受波动率(越高滑点可能越多)、趋势(趋势越明显,顺势交易的滑点可能越多)影响;市场冲击的驱动因素包括订单规模、可吸收订单的流动性规模、当时的供需不平衡。
作者还强调了逐品种建模:各种金融产品在投资者基础、不同时间的流动性和波动性上各有特点——谷歌(GOOG)的交易不可能和亚马逊(AMZN)完全一样,雪佛龙(CVX)也不可能和埃克森美孚(XOM)一样。因此很多宽客对组合中每一种产品使用单独的模型,并让模型基于交易系统搜集的数据随时间变化。换句话说,很多交易成本模型高度依赖历史经验。
四类模型按简单到复杂:
| 模型 | 假设 | 评价 |
|---|---|---|
| 常值型 | 无论订单规模如何,成本不变 | 计算极其简单,但通常是不对的,因而不是很常用。只在交易规模几乎不变且流动性充分不变时成立 |
| 线性 | 成本以固定比率随规模增大 | 需要在”小规模高估成本”和”大规模低估成本”之间权衡;无论何种情形都比常值型更合理 |
| 分段线性 | 分区间用直线拟合,曲率变陡处换一条新直线 | 在很大的规模范围内准确度远高于前两种;作为简洁性和准确性的折中,在宽客中非常流行 |
| 二次型 | 用二次函数拟合 | 计算复杂度最高,元素多、形式多样,建模复杂;是所讨论模型中估计最为准确的 |
一个关键澄清:常值型和线性模型也有”正确”的时候——注意图中实线与虚线交叉的地方,模型基本上可以对成本进行正确估计。所以如果交点对应着通常的交易规模,且规模只在两条线比较接近的范围内波动,这类简单模型也不会带来太大问题。
为什么连二次型也不完美
作者预判了读者的疑问:既然大家都认为真实曲线是二次的,为什么用二次函数去拟合,得到的仍是不太完美的估计?
答案在于图 5-4 里两条线的性质不同:实线反映的是期望成本,点线是交易发生后观察到的真实成本线。二者存在差异,是因为实线必须在交易前给定,而点线是交易后观察到的真实数据。真实交易成本是观察到的客观事实,而任何对交易成本的估计都是预测结果,预测就不可能是完美的。造成两者差别的因素包括:产品波动性、随时间变化的流动性,以及随时间变化的、交易同一股票的交易者类型(做市商、对冲基金、共同基金或个人投资者)。
结论回到那个贯穿全章的权衡:宽客会尽力做准预测,但既然预测不可能完美,而速度和简洁性又都是想要的目标,就必须在准确性和简洁性间把握平衡。
无论用哪类模型,宽客必须对投资范围内每一种产品的交易成本进行描述——流动性差的小市值股票,交易成本要比流动性良好的高市值股票高。并且必须持续更新估计,让模型与当前市场形势保持一致,同时指明什么时候需要更多研究来改进模型。
关于插图的说明:提取到的正文中,图 5-1(常值交易成本函数)、图 5-2(线性交易成本函数)、图 5-3(分段线性交易成本函数)、图 5-4(二次型交易成本函数)、图 5-5(黑箱结构)只有图题,没有图形内容。上文对各图的描述(实线/虚线交点、真实曲线的曲率变化、期望成本线与事后成本线的区别等)全部来自作者对图的文字解说,未对图形本身作任何补充或推测。
小结:成本最小化的两个阶段
作者在小结里做了一个漂亮的类比收束:交易成本模型告知成本状况,并非为了极小化成本——正如阿尔法模型并不创造收益,而是进行预测并把预测传递给投资组合构建模型。
成本最小化分两个阶段:
- 构建投资组合模型,使用交易成本模型提供的输入变量,计算达成目标投资组合的成本;
- 将目标投资组合传输到执行算法阶段,以尽可能低的成本执行交易。
至于选哪类模型,作者给了明确的适用边界:只交易给定品种且规模基本不变的交易者,或者规模小到可以假设一个很低的成本且大部分时间都对的交易者,简单模型比较有用;对于在短期内做大笔交易、或交易量变化很大的宽客,复杂模型更有用。这 4 种模型在合适的情况下都是有效的——值得思考的问题是,所选择的模型是否适合所使用的环境。
下一步,注意力转向投资组合构建模型:以阿尔法模型、风险模型和交易成本模型(前三章的内容)作为输入变量,设计目标投资组合,在控制风险的前提下最大化收益。
案例档案
| 案例 | 一句话经过 | 在书中的作用(佐证哪个论点) |
|---|---|---|
| 暗池占美股交易量 32%(2012 年,Tabb Group) | 作者引 Businessweek 报道 Matthew Philips《Where Has all the Stock Trading Gone?》(2012-05-10)指出暗池已占美国股市交易量很高比例 | 说明”交易所/撮合网络之外还有别的流动性场所”,并为后文暗池讨论铺垫 |
| 谷歌(GOOG)股价日均波动幅度约为开盘价的 2.6% | 与 90 天期国债”几周都没什么变化”对照 | 佐证”滑点是所预测产品波动性的函数”——高波动品种滑点是主要因素(倍数关系的比较对象见正文”存疑”标注) |
| 90 天期国债 | 价格变化很缓慢,有时几周没什么变化 | 反面对照:低波动品种滑点不是交易成本的主要因素 |
| ECN 的流动性返佣结构 | 股票市场绝大部分 ECN 向需求方收约 0.03 美元/股、付供给方约 0.02 美元/股、自留约 0.01 美元 | 佐证”提供流动性可以是利润来源”,并解释为何被动执行策略(多为均值回复)偏好挂单 |
| 谷歌 vs 亚马逊、雪佛龙 vs 埃克森美孚 | 作者以两组同行公司为例,指出它们的交易特征不可能完全一样 | 佐证”每种产品需单独建交易成本模型” |
| 雪佛龙(CVX)100 美元卖单滑点至 99.90 | 设例:作者构造的数字例子,非真实交易记录 | 用来定义滑点 |
| 100 → 100.05 → 100.20 的卖单 | 设例:滑点 -0.05、市场冲击 -0.15,两者皆为负 | 说明滑点与市场冲击会重合、且可能都是负的,难以分离 |
延伸案例(编者补)
编者补,非原书内容。本章成书于原书第 2 版时期,所引暗池占比是 2012 年 Tabb Group 的数据(32%)。读者若要复用这个数字判断当下市场结构,需自行核对更新的口径与来源——原书未对此后年份的变化做任何说明,本笔记也不做外推。
另外,本章讲 ECN 的”maker-taker”返佣结构时给的是每股约 0.03 / 0.02 / 0.01 美元的量级。这是作者当时给出的示意数字,用于说明结构而非报价;作者本人也已明确指出反向(taker-maker)交易所存在。读者理解这一段,重点应放在”付费方向决定了策略的执行方式偏好”这个机制上,而不是把三个数字当作现行费率。
怎么用
- 先给自己算一条基准线。 佣金加费用是固定且可知的,把它折成”每股/每笔多少钱”。任何一笔交易,若预期的阿尔法收益或风险下降量低于这条基准线,就根本不该发生——这是本章给出的最硬的一条筛选规则。
- 按策略类型预判滑点方向。 趋势跟随策略天然吃滑点的亏(下单时价格已在顺着趋势跑);均值回复策略的滑点损失小、甚至可能为正(下单方向与现有趋势相反)。如果你的回测里没有按策略类型区分滑点假设,这个假设很可能是错的。
- 选模型看你的交易规模波动,而不是看模型先进程度。 品种单一、规模基本不变 → 常值型/线性够用;短期内做大笔交易或交易量变化很大 → 才值得上分段线性或二次型。作者留下的自查问题就是那句:所选择的模型是否适合所使用的环境。
要点清单
- 交易成本模型的职责是描述成本、告知组合构建,不是最小化成本;最小化归执行算法(第 7 章)。
- 很多非常成功的宽客估计,交易成本侵蚀了其收益的 20%~50%。
- 成本三分:佣金和费用(固定、可知)、滑点、市场冲击(可变,交易发生前无法准确知道)。
- 滑点 = 决策时刻价 → 实际执行价的价格变动,是时间间隔和产品波动性的函数;短期预测越准,滑点破坏性越大。
- 市场冲击 = 订单入市价 → 订单执行价的差价;原理是供需,但通常要等交易完成才能测出,届时结论已无太大意义。
- 建模时市场冲击通常排除同向交易数量、突发消息等外部因素,只关注”相对于当时流动性的订单规模”。
- 滑点与市场冲击会重合、且都可能为负(顺势卖出的情形),在同一模型中把二者分开是复杂的。
- ECN 多为需求方付费(约 0.03 美元/股)、供给方收费(约 0.02 美元/股);但部分交易所(尤其股票市场之外)无折扣或方向相反。
- 暗池匿名撮合、无限价簿,是在场外交易场内品种——离开公开市场的价格发现就无法存在,争议由此而来。
- 四类模型按复杂度递增:常值型(通常不对、少用)、线性、分段线性(简洁与准确的折中,最流行)、二次型(最准、最复杂)。
- 即便是二次型也不完美:期望成本线必须事前给定,真实成本线是事后观察结果,预测本就不可能完美。
- 逐品种建模、随时间用实际交易数据更新——流动性差的小市值股成本高于高市值股。