高频做市策略:闪电订单、冰山订单、逐笔数据驱动策略、延迟套利与抢跑策略
做市策略做到高频这个层面,说白了就是跟时间赛跑。我做了这么多年,最大的感受就是:谁能在微秒级别内读懂订单流,谁就能赚钱。今天聊的这几个策略,都是高频做市里的硬核玩法。
一、闪电订单与冰山订单
先说说闪电订单。这玩意儿在纳斯达克等交易所比较常见。它的核心逻辑是:你挂一个订单,交易所先不给你公开,而是先扫一遍自己的内部订单簿,看看有没有能跟你匹配的。如果有,直接成交;如果没有,再给你挂出去。
闪电订单的本质:用短暂的「信息不对称」换取成交概率。
我个人习惯把闪电订单看作一种「优先权租赁」。你付了更高的手续费,换来的是比别人快那么一丢丢的成交机会。我在项目中遇到过不少新手,以为闪电订单能稳赚不赔,结果被反向交易者盯上,反而成了猎物。
冰山订单就更好理解了。你想想看,如果你要挂一个10万手的买单,直接挂出去,市场会怎么反应?所有人都会往上推价格,你根本买不到好价钱。冰山订单就是把大单拆成小单,只露出冰山一角。
举个例子:
# 冰山订单的简单模拟
class IcebergOrder:
def __init__(self, total_qty, display_qty, price):
self.total_qty = total_qty
self.display_qty = display_qty
self.price = price
self.remaining = total_qty
def get_display_order(self):
if self.remaining <= 0:
return None
show = min(self.display_qty, self.remaining)
self.remaining -= show
return {'price': self.price, 'qty': show}
def is_alive(self):
return self.remaining > 0
嗯,这里要注意:冰山订单虽然能隐藏真实意图,但经验丰富的做市商可以通过逐笔数据推断出你的真实规模。我曾经见过一个团队,专门写算法识别冰山订单,然后反向狙击。
二、逐笔数据驱动策略
逐笔数据,说白了就是每一笔成交的原始记录。跟传统的tick数据不同,逐笔数据包含了订单的完整生命周期:挂单、撤单、成交、修改。
为什么这东西重要?因为高频做市的核心就是「读订单流」。你想想看,如果你能看到每一笔撤单、每一笔小单的试探,你就能提前判断大资金的意图。
我常用的一个逐笔数据策略是这样的:
# 逐笔数据驱动的流动性检测
class TickFlowAnalyzer:
def __init__(self, window_size=100):
self.trades = []
self.cancels = []
self.window = window_size
def on_tick(self, tick):
# tick: {'type': 'trade'/'cancel', 'price': float, 'qty': int}
if tick['type'] == 'trade':
self.trades.append(tick)
else:
self.cancels.append(tick)
# 检测异常撤单率
if len(self.cancels) > self.window:
cancel_rate = len(self.cancels) / (len(self.trades) + 1)
if cancel_rate > 0.7:
# 撤单率过高,可能是虚假流动性
self.signal = 'fake_liquidity'
else:
self.signal = 'normal'
我在项目中遇到过最经典的一个案例:某只股票在开盘前5分钟,撤单率突然飙升到80%以上。我当时判断这是有人在制造虚假深度,于是果断收窄了报价价差。果然,3分钟后价格剧烈波动,那些虚假订单全部撤掉,真实流动性瞬间枯竭。
避坑指南:我曾经吃过一次亏,以为撤单率高就是虚假流动性,结果那只是某个机构在做算法调仓。后来我加入了「订单年龄」这个维度——老订单撤单和新订单撤单,含义完全不同。
三、延迟套利与抢跑策略
延迟套利,说白了就是利用不同交易所之间的信息传输延迟来赚钱。比如,比特币在币安先涨了,火币还没反应过来,你就可以在火币低价买入,等价格同步后卖出。
但这里有个坑:延迟套利现在基本被专业机构垄断了。他们直接把服务器放在交易所机房里,用FPGA硬件加速,延迟能做到纳秒级。你如果在家用普通宽带做,基本是给别人送钱。
抢跑策略就更有意思了。抢跑不是违法的那种内幕交易,而是利用公开订单流信息,预测大单的走向。比如,你看到一个大买单正在吃掉卖一,你可以提前在卖二挂单,等价格推上来后卖出。
我常用的一个抢跑检测逻辑:
# 抢跑策略的订单流检测
def detect_front_running_opportunity(orderbook):
"""
检测是否存在抢跑机会
"""
bid_depth = orderbook['bids'][:5] # 前5档买单
ask_depth = orderbook['asks'][:5] # 前5档卖单
# 计算买卖压力差
bid_volume = sum([b['qty'] for b in bid_depth])
ask_volume = sum([a['qty'] for a in ask_depth])
pressure_ratio = bid_volume / (ask_volume + 1e-8)
# 如果买单压力远大于卖单,说明有大资金在买入
if pressure_ratio > 3.0:
# 在卖二档挂单,等待价格推高
target_price = ask_depth[1]['price']
return {'action': 'place_ask', 'price': target_price}
return None
警告:抢跑策略在监管上处于灰色地带。如果你在订单流可见的情况下,利用公开信息提前布局,通常没问题。但如果你通过非法手段获取未公开的订单信息,那就是违法了。我建议所有做市商都跟合规部门保持沟通,别为了赚快钱把自己搭进去。
四、知识体系总览
下面这张图是我自己梳理的高频做市策略知识体系,你可以对照着看:
这张图把四个策略的关系理清楚了。你会发现,不管是闪电订单还是冰山订单,本质上都是在「信息」和「时间」上做文章。而逐笔数据驱动策略,就是帮你读懂这些信息的工具。延迟套利和抢跑,则是利用这些信息差来获利。
最后说一句:高频做市不是谁都能做的。你需要低延迟的基础设施、扎实的统计学功底、以及对市场微观结构的深刻理解。我见过太多人一上来就想着「我要做高频」,结果连订单簿的更新机制都没搞明白。嗯,先把基础打牢,再谈策略。
交易系统化学习资料 微信Strategy888888