halo 的技术博客

返回

执行落差 Implementation Shortfall:从决策价到成交价流失了多少钱#

先讲一个所有量化团队都经历过的对话。

研究员:「这个策略回测年化 15%,Sharpe 1.4。」 交易员(三个月后):「实盘年化 6%。」 研究员:「不可能,是不是你执行有问题?」 交易员:「是不是你回测有问题?」

这场争吵在没有度量体系的情况下永远吵不出结果。Implementation Shortfall(执行落差,简称 IS)就是终结这场争吵的账本——它由 André Perold 在 1988 年提出,核心思想只有一句话:

以你做出交易决策那一瞬间的价格为锚,比较「纸面组合」(假设决策瞬间以决策价无限量成交)和「实盘组合」(真实成交记录)的差额。这个差额就是执行环节流失的全部金额,一分都跑不掉。

一、为什么锚必须是决策价#

在 IS 出现之前,交易质量的主流基准是 VWAP:成交均价打赢当日 VWAP 就算执行得好。但 VWAP 基准有一个致命漏洞——它对「什么时候开始交易」完全免疫

假设你的信号在早上 9:35 触发,决策价 100.00 元。交易台拖到下午才开始买,此时股价已经涨到 100.80。只要下午执行得贴近下午的 VWAP,按 VWAP 口径这是一笔「完美执行」——但相对你的决策价,80bp 已经无声无息地蒸发了。

Perold 的洞察是:投资决策的价值是在决策瞬间锁定的,之后发生的一切价格损耗都是执行的责任。所以锚必须是决策价 PdP_d,而不是任何执行期间的加权价格。

1.1 四块拼图#

设目标买入 XX 股,实际成交 XfX_f 股,成交均价 Pˉ\bar{P},开始执行时价格 P0P_0,执行结束时价格 PTP_T

IS=(P0Pd)Xf延迟成本+(PˉP0)Xf执行成本+(PTPd)(XXf)机会成本+fees显性费用\text{IS} = \underbrace{(P_0 - P_d) \cdot X_f}_{\text{延迟成本}} + \underbrace{(\bar{P} - P_0) \cdot X_f}_{\text{执行成本}} + \underbrace{(P_T - P_d)(X - X_f)}_{\text{机会成本}} + \underbrace{\text{fees}}_{\text{显性费用}}

  • 延迟成本:从决策到第一笔子单发出之间的价格漂移。信号衰减、合规审批、交易员犹豫,全记在这里。
  • 执行成本:执行期间成交均价对起始价的偏离。市场冲击 + 执行期间的价格漂移。
  • 机会成本:没买够的部分按期末价结算的「错失收益」。挂限价单没成交、尾盘撤单,全在这里现形。
  • 显性费用:佣金、印花税、交易所规费。唯一事前可知的一块。

二、一笔真实结构的买单:50bp 是怎么流走的#

用一笔典型机构买单做完整分解:决策价 100.00,目标 10 万股,延迟后从 100.12 开始执行,成交 8 万股、均价 100.38,收盘 100.90,剩余 2 万股未成交:

P_d, P_0, P_T = 100.00, 100.12, 100.90   # 决策价 / 开始执行价 / 期末价
X, filled     = 100_000, 80_000          # 目标量 / 实际成交量
avg_exec      = 100.38                   # 成交均价
fees_ps       = 0.02                     # 每股费用

delay = (P_0 - P_d) * filled             # 延迟成本
exec_ = (avg_exec - P_0) * filled        # 执行成本(冲击+漂移)
opp   = (P_T - P_d) * (X - filled)       # 机会成本
fees  = fees_ps * filled
notional = P_d * X
for k, v in [("延迟", delay), ("执行", exec_), ("机会", opp), ("费用", fees)]:
    print(f"{k}: {v/notional*1e4:.1f} bp")
python

执行落差瀑布分解

四块加总 50.0bp:延迟 9.6bp、执行 20.8bp、机会 18.0bp、费用 1.6bp。

这张瀑布图最值得盯住的是机会成本那一根柱子。很多交易台的内部报告只统计「已成交部分的滑点」,即前两块,那样算出来只有 30bp——没成交的 2 万股在报告里消失了,但它们错过的 90bp 涨幅是真金白银的损失。IS 的第一价值就是让「没做的交易」也上账本。挂限价单看起来成交价漂亮,但成交率低,省下的价差往往远小于错过的行情——这个 trade-off 只有在 IS 口径下才可见。

三、执行的有效前沿:均值和方差只能买一个#

执行速度是 IS 框架下最核心的决策变量。跑得快,市场冲击大;跑得慢,暴露在价格随机波动里的时间长。我们用蒙特卡洛把这个权衡画成一条前沿:母单 = 10% 日成交量,日波动 2%,平方根冲击模型,扫每桶参与率从 2% 到 100%:

n_mc, n_bins, sigma_day, eta = 4000, 48, 0.02, 0.10
adv, order = 5e6, 0.10 * 5e6
for part in [0.02, 0.05, 0.12, 0.35, 1.00]:
    need = min(n_bins, int(np.ceil(order / (part * adv / n_bins))))
    shocks = rng.standard_normal((n_mc, n_bins)) * sigma_day / np.sqrt(n_bins)
    px = np.exp(np.hstack([np.zeros((n_mc,1)), np.cumsum(shocks,1)]))[:, :-1]
    impact = eta * np.sqrt(part) * sigma_day * 1e4        # 平方根冲击(bp)
    is_bp = (px[:, :need].mean(1) * (1 + impact/1e4) - 1) * 1e4
    print(f"参与率{part:.0%}: 均值{is_bp.mean():.1f}bp / σ{is_bp.std():.1f}bp")
