halo 的技术博客

返回

从回测到实盘:订单执行的隐形战场#

很多量化策略在回测中表现优异,但一到实盘就”露馅”。除了常见的过拟合问题,还有一个隐形杀手:订单执行质量

回测时我们默认”市价成交”,现实却是另一回事——你需要拆分大单、选择执行算法、对抗滑点与市场冲击。本文系统讲解实盘交易系统的核心模块,帮你把”纸面收益”变成”账户收益”。

为什么订单执行比策略本身更重要?#

假设你的策略年化收益20%,但执行成本吃掉5%,那就只剩15%。对于高频策略,这个差距可能更大。

执行成本的三大来源:

  1. 佣金与手续费:显性成本,最低
  2. 滑点(Slippage):预期价格与实际成交价的偏差
  3. 市场冲击(Market Impact):你的订单改变了市场价格

一个残酷的事实:对于A股T+1的散户,滑点可能只有几个bp;但对于管理亿级资金的量化机构,市场冲击可能达到几十个bp,一年累加起来就是几个点的收益损耗

订单执行算法的三大流派#

1. VWAP(成交量加权平均价)#

核心思想:让订单的成交价格接近一段时间内的VWAP。

执行逻辑

  • 预先确定时间窗口(如开盘后30分钟)
  • 按照历史成交量分布,将大单拆分成小单
  • 成交量大的时段多成交,成交量小的时段少成交

适用场景

  • 大盘股(流动性充足)
  • 执行周期较长(>30分钟)
  • 对冲击敏感的机构大单

Python实现示例:(此处省略具体代码,完整代码见我的GitHub)

# 伪代码示意
def vwap_execution(order_size, duration_minutes):
    volume_profile = get_historical_volume_profile()  # 获取历史成交量分布
    slices = split_into_slices(duration_minutes)
    
    for slice in slices:
        target_volume = order_size * volume_profile[slice]
        submit_limit_order(price=current_vwap, size=target_volume)
        wait(slice.duration)
python

优点:简单易懂,容易实现
缺点:机械式执行,容易被识别为算法单( Adverse Selection 风险)

2. TWAP(时间加权平均价)#

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

执行逻辑

  • 将总时长均匀切分(如每5分钟发一次单)
  • 每次发送固定数量的订单

适用场景

  • 成交量分布不明确的小盘股
  • 对VWAP不敏感的保守执行

优点:更难被识别,执行更”低调”
缺点:可能在流动性差的时段执行,导致滑点增大

3. POV(Percentage of Volume,成交量占比)#

核心思想:动态调整执行速度,保持订单占市场成交量的固定比例。

执行逻辑

  • 设定目标参与率(如10%,即每笔订单不超过市场成交量的10%)
  • 实时监控市场成交量,动态调整下单量

适用场景

  • 超大盘股(如贵州茅台、工商银行)
  • 需要快速执行但又不想冲击市场的场景

优点:自适应性最强,平衡了执行速度与冲击成本
缺点:实现复杂,需要实时行情数据

滑点模型:预测与控制#

什么是滑点?#

滑点 = 订单提交时的”预期价格” - 实际成交价格(对买单而言)

滑点的决定因素:

  1. 订单类型:市价单滑点最大,限价单可能不成交
  2. 订单规模:单笔越大,滑点越大
  3. 市场流动性:买卖价差(Bid-Ask Spread)越小,滑点越小
  4. 市场波动率:剧烈波动时滑点放大

常用滑点模型#

1. 线性冲击模型#

滑点 = 冲击系数 × (订单规模 / 平均成交量)
plaintext

Python实现:

def linear_impact_model(order_size, avg_daily_volume, impact_coef=0.1):
    """线性冲击模型"""
    participation_rate = order_size / avg_daily_volume
    slippage = impact_coef * participation_rate
    return slippage
python

2. 平方根法则(Square-Root Law)#

这是机构交易者常用的经验模型:

市场冲击 ∝ √(订单规模 / 日均成交量)
plaintext

直观解释:冲击不是线性的,而是”规模经济”——当你下单比例从1%增加到4%,冲击不是4倍,而是2倍。

3. 瞬时 vs 永久性冲击#

  • 瞬时冲击:订单提交瞬间导致的价格偏移,成交后价格回补
  • 永久性冲击:你的订单”消耗”了流动性,导致均衡价格永久改变

实战意义:如果你发现某只股票的瞬时冲击很大但永久性冲击很小,说明它是流动性陷阱(看起来成交容易,实际上一买就滑)。

交易成本分析(TCA):量化你的执行质量#

TCA(Transaction Cost Analysis)是机构交易部的标配工具,用于事后评估执行质量。

