跳到正文

Implementation Shortfall:Perold 对执行成本的基础度量

执行成本到底该拿什么当尺子?Perold 的答案是决策那一刻的价格。这篇讲 implementation shortfall 的数学、成分分解、它和 VWAP 的根本分歧,以及一个算到底的数值例子。

第 10 篇 · 共 12 篇 约 11 分钟

如果你一辈子只学一个执行度量,就学 implementation shortfall(IS)。其他每个基准——VWAP、TWAP、收盘价——都是代理。IS 才是真东西。

这个判断背后有一个更根本的问题:你说一笔交易”花了多少钱”,到底是相对什么价格说的?选哪个价格当尺子,不是技术细节,它决定了你在度量什么。André Perold 在 1988 年给出的答案是:决策那一刻的价格。理由等下就清楚了。这个定义到今天仍然是交易成本的标准度量——Harris 在《Trading and Exchanges》第 21 章里讨论它,Berkowitz, Logue, Noser (1988) 给了第一批经验估计,你以后读到的每一份机构 TCA 报告都在用它的某种形式。

基本想法

假设你决定上午 10:00 买 10000 股苹果,当时价 $100.00。等到你的单完全成交(比如说在接下来 4 小时里),平均成交价是 $100.20,收盘价是 $100.30。

这笔交易总共花了你多少?

天真的答案:每股 $0.20,因为你付了 $100.20 而不是 $100.00。

但这不太对,或者说对得太粗糙。即便你 10:00 就能瞬间全部成交(不可能——你会顶着卖价把点差付掉),价格也照样会在收盘前动到 $100.30。所以那 $0.20 里有一部分只是市场在你执行期间自己动了,不是你的错。天真答案把”你造成的成本”和”市场恰好在动”混在一起了。

Perold 的定义把账算清楚:

IS = 实际成交相对决策那一刻价格的成本。

决策是上午 10:00、价格 $100.00(决策价),你实际成交平均 $100.20,你的 IS 就是每股 $0.20。注意这个数**同时**包含你付的点差和执行期间的价格变动——包括那些因为市场整体新闻、跟你的交易毫无关系的变动。你可能会问:市场自己动的部分凭什么算我头上?答案是:你在 $100.00 识别出了 alpha 并决定交易,最终你拿到的却是 $100.20 的仓位。从组合的角度看,中间丢掉的每一个 bp 都是真实的,不管是谁造成的。决策价捕捉的正是你当初想抓的那个 alpha,所以它是唯一诚实的基准——这就是 Perold 的洞见。执行期间的平均价、当天的 VWAP,都会把这笔账藏起来一部分。

当然,“总共丢了多少”和”分别是谁丢的”是两个问题。IS 先把总数钉死,然后再做归因。

把 IS 拆开

总 IS 可以分解成四个成分。第一个是点差成本:成交价与成交那一刻中间价之差,这是你为即时性付给 dealer 的部分。第二个是市场冲击成本:成交时中间价相对决策时中间价里由你自己的交易推动的那部分。第三个是时机成本(也叫 alpha 衰减成本):执行期间中间价相对决策价的漂移中不是你造成的那部分——市场自己走的。第四个是机会成本:订单没做完的代价。你打算买 10000 股只成交了 8000,那没成交的 2000 股也有它自己的账,等下单独算。

前三项覆盖已成交的部分。对一笔完全成交的买单,设 PdP_d 为决策价、Pfill,iP_{\text{fill},i} 为各笔成交价、MtiM_{t_i} 为各笔成交时的中间价、qiq_i 为第 ii 笔成交量,每股 IS 写成:

IS=∑iqi(Pfill,i−Mti)⏟点差+冲击+∑iqi(Mti−Pd)⏟时机(含冲击的漂移部分)∑iqi\text{IS} = \frac{\underbrace{\sum_i q_i (P_{\text{fill},i} - M_{t_i})}_{\text{点差+冲击}} + \underbrace{\sum_i q_i (M_{t_i} - P_d)}_{\text{时机(含冲击的漂移部分)}}}{\sum_i q_i}

(原始文献里这条式子常被写得省略归一化;两个求和都要除以总成交量,否则量纲对不上。)第一个括号抓的是”成交价高出中间价多少”,第二个抓的是”中间价从决策价漂了多少”——后者混着市场漂移和你自己的冲击,要再往下拆需要一个冲击模型,这一点在后面的数值例子里会具体看到。卖出方向全部反号。

