执行落差 Implementation Shortfall:从决策价到成交价流失了多少钱
「回测年化 15%,实盘只有 6%」——中间那 9 个点去哪了?Perold (1988) 的执行落差给出唯一诚实的账本:以决策瞬间的价格为锚,把纸面组合与实盘组合的差额拆成延迟成本、执行成本、机会成本和显性费用四块。10 万股买单实测分解:延迟 9.6bp + 执行 20.8bp + 机会 18.0bp + 费用 1.6bp = 50bp。4000 次蒙特卡洛扫参与率画出执行的有效前沿:跑得快(100% 参与率)期望成本 19.6bp 但 σ 只有 31.8bp,跑得慢(2%)期望 3.7bp 可 σ 高达 113.9bp——省的是均值,赌的是方差。信号带 +30bp 日内漂移时慢执行的『省钱』被 alpha 流失整个吃回去(22.7bp vs 15.3bp,反超)。月频归因实测:35bp 单边成本 × 1.25 倍月换手 = 每月拖累 0.78%、年化 9.4 个点——正好是回测与实盘的裂缝宽度(中阶)。
执行落差 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 的洞察是:投资决策的价值是在决策瞬间锁定的,之后发生的一切价格损耗都是执行的责任。所以锚必须是决策价 ,而不是任何执行期间的加权价格。
1.1 四块拼图#
设目标买入 股,实际成交 股,成交均价 ,开始执行时价格 ,执行结束时价格 :
- 延迟成本:从决策到第一笔子单发出之间的价格漂移。信号衰减、合规审批、交易员犹豫,全记在这里。
- 执行成本:执行期间成交均价对起始价的偏离。市场冲击 + 执行期间的价格漂移。
- 机会成本:没买够的部分按期末价结算的「错失收益」。挂限价单没成交、尾盘撤单,全在这里现形。
- 显性费用:佣金、印花税、交易所规费。唯一事前可知的一块。
二、一笔真实结构的买单: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 bp | 113.9 bp |
| 20% | 10.8 bp | 78.6 bp |
| 35% | 14.9 bp | 59.2 bp |
| 100%(开盘打完) | 19.6 bp | 31.8 bp |
慢执行确实便宜——期望成本只有快执行的五分之一。但代价是标准差大 3.6 倍:你省的是均值,赌的是方差。单笔 ±114bp 的波动意味着运气差的那次执行能一次吃掉半个月的 alpha。这正是 Almgren-Chriss 框架的起点:在这条前沿上按你的风险厌恶挑一个点,而不是幻想同时拿到低均值和低方差。
四、慢执行的隐藏账单:alpha 流失#
上面的前沿假设价格无漂移。但你为什么要买这只股票?因为你有信号。信号意味着价格有漂移,漂移的方向正好对你不利(买单+看涨信号=执行期间价格向上跑)。
给价格加上 +30bp 的日内漂移重跑:

结果反转了:慢执行(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 - dragpython
纸面月均 1.28%,实盘月均 0.49%,每月拖累 0.78%——年化 9.4 个百分点。回到开头那场争吵:回测 15% vs 实盘 6%,裂缝宽度正好就是这个量级。有了逐月的 IS 账本,争吵变成了工程问题:拖累主要来自延迟(流程问题)、冲击(订单太大或太急)、还是机会成本(限价太保守)?每一块都有对应的改进抓手。
反过来这也是策略容量的判据:当 IS 拖累随管理规模爬升到吃掉全部纸面 alpha 时,就是这个策略的容量上限——IS 是把「容量」从玄学变成算术的那把尺。
六、工程落地清单#
- 决策价必须在信号触发时立刻落库。事后补记的决策价必然被污染(往往「恰好」选了对交易员有利的时点)。 的时间戳精度直接决定整个体系的可信度。
- 机会成本必须入账。只统计已成交滑点的 TCA 报告会系统性美化限价策略。
- 分解的四块要分开归因到不同责任方:延迟归流程/研究,执行归交易台/算法,机会成本归限价策略,费用归通道谈判。混在一起的总数没有行动价值。
- 期末价 的选择要固定成制度(如决策日收盘或 T+1 收盘),不能逐笔挑选——否则机会成本一栏立刻沦为橡皮泥。
- 单笔 IS 噪声极大(σ 上百 bp),评价执行质量必须看月度/季度聚合,单笔追责只会逼交易员选择「贴基准但伤策略」的保守行为。
七、诚实边界#
- IS 度量的是执行损耗,不评价决策本身的好坏。决策价买贵了是研究的锅,IS 不背。
- 延迟成本与执行成本的切分依赖「开始执行」时间戳的定义,算法单的场景下这条线是模糊的。
- 本文冲击模型是静态平方根,真实冲击有暂时/永久分解和跨日衰减,前沿的具体形状会变,但均值-方差权衡的方向不变。
- 机会成本对 的选择敏感,短持仓期策略尤甚——制度化选择只能保证一致性,不能保证唯一正确。
一句话总结:执行落差把「回测很美、实盘很瘦」这句抱怨变成一张可审计的四栏账本——延迟、冲击、错失、费用,每一栏都有名有姓有责任人;而它揭示的核心权衡是,执行省钱与执行稳定天然互斥,你只能在前沿上选一个与你信号半衰期匹配的点。
参考文献:
- 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.