TCA的核心指标#

  1. 实现缺口(Implementation Shortfall)

    实现缺口 = (实际成交价 - 决策价格) / 决策价格
    plaintext

    决策价格 = 策略发出信号时的价格

  2. VWAP追踪误差

    追踪误差 = 实际成交价 - 同期VWAP
    plaintext
  3. 机会成本

    • 限价单未成交导致的”踏空成本”
    • 市价单”过度执行”导致的冲击成本

Python实现TCA框架#

智能订单路由(SOR):跨市场套利自己的订单#

对于支持多市场交易的机构(如沪港通、融资融券),**智能订单路由(Smart Order Router)**可以自动选择最优交易市场。

SOR的决策因子:

  1. 价格优劣:哪个市场的买卖价差更小?
  2. 流动性深度:哪个市场的订单簿更厚?
  3. 交易成本:佣金、印花税、过户费差异
  4. 交易规则:涨跌幅限制、T+0/T+1规则

实战案例: 假设工商银行(601398.SH)同时在A股和港股上市。如果:

  • A股买一价 5.20元,卖一价 5.21元
  • H股买一价 5.15港元,卖一价 5.16港元
  • 汇率 1港元 = 0.92人民币

那么H股实际成本 = 5.16 × 0.92 = 4.75元,比A股便宜9%!SOR会自动把买单路由到港股市场。

A股实盘的特殊挑战#

1. T+1制度:当天买的不能当天卖#

这导致无法做日内回转交易,执行算法必须考虑”隔夜风险”。

应对策略

  • 如果信号在收盘前30分钟发出,谨慎执行(避免隔夜持仓)
  • 使用股指期货对冲隔夜风险

2. 涨跌停板:流动性瞬间枯竭#

当股票涨停/跌停时,订单簿一侧完全空虚,你的市价单可能”成交不了”或者”滑到天边”。

应对策略

  • 设置限价单,并动态调整限价(如每分钟更新一次)
  • 监控涨停/跌停概率(用期权隐含波动率或历史统计)

3. 集合竞价:开盘前的价格博弈#

A股的开盘集合竞价(9:15-9:25)是机构”抢跑”的战场。如果你的策略依赖开盘价,必须参与集合竞价。

集合竞价执行技巧

  • 9:15-9:20可以撤单,观望为主
  • 9:20-9:25不能撤单,谨慎提交
  • 9:25产生开盘价,立即检查成交情况

实盘交易系统架构#

一个完整的实盘交易系统通常包括以下模块:

策略层 → 风控层 → 执行层 → 券商API
   ↓        ↓        ↓         ↓
 信号生成  仓位检查  订单拆分   成交回报
plaintext

关键模块详解#

  1. 策略层:生成交易信号(如”买入100万茅台”)
  2. 风控层
    • 检查可用资金
    • 检查单日亏损上限
    • 检查持仓集中度限制
  3. 执行层
    • 选择执行算法(VWAP/TWAP/POV)
    • 拆单并发送订单
    • 监控执行进度
  4. 券商API
    • 提交订单到交易所
    • 接收成交回报
    • 处理异常情况(断线、拒单)

Python实盘框架推荐#

  • Backtrader:回测+实盘一体化(支持IB、OANDA等)
  • VN.PY:国内主流量化交易框架(支持CTP、飞马等)
  • EasyTrader:适合散户的简易自动化交易(支持同花顺、富途等)

总结:从”会回测”到”能赚钱”#

实盘交易系统是一座桥,连接”策略想法”与”账户收益”。很多人倒在桥头——不是策略不好,而是执行太差。

本文要点回顾:

  1. 订单执行成本可能吃掉策略大部分收益,必须重视
  2. VWAP/TWAP/POV是三大主流执行算法,各有适用场景
  3. 滑点模型帮你预测执行成本,避免”意外亏损”
  4. TCA是评估执行质量的金标准,机构交易者必备
  5. A股的特殊制度(T+1、涨跌停、集合竞价)需要定制化执行策略

下一步学习方向

  • 学习VN.PY框架,搭建自己的实盘系统
  • 深入研究市场微观结构(Market Microstructure)
  • 模拟交易→小资金实盘→逐步放大(永远不要跳过这一步!)

感谢阅读!如果你觉得这篇文章有帮助,欢迎分享给更多量化爱好者。下期预告:机器学习在量化交易中的陷阱与突围.

订单执行算法对比

滑点冲击曲线

实盘交易系统:订单执行与滑点控制的量化实践
https://blog.halo26812.eu.org/blog/2026-06-10-live-trading-execution
Author halo
Published at 2026年6月10日
版权声明 CC BY-NC-SA 4.0
Comment seems to stuck. Try to refresh?✨