决策价、到达价、下单价

上面一直说”决策那一刻”,但决策实际是什么时候发生的?这里有三个候选,实践里经常被混用:

决策价(PdP_d)是组合经理决定买卖那一刻的价格——“真正的”基准,alpha 被识别的那个价位。到达价(PaP_a)是订单到达交易 desk 那一刻的价格,因为通讯有延迟,它可能跟决策价不一样。下单价(PoP_o)则是父单交给 broker 那一刻的价格。

对一个 9:30 做决定、单子 9:35 才到交易员手里的长仓基金,PdP_d 是 9:30 的价,PaP_a 是 9:35 的价。如果开盘波动让价格在那 5 分钟里动了 5 bp,这 5 bp 是交易员无论如何避免不了的成本——但它确实是基金付出的成本,应该算进 IS。

实践中多数 TCA 报告用到达价做基准,原因很实际:决策时刻的数据难抓。这背后有个隐式假设——决策价 ≈ 到达价。对慢速的基本面策略这大致成立;对快速变动的策略,这假设会系统性地低估成本。做 TCA 时先问清楚报告用的是哪个价,比看数字本身更重要。顺带一句:算错决策时刻是 IS 实操里最常见的错误——基准要锚到实际决策那一刻,不是你事后记得的时候。

数字长什么样

一只美股大盘股的典型 IS 报告:决策价 $100.00,平均成交 $100.18,总 IS 每股 $0.18,即 18 bp。分解开来,点差成本 1 bp(平均付了半个点差)、市场冲击 8 bp(你的交易推动了价格)、时机成本 9 bp(执行期间价格漂移)。

值得停一下看这组数:你的”真实”成本是 18 bp,尽管点差只有 1 bp。只盯着点差看执行质量的人,会把成本低估一个数量级。而且三个成分里最大的一块(9 bp)是市场漂移——你控制不了它的方向,但你能控制暴露在它面前的时间长短。

对一个更小、更不流动的名字,同样的分解可能给出:点差 5 bp、冲击 30 bp、时机 15 bp,总共 50 bp。$1M 的交易上 50 bp 就是 $5000。不小。

IS vs VWAP:分歧在哪

VWAP 是 IS 最常见的替代品,所以值得正面比一次。IS 度量相对决策价的成本;VWAP 度量相对当日成交量加权平均价的成本。这俩度量的不是同一个东西:

维度ISVWAP
基准决策价当日 VWAP
它度量什么交易成本相对平均参与方的成本
算法能作弊?不能(基准固定)能(跟其他算法羊群)
最适合alpha 驱动的交易被动流量
标准在对冲基金长仓基金

关键分歧在”能不能作弊”这一行。VWAP 基准是被当天所有交易(包括你自己的)共同决定的,一个 VWAP 算法只要跟着大流走就能”跑赢 VWAP”,而这跟你有没有省到钱是两回事。一个具体的陷阱:假设你日内以 VWAP − 5 bp 买入(付得略低于 VWAP)。当日开盘 100,在100,在 99 到 $101 区间波动,收盘 $101.50。你的平均成交比如说 $100.20,而决策价是开盘的 $100.00。那么 IS 是 20 bp——你”跑赢 VWAP” 5 bp,同时跑输 IS 20 bp。

原因不神秘:你没抓到当天的价格上涨。你摊在全天的平均价上成交,而不是把量前置。纯 IS 视角会说:你应该在 $100.00 附近就买进大部分,接受更高的冲击,把价格涨到 $101.50 的 alpha 抓在手里。VWAP 视角对此完全无感——这正是 alpha 驱动的交易不该用 VWAP 考核的原因。

Perold 的原始框架

回到 1988 年的原始表述。Perold 把 IS 写成一个账面与现实的对照:

IS=Paper return−Actual return\text{IS} = \text{Paper return} - \text{Actual return}

账面回报是假想你能在决策价瞬间、零成本成交时组合会赚到的回报;实际回报是组合真实赚到的,含全部执行成本和机会成本。账面高出实际的部分,就是你的 IS 损失。这个表述的好处是天然完备:任何形式的执行摩擦——已成交部分的价差与冲击、决策到开始执行之间的延迟、没成交部分错过的行情——都会自动落在账面与实际的差里,一个都藏不住。Perold 用这个框架指出,换手频繁的主动管理组合,一年下来 IS 可以累积到组合回报的百分之几——具体数字随换手率和市场而变,但量级足以吃掉很多策略账面上的超额收益;交易不频繁的长仓共同基金则低得多。

