2. 市场微观结构基础
算法交易执行的核心任务,是在不确定的市场环境中,以尽可能低的综合成本完成目标仓位。要理解“成本从哪里来、为什么会产生、如何被度量与控制”,必须先掌握市场微观结构的基本概念。本节围绕订单簿、买卖价差、流动性、市场冲击、滑点与交易成本六个关键词展开,建立从市场机制到执行成本的完整认知链条。
一、核心原理:订单簿是价格的“实时账本”
现代电子撮合市场以限价订单簿(Limit Order Book, LOB)为核心。订单簿按价格优先、时间优先原则记录所有未成交的买单与卖单。买盘(Bid)从高到低排列,卖盘(Ask)从低到高排列,最优买价与最优卖价之间的差额即为买卖价差(Spread)。
订单簿的形态直接决定交易成本。若某价位挂单量大,说明该价位流动性充足,小额成交不易推动价格;若挂单稀薄,则同样规模的订单会吃掉多个价位,产生更大冲击。因此,订单簿不仅是报价集合,更是流动性的“深度地图”。
二、方法流程:从报价到成本的传导链
交易成本的产生并非单点事件,而是一条清晰的传导链。理解这条链路,有助于在算法设计中定位优化环节。
- 观察报价:获取最优买卖价与各档深度,形成当前流动性快照。
- 决策下单:根据目标仓位、时间约束与风险偏好,选择市价单、限价单或混合方式。
- 撮合成交:订单与对手盘匹配,可能只成交最优档,也可能逐档吃单。
- 产生滑点:实际成交均价与决策参考价之间的偏差,即滑点。
- 形成冲击:大额订单改变供需平衡,推动价格向不利方向移动。
- 汇总成本:显性成本(手续费、税费)与隐性成本(价差、滑点、冲击)合并为综合交易成本。
关键公式:综合交易成本 ≈ 显性费用 + 买卖价差成本 + 滑点成本 + 市场冲击成本 + 机会成本。
三、案例/场景:一笔大额买单的成本拆解
假设某股票当前卖盘为:Ask1 100.02×600,Ask2 100.05×1200,Ask3 100.10×1800。若算法需买入 3000 股,且全部以市价单立即执行,则成交过程如下:
成交明细:
Ask1 600 股 @ 100.02
Ask2 1200 股 @ 100.05
Ask3 1200 股 @ 100.10
成交均价 = (600×100.02 + 1200×100.05 + 1200×100.10) / 3000
= (60012 + 120060 + 120120) / 3000
= 300192 / 3000
≈ 100.064
若决策参考价为 100.02,则:
滑点 = 100.064 - 100.02 = 0.044
滑点成本 = 0.044 × 3000 = 132 元
该案例说明:订单规模超过最优档深度时,必然向更差价位延伸,滑点随之放大。若采用限价单分批挂单,虽可降低冲击,但面临未成交风险与机会成本。
四、误区/复盘:常见认知偏差
| 误区 | 问题 | 正确认知 |
|---|---|---|
| 只看买卖价差 | 忽略深度与订单规模 | 价差小但深度薄,大单冲击依然很高 |
| 把滑点等同于冲击 | 混淆两个概念 | 滑点是结果,冲击是价格被推动的机制之一 |
| 认为限价单无成本 | 忽略机会成本与逆向选择 | 未成交导致错过行情,也是隐性成本 |
| 用收盘价评估执行 | 参考价选择不当 | 应使用决策时刻的中间价或到达价作为基准 |
复盘建议:每笔交易后记录决策价、成交均价、成交量、订单簿快照与市场波动率,建立TCA数据集。只有可度量,才能可优化。
注意:流动性具有时变性与状态依赖性。开盘、收盘、重大事件前后,订单簿形态可能剧烈变化,历史深度不能简单外推至当前执行。