python

执行有效前沿

结果呈现教科书级的权衡:

参与率IS 均值IS 标准差
2%(全天磨)3.7 bp113.9 bp
20%10.8 bp78.6 bp
35%14.9 bp59.2 bp
100%(开盘打完)19.6 bp31.8 bp

慢执行确实便宜——期望成本只有快执行的五分之一。但代价是标准差大 3.6 倍:你省的是均值,赌的是方差。单笔 ±114bp 的波动意味着运气差的那次执行能一次吃掉半个月的 alpha。这正是 Almgren-Chriss 框架的起点:在这条前沿上按你的风险厌恶挑一个点,而不是幻想同时拿到低均值和低方差。

四、慢执行的隐藏账单:alpha 流失#

上面的前沿假设价格无漂移。但你为什么要买这只股票?因为你有信号。信号意味着价格有漂移,漂移的方向正好对你不利(买单+看涨信号=执行期间价格向上跑)。

给价格加上 +30bp 的日内漂移重跑:

alpha 漂移下的 IS 分布

结果反转了:慢执行(5% 参与率)IS 均值 22.7bp,反超快执行(35% 参与率)的 15.3bp。无漂移世界里慢执行省下的 8bp 冲击成本,被执行期间的 alpha 流失整个吃回去还倒贴。

这是执行算法选择里最常被忽略的一条:执行速度必须匹配信号半衰期。动量类、事件驱动类的短周期信号,用全天 VWAP 慢慢磨等于把 alpha 白送给市场;反过来,低频价值类信号没有日内漂移,慢执行的低冲击优势才真正兑现。

五、IS 作为归因体系:回测与实盘之间唯一的桥#

单笔分析之外,IS 真正的机构级用途是逐期解释纸面收益与实盘收益的差。模拟一个月换手 1.25 倍(单边)、单边执行成本均值 35bp 的策略,24 个月:

alpha_paper = rng.normal(0.9, 1.1, 24)        # 纸面月收益 %
turnover    = rng.uniform(0.5, 2.0, 24)       # 月单边换手
cost_bp     = rng.normal(35, 8, 24)           # 单边 IS 成本
drag = turnover * 2 * cost_bp / 1e4 * 100     # 双边拖累 %
alpha_real = alpha_paper - drag
python

纸面 vs 实盘

纸面月均 1.28%,实盘月均 0.49%,每月拖累 0.78%——年化 9.4 个百分点。回到开头那场争吵:回测 15% vs 实盘 6%,裂缝宽度正好就是这个量级。有了逐月的 IS 账本,争吵变成了工程问题:拖累主要来自延迟(流程问题)、冲击(订单太大或太急)、还是机会成本(限价太保守)?每一块都有对应的改进抓手。

反过来这也是策略容量的判据:当 IS 拖累随管理规模爬升到吃掉全部纸面 alpha 时,就是这个策略的容量上限——IS 是把「容量」从玄学变成算术的那把尺。

六、工程落地清单#

  1. 决策价必须在信号触发时立刻落库。事后补记的决策价必然被污染(往往「恰好」选了对交易员有利的时点)。PdP_d 的时间戳精度直接决定整个体系的可信度。
  2. 机会成本必须入账。只统计已成交滑点的 TCA 报告会系统性美化限价策略。
  3. 分解的四块要分开归因到不同责任方:延迟归流程/研究,执行归交易台/算法,机会成本归限价策略,费用归通道谈判。混在一起的总数没有行动价值。
  4. 期末价 PTP_T 的选择要固定成制度(如决策日收盘或 T+1 收盘),不能逐笔挑选——否则机会成本一栏立刻沦为橡皮泥。
  5. 单笔 IS 噪声极大(σ 上百 bp),评价执行质量必须看月度/季度聚合,单笔追责只会逼交易员选择「贴基准但伤策略」的保守行为。

七、诚实边界#

  • IS 度量的是执行损耗,不评价决策本身的好坏。决策价买贵了是研究的锅,IS 不背。
  • 延迟成本与执行成本的切分依赖「开始执行」时间戳的定义,算法单的场景下这条线是模糊的。
  • 本文冲击模型是静态平方根,真实冲击有暂时/永久分解和跨日衰减,前沿的具体形状会变,但均值-方差权衡的方向不变。
  • 机会成本对 PTP_T 的选择敏感,短持仓期策略尤甚——制度化选择只能保证一致性,不能保证唯一正确。

一句话总结:执行落差把「回测很美、实盘很瘦」这句抱怨变成一张可审计的四栏账本——延迟、冲击、错失、费用,每一栏都有名有姓有责任人;而它揭示的核心权衡是,执行省钱与执行稳定天然互斥,你只能在前沿上选一个与你信号半衰期匹配的点。


参考文献:

  • Perold, A. F. (1988). The Implementation Shortfall: Paper versus Reality. Journal of Portfolio Management, 14(3), 4-9.
  • Almgren, R., & Chriss, N. (2001). Optimal Execution of Portfolio Transactions. Journal of Risk, 3, 5-40.
  • Kissell, R. (2013). The Science of Algorithmic Trading and Portfolio Management. Academic Press.
执行落差 Implementation Shortfall:从决策价到成交价流失了多少钱
https://blog.halo26812.eu.org/blog/implementation-shortfall-is
Author halo
Published at 2026年7月28日
版权声明 CC BY-NC-SA 4.0
Comment seems to stuck. Try to refresh?✨