2. 大单交易基础

在进入大单拆分与自适应执行之前,必须先建立一套统一的“交易语言”。很多执行偏差并非策略逻辑错误,而是对大单、冲击成本、滑点、流动性、订单簿这些基础概念理解不一致。本节把这些概念放回真实交易链路中,帮助你在后续设计拆分算法时知道“每一步到底在优化什么”。

一、核心原理:大单不是按金额定义,而是按“相对流动性”定义

业内常说“大单”,但并没有一个绝对标准。更准确的定义是:当一笔订单的数量相对于当前市场可承接的流动性足够大,以至于一次性成交会显著改变成交均价时,它就是大单。因此同一笔10万股订单,在日成交千万股的大盘股上可能只是中等订单,在日成交几十万股的小盘股上就是典型大单。

衡量大单常用几个维度:

  • 绝对数量:股数或名义金额,如50万股、2000万元。
  • 相对成交量:订单量占过去N分钟或当日成交量的比例,如POV(Percentage of Volume)超过10%。
  • 相对盘口深度:订单量相当于对手盘前几档挂单量的倍数。
  • 参与率:执行过程中自身成交量占市场成交量的比例。

大单一旦进入市场,会通过两种方式影响价格:一是消耗订单簿深度,二是向市场传递信息。前者是即时冲击,后者是持续冲击。理解这一点,才能理解为什么拆分不是简单“切成小单”,而是对冲击成本、滑点和时间风险的动态权衡。

二、市场冲击成本、滑点与流动性:三个容易混淆的概念

市场冲击成本是指你的订单本身导致价格向不利方向移动,从而使成交均价偏离决策价格的成本。它通常分为临时冲击和永久冲击:临时冲击来自流动性被消耗,价格可能恢复;永久冲击来自信息被市场解读,价格可能不再回来。

滑点通常指实际成交价与预期价格之间的差异。滑点可能来自冲击成本,也可能来自行情快速波动、延迟、盘口变化。换句话说,滑点是一个结果指标,冲击成本是其中一类原因。

流动性是市场以较低成本承接订单的能力。流动性好,意味着盘口厚、价差小、成交连续;流动性差,意味着少量订单就能推动价格。大单执行的核心矛盾,就是在流动性有限的情况下,尽量降低冲击与滑点。

关键关系:流动性越差 → 同样订单的相对冲击越大 → 滑点越高 → 越需要拆分、延迟或使用被动策略。但拆分越细,执行时间越长,又暴露于价格漂移风险。这就是执行策略的核心权衡。

三、订单簿结构:大单冲击发生的微观现场

订单簿是理解大单冲击最直观的工具。它由买盘和卖盘两个方向组成,每一侧包含多个价位的挂单。通常用“档位”表示:买一、买二、买三……卖一、卖二、卖三……。买一和卖一之间的差额叫买卖价差,是即时交易成本的重要组成部分。

当你下出一笔市价买单时,会依次吃掉卖一、卖二、卖三等档位。如果订单量超过卖一挂单量,成交价就会向上移动。这个“吃掉多档”的过程,就是冲击成本的微观来源。下面用一个简化订单簿说明:

方向 档位 价格 挂单量 累计可成交量
卖盘卖三10.068,00023,000
卖盘卖二10.057,00015,000
卖盘卖一10.048,0008,000
买盘买一10.029,0009,000
买盘买二10.016,00015,000
买盘买三10.0010,00025,000

若你一次性市价买入20,000股,成交路径为:卖一8,000股@10.04,卖二7,000股@10.05,卖三5,000股@10.06。最终成交均价约为10.049,而初始卖一价是10.04,滑点约0.009元/股。若只买5,000股,则全部在10.04成交,滑点几乎为零。这就是“相对流动性”决定大单属性的直接证据。

订单簿与大单冲击路径示意 卖盘(Ask) 卖三 10.06 / 8000 卖二 10.05 / 7000 卖一 10.04 / 8000 价差 0.02 买一 10.02 / 9000 买二 10.01 / 6000 买三 10.00 / 10000 市价买入 20000 股 订单 20000 股 成交1:卖一 8000 @ 10.04 成交2:卖二 7000 @ 10.05 成交3:卖三 5000 @ 10.06 成交均价 ≈ 10.049 相对卖一滑点 ≈ 0.009 元/股 冲击来源:逐档消耗卖盘深度

四、方法流程:从识别大单到选择执行方式

在实际交易中,识别大单并选择执行方式通常遵循以下流程:

  1. 估算订单相对规模:计算订单量占近期成交量、盘口深度、日均成交量的比例。
  2. 评估流动性状态:观察价差、盘口厚度、成交连续性、波动率。
  3. 预测冲击成本:用历史数据或简单模型估算一次性成交的均价偏移。
  4. 选择执行方式:一次性成交、时间切片、POV、VWAP、被动挂单或混合策略。
  5. 监控与调整:根据实时成交、盘口变化和剩余量动态调整节奏。

例如,某订单占过去5分钟成交量的25%,盘口卖一至卖五合计仅能承接订单的40%,此时一次性市价买入必然产生显著冲击。更合理的做法是:先以被动挂单试探,若成交缓慢再逐步转为主动小单,并控制参与率不超过市场成交量的15%。

# 简化冲击成本估算示例(伪代码)
order_qty = 20000
ask_levels = [(10.04, 8000), (10.05, 7000), (10.06, 8000)]
remaining = order_qty
cost = 0.0
for price, size in ask_levels:
    fill = min(remaining, size)
    cost += fill * price
    remaining -= fill
    if remaining == 0:
        break
avg_price = cost / order_qty
slippage = avg_price - ask_levels[0][0]
print(f"成交均价={avg_price:.4f}, 滑点={slippage:.4f}")

五、误区与复盘:大单执行中最常见的三个错误

误区一:把“大单”当成固定金额标准。不同标的、不同时段、不同波动率下,同样的订单量冲击完全不同。必须用相对流动性判断。

误区二:只看滑点,不看冲击成本来源。滑点可能是行情波动造成的,不一定是你的订单冲击。复盘时要区分“市场漂移”和“自身冲击”。

误区三:认为拆得越细越好。拆得太细会拉长执行时间,增加价格漂移和机会成本,也可能错过短期流动性窗口。

复盘建议:每笔大单执行后,记录决策价格、实际成交均价、市场同期均价、参与率、盘口深度变化。把滑点拆分为“市场漂移”和“执行偏差”两部分,才能判断拆分策略是否真正有效。

掌握这些基础概念后,后续的大单拆分与自适应执行策略才有统一的度量标准:我们优化的不是“成交速度”单一目标,而是在冲击成本、滑点、时间风险和成交概率之间寻找动态平衡。