第十八章 订单流交易中的算法交易风控:订单执行算法、滑点控制、冰山订单与隐藏订单
做订单流交易这些年,我越来越觉得一个道理:策略再好,执行不好,一切都是白搭。你想想看,明明分析出大单在吸筹,结果自己一进场就把价格打飞了,这多憋屈。
这一章,我们就来聊聊算法交易里的风控问题。说白了,就是怎么把单子下得聪明点,别让市场发现你,也别让滑点吃掉你的利润。
订单执行算法的核心逻辑
我个人习惯把订单执行算法分成两类:时间驱动型和价格驱动型。前者追求在规定时间内完成交易,后者追求在最优价格附近完成交易。
举个例子,TWAP(时间加权平均价格)算法就是典型的时间驱动型。它把大单拆成小单,均匀地撒在时间轴上。我在项目中遇到过一个大户,每天要买500手螺纹钢,用TWAP跑,一天下来成交均价跟市场均价差不了几个点。
但TWAP有个问题——它不看市场深度。如果某个时刻流动性很差,它照样往里冲。这时候,VWAP(成交量加权平均价格)就更聪明一些。它会根据历史成交量分布来调整下单节奏,流动性好的时候多下点,差的时候少下点。
滑点控制:实战中的硬功夫
滑点这东西,说白了就是你的预期成交价和实际成交价之间的差值。我见过太多人,策略回测年化50%,实盘一跑只剩20%,问题就出在滑点上。
为什么会这样?因为回测时你假设能以对手价成交,但实盘时你的单子可能把价格推过去好几个tick。
控制滑点,我建议从三个维度入手:
- 订单类型选择:限价单永远比市价单安全,但成交概率低。我个人习惯用"冰山订单+市价单"的组合,先用冰山挂一部分,如果市场朝有利方向走,再用市价单追。
- 时间窗口控制:别在开盘和收盘前5分钟下大单。那段时间流动性最差,滑点最大。我记得有一次,客户在收盘前3分钟下了200手,结果滑了3个tick,多亏了2万多块。
- 市场冲击评估:下单前先看看订单簿的深度。如果买一只有10手,你一下50手,那肯定要打穿好几层。
冰山订单:藏一半,露一半
冰山订单,顾名思义,就是只露出水面的一小部分,大部分藏在下面。交易所只显示你愿意公开的那部分数量,剩下的作为隐藏数量慢慢释放。
举个例子,你想买1000手,但不想让市场知道。你可以设置显示量为100手,冰山总量为1000手。每次成交100手后,系统会自动再挂出100手,直到全部成交。
这样做的好处很明显:
- 减少市场冲击,不会吓跑对手盘
- 避免被其他算法盯上,防止被"狙击"
- 可以慢慢吸筹,不引起价格剧烈波动
但要注意,冰山订单不是万能的。有些交易所会收取额外费用,而且如果市场流动性太差,冰山订单可能会挂很久都成交不了。
隐藏订单:完全隐身
隐藏订单比冰山订单更彻底——它完全不显示在订单簿上。只有成交后,市场才知道你的存在。
隐藏订单适合什么场景?我总结了几种:
- 大资金建仓或平仓,不想暴露意图
- 在关键价位附近埋伏,等待对手盘主动来吃
- 做高频交易时,不想让其他算法识别出你的策略
但隐藏订单也有代价。它的成交优先级低于普通限价单。也就是说,同样价格下,普通限价单先成交,隐藏订单排后面。所以,如果你急着成交,别用隐藏订单。
我记得有一次,一个做套利的客户想用隐藏订单在价差回归时进场。结果因为优先级低,连续三次都没成交,眼睁睁看着价差跑掉了。后来我建议他改用"冰山+隐藏"的组合——先挂一个显示量很小的冰山,再在下面挂一个隐藏单,这样既能保证优先级,又能隐藏大部分意图。
实战中的算法选择策略
说了这么多,到底该怎么选?我整理了一个简单的决策表:
| 交易场景 | 推荐算法 | 风控要点 |
|---|---|---|
| 大单建仓(>1000手) | VWAP + 冰山订单 | 控制单笔下单量,避免冲击 |
| 小单高频(<10手) | 市价单 + 滑点保护 | 设置最大滑点容忍度 |
| 关键价位埋伏 | 隐藏订单 | 注意成交优先级低的问题 |
| 套利交易 | 冰山 + 隐藏组合 | 监控价差变化,及时撤单 |
| 日内短线 | TWAP + 限价单 | 避免在流动性差的时间段交易 |
嗯,这里要注意一点:没有万能的算法。市场环境在变,你的算法也要跟着调。我每周都会复盘一次执行效果,看看滑点有没有变大,成交率有没有下降。如果发现问题,马上调整参数。
算法交易风控的核心框架
最后,我画了一张图,把这一章的核心逻辑串起来。你一看就明白了:
这张图把整个流程串起来了。从交易指令进来,到算法选择,再到风控输出,每一步都有对应的策略和工具。你想想看,如果每个环节都做到位,滑点控制住,意图隐藏好,那你的订单流交易就成功了一大半。
好了,这一章的内容就到这里。记住,算法交易风控不是一锤子买卖,它需要你不断复盘、调整、优化。希望这些经验能帮你少走一些弯路。