第三章:拆单算法入门:为什么需要拆单?大单对市场的冲击、时间与价格权衡
各位同学,今天我们来聊聊拆单。说实话,我刚入行那会儿,觉得拆单就是个“把大单切碎”的简单活。直到我在实盘里亲眼看到一笔500万的买单直接把盘口打穿三个价位,我才意识到——这玩意儿,真不是切肉那么简单。
3.1 大单的“杀伤力”:你下单时市场在发生什么?
先问一个问题:如果你要买100万股某只股票,而当前盘口上卖一只有5000股,会发生什么?
我告诉你,会发生三件事:
- 价格瞬间飙升——你的买单会一路吃掉卖一到卖十,价格被推高好几个档位。
- 流动性枯竭——盘口上的挂单被一扫而空,后续想买的人只能挂更高的价格。
- 市场信号暴露——其他交易者看到大单涌入,会猜测“有大资金进场”,于是跟风买入或撤单观望。
这就是所谓的市场冲击成本。说白了,你下单的动作本身就在改变市场价格。
核心概念:市场冲击
市场冲击是指由于交易行为本身导致的价格不利变动。大单交易时,冲击成本往往占总交易成本的50%以上。
我在一个项目中遇到过这样的情况:一个客户要减持某只小盘股,持仓市值约2000万。他直接挂了一笔市价卖出单,结果股价从15.2元瞬间砸到14.6元,光这一下就亏了将近40万。嗯,这就是典型的“大单屠杀”。
3.2 拆单的核心逻辑:把大象装进冰箱分几步?
拆单的思路其实很朴素:把一个大单拆成若干个小单,分批执行。但这里面的门道,比你想象的多得多。
你想想看,拆单要解决三个核心问题:
- 拆多少?——每笔订单的规模多大?
- 什么时候拆?——在什么时间点发出订单?
- 怎么拆?——用限价单还是市价单?挂单还是吃单?
我个人的习惯是,先画一张图来理解整个流程。下面这张图展示了拆单算法的核心逻辑:
这张图其实揭示了一个关键点:拆单不是一次性切完就完事了,它是一个动态反馈的过程。每笔子单执行后,市场状态已经变了,你的下一笔子单策略也得跟着变。
3.3 时间与价格的“跷跷板”
拆单算法里最核心的权衡,就是时间和价格之间的博弈。我把它叫做“跷跷板”——你压住一头,另一头就会翘起来。
| 策略倾向 | 时间成本 | 价格成本 | 适用场景 |
|---|---|---|---|
| 激进型(快速执行) | 低(几分钟完成) | 高(冲击成本大) | 流动性好的大盘股、行情剧烈波动时 |
| 保守型(缓慢执行) | 高(几小时甚至一天) | 低(冲击成本小) | 流动性差的小盘股、大额减持 |
| 平衡型(动态调整) | 中等 | 中等 | 大多数常规交易场景 |
为什么会这样?我解释一下:
- 如果你急着买,就得用市价单或者 aggressive 的限价单,直接吃掉盘口上的挂单。这样速度快,但每吃一档价格就往上跳一档,成本自然高。
- 如果你不着急,可以挂一个低于当前市价的买单,慢慢等别人来砸。这样价格好,但可能等半天也成交不了,甚至股价涨上去你就彻底踏空了。
我的经验之谈: 我个人习惯在开盘前15分钟和收盘前15分钟尽量少用激进策略。这两个时间段流动性最不稳定,冲击成本容易被放大。我曾经在收盘前用市价单补仓,结果被尾盘拉升直接多花了0.3%的成本——教训深刻。
3.4 一个简单的拆单示例
光说不练假把式。我们来看一个最简单的拆单算法——时间加权平均价格(TWAP)。它的逻辑就是把大单均匀地分配到一段时间内执行。
假设你要在10:00到11:00之间买入10万股,TWAP的做法是:
# 简单的TWAP拆单示例(伪代码)
total_shares = 100000 # 总股数
start_time = 10:00 # 开始时间
end_time = 11:00 # 结束时间
interval = 60 # 每60秒发一笔
每笔股数 = total_shares / ((end_time - start_time) / interval)
= 100000 / 60
≈ 1667 股/笔
# 执行逻辑
for each minute from 10:00 to 11:00:
send_order(1667 shares, limit_price=current_market_price)
sleep(60 seconds)
这个算法很简单,但有个致命问题:它完全不考虑市场状态。如果这60秒内股价突然拉升,你还在按原计划买入,那就亏大了。
避坑指南: 我曾经在实盘里用TWAP拆单,结果遇到某只股票突然放量拉升,我的子单还在按固定节奏买入,最后成交均价比启动前高了1.2%。从那以后,我所有的拆单算法都加入了“价格偏离检测”——如果当前价格偏离基准价超过一定阈值,就暂停或降低下单频率。
3.5 拆单算法的核心参数
不管用什么算法,有几个参数是绕不开的:
- 订单规模——每笔子单的股数或金额。太小了交易成本占比高,太大了冲击成本高。
- 下单频率——多长时间发一笔。频率太高容易被识别为算法单,频率太低又拖慢进度。
- 价格容忍度——允许偏离当前市价多少。太严格可能成交不了,太宽松又容易吃大亏。
- 参与率——你的交易量占市场总成交量的比例。一般建议控制在5%-15%之间。
嗯,这里要注意:这些参数不是固定的,得根据股票流动性、市场波动率、你的资金规模来动态调整。我见过有人把参数设死了,结果行情一变,算法直接崩了。
3.6 小结:拆单的本质是什么?
拆单算法的本质,说白了就是用时间换空间。你愿意多花点时间,就能获得更好的成交价格;你愿意多花点成本,就能快速完成交易。
没有完美的拆单策略,只有最适合当前市场环境的策略。我个人的建议是:先搞清楚你的优先级——是追求最低成本,还是追求最快完成?然后根据这个优先级去选择算法和参数。
下一节我们会深入讲几种经典的拆单算法,包括TWAP、VWAP、POV等,到时候我会拿实盘数据来对比它们的表现。今天就先到这里,大家消化一下。