3. 市场微观结构入门

在CTA策略研究中,很多交易者把注意力集中在信号本身,却忽略了一个更底层的问题:策略最终能不能赚钱,不仅取决于预测方向,还取决于每次进出市场时被“摩擦”掉多少成本。市场微观结构就是研究这一摩擦如何产生的学科。它关注的是订单如何进入市场、如何撮合、价格如何形成,以及流动性如何影响成交结果。对CTA而言,理解微观结构,等于理解交易成本从哪里来、策略容量为什么有上限。

一、核心原理:订单簿是市场的“实时供需地图”

现代电子化市场普遍采用订单簿(Order Book)撮合机制。订单簿本质上是一个按价格排序的买卖委托集合:买方希望以某个价格买入,卖方希望以某个价格卖出。当买价与卖价匹配时,交易成交。订单簿分为两类主要订单:

  • 限价单(Limit Order):指定价格,只有达到该价格才成交,提供流动性,但存在不成交风险。
  • 市价单(Market Order):不指定价格,追求立即成交,消耗流动性,但可能产生滑点。

订单簿的最佳买价(Best Bid)与最佳卖价(Best Ask)之间的差额,就是买卖价差(Bid-Ask Spread)。价差是市场流动性的最直接度量:价差越窄,交易成本越低;价差越宽,交易者每次进出都要付出更高的隐性成本。

核心公式:一次完整买卖往返的显性价差成本 ≈ 买卖价差 × 交易数量。若价差为2个最小变动价位,交易10手,则仅价差成本就相当于20个最小变动价位的价值。

除了价差,市场深度(Market Depth)同样关键。深度指在某一价格附近可成交的订单数量。深度好,意味着大单不会轻易把价格打穿;深度差,则少量成交就可能推动价格跳动。流动性则是价差、深度、成交速度与价格弹性的综合体现。

订单簿结构与交易成本传导 卖盘(Ask / Offer) 价格 数量 Ask 3: 3720 18 Ask 2: 3718 25 Ask 1: 3715 40 买卖价差 = 3715 - 3712 = 3 价差越宽,往返成本越高 买盘(Bid) 价格 数量 Bid 1: 3712 35 Bid 2: 3710 22 Bid 3: 3708 15 价差 流动性 → 价差 + 深度 → 滑点 + 冲击成本 → 策略净收益 深度不足时,大单会逐档吃掉对手盘,成交均价偏离预期

二、方法流程:如何评估流动性对交易成本的影响

在CTA策略开发中,评估微观结构影响通常遵循以下流程:

  1. 采集订单簿快照:记录最佳买卖价、各档位价格与数量,形成时间序列。
  2. 计算价差指标:如绝对价差、相对价差(价差/中间价)、有效价差。
  3. 估算市场深度:统计买一卖一、买五卖五累计挂单量,判断大单容纳能力。
  4. 模拟成交与滑点:按策略下单量逐档撮合,计算实际成交均价与理论价格之差。
  5. 反推策略容量:当滑点与冲击成本超过信号收益时,该资金规模即为容量上限。

其中,滑点估算可以用简化模型表达:

# 简化滑点估算示例(伪代码)
def estimate_slippage(order_size, ask_levels):
    remaining = order_size
    cost = 0.0
    for price, qty in ask_levels:
        fill = min(remaining, qty)
        cost += fill * price
        remaining -= fill
        if remaining == 0:
            break
    avg_price = cost / order_size
    slippage = avg_price - ask_levels[0][0]
    return avg_price, slippage

# 若 order_size 超过前几档总量,avg_price 会显著上移

三、案例/场景:深度不足如何吃掉CTA利润

假设某螺纹钢期货合约当前买一价为3712,卖一价为3715,价差3个点。某CTA策略发出买入信号,计划买入200手。订单簿卖盘前五档如下:

档位 价格 挂单量(手) 累计成交量(手)
Ask 137154040
Ask 237182565
Ask 337201883
Ask 4372330113
Ask 5372650163

若一次性市价买入200手,前五档仅能成交163手,剩余37手需继续向上吃单,成交均价将远高于3715。假设最终均价为3722,则相对初始卖一价的滑点为7个点。若策略预期每手盈利10个点,则滑点直接吃掉70%的利润。若交易频率较高,这种摩擦会迅速累积,导致实盘表现远差于回测。

常见误区:回测中使用收盘价或中间价成交,忽略价差与深度,会系统性高估策略收益。尤其是高频CTA或大资金策略,必须加入订单簿模拟或至少加入保守滑点假设。

四、误区/复盘:流动性评估中的典型错误

  • 只看价差,不看深度:价差窄不代表大单能低成本成交,深度不足时冲击成本可能远超价差。
  • 用静态数据代替动态订单簿:流动性随时间变化,开盘、收盘、重大数据发布前后差异巨大。
  • 忽略自身订单对市场的影响:策略规模越大,越会改变订单簿结构,产生内生冲击成本。
  • 把回测滑点设为固定值:固定滑点无法反映不同品种、不同时段、不同单量的真实差异。

复盘建议:对每笔实盘成交记录,对比下单时中间价与实际成交均价,计算有效滑点,并按品种、时段、单量分组统计。若某组滑点持续偏高,应降低该场景下的目标仓位或改用限价单拆分执行。

理解订单簿、价差、深度与流动性,是CTA策略从“信号研究”走向“可交易系统”的必经一步。只有把交易成本纳入收益模型,策略容量评估才有可靠基础。