17、订单簿操纵检测:Spoofing、Layering、Wash Trading 识别
做量化交易这些年,我见过最离谱的事,就是有人明目张胆地在订单簿上「画图」。你以为看到的深度和挂单是真实的?不一定。今天咱们就来聊聊订单簿上的三大骗术:Spoofing、Layering 和 Wash Trading。说白了,就是怎么识别那些「假单子」和「假交易」。
17.1 什么是 Spoofing?—— 虚晃一枪的挂单
Spoofing,中文常叫「幌骗」。手法很简单:挂一个大单在买一或卖一附近,制造出强烈的支撑或压力假象。等价格真的被吸引过去,立马撤单,反手吃掉对手的流动性。
我曾在某个山寨币的订单簿上看到过这种操作。卖一挂了 200 个 BTC,价格纹丝不动。等买盘被吓退、价格跌了 0.5%,那 200 个 BTC 瞬间消失,紧接着就是一波快速拉升。嗯,这就是典型的 Spoofing。
17.2 Layering —— 层层叠叠的假深度
Layering 是 Spoofing 的升级版。不是只挂一层,而是挂好几层。比如在卖一到卖五,每层都挂上不同数量的大单,看起来像是一堵「卖压墙」。实际上,这些单子都是同一个账户或关联账户挂的,目的就是吓唬人。
我记得有一次分析某期货合约的 Level 2 数据,发现卖一到卖五的挂单量几乎呈等差数列递减。正常人谁会这么挂?明显是程序在刷单。等真正的买盘被吓跑,这些层级的单子会逐层撤掉,价格瞬间崩盘。
| 层级 | 正常挂单 | Layering 挂单 |
|---|---|---|
| 卖一 | 50 手 | 200 手 |
| 卖二 | 30 手 | 180 手 |
| 卖三 | 20 手 | 150 手 |
| 卖四 | 10 手 | 120 手 |
| 卖五 | 5 手 | 100 手 |
你看,正常挂单是越远越少,Layering 是越远越多。这本身就是个危险信号。
17.3 Wash Trading —— 自己跟自己玩
Wash Trading 就更直接了。同一笔资金,左手倒右手,制造虚假的成交量。交易所为了刷交易量排名,或者庄家为了吸引跟风盘,经常干这种事。
怎么识别?看两个指标:
- 买卖方向高度对称:同一时间戳下,买一和卖一几乎同时成交,且数量相等。
- 价格无波动:成交价长期卡在某个固定价位,比如 100.00 反复成交。
17.4 检测算法实战
下面给出一段 Python 伪代码,用于实时检测 Spoofing 和 Layering。你想想看,核心逻辑其实就三点:
- 监控大单的存活时间
- 统计撤单率
- 分析挂单层级间的相关性
def detect_spoofing(orderbook, threshold_volume=100, time_window=0.5):
"""
检测 Spoofing:大单存活时间 < 0.5 秒,且撤单后价格反向移动
"""
suspicious_orders = []
for order in orderbook.orders:
if order.volume > threshold_volume:
lifespan = order.cancel_time - order.place_time
if lifespan < time_window:
# 检查撤单后价格是否反向
price_move = orderbook.price_after_cancel - orderbook.price_before_cancel
if price_move * order.side < 0: # 反向移动
suspicious_orders.append(order)
return suspicious_orders
def detect_layering(orderbook, depth_levels=5, correlation_threshold=0.95):
"""
检测 Layering:相邻层级挂单量高度相关
"""
volumes = [orderbook.get_volume_at_level(i) for i in range(1, depth_levels+1)]
# 计算相邻层级的相关系数
correlations = []
for i in range(len(volumes)-1):
corr = np.corrcoef(volumes[i], volumes[i+1])[0,1]
correlations.append(corr)
if all(c > correlation_threshold for c in correlations):
return True # 疑似 Layering
return False
17.5 知识体系总览
下面这张图,是我自己整理的知识结构。你看一眼,心里就有数了。
17.6 避坑指南
我曾经踩过一个坑:只盯着大单撤单率看,结果把一家正规做市商给误报了。后来发现,人家撤单是因为市场波动太大,风控系统自动撤的。所以,检测操纵行为一定要结合「撤单后的价格行为」来判断。
- 不要只看撤单率: 高撤单率不一定就是 Spoofing,也可能是做市商在调整报价。
- 注意时间窗口: 0.5 秒以内的撤单才值得怀疑。超过 1 秒的,大概率是正常行为。
- 关联账户分析: Wash Trading 往往涉及多个账户,需要做网络分析。