spoofing 的检测与识别 (Spoofing Detection)

大白话:spoofing(挂假单)= 挂上一大笔根本不打算成交的限价单,把价格推到自己想要的方向,等别人改价之后撤单,再反向成交赚钱。2010 年《多德-弗兰克法案》把它列为重罪(每次 spoofing 最高罚 100 万美元、10 年监禁)。

三篇论文代表三条完全不同的技术路线:从市场结构推导(经济模型 + 统计距离)、从操纵者收益出发(成本函数 + 神经网络)、从数据表示出发(对比学习 + 异常检测)。它们给出的可操作结论高度一致——spoof 几乎不在盘口顶端做。

三条路线的分工

flowchart TB
    A["spoof 事件"] --> B["Tao et al. 2020<br/>多档失衡 + Wasserstein 距离"]
    A --> C["Fabre & Challet 2025<br/>成本函数 + 概率神经网络"]
    A --> D["Lin & Yang 2025<br/>对比表示学习 + 异常检测"]
    B --> E["共同结论:<br/>① spoof 藏在深档<br/>② 失衡被压到特定区间<br/>③ 需要多档而非单档信息"]
    C --> E
    D --> E

路线一:经济模型 + 统计距离(Tao, Day, Ling & Drapeau 2020/2022)

核心量:加权多档失衡

按档位权重 w_k 对各档买卖量加权后取失衡 \iota。w_k 表示"第 k 档挂单对失衡的相对影响"。

核心机制:假单被成交的概率吃掉全部收益

策略成本对比(论文算例):

策略 成本
立即市价买入 21
延迟一周期买 (1-\bar p)19+\bar p\,23(仅当 \bar p<1/2 更好)
挂假卖单 + 延迟买入 (1-\bar p)19+\bar p\,23+\boldsymbol{q}

最后那个 q 是全文的关键:假挂单被成交的概率直接抵消全部 spoof 收益。

由此得出的"更容易出现 spoof"的市场条件:

  1. 被成交概率 Q_k 小
  2. 初始失衡接近 1/2——\bar\iota(1-\bar\iota) 在 1/2 处最大,价格朝有利方向移动的杠杆最大
  3. \mu_+ 大(价格对失衡敏感)
  4. w_k 相对 Q_k 大
  5. \rho 大(相对簿深买得太多)

TMX 校准(10 只股票):市价单量/流动性 \bar\rho 从 BB 的 17.8% 到 CNR 的 89.5%;\mu_+ 从 PPL 的 0.076 到 BB 的 0.467。

检测方法

核心观察:成功的 spoof 必须有一笔市价单成交。所以比较市价单前的失衡 \iota^- 与后的失衡 \iota^+:

  • 合法市价单 → 联合分布 (\iota^-, \iota^+) 服从长期稳态
  • spoof → 市价单前失衡被压到 \iota_{spoof}(\iota^-),成交后撤单、失衡回到稳态 → 联合分布明显偏左

三个递进的监控方案:

方案 做法 结论
1 只监控短窗 \hat\iota^-_N 偏离长期值 不够好(可能只是别的市场模式)
2 监控短窗联合分布 vs 长期联合分布 仍然非 iid
3 条件化监控:给定 \hat\iota^+_N 条件下监控 \hat\iota^-_N 序列接近 iid,本文采用

度量:非参数 2-Wasserstein 距离,比较"到合法失衡的条件分布 K(y,\cdot) 的距离"与"到 spoof 失衡条件分布 K_{spoof}(y,\cdot) 的距离",前者大于后者即报警。短窗 N\approx100,把 \hat\iota^+_N 分成 L 个等基数桶。

结果(TMX 2017-06-05 至 06-09):整体上"到 spoof 失衡的距离更小"很少发生交叉;交叉时多为孤立事件。TD 是例外(交叉很多),但 TD 的 \mu_+=0.118 特别低,按论文自己的判据大部分时间 spoof 并不划算。

路线二:成本函数 + 概率神经网络(Fabre & Challet 2025)

思路转变:不问"这笔单子后来撤了没有",而问"以操纵者视角,这笔单子是否让整体交易更划算"。这是无标签的、逐笔实时的判据。

特征:多尺度 Hawkes + 挂单距离

\phi_{\beta,\eta}(t,v,\delta) = e^{-\beta t} f(v) e^{-\eta\delta}

\beta = 时间尺度、\eta = 距离尺度(挂单离盘口越远权重衰减越快)。本文的首要贡献被作者定位为:第一个研究价格形成对挂单距离依赖结构的非参数研究。31 个变量(跨资产 62 维)。

