2. 金融市场与交易基础

算法交易执行的第一步,不是写策略信号,而是理解“订单如何被市场撮合”。同一笔买入指令,在开盘集合竞价、连续竞价、午间休市前后、收盘集合竞价中,成交结果可能完全不同。市场微结构研究的就是价格形成、订单撮合、参与者行为与交易规则之间的微观机制。对执行算法而言,它决定了滑点模型、下单节奏、订单类型选择以及风险控制参数。

一、核心原理:市场微结构如何决定成交质量

现代交易所普遍采用电子限价订单簿(Limit Order Book, LOB)。订单簿按价格优先、时间优先排列:买方出价最高者优先,卖方要价最低者优先;同价则先到先得。订单簿两侧的实时状态,构成了执行算法的“战场地图”。

  • 买一价(Bid1):当前最高买入报价,代表即时可卖出价格。
  • 卖一价(Ask1):当前最低卖出报价,代表即时可买入价格。
  • 买卖价差(Spread):Ask1 − Bid1,是做市商与流动性提供者的基础补偿,也是交易者的即时成本。
  • 中间价(Mid Price):(Bid1 + Ask1) / 2,常作为算法参考价格与滑点基准。
  • 市场深度(Depth):各价位挂单量,决定大单能否在不显著推动价格的情况下成交。

流动性是执行算法的核心约束。流动性好时,价差窄、深度厚,市价单冲击小;流动性差时,价差宽、挂单稀薄,大单会“吃穿”多个价位,产生显著滑点。因此,执行算法必须在“成交速度”与“成交价格”之间做权衡。

限价订单簿与买卖价差结构 买方(Bid) 价格 数量 Bid1 100.00 1,200 Bid2 99.99 2,500 Bid3 99.98 3,800 Bid4 99.97 5,100 Bid5 99.96 6,400 深度越厚,大单冲击越小 卖方(Ask) 价格 数量 Ask1 100.02 1,000 Ask2 100.03 2,200 Ask3 100.04 3,500 Ask4 100.05 4,800 Ask5 100.06 6,000 价差越宽,即时成本越高 价差 0.02 中间价 = (Bid1 + Ask1) / 2 = 100.01,常作为滑点计算基准

二、订单类型与交易时段:执行算法的工具箱

不同订单类型对应不同的成交确定性与价格风险。执行算法通常组合使用多种订单,以平衡冲击成本与机会成本。

订单类型 成交确定性 价格风险 典型用途
市价单(Market) 高,立即成交 高,可能吃穿多档 紧急建仓、止损
限价单(Limit) 低,可能不成交 低,价格可控 被动挂单、降低价差成本
IOC(立即成交或取消) 部分确定 中,剩余取消 快速试探流动性
FOK(全部成交或取消) 全有或全无 中,避免部分成交 套利、组合交易
冰山单(Iceberg) 隐藏真实数量 低,分批暴露 大单拆分、减少市场冲击

交易时段同样关键。以A股为例,9:15–9:25为开盘集合竞价,9:30–11:30与13:00–15:00为连续竞价,14:57–15:00为收盘集合竞价。集合竞价阶段流动性集中但价格波动剧烈,连续竞价阶段适合算法拆单,收盘集合竞价则常用于以收盘价成交。算法必须根据时段动态调整下单频率与订单类型。

实战提示:开盘前5分钟与收盘前5分钟价差通常显著扩大,滑点风险最高。执行算法应降低市价单比例,优先使用限价单或参与集合竞价。

三、案例场景:一笔大单的执行滑点复盘

假设某机构需要在流动性一般的股票上买入50,000股,当前中间价为100.01元,Bid1=100.00,Ask1=100.02。若直接发送市价单,订单将依次吃掉Ask1的1,000股、Ask2的2,200股、Ask3的3,500股……直至成交完毕。成交均价可能达到100.05元,相对中间价的滑点为:

滑点 = (成交均价 - 中间价) / 中间价
     = (100.05 - 100.01) / 100.01
     ≈ 0.04%

若买入50,000股,额外成本 ≈ 50,000 × 0.04 = 2,000元

若改用TWAP算法,将50,000股拆分为50笔、每笔1,000股,在30分钟内均匀下单,并优先使用限价单挂在Bid1或中间价附近,成交均价可能降至100.03元,滑点压缩至0.02%,节省约1,000元。这就是执行算法存在的直接价值。

常见误区:很多初学者只看“是否成交”,忽略“成交质量”。实际上,未成交的限价单可能带来机会成本,而市价单的冲击成本往往被低估。滑点应同时考虑显性价差与隐性冲击。

四、方法流程与复盘要点

建立执行算法的市场微结构分析流程,建议按以下步骤推进:

  1. 采集订单簿快照:记录Bid1/Ask1、各档深度、成交明细,频率至少每秒一次。
  2. 计算流动性指标:价差、深度、订单簿不平衡(OBI)、成交量分布。
  3. 选择订单类型:根据紧迫度、流动性、时段决定市价/限价/IOC比例。
  4. 设定滑点基准:以到达价(Arrival Price)或中间价为基准,实时监控滑点。
  5. 动态调整节奏:流动性变差时放慢,价差收窄时加快。
  6. 盘后复盘:对比实际成交均价与基准,归因于价差、冲击、时机还是延迟。

复盘时重点关注三类偏差:一是时机偏差,即下单延迟导致价格已变动;二是冲击偏差,即自身订单推动价格;三是机会偏差,即限价单未成交而错失行情。只有把这三类偏差量化,才能持续优化执行算法参数。

本节核心结论:市场微结构决定了订单的成交路径与成本结构。买卖价差是即时成本,滑点是执行质量的综合体现,流动性与交易时段是动态约束。掌握订单类型与撮合规则,是构建任何执行算法的前提。