最优执行与交易成本
执行是策略的一部分
Section titled “执行是策略的一部分”信号给出目标仓位,从目标仓位到真实成交的每一分损耗都是策略成本。执行的三大成本:
三者此消彼长:执行越快(吃价差),冲击与时机风险越小;执行越慢(挂限价单),价差省下但承担时机风险。最优执行就是在三者间权衡。
| 算法 | 做法 | 适用 |
|---|---|---|
| TWAP | 把订单按时间均匀切开 | 简单、低冲击,适合小单 |
| VWAP | 按历史成交量分布切单 | 与市场节奏同步,最常用 |
| POV(参与率) | 按市场实时成交量的一定比例下单 | 大单,控制冲击 |
| IS(Implementation Shortfall) | 以到达时刻的中间价为基准,权衡冲击与时机风险 | 学术标准的执行框架 |
IS 框架(Almgren–Chriss)把执行问题写为冲击与时机风险的凸优化:给定风险厌恶系数,求解最优的执行轨迹——订单不是均匀切开,而是前重后轻(先快后慢),见凸优化速览。
冲击成本模型
Section titled “冲击成本模型”订单对价格的影响随成交量占比非线性增长,常用平方根律:
为订单量, 为日均成交量, 为日内波动率, 为经验系数(约 0.5–1)。要点:
- 冲击与 成正比——容量上限由此而来:成交量占比超过 1–5%,冲击进入非线性区间;
- 回测引擎的成本模型应包含冲击项,见回测引擎设计;
- 策略容量 = 在"冲击吃掉一半期望收益"处的规模。
做市与逆向选择
Section titled “做市与逆向选择”限价单(挂单)与市价单(吃单)的选择:
- 挂单:赚价差,但承担逆向选择——你的限价单被成交,往往是因为价格正向不利于你的方向移动(知情交易者优先成交于你),见限价订单簿;
- 吃单:付价差,但即时成交、无逆向选择;
- 执行中两者的混合比例,决定实际的"价差 + 逆向选择"总成本。
import numpy as np
def execution_shortfall(side: str, arrival_mid: float, fills: list[tuple[float, float]]) -> float: """IS(实现落差):成交均价 vs 到达时刻中间价。fills: [(价格, 数量)]""" avg = np.average([p for p, _ in fills], weights=[q for _, q in fills]) sign = 1 if side == "buy" else -1 return sign * (avg - arrival_mid) / arrival_mid # 买入为正成本- 每笔执行记录 IS(实现落差),作为执行质量的统一度量,见监控与事故复盘;
- 大单用 VWAP/POV 切单,小单直接吃单;
- 挂单策略(逆向选择敏感)只在流动性好的标的与时段使用。
量化中的用法
Section titled “量化中的用法”- 大单按 VWAP/POV 切单,执行轨迹按 IS 优化(前重后轻);
- 冲击用平方根律估算,容量按"冲击吃掉一半收益"设定;
- 每笔执行记录 IS,纳入每日对账。
- 执行的三大成本:价差、冲击、时机风险,三者此消彼长
- 冲击成本随成交量占比按平方根律增长,容量上限由此而来
- 执行质量用实现落差(IS)统一度量