模型:概率型神经网络

目标 \Delta p\sim D(\Theta(x)),损失为负对数似然;单资产用偏斜高斯、跨资产用二元高斯;输入做 Box-Cox 变换(\lambda_i 由最大化高斯对数似然选出)+ z-score。

网络刻意做小以便实时:1 个隐藏层、64 个神经元、ReLU。

检测判据

\Delta C(Q,\delta)=E[C^a_{spoof}(0,\delta_a,0,q)|x_0]-E[C^a_{spoof}(\delta,\delta_a,Q,q)|x]

\Delta C(Q,\delta)>0 即表示挂这笔假单平均而言比不挂更划算。成本函数含四项:真实单成交收益、假单成交损失、真实单未成交的到期平仓损失、假单被成交的到期平仓损失。

三个最有监管价值的数字

指标 值
可 spoof 的大单占比 31%
占全部委托 7%
可疑单挂在盘口顶端的比例 0%(可疑全部单 0.13%)
对照:正常大单挂在盘口顶端 4.20%(正常全部单 10.14%)

可疑单规模约为正常单的 2.6 倍、挂单距离约为 6.7 倍、之后 1 秒的价格变动约为 5.5 倍。

检测耗时 < 100 微秒 / 笔委托(Python + 代码优化)。

路线三:对比表示学习 + 异常检测(Lin & Yang 2025)

研究对象升级:从"单笔假单"到"跨多档的 spoof/layering 事件";方法论从经济学模型换成表示学习。

架构

  1. Multilevel LOB Encoder:Transformer,单独预训练重建原始 LOB,预训练后冻结
  2. Contrastive Fusion Encoder:拼接隐向量与人工特征
  3. 混合损失 L=(1-\alpha)L_{MSE}+\alpha L_{SCL}(\alpha=0.8 最优;\alpha=0 或 1 都明显更差)
  4. 过采样(\beta>0):\beta=0 时对比损失完全无法训练
  5. 下游用 OC-SVM / Isolation Forest 判别

四条结论

结论 数字
最好结果 JFDS + OC-SVM:AUC-PR 0.675、AUROC 0.975、F4 0.881(原始模式 0.252 / 0.854 / 0.653)
多档操纵更难 单档注入 AUC-PR 普遍高于 5 档注入(JFDS 0.308 → 0.260)
LOB 必须先被表示好 仅用 MSE 损失加 LOB 反而变差(JFDS 0.260 → 0.252)
深档更难 只统计第 2–5 档时 AUC-PR 明显下降(JFDS 0.675 → 0.451)

反例:FEDformer 与 TimesNet 在部分指标上反而下降——通用时间序列模型与 LOB 数据不兼容。CNN2 在级联架构下也性能退化。

三条路线的共同结论

结论 Tao et al. Fabre & Challet Lin & Yang
spoof 藏在深档而非盘口顶端 实证 w_k 不随深度递减 可疑单挂顶端 0% 深档异常更难检出
需要多档而非单档信息 加权多档失衡是核心信号 31 维多尺度特征 5 档 LOB 编码器
单笔行为指标不够,要看联合分布/成本 条件化 + Wasserstein 操纵者成本函数 对比表示 + 异常分

本 wiki 已有内容与这条线的接口

Open Questions

  • 三篇论文都不依赖真实操纵事件标签。Lin & Yang 明确说所选 LOBSTER 数据中不存在被报告的操纵,只能合成注入。在有真实执法案例的数据上重做,是这条线最缺的一步。
  • A 股能否做 spoof 检测:需要逐笔委托 ID + 完整生命周期(沪市配对缺失 14.2%),且没有交易所的冰山/隐藏标记。Fabre & Challet 的成本函数路线是无账户 ID 下唯一可行的,但它要求 Level-3 逐笔委托流——A 股与港股的 Level-3 门槛极高。
  • 多档加权失衡 w_k vs PCA 第一主成分:Tao 等估计的 w_k 与 Cont 等的整合 OFI 权重 w 是否指向同一方向?这可以在同一份数据上直接比较。
  • 检测判据的制度敏感性:Fabre & Challet 的 \Delta C 依赖费率假设(Coinbase taker 5 bp / maker 0 bp)。在 maker-taker 倒挂或点差补贴的市场上,阈值会完全不同——A 股 2023 年后部分品种有无券商提供交易费优惠,这对"大单是否值得 spoof"的结论有直接影响。

Sources