撤单数据与部分撤单 (Cancellation Data and Partial Cancels)
大白话:成交数据记的是「谁真的买了」,撤单数据记的是「谁曾经想买、后来又缩回去了」。后者是前者的镜像,而且量级一样大——A 股每成交 1 手,几乎同时就有 1 手被撤。这页讲两件事:为什么撤单值得单独看,以及「部分撤单」为什么比「全额撤单」信息更厚。
一笔限价单的三种结局
投资者提交一笔限价单之后,结果只有三种:
flowchart LR
A[提交限价单] --> B[进入盘口排队]
B --> C[全额成交]
B --> D[未成交即撤回<br/>全部撤单 nonpartial]
B --> E[部分成交]
E --> F[撤回剩余未成交部分<br/>部分撤单 partial]
三种结局中,只有「全额成交」进入了成交数据。另外两条分支只存在于撤单数据里。而撤单在 Level 2 逐笔订单流里是一个明确的订单类别(委托 / 成交 / 撤单),不像快照那样只能看到一个累计数。
为什么必须用 Level 2 逐笔
| 数据层级 | 有什么 | 对撤单研究的意义 |
|---|---|---|
| Level 1 快照 | 三秒一笔,5 档申买申卖价量 | 看不到撤单 |
| Level 2 快照 | 10 档、买一卖一前 50 笔委托、买卖撤单笔数/数量/金额(仅上交所) | 只有聚合数,没有单笔 |
| Level 2 逐笔 | 毫秒时间戳、逐笔序号、频道代码、买卖订单号、订单类别 | 可以逐笔判定撤单 |
所以本篇的因子全部基于 Level 2 逐笔订单数据。要注意的是:沪市 L2 快照本身就带 WithdrawBuyNumber / WithdrawSellNumber 等撤单统计(见 Level-2 档位与委托队列),深市快照没有,必须自己从逐笔委托流的 A/D 记录做差分。
撤单有多大:和成交一样大
研报图 2 给出的年度对比(全市场日均,单位亿股):
| 年份 | 撤单量与成交量之比 | 备注 |
|---|---|---|
| 2019—2021 | 约 90% | 成交量高于撤单量 |
| 2022 起 | 基本持平 | 两条柱等高 |
| 2024 后 | 略高于 100% | 撤单量反超成交量 |
「每成交 1 手,几乎同时有 1 手被撤销」——这句话是整篇研报的立论基础。如果一个市场的撤单量和成交量一样大,那么只看成交量,等于忽略了市场里一半的订单行为。
撤单行为的两种解释,研报都承认:
- 被动撤单:挂上去没成交,等得不耐烦或者价格走开了,撤掉重挂
- 主动策略:挂单是为了探测市场深度、测试对手盘意愿,或者信息到达后快速修正报价
第二种解释让撤单从「失败的交易」变成了「情报行为」——挂一笔大单看有没有人跟,本身就是一次信息采集。
部分撤单:先成交、再评估、后终止
部分撤单(partial)指订单先成交了一部分,剩余部分被撤回。它的占比很低:
| 指标 | 量级 | 趋势 |
|---|---|---|
| 部分撤单笔数占比 | 约 3% | 2019—2026 缓慢下行 |
| 部分撤单数量占比 | 约 5%–8% | 2019 年约 7.8%,2024 年降到约 5.0%,2026 回升到约 5.5% |
两个数字的差本身就是信息:量占比稳定高于笔数占比,意味着发生部分撤单的订单平均规模大于全额撤单的订单,部分撤单更集中在大额订单上。
研报对这个现象的解释是「决策链更完整」:报价挂出去之后确实触发了成交,但成交这件事没有改变投资者对后续价格的判断,所以剩下那部分撤掉。这个过程同时包含了两层信息——对已实现成交价的认可,和对未来盘口风险的重新评估。全额撤单只有后一层。
所以 partial 在因子命名里是一个反复出现的前缀,对应「部分撤单特征」这一整族(12 个因子)。
方向性:撤单越活跃,未来收益越低
这是本篇最稳定的一条经验规律。撤单活跃度与规模族的九个因子,IC 均值全部为负:
| 因子 | IC 均值 | IC 胜率 |
|---|---|---|
diag_log_cancel_count |
−9.24% | 72.87% |
rel_count_per_active_minute |
−9.19% | 73.09% |
rel_active_minute_share |
−8.42% | 75.88% |
diag_log_cancel_vol |
−7.33% | 71.53% |
rel_vol_per_active_minute |
−7.18% | 71.09% |
diag_log_cancel_vol_tot |
−7.09% | 69.36% |
rel_cancel_vol_entropy |
−4.95% | 69.08% |
rel_cancel_count_entropy |
−1.80% | 58.02% |
rel_avg_cancel_vol |
−0.53% | 53.13% |
研报没有给出这条规律的经济解释。一个自然的读法是:撤单活跃意味着挂单方对当前价格没把握、反复调整报价,这种不确定状态在截面上对应更差的后续表现。但这是本 wiki 的推测,不是原文结论。
与本 wiki 其他页面的接口
- 撤单活跃度与规模因子 — 本页方向性规律对应的因子族
- 撤单日内时间结构因子 — 撤单发生在什么时候
- 撤单时长分层因子 — 快速撤单与普通撤单的分层
- HFQ 高频报价识别 — 同样用撤单数据,但目的是识别算法订单(按存活期阈值),不是做因子
- spoofing 的检测与识别 — 撤单的另一种极端形态:挂单从来就不打算成交
- Level-2 档位与委托队列 — 沪深两所撤单字段的差异
Open Questions
diag_前缀是什么? 表 2 里有diag_log_cancel_count/diag_log_cancel_vol/diag_log_cancel_vol_tot三个,但全文没有定义diag。从名字推测是对角线(diagonal)或诊断(diagnostic),无法确定rel_的相对基准是什么?rel_count_per_active_minute、rel_active_minute_share、rel_avg_cancel_vol都带rel_,相对的是什么——自身历史均值?当日成交量?同业?全文未说明active_minute的判定标准。 有成交的分钟算活跃分钟,还是有委托就算?这直接决定了rel_count_per_active_minute的分母- 部分撤单占比逐年下降(2019 年约 7.8% → 2024 年约 5.0%)的原因未讨论。可能是市场结构变化(如 2021 年后的交易机制调整),也可能是订单规模分布变化,研报没有展开
- 负向规律没有经济解释。 「撤单越活跃未来越差」只有数字,没有机制假说
Sources
- summaries/202608-guangfa-level2-cancel-factors/202608-guangfa-level2-cancel-factors — 广发证券《从高频撤单信息中构建因子》,2026-08-07