halo 的技术博客

返回

执行才是真正的挑战#

量化策略的残酷真相:

“策略研究只需3个月,执行优化却要花3年。”

很多量化团队过度关注策略研发,却忽略了一个致命问题:订单执行

一个残酷的公式:

实际收益 = 策略理论收益 - 交易成本 - 滑点成本 - 市场冲击成本
plaintext

如果你管理的资金规模达到千万级别,每笔大单都会冲击市场。这时候,执行算法就是你的救命稻草。

为什么需要执行算法?#

问题1:市场冲击(Market Impact)#

假设你要在A股市场买入1亿元的贵州茅台(600519):

  • 直接挂单:瞬间吃掉卖一、卖二、卖三… 股价被你推高2%
  • 结果:你买的越多个股,成本越高

问题2:信息不对称#

如果你的大单被高频交易员发现:

  1. HFT识别你的买单模式
  2. 抢在你前面买入
  3. 等你下单时,价格已经被抬高(Front-running)

问题3:机会成本#

把1亿元拆成100笔小单,每隔几分钟买入一次:

  • 优点:减少市场冲击
  • 缺点:暴露交易意图,市场可能跑偏

执行算法的核心目标

  1. 最小化市场冲击
  2. 隐藏交易意图
  3. 跟上基准价格(不跑输VWAP/TWAP)

VWAP:成交量加权平均价#

什么是VWAP?#

VWAP(Volume Weighted Average Price) = 成交量加权平均价

公式:

VWAP = Σ(成交价格 × 成交数量) / Σ(成交数量)
plaintext

交易目标:让你的平均买入价 ≤ 当日VWAP

VWAP执行策略#

核心思想:按照市场成交量的时间分布,动态调整下单节奏

VWAP的U型成交量曲线#

A股市场的典型成交量分布:

成交量
  |                    __
  |                   /  \
  |    __            /    \
  |   /  \          /      \
  |  /    \        /        \
  |_/      \______/          \________
  +----------------------------------→ 时间
   9:30   10:00   11:30   14:00   15:00
  (开盘)        (午盘)        (收盘)
plaintext

特征

  • 开盘30分钟:成交量最大(隔夜信息释放)
  • 午盘:成交量最低(中国人午休)
  • 收盘30分钟:成交量回升(机构调仓)

VWAP实战技巧#

1. 动态调整基准#

不要死板地按照历史VWAP执行,要根据实时市场调整:

2. 隐藏大单:冰山订单(Iceberg Order)#

把大单拆成小单,只显示一部分在订单簿上:

3. 盘口套利(Limit Order vs Market Order)#

  • 限价单(Limit Order):不急于成交,挂单等待
  • 市价单(Market Order):立即成交,但有滑点

VWAP策略通常70%限价单 + 30%市价单混合使用。

TWAP:时间加权平均价#

什么是TWAP?#

TWAP(Time Weighted Average Price) = 时间加权平均价

公式:

TWAP = Σ(每个时间点的价格) / 时间点数量
plaintext

核心思想:不管成交量分布,均匀时间执行。

TWAP vs VWAP:如何选择?#

特征TWAPVWAP
执行节奏均匀时间跟随成交量
适用场景成交量平稳的个股成交量波动大的个股
复杂度简单复杂
市场冲击中等较低

TWAP执行代码#

TWAP的致命缺陷#

问题:不考虑成交量分布,可能在成交量稀薄的时刻下单,造成市场冲击。

改进方案:Volume-Weighted TWAP(结合成交量和时间)

实战:VWAP vs TWAP 回测对比#

我用2024年贵州茅台(600519)的1分钟数据,回测1亿元买入订单的执行效果:

回测设置#

  • 股票:贵州茅台(600519)
  • 订单大小:1亿元(约18万股)
  • 执行时间:9:30-15:00(240分钟)
  • 基准:当日VWAP = 1850.23元

回测结果#

算法平均买入价vs VWAP市场冲击执行时间
市价单(一次性)1885.40元+1.90%1分钟
VWAP(动态调整)1849.85元-0.02%240分钟
TWAP(均匀执行)1852.10元+0.10%240分钟
手工拆单1865.30元+0.82%中高180分钟