现代算法:一条公式加一笔机会成本

现代 TCA 里的标准公式是 Perold 框架的直接操作化:

IS=Pavg fill−PdecisionPdecision⋅sign\text{IS} = \frac{P_{\text{avg fill}} - P_{\text{decision}}}{P_{\text{decision}}} \cdot \text{sign}

sign 买入取 +1、卖出取 −1。这样约定之后,IS > 0 永远表示成本:买入时是你付得比决策价多,卖出时是你收得比决策价少。报告里符号习惯一旦定了就别换——买卖混用符号是 TCA 报告里第二常见的错误。

乘以父单规模得到美元 IS:

IS$=Q⋅Pavg fill−PdPd⋅sign\text{IS}_{\$} = Q \cdot \frac{P_{\text{avg fill}} - P_d}{P_d} \cdot \text{sign}

部分成交时按成交量加权。但只对已成交部分算 IS 是不够的——没成交的部分有自己的账。你决定买 10000 股,最后只买到 8000(也许因为价格跑了),那 2000 股的机会成本是:

Opportunity cost=Qmissed⋅(Pclose−Pd)/Pd⋅sign\text{Opportunity cost} = Q_{\text{missed}} \cdot (P_{\text{close}} - P_d) / P_d \cdot \text{sign}

买入而价格往上跑,机会成本为正(你丢了那段行情);卖出而价格往下跑,同样为正。具体算一笔:你以平均 $100.20 买了 8000 股,错过的 2000 股按收盘价 $100.50 记账,那么已成交部分 8000 × (100.20−100.20 − 100.00) = $1600,错过部分 2000 × ($100.50 − 100.00)=100.00) = 1000,总 IS $2600——对应全部 10000 股是 26 bp。错过的两成股数贡献了近四成的总成本。

这笔账解释了执行算法的核心权衡:激进成交,冲击高但机会成本低;被动成交,冲击低但机会成本高。一个成交率只有 50% 的策略,光看已成交部分的 IS 会显得很漂亮——机会成本全被藏起来了。所以规矩是:永远对全部父单算 IS,包括未成交部分。至于这个权衡怎么解到最优,Almgren-Chriss(第 9 篇)给了正式框架。

一个算到底的数值例子

假设你决定上午 10:00 以 $410.00 买 50000 股 MSFT。你的算法在 90 分钟内执行:

时间股数成交价成交时中间价
10:055,000$410.10$410.08
10:155,000$410.15$410.12
10:3010,000$410.20$410.18
10:5015,000$410.35$410.32
11:0015,000$410.50$410.48

成交量加权平均成交价是 $410.32。总 IS 直接可得:($410.32 − 410.00)/410.00) / 410.00 = +7.8 bp。

分解按前面那条公式走。点差成本是各笔”成交价 − 中间价”的量加权平均:(0.02×5000 + 0.03×5000 + 0.02×10000 + 0.03×15000 + 0.02×15000) / 50000 = $0.024 每股,除以 $410 约合 0.6 bp。剩下的部分是中间价漂移:量加权平均中间价约 $410.296,相对决策价 $410.00 漂了 $0.296,约合 7.2 bp。两块加起来 0.6 + 7.2 = 7.8 bp,和总 IS 严丝合缝——这个自洽是应该的,因为分解只是把同一个差价换了个切法。

难的一步在最后:那 7.2 bp 的漂移里,多少是你自己的冲击、多少是市场本来就要走的?这没法从成交记录里直接读出来——你需要把实际价格路径跟”没有你交易时会观察到的路径”比。回测里反事实路径是现成的;实盘里只能靠冲击模型估。假如模型说冲击是 4 bp,那时机成本就是剩下的 3.2 bp。点差和总数是硬数字,冲击和时机的分界线是模型给的——读 TCA 报告时记住这条区别。

不同策略的 IS 长得完全不一样

策略典型 IS(bp)备注
高频做市1–5快速反转头寸
股票统计套利5–15快,alpha 丰富信号
多空股票15–30信号慢,订单大
长仓基本面30–100不太急,规模大
养老金再平衡50–200体量大,紧急度低
指数纳入 / 再平衡100–500强制交易,规模很大

