LZLZL/预测市场/盘口与微结构
免费深 · 动手 丁 盘口与微结构回测

排队位置
与保守假设

2026-08-21 · 挂单回测里最容易骗自己的一步

回测吃单只要处理价格;回测挂单要处理一个不可观测的东西:你排在第几个。 同一个价位上有几百股,谁先成交取决于队列 —— 而队列在历史数据里看不到。 于是这一步几乎全靠假设,而假设的方向决定了结论的正负号

问题在哪

你在 0.61 挂 100 股。这个价位上已经有 800 股。现在有人卖出 500 股 ——

如果你排在成交回测会说
最前面100 股全成赚到价差
中间部分成交一半一半
最后面一股没成什么都没发生

三种情况在历史数据里长得完全一样:你只看到「0.61 价位成交了 500 股」。 所以回测框架必须替你做一个假设,而大多数框架的默认假设是乐观的

保守假设长什么样

我们用的规则只有两条,都是往对自己不利的方向取:

规则意思为什么保守
挂单时点的显示量全部排我们前面下单那一刻这个价位有 800 股,就当 800 股都在我们前面实际可能有人在我们之后撤单,让我们提前
前方撤单不让位别人撤了单,我们的位置不往前挪实际撤单确实会让位

这两条合起来的效果是:我们会少吃到「良性成交」,多吃到「毒性成交」

为什么?因为良性成交(对手只是要平仓)通常量小,吃不穿队列就轮不到我们; 而毒性成交(对手知道消息)往往量大、扫穿整个价位,排最后也会被吃到

保守队列 = 系统性地把我们排到坏成交那一侧 所以这样跑出来的数字是悲观下界,不是真实值

为什么宁可悲观

因为两种错误的代价完全不对称

假设方向如果错了代价
乐观回测正、实盘负上线之后用真钱发现
保守回测负、实盘可能正错过一个机会

错过机会的代价是有限的,用真钱发现假边的代价没有上限。 所以在所有说不准的地方,都往对自己不利的方向取 —— 这不是悲观主义,是不对称风险管理

关键:把偏差方向写在结论旁边

保守假设本身不解决问题,它只是把问题变成已知的。真正重要的是第二步:

每个回放数字都要带一个方向标签

我们的做法是每条结论后面必须跟一句「这个数是下界还是上界」。 举个真实例子 —— 同一件事的两个数:

来源结果方向
保守队列的全额模拟−3¢/股悲观下界
熟练玩家的实测+0.1¢/股乐观上界

于是结论不是一个数,而是一个区间:−3¢ 到 +0.1¢。 接下来要问的问题就变得非常具体:有没有证据表明我们能拿到正的那一端?

那次的答案是没有,所以那条线没有上。如果只有一个中间数字, 这个问题根本问不出来 —— 你会以为自己知道答案。

还有一个必须单列的:吃不到的单

挂单回测里有一类数据特别容易被悄悄丢掉:你想挂但没成交的单

如果框架把它们直接从样本里删掉,剩下的就只有成交了的那些 —— 而成交与否恰恰不是随机的。这等于用结果来筛样本,得到的统计必然偏乐观。

要单独上报为什么
未成交率它本身就是策略性质的一部分,不是噪声
部分成交的比例「挂 100 成 30」和「挂 100 成 100」是两种策略
被撤单的量撤掉的单也占用过资金和排队时间

一份自查清单

问自己不合格的答案
队列假设是什么?「框架默认的」——那你不知道方向
撤单让不让位?不知道 = 大概率让位 = 乐观
没成交的单去哪了?「被过滤掉了」——样本已被污染
这个数是上界还是下界?答不上就不能拿来做决定
有证据说我们能拿到好的那一端吗?「应该可以吧」

一句话记住

挂单回测里最重要的数字不在数据里,在假设里。 所以正确的产出不是一个收益率,是一个带方向标签的区间 —— 以及一句诚实的话:我有没有证据能拿到好的那一端。

证据怎么自己核对

保守队列规则 挂单时点的显示量全部排我方之前;前方撤单不让位。两条都往不利方向取。
偏差方向 保守队列会让我方少吃良性流、多吃毒流,因此结果是悲观下界
区间而非点估计 同一条路的两端:保守模拟 −3¢/股(下界)vs 熟练实测 +0.1¢/股(上界); 无证据表明可拿到上界,故未上线。
未成交必须上报 未成交率、部分成交比例、撤单量三项单列,不得从样本中删除。
复核日期 2026-07 至 2026-08。
本文不含 我们的策略参数与报价规则。上述均为回测方法学。

相关接着读什么

丁 · 盘口微结构
吃穿订单簿:吃单侧的同类问题
丁 · 盘口微结构
逆向选择:为什么坏成交会找上你
丁 · 盘口微结构
一次高估两倍的近似
辛 · 研究方法
回放必须写明偏差方向
本文属教育与研究记录,不构成投资建议,不承诺任何回报。规则与接口行为以官方文档为准,本文标注考证日期, 随时可能变更。预测市场在部分国家和地区受限制或不可用,参与前请自行确认当地法规。