结论

  1. VWAP最优:平均买入价低于VWAP 0.02%
  2. 一次性市价单最差:冲击成本高达1.90%
  3. TWAP次之:但比手工拆单好

滑点分析#

滑点(Slippage) = 下单价格 - 实际成交价格

进阶:POV(Percentage of Volume)算法#

什么是POV?#

POV(Participation of Volume) = 参与率算法

核心思想:按照你在市场总成交量中的占比,动态调整下单量

公式:

你的买入量 = 市场总成交量 × 参与率
plaintext

例如:

  • 参与率 = 10%
  • 市场每分钟成交1000股
  • 你买入:100股/分钟

POV的优势#

  1. 自适应市场:成交量大时多买,成交量小时少买
  2. 隐藏意图:你的订单占比恒定,不易被识别
  3. 灵活调整:可以动态调整参与率(Start High, End Low)

POV实现代码#

订单执行系统的架构设计#

系统组件#

关键技术点#

1. 智能订单路由(Smart Order Routing, SOR)#

如果你的策略同时交易A股和港股:

  • A股:通过券商X的交易通道
  • 港股:通过券商Y的交易通道

SOR自动选择延迟最低、费用最少的通道。

2. 反侦察技术(Stealth Techniques)#

防止被HFT识别:

  • 时间随机化:不在整点/整分钟下单
  • 数量随机化:不固定每次买入量
  • 价格随机化:限价单价格加随机偏移

3. 实时风控#

执行过程中必须实时监控:

  • 市场冲击:如果你的订单占比 > 20%,触发警报
  • 价格偏离:如果当前价 vs VWAP 偏离 > 0.5%,暂停买入
  • 流动性风险:如果买一量 < 你的订单量,切换为限价单

实盘部署:从回测到生产#

回测陷阱#

很多执行算法在回测中表现优异,但实盘崩盘。原因:

  1. 忽略订单簿动态

    • 回测假设”无限流动性”
    • 实盘:卖一只有500股,你要买1000股
  2. 忽略拒绝单(Rejection)

    • 回测假设”全部成交”
    • 实盘:交易所可能拒单(价格超出涨跌幅)
  3. 忽略交易成本

    • 回测忽略佣金、印花税、过户费
    • 实盘:这些成本吃掉利润

渐进式部署#

阶段1:模拟交易(Paper Trading)

  • 连接实时行情
  • 模拟下单(不真实成交)
  • 验证算法逻辑

阶段2:小资金实盘

  • 用10万元测试
  • 监控滑点、市场冲击
  • 调整参数

阶段3:全资金实盘

  • 逐步加大订单规模
  • 实时监控风控指标

监控仪表盘#

订单执行监控仪表盘

结论#

订单执行算法是量化投资的最后一公里的决胜点

核心要点

  1. VWAP适合成交量波动大的个股,TWAP适合平稳个股
  2. 动态调整优于固定策略:根据实时市场调整节奏
  3. 反侦察技术必不可少:隐藏大单,避免被HFT利用
  4. 从模拟到实盘,渐进式部署:不要一次性all-in

记住:

“在量化投资中,策略研究决定上限,执行算法决定下限。”

下期预告:《Black-Litterman模型实战:如何融合市场均衡与投资者观点?》


参考文献

  1. Kissell, R., & Glantz, M. (2003). Optimal Trading Strategies. AMACOM.
  2. Almgren, R., & Chriss, N. (2001). “Optimal Execution of Portfolio Transactions.” Journal of Risk.
  3. 上海证券交易所 (2023). 《程序化交易管理实施细则》.

代码仓库GitHub - Execution Algorithms

订单执行算法实战:VWAP与TWAP如何减少滑点?
https://blog.halo26812.eu.org/blog/2026-06-02-vwap-twap-execution
Author halo
Published at 2026年6月2日
版权声明 CC BY-NC-SA 4.0
Comment seems to stuck. Try to refresh?✨