这张表有个乍看反直觉的规律:alpha 信号越强,IS 反而越低。原因是强信号的交易员真的在乎每个 bp——他们愿意付更高的冲击换更快的成交,因为 alpha 明摆着超过成本。一家信号强的对冲基金 IS 可能 10 bp,其中 8 bp 是主动付出去的冲击。信号弱或者没信号的养老金反过来:慢慢成交省冲击,把机会成本吃满,IS 落在 50 bp 往上。

这也意味着 IS 数字绝不能跨策略比。30 bp 对高频策略是灾难,对长仓策略是好成绩。同理,波动大的市况下 IS 天然更高,跨时期比较要按波动率归一化。IS 是策略内部、同类市况下的度量。

IS 前沿

上面反复出现的”快 vs 慢”权衡可以画成一条前沿,跟 Almgren-Chriss 的均值-方差前沿是一个思路。对一笔给定父单,改变执行速度,得到(期望 IS,IS 方差)平面上的一条曲线:快速执行(比如 30 分钟)落在高冲击、低方差、低机会成本的一端;慢速执行(比如全天)落在低冲击、高方差、高机会成本的一端。前沿是凸的,你按自己的 alpha 强度和风险容忍度在上面挑一个点。Harris 第 21 章有概念图,Almgren-Chriss(第 9 篇)是正式版本。

Arithmion 中的实现

arithmion.tca.ImplementationShortfall 算总 IS(bp 和美元)、成分分解(点差、冲击、时机、机会)、逐笔归因、相对 VWAP/TWAP/收盘价等基准的对比,以及滑点分析。样例报告:

Implementation Shortfall 报告
═══════════════════════════════════════════
订单:           买 100,000 AAPL
决策时间:   2025-06-15 09:30:00
决策价:    $182.45
已成交:        100,000 股
平均成交价:  $182.78
总 IS:        +18 bp  ($33,000)

成分分解:
  点差成本:        +2 bp
  市场冲击:     +10 bp
  时机成本:       +6 bp
  机会成本:   0 bp

基准比较:
  vs 到达价:    +18 bp
  vs VWAP:       +11 bp
  vs 收盘价:      -8 bp(比收盘好 8 bp)

Arithmion 也能生成周期汇总(每日、每月等)做绩效审查。如果你在 Arithmion 里回测执行算法,IS 就是主度量:回测报告应该看每个父单的平均 IS、IS 标准差、成分分解、按情景(波动率、时段)切片,以及跟 Almgren-Chriss 最优的对比。最后这项是个很好的体检:如果你回测出的 IS 显著好于 Almgren-Chriss 的理论最优,你的模型错了——要么假设不现实,要么你偷用了实时拿不到的信息。

何时 IS 不是对的尺子

IS 的立足点是”决策那一刻存在一个 alpha 价格”。这个前提不成立时,IS 就不是对的度量。被动指数基金的再平衡交易没有 alpha 决策,IS 会很高但不可避免——用相对指数的跟踪误差更合理。跨多天的超长水平期交易里机会成本主导一切,分解方式要换。对 dealer 报价成交的大宗和 RFQ 交易,“决策价”干脆不存在,拿你收到的报价当基准。除这几类之外,对多数日内执行的主动策略,IS 就是对的度量。

Perold 那篇论文的标题叫 “Paper Versus Reality”——账面对现实。这五个词概括了整个主题:你的回测、你的模型组合,都是账面;IS 是账面和现实之间那道缝的宽度。Harris 第 21 章把它放进更大的流动性度量框架里,Berkowitz-Logue-Noser (1988) 用 NYSE 数据第一次量出了这道缝有多宽,Kissell-Glantz-Malamut (2003) 则把它接到了最优执行的工程实践上。往下读,Almgren-Chriss(第 9 篇)讲怎么把这道缝收窄。

参考文献

  • Harris, L. Trading and Exchanges: Market Microstructure for Practitioners. Oxford University Press, 2003. 第 21 章(流动性和交易成本度量)。ISBN: 978-0-19-514470-3.
  • Perold, A. “The Implementation Shortfall: Paper Versus Reality.” Journal of Portfolio Management, 1988.
  • Berkowitz, S., Logue, D., Noser, J. “The Total Cost of Transactions on the NYSE.” Journal of Finance, 1988.
  • Kissell, R., Glantz, M., Malamut, R. “A Practical Framework for Estimating Transaction Costs and Developing Optimal Trading Portfolios.” Journal of Trading, 2003.