2. 大单交易基础
在进入大单拆分与自适应执行之前,必须先建立一套统一的“交易语言”。很多执行偏差并非策略逻辑错误,而是对大单、冲击成本、滑点、流动性、订单簿这些基础概念理解不一致。本节把这些概念放回真实交易链路中,帮助你在后续设计拆分算法时知道“每一步到底在优化什么”。
一、核心原理:大单不是按金额定义,而是按“相对流动性”定义
业内常说“大单”,但并没有一个绝对标准。更准确的定义是:当一笔订单的数量相对于当前市场可承接的流动性足够大,以至于一次性成交会显著改变成交均价时,它就是大单。因此同一笔10万股订单,在日成交千万股的大盘股上可能只是中等订单,在日成交几十万股的小盘股上就是典型大单。
衡量大单常用几个维度:
- 绝对数量:股数或名义金额,如50万股、2000万元。
- 相对成交量:订单量占过去N分钟或当日成交量的比例,如POV(Percentage of Volume)超过10%。
- 相对盘口深度:订单量相当于对手盘前几档挂单量的倍数。
- 参与率:执行过程中自身成交量占市场成交量的比例。
大单一旦进入市场,会通过两种方式影响价格:一是消耗订单簿深度,二是向市场传递信息。前者是即时冲击,后者是持续冲击。理解这一点,才能理解为什么拆分不是简单“切成小单”,而是对冲击成本、滑点和时间风险的动态权衡。
二、市场冲击成本、滑点与流动性:三个容易混淆的概念
市场冲击成本是指你的订单本身导致价格向不利方向移动,从而使成交均价偏离决策价格的成本。它通常分为临时冲击和永久冲击:临时冲击来自流动性被消耗,价格可能恢复;永久冲击来自信息被市场解读,价格可能不再回来。
滑点通常指实际成交价与预期价格之间的差异。滑点可能来自冲击成本,也可能来自行情快速波动、延迟、盘口变化。换句话说,滑点是一个结果指标,冲击成本是其中一类原因。
流动性是市场以较低成本承接订单的能力。流动性好,意味着盘口厚、价差小、成交连续;流动性差,意味着少量订单就能推动价格。大单执行的核心矛盾,就是在流动性有限的情况下,尽量降低冲击与滑点。
关键关系:流动性越差 → 同样订单的相对冲击越大 → 滑点越高 → 越需要拆分、延迟或使用被动策略。但拆分越细,执行时间越长,又暴露于价格漂移风险。这就是执行策略的核心权衡。
三、订单簿结构:大单冲击发生的微观现场
订单簿是理解大单冲击最直观的工具。它由买盘和卖盘两个方向组成,每一侧包含多个价位的挂单。通常用“档位”表示:买一、买二、买三……卖一、卖二、卖三……。买一和卖一之间的差额叫买卖价差,是即时交易成本的重要组成部分。
当你下出一笔市价买单时,会依次吃掉卖一、卖二、卖三等档位。如果订单量超过卖一挂单量,成交价就会向上移动。这个“吃掉多档”的过程,就是冲击成本的微观来源。下面用一个简化订单簿说明:
| 方向 | 档位 | 价格 | 挂单量 | 累计可成交量 |
|---|---|---|---|---|
| 卖盘 | 卖三 | 10.06 | 8,000 | 23,000 |
| 卖盘 | 卖二 | 10.05 | 7,000 | 15,000 |
| 卖盘 | 卖一 | 10.04 | 8,000 | 8,000 |
| 买盘 | 买一 | 10.02 | 9,000 | 9,000 |
| 买盘 | 买二 | 10.01 | 6,000 | 15,000 |
| 买盘 | 买三 | 10.00 | 10,000 | 25,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成交,滑点几乎为零。这就是“相对流动性”决定大单属性的直接证据。
四、方法流程:从识别大单到选择执行方式
在实际交易中,识别大单并选择执行方式通常遵循以下流程:
- 估算订单相对规模:计算订单量占近期成交量、盘口深度、日均成交量的比例。
- 评估流动性状态:观察价差、盘口厚度、成交连续性、波动率。
- 预测冲击成本:用历史数据或简单模型估算一次性成交的均价偏移。
- 选择执行方式:一次性成交、时间切片、POV、VWAP、被动挂单或混合策略。
- 监控与调整:根据实时成交、盘口变化和剩余量动态调整节奏。
例如,某订单占过去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}")
五、误区与复盘:大单执行中最常见的三个错误
误区一:把“大单”当成固定金额标准。不同标的、不同时段、不同波动率下,同样的订单量冲击完全不同。必须用相对流动性判断。
误区二:只看滑点,不看冲击成本来源。滑点可能是行情波动造成的,不一定是你的订单冲击。复盘时要区分“市场漂移”和“自身冲击”。
误区三:认为拆得越细越好。拆得太细会拉长执行时间,增加价格漂移和机会成本,也可能错过短期流动性窗口。
复盘建议:每笔大单执行后,记录决策价格、实际成交均价、市场同期均价、参与率、盘口深度变化。把滑点拆分为“市场漂移”和“执行偏差”两部分,才能判断拆分策略是否真正有效。
掌握这些基础概念后,后续的大单拆分与自适应执行策略才有统一的度量标准:我们优化的不是“成交速度”单一目标,而是在冲击成本、滑点、时间风险和成交概率之间寻找动态平衡。