18. 执行缺口分析:执行缺口的定义与分解、如何评估交易执行质量
做量化交易这些年,我见过太多策略在回测里跑得漂亮,一上实盘就拉胯。原因在哪?说白了,就是忽略了执行缺口。
你想想看,回测里你按收盘价成交,或者按最优价成交,但实盘里呢?滑点、延迟、市场冲击,这些都会吃掉你的利润。执行缺口,就是用来量化这个差距的。
18.1 执行缺口的定义
执行缺口,英文叫 Implementation Shortfall。它衡量的是:你决策时的理论价格 与 实际成交价格 之间的差异。
公式很简单:
执行缺口 = (实际成交均价 - 决策价格) × 成交数量
如果结果是正的,说明你买贵了,或者卖便宜了。这就是亏损。如果是负的,说明你执行得比预期还好——这种情况很少见,但也不是没有。
我个人习惯把执行缺口拆成两部分来看:
- 显性成本:佣金、印花税、过户费。这些是明摆着的。
- 隐性成本:滑点、市场冲击、延迟成本。这些才是大头。
核心观点:隐性成本往往占执行缺口的 70% 以上。很多新手只盯着佣金,却忽略了滑点,这是典型的捡了芝麻丢了西瓜。
18.2 执行缺口的分解
我习惯把执行缺口拆成四个部分。这样分析起来更清晰:
| 成本类型 | 定义 | 典型来源 |
|---|---|---|
| 固定成本 | 佣金、税费 | 券商收费、交易所规费 |
| 延迟成本 | 从决策到下单的时间差 | 网络延迟、人工审批 |
| 市场冲击 | 大单推动价格反向移动 | 流动性不足、订单簿深度不够 |
| 机会成本 | 未成交部分的价格变动 | 部分成交、撤单重发 |
举个例子。我在项目中遇到过一只小盘股,流动性很差。我打算买 10 万股,决策价格是 10.00 元。结果呢?
- 第一笔 2 万股,成交在 10.01 元——这是滑点。
- 中间等了 3 秒,价格跳到 10.05 元——这是延迟成本。
- 后面 8 万股,一路买到 10.15 元——这是市场冲击。
- 最后只成交了 7 万股,剩下 3 万股没买到,收盘价 10.20 元——这是机会成本。
你看,一个简单的买入指令,被拆成了四块成本。每一块都有办法优化。
18.3 如何评估交易执行质量
评估执行质量,不能只看成交价格。我一般用三个指标:
18.3.1 实现差价(Vs. VWAP)
VWAP 是成交量加权平均价。如果你的成交价比 VWAP 好,说明执行不错。
实现差价 = 实际成交均价 - VWAP
这个指标适合评估大单的日内执行。但有个坑:VWAP 本身是滞后的。你想想看,如果你在上午买,VWAP 是全天均价,那下午的行情波动会拉偏 VWAP。所以,我一般用滚动 VWAP,比如过去 5 分钟的 VWAP。
18.3.2 实现缺口(Vs. 决策价格)
这个就是我们前面说的执行缺口。它直接衡量你的交易成本。
实现缺口 = 实际成交均价 - 决策价格
决策价格怎么定?我习惯用下单前那一刻的中间价,或者上一笔成交价。别用开盘价,那太粗糙了。
18.3.3 实现滑点(Vs. 到达价格)
到达价格,就是订单到达交易所那一刻的最优买卖价。这个指标排除了延迟成本,只看市场冲击。
实现滑点 = 实际成交均价 - 到达价格
我的经验:如果你做高频交易,重点关注实现滑点。如果你做日内趋势,重点关注实现缺口。不同策略,侧重点不一样。
18.4 执行缺口的可视化分析
光看数字不够直观。我习惯画一张图,把执行缺口拆开来看。
这张图里,决策价格是 10.00 元。订单到达时,价格已经涨到 10.02 元——这是延迟成本。然后你开始买入,一路把价格推到 10.06 元——这是市场冲击。最后还有一部分没成交,收盘价 10.10 元——这是机会成本。
你看,每一段都有对应的成本。这样分析,你就能知道问题出在哪。
18.5 避坑指南
我曾经犯过的错:刚开始做执行分析时,我只用 VWAP 来评估。结果发现,有些交易明明执行得很好,VWAP 却显示亏损。后来才明白,VWAP 是滞后指标,它反映的是市场整体走势,不是你的执行质量。
所以,我现在的做法是:
- 用实现缺口做主要评估指标
- 用实现滑点做辅助指标
- 用 VWAP 做参考,但不作为唯一标准
另外,还有一个坑要注意:不要只看单笔交易。单笔交易可能因为运气好或差,导致执行缺口失真。我习惯看一个交易日的所有交易,或者至少看 100 笔以上的样本。
18.6 实战中的执行优化
知道了执行缺口怎么拆,接下来就是怎么优化。我分享几个实战经验:
- 降低延迟成本:把交易服务器搬到交易所机房附近。我见过有人从上海到北京,延迟从 30ms 降到 5ms,执行缺口直接砍掉一半。
- 降低市场冲击:大单拆小单,用算法交易。比如 TWAP、VWAP、Iceberg 订单。别一股脑全砸进去。
- 降低机会成本:用限价单代替市价单。虽然可能成交不了,但至少不会买在最高点。
我的习惯:对于流动性好的股票,我直接用市价单。对于流动性差的股票,我用 Iceberg 订单,每次只暴露一小部分。这样既能成交,又不会把价格打飞。
嗯,执行缺口分析就讲到这里。记住一句话:回测看策略,实盘看执行。执行缺口管不好,再好的策略也是白搭。