改了规则之后,5 分钟比特币合约还有人在操纵结算吗
七月有一篇斯坦福的论文说,Polymarket 上「比特币 5 分钟涨跌」这种合约,有人在结算前最后几秒到 Binance 上砸单把价格推过线,然后价格弹回去。8 月 7 日 Polymarket 把结算价从瞬时快照改成了 Chainlink 的 30 秒均价,8 月 11 日我做过一次验证,当时只有 4 天的新数据。现在过去一个月了,规则又改了一次(8 月 14 日起改成 60 秒均价)。这篇把论文的复现补全,再看看这两次改规则之后,那个信号还在不在。
先说结论。论文期的信号我基本都复现出来了。论文 7 月 15 日见报之后的三个星期,信号没减弱。8 月 7 日改成 TWAP 那一周起,结算刻度的超额集中和零分不开了,之后四个星期都是这样;方向也没了。最近三天(9 月 5 日到 7 日)Binance 侧又出现了推单,9 月 6 日一天的数量和方向性回到甚至超过论文期,但这些推单一次也没翻转 60 秒均价决定的结果,Polymarket 那边也没有人跟着在最后几秒下注。像是有人在推,但没赚到结果。三天太短,我会接着看。钱包那边:论文那条认人的规则,在我这里认出来的主要是成交多的周期里站在赢方的人,和随机分不开;站得住的是分半持续性,论文期前 10% 的账户在另一半还赚,TWAP 之后和随机分不开。
论文说了什么
Dai、Jia 和 Yu (2026) 用的是 2026 年 2 月 12 日(5 分钟合约上线)到 4 月的数据。合约的规则很简单:每 5 分钟一个周期,结算时比特币价格比周期开始时高就是 Up,否则 Down。结算价来自 Chainlink,Chainlink 又是几家现货交易所的加权,Binance 是最大的一家,论文说 Binance 中价和 Chainlink 价差不到 3 个基点,几乎一比一地动。
他们发现的东西有四条。结算前最后 10 秒 Binance 的净订单流比上线前跳升大约 50%;接近平价的周期跳升是其它周期的 3.9 倍;结算后 10 秒内价格回吐大约四分之一;把最后 10 秒净流量相对本周期典型流量排前 10% 的周期叫「被操纵周期」,这些周期里逆着优势方推的时候,65% 把结果翻转了。他们从盈亏里认出 821 个账户,在被操纵周期里一共赚了 820 万美元,损失 93% 落在散户身上。15 分钟合约上这些信号弱很多。这些是论文的数字,下面复现的时候一条条对。
数据怎么来的
Binance 那边我没用 API 抓,用的是 data.binance.vision 的每日 aggTrades 日包,BTCUSDT 现货,2 月 1 日到 4 月 30 日、7 月 1 日到 9 月 6 日,一共 157 天,9 月 7 日当天用 API 补到 08:45Z。每个 5 分钟边界 T 取 [T−130 秒, T+40 秒) 这 170 秒,按秒聚合成买卖名义额、笔数和最后价。去掉上一边界缺失的,一共 45,304 个边界。8 月我用 API 抓过一段,两种来源在同一天逐秒对得上,笔数和价格零差异。
对照的设计沿用 8 月那次:同一个周期里有三个整分钟刻度,T 是结算时刻,T−60 和 T−120 是普通的整分钟。三个时刻都是整点,K 线收盘、执行算法之类的东西在这三个时刻上都会有,只有 T 能决定一张 Polymarket 合约。所以我看的是 T 上的统计量减去另外两个刻度的均值,叫「超额」。这样波动率变化、时段效应这些东西都在同一个周期里被差掉了。
时期分六段(表 1)。Polymarket 的规则我是逐个周期读市场描述定下来的:8 月 7 日 00:05Z 起第一个 30 秒 TWAP 周期,8 月 14 日 00:05Z 起第一个 60 秒 TWAP 周期,15 分钟和 4 小时合约从 8 月 7 日起就是 60 秒。上线前那段(P0)是有 15 分钟合约、没有 5 分钟合约的基线,不是「什么合约都没有」。第一个 5 分钟合约结算在 2 月 12 日 00:40Z,不是 00:05Z,我的论文期多标了 7 个边界,对汇总没影响。表 1 的天数是按每期含的日期数,首尾不完整的日子也算一天,所以加起来比 157 多。
| 时期 | 起止(UTC,2026) | 5m 结算规则 | 边界数 | 天数(含首尾不完整日) | 10 秒波动 $ | 窗内成交额 |
|---|---|---|---|---|---|---|
| 发布前 | 2/1–2/11 | 无 5m 合约 | 3,167 | 11 | 18.5 | $6.03M |
| 论文期 | 2/12–4/30 | 快照 | 22,460 | 78 | 10.5 | $2.82M |
| 7月上半 | 7/1–7/14 | 快照 | 4,030 | 14 | 6.0 | $2.17M |
| 见报后 | 7/15–8/6 | 快照 | 6,621 | 23 | 4.6 | $1.94M |
| TWAP30 | 8/7 00:05–8/14 00:00 | 30s TWAP | 2,012 | 8 | 2.3 | $1.45M |
| TWAP60 | 8/14 00:05–9/7 08:45 | 60s TWAP | 7,014 | 25 | 6.4 | $2.56M |
Polymarket 那边分两层。周期层抽了 6,400 个周期(5 分钟和 15 分钟合约,四个时期),拿到数据的 5,150 个(其余是没成交或者接口没返回的),每个周期拿市场元数据和最新一页成交,算最后 60/30/10 秒的成交额、钱包数,以及合约价格在结算前 60/30/10 秒对结果的准确率;9 月 5 日到 7 日这三天我把 5 分钟合约的周期全抓了,651 个。钱包层是每个周期的完整成交带,抓了 1,392 个周期(论文期 744、7 月 1 日到 8 月 6 日 95、30 秒 TWAP 期 96、60 秒 TWAP 期 457),按钱包算每周期的盈亏,用来复现论文里认操纵者的那一步。
两个要先说清的事。一是 strike 和结算价我用 Binance 的最后价(快照期)或最后 30/60 秒均价(TWAP 期)代理 Chainlink。核对的时候算过,同一个周期用快照 strike 和用 60 秒均价 strike,方向判定在 6.6% 到 9.1% 的周期里会不一样,所以「推向翻转」「翻转成功」「近 strike」这类按方向或距离分类的数只能当汇总量看,成交额占比不受这个影响。二是统计口径:所有均值都先算每天,再对天做 bootstrap 给 95% 区间。
先把论文复现一遍
图 1 把每个周期按距结算时刻的秒数对齐(横轴 −130 到 +40 秒),逐秒成交额除以本周期 170 秒的均值,再按时期取平均;只画只结算 5 分钟合约的边界,把 15 分钟和整点边界扔掉了。T−60 和 T−120 那两个整分钟的小鼓包每个时期都在,1.2 到 1.5 倍。结算刻度上,上线前和整分钟一样高(1.5 对 1.4),论文期 2.0 倍,60 秒 TWAP 期 1.6 倍。
把它变成数字(表 2):论文期最后 10 秒的成交额占 170 秒窗的 8.98%,同周期 T−60 和 T−120 上分别是 5.13% 和 5.32%,超额 +3.75 个百分点,95% 区间 [3.07, 4.49]。上线前这个数是 +0.07 [−0.17, +0.32]。按 T−10 时价格离 strike 的距离(除以当天的 10 秒波动)把周期分成五档,最近的一档超额 +7.9,是全部周期的两倍多;论文说的是 3.9 倍。最后 10 秒 |净流量| 的均值从上线前的 14.5 万美元涨到论文期的 21.9 万,高 51%,论文写的是约 50%。
| 时期 | 5m 全部·最后10秒 | 最接近strike的1/5 | 最后30秒 | 最后60秒 | 只结算5m的边界 | 15m边界(非整点) |
|---|---|---|---|---|---|---|
| 发布前 | +0.07 [-0.17, +0.32] | +0.09 [-0.32, +0.54] | -0.49 [-1.09, +0.12] | -1.55 [-2.16, -1.02] | -0.33 [-0.60, -0.08] | +0.67 [-0.07, +1.36] |
| 论文期 | +3.75 [+3.07, +4.49] | +7.87 [+6.60, +9.12] | +4.26 [+3.35, +5.27] | +3.82 [+2.86, +4.89] | +3.30 [+2.66, +3.98] | +4.42 [+3.51, +5.48] |
| 7月上半 | +3.33 [+1.47, +5.50] | +8.06 [+3.17, +13.39] | +3.70 [+0.87, +6.80] | +2.80 [-0.10, +6.38] | +3.04 [+1.37, +5.02] | +3.46 [+1.25, +5.89] |
| 见报后 | +3.82 [+2.75, +5.13] | +9.67 [+6.71, +12.83] | +5.00 [+3.38, +7.00] | +3.58 [+1.61, +5.97] | +3.45 [+2.36, +4.73] | +3.78 [+2.67, +5.03] |
| TWAP30 | +0.12 [-0.53, +0.81] | +0.42 [-1.33, +2.05] | +0.10 [-1.73, +1.94] | +3.91 [-2.93, +11.95] | +0.14 [-0.67, +1.05] | -0.16 [-0.82, +0.55] |
| TWAP60 | +0.13 [-0.31, +0.77] | +0.64 [-0.24, +1.70] | -0.54 [-1.23, +0.28] | -1.41 [-2.36, -0.49] | +0.12 [-0.39, +0.84] | -0.10 [-0.72, +0.60] |
论文口径的「被操纵周期」我也照做了:最后 10 秒 |净流量| 除以本周期更早 12 个 10 秒窗的平均 |净流量|,每期取前 10%。论文期这 2,246 个周期里,倍数的中位数是 17 倍;均值 54 倍,是重尾拉的,分母换成前 60 秒、前 120 秒的中位数、或者上一周期加本周期,均值会在 34 到 162 之间跳,中位数在 13 到 54 之间,所以后面都报中位数。这些周期里净流量推向让结果翻转那一侧的比例是 64.8% [62.3, 67.3],上线前同口径是 38.5% [32.9, 43.9];推向翻转的时候,最后 10 秒真把快照结果翻过去的比例是 65.6%,论文写的是 65%。
| 时期 | 周期数 | 相对净流量(中位/均值) | 超额占比 pp | 推向翻转 | 成功翻转(快照口径) | 基线 | γ |
|---|---|---|---|---|---|---|---|
| 发布前 | 317 | 4.5 / 6.6 | +12.8 | 0.385 [0.329, 0.439] | 0.205 [0.129, 0.275] | 0.079 | -0.112 [-0.268, 0.019] |
| 论文期 | 2,246 | 17.4 / 54.4 | +42.3 | 0.647 [0.623, 0.673] | 0.656 [0.628, 0.682] | 0.164 | -0.142 [-0.240, -0.023] |
| 7月上半 | 403 | 16.6 / 50.1 | +42.7 | 0.623 [0.556, 0.665] | 0.656 [0.575, 0.725] | 0.138 | -0.277 [-0.397, -0.166] |
| 见报后 | 663 | 19.4 / 53.0 | +45.1 | 0.636 [0.589, 0.678] | 0.674 [0.630, 0.715] | 0.133 | -0.192 [-0.275, -0.098] |
| TWAP30 | 202 | 5.8 / 12.8 | +22.3 | 0.455 [0.371, 0.538] | 0.224 [0.149, 0.307] | 0.044 | 0.275 [0.042, 0.464] |
| TWAP60 | 702 | 5.5 / 13.2 | +19.8 | 0.500 [0.440, 0.567] | 0.341 [0.188, 0.497] | 0.075 | -0.175 [-0.319, -0.011] |
结算后的反转(表 4)。把结算后 10 秒的收益对结算前 10 秒的收益做回归,斜率 γ 为负就是反转。论文期近 strike 周期 γ = −0.19 [−0.27, −0.11],同一批周期在 T−60 刻度上是 +0.06 [−0.02, +0.15]。论文说近平价周期回吐大约四分之一,我这里差不多是五分之一。
| 时期 | γ 全部 | γ 对照 | γ 近strike | γ 近strike对照 | 推向翻转 全部 | 推向翻转 近strike |
|---|---|---|---|---|---|---|
| 发布前 | -0.162 [-0.226, -0.094] | -0.128 [-0.181, -0.071] | -0.007 [-0.156, 0.130] | -0.056 [-0.140, 0.047] | 0.466 [0.453, 0.483] | 0.524 [0.494, 0.554] |
| 论文期 | -0.075 [-0.128, -0.015] | 0.009 [-0.027, 0.047] | -0.187 [-0.271, -0.105] | 0.062 [-0.022, 0.152] | 0.494 [0.487, 0.501] | 0.525 [0.510, 0.539] |
| 7月上半 | -0.085 [-0.135, -0.034] | 0.106 [-0.002, 0.237] | -0.036 [-0.258, 0.265] | 0.177 [-0.013, 0.332] | 0.488 [0.473, 0.502] | 0.522 [0.478, 0.561] |
| 见报后 | -0.002 [-0.082, 0.088] | 0.032 [-0.016, 0.086] | -0.033 [-0.121, 0.090] | 0.085 [-0.049, 0.221] | 0.481 [0.470, 0.493] | 0.503 [0.480, 0.524] |
| TWAP30 | 0.175 [-0.103, 0.331] | 0.164 [0.067, 0.225] | 0.119 [-0.040, 0.490] | 0.061 [-0.051, 0.210] | 0.482 [0.461, 0.505] | 0.459 [0.404, 0.527] |
| TWAP60 | -0.069 [-0.134, 0.030] | 0.010 [-0.042, 0.065] | 0.043 [-0.053, 0.133] | 0.000 [-0.072, 0.102] | 0.478 [0.466, 0.490] | 0.500 [0.470, 0.532] |
论文里两条小一点的结果也对上了。被操纵周期集中在夜里和周末:论文期 56.7% 落在 UTC 22 点到 8 点,全部周期是 41.7%;周末占 37.8%,全部周期 28.2%(论文写的是 56% 和 44%,对 40% 和 27%)。15 分钟合约那条我分不出来:15 分钟边界同时也是 5 分钟结算点,我能比的是「非整点的 15 分钟边界」对「只结算 5 分钟的边界」,论文期是 +4.4 [3.5, 5.5] 对 +3.3 [2.7, 4.0],差 1 个百分点上下,区间重叠;上线前这两个数是 +0.7 [−0.1, +1.4] 对 −0.3 [−0.6, −0.1],差距也是 1 个百分点,而上线前已经有 15 分钟合约了。整点边界我扔掉了:4 小时整点在没有 5 分钟合约信号的时期(上线前、TWAP 之后)也有 +2 到 +2.6 个百分点的超额,那是 Binance 自己的整点效应。
论文见报之后、改规则之前
论文 7 月 15 日上了彭博。我原来猜曝光会让人收手一点。没有。7 月 15 日到 8 月 6 日这三个星期,超额是 +3.82 [2.75, 5.13],近 strike +9.7,被操纵周期里推向翻转 63.6%、翻转成功 67.4%,每天推单(倍数超过 10 的周期)中位 20 个。成交额占比、方向、翻转成功、每天推单数这几项和论文期比都没降。反转斜率是例外:见报后近 strike 周期的 γ 是 −0.03 [−0.12, +0.09],和对照刻度分不开了;那三周 10 秒波动只有 4.6 美元,斜率本来就难估。7 月上半个月的超额也是 +3.3。
改成 TWAP 之后
8 月 7 日起的那一周(30 秒 TWAP)超额是 +0.12 [−0.53, +0.81],8 月 14 日到 9 月 7 日(60 秒 TWAP)是 +0.13 [−0.31, +0.77]。这两个区间只排除了论文期那种水平,排不掉半个百分点以内的正值,所以我写「和零分不开」,不写「为零」。单看 8 月 7 日一天是 +1.6,8 月 6 日(最后一个快照日)是 +0.7,一天的数太吵,看周的就行。近 strike 周期从论文期的 8 到 10 个百分点降到 +0.4 和 +0.6,区间都跨零;换几种「近」的定义(前一天的波动做尺子、直接用基点距离、固定 5 个基点以内),60 秒 TWAP 期的数在 0.5 到 1.0 之间动,其中两种定义下区间下沿刚过零,所以写「降到 1 个百分点以下」。
方向也没了。全部周期和近 strike 周期里推向翻转的比例回到上线前的水平(47.8% 对上线前 46.6%,50.0% 对 52.4%)。被操纵周期里是 45.5% 和 50.0% [44.0, 56.7],比论文期的 64.8% 低得多,但比上线前同口径的 38.5% 高一截,区间不重叠,这个我没解释。倍数的中位数从 17 降到 5.5 到 5.8。每天推单的数量从 20 个降到 6 个,但上线前是 3 个,还没回到上线前。我还担心过一件事:活动会不会只是从最后 10 秒挪进了 TWAP 窗口里。看 30 秒和 60 秒窗口的超额,60 秒 TWAP 期分别是 −0.5 和 −1.4 个百分点,没有挪进去。30 秒 TWAP 那周 60 秒窗口是 +3.9,但区间是 [−2.9, +12.0],那周只有 7 天,分不出来。
反转分两种情况说。全部周期和近 strike 周期上,反转和对照刻度分不开。被操纵周期在 60 秒 TWAP 期还有 −0.18 [−0.32, −0.01] 的反转,但这些周期本来就是大单,推完弹回是正常的价格冲击,分不出是不是操纵。
图 5 那个数要解释一下。TWAP 之后被操纵周期的倍数中位 5.5 到 5.8、推向翻转 45% 到 50%、快照口径翻转 22% 到 34% [18.8, 49.7],和上线前同口径的大流量周期差不多(倍数 4.5,翻转 20.5% [12.9, 27.5]),没有方向。看起来是没人推了,剩下的是正常的大流量尾巴。至于最后 10 秒推不动 60 秒均价,那是规则本身决定的:最后 10 秒在 60 秒里只占六分之一。
波动率能不能解释「和零分不开」?TWAP 之后比特币安静了很多,10 秒绝对波动从论文期的 10 美元降到 2 到 6 美元。我把论文期的周期按事前波动(T−130 到 T−10 的逐秒收益标准差)重新加权到 60 秒 TWAP 期的分布,预期的超额应该是 +5.1 [4.1, 6.1],实际是 +0.1。论文期的信号本来就集中在最安静的周期(事前波动最低的两个分位 +8.2 [6.7, 9.7],最高的两个分位 −0.2 [−0.6, +0.2]),市场变安静只会让它更明显,不会让它消失。有一点残留:60 秒 TWAP 期事前波动最低的十分之一周期还有 +2.4 [1.1, 5.1] 的超额,次低的十分之一 +1.8 [0.4, 3.7],大约是论文期同条件的四分之一到三分之一,但这些周期里推向翻转的比例是 49% 到 50%,没有方向。
Polymarket 那边
Binance 侧看到的是有人推价格。Polymarket 侧能看到另一半:有没有人在最后几秒往合约里下注,以及合约价格什么时候就已经知道答案了。先看三件事。
| 合约 | 时期 | 周期数 | 市场成交额中位 | 最后10秒占比 % | 最后30秒 % | 钱包数(10秒) | 准确率 −60s | −30s | −10s | 在玩比例 % | 在玩·−10s 准确率 |
|---|---|---|---|---|---|---|---|---|---|---|---|
| 5m | 论文期 | 1,081 | $103,841 | 3.8 [3.2, 4.6] | 8.9 | 80.9 | 0.845 | 0.882 | 0.925 [0.909, 0.940] | 35.9 | 0.866 |
| 5m | 7月上半 | 749 | $70,909 | 2.7 [2.4, 3.0] | 6.8 | 67.6 | 0.840 | 0.899 | 0.933 [0.910, 0.954] | 35.9 | 0.892 |
| 5m | TWAP30 | 782 | $47,063 | 1.3 [0.7, 1.8] | 6.7 | 16.5 | 0.873 | 0.930 | 0.990 [0.986, 0.994] | 28.3 | 0.968 |
| 5m | TWAP60 | 1,417 | $49,877 | 0.4 [0.3, 0.5] | 2.3 | 7.2 | 0.922 | 0.970 | 0.993 [0.988, 0.997] | 15.7 | 0.973 |
| 15m | 论文期 | 374 | $83,936 | 1.0 [0.6, 1.7] | 2.4 | 17.3 | 0.930 | 0.949 | 0.949 [0.928, 0.970] | 15.5 | 0.810 |
| 15m | 7月上半 | 370 | $25,938 | 0.8 [0.6, 0.9] | 2.0 | 7.2 | 0.941 | 0.970 | 0.995 [0.987, 1.000] | 10.5 | 1.000 |
| 15m | TWAP30 | 397 | $23,610 | 0.4 [0.3, 0.5] | 2.1 | 1.4 | 0.970 | 0.990 | 0.987 [0.977, 0.997] | 8.8 | 0.914 |
| 15m | TWAP60 | 487 | $25,809 | 0.2 [0.1, 0.4] | 1.1 | 1.2 | 0.949 | 0.990 | 0.996 [0.990, 1.000] | 11.7 | 0.982 |
一是最后 10 秒占多少钱。表 5 里的成交额是 Polymarket 报的市场成交额,我抽了 24 个周期对过,它大约是成交带名义额的 1.9 到 2.0 倍(两边各算一次),所以「占比」的绝对水平偏低一半,跨时期比较不受影响。论文期 5 分钟合约一个周期的市场成交额中位数是 10.4 万美元,最后 10 秒占 3.8% [3.2, 4.6],平均有 81 个钱包在这 10 秒里交易。60 秒 TWAP 之后,市场成交额降到 5.0 万美元,最后 10 秒只占 0.40% [0.30, 0.51],钱包 7.2 个;9 月 5 日到 7 日全量的 651 个周期是 0.58% [0.34, 0.81] 和 5.4 个。最后 10 秒的钱从论文期的每周期中位 2,058 美元降到 8 美元。30 秒 TWAP 那一周在中间:1.3%、16 个钱包。
二是合约价格什么时候知道答案。论文期合约价格在结算前 60 秒对结果的准确率是 84.5%,前 10 秒 92.5%;也就是说最后 10 秒还有 7.5% 的周期会翻,这就是推单能赚钱的空间。60 秒 TWAP 之后,前 60 秒 92.2%,前 30 秒 97.0%,前 10 秒 99.3%。均价规则下结果在最后半分钟里基本就定了,合约价格也跟着提前定了;T−60 时价格还在 0.2 到 0.8 之间的「在玩」周期,从 36% 降到 16%。波动率解释不了这个:7 月上半的 10 秒波动和 60 秒 TWAP 期一样(6.0 对 6.4 美元),T−10 准确率是 93.3% 对 99.3%。
三是把 Binance 有推单的周期单独拿出来看。论文期这些周期在 Polymarket 最后 10 秒有 143 个钱包在交易,其它周期 77 个;合约价格在 T−10 秒时只有 69% 对,其它周期 94%;「在玩」的比例 60% 对 34%。7 月也是同一个样子(175 对 57 个钱包,73% 对 95%)。也就是论文期的推单发生在合约还没定的周期里,推完就把结果改了,Polymarket 上有一大群人在那 10 秒里下注。30 秒 TWAP 那周只抽到 19 个推单周期,27 对 16 个钱包,区间重叠一大半,分不出来。60 秒 TWAP 期抽到 30 个推单周期:最后 10 秒占 0.49%、10.6 个钱包,其它周期 0.46%、8.7 个,T−10 准确率 100%,看不出差别。15 分钟合约上,最后 10 秒的占比从论文期的 1.0% 降到 0.23%,钱包从 17 个降到 1.2 个。
钱包:论文里那 821 个人还在吗
论文认操纵者的办法是看盈亏:在被操纵周期里赚、在其它周期里持平的账户。我在抽样周期上照做。钱包面板抓了 1,392 个周期的完整成交带(论文期 744 个、7 月 1 日到 8 月 6 日 95 个、30 秒 TWAP 期 96 个、60 秒 TWAP 期 457 个;有 6 个周期的成交带没抓全),每个周期按钱包算盈亏:成交的现金流加上持有的赢方份额乘一美元。每个周期所有钱包的盈亏加起来应该是零,实际是名义额的 −0.2% 到 +0.7%,说明成交带两边都齐了。论文期一个周期有 80 个钱包在最后 10 秒交易,最后 10 秒的名义额占周期的 6.7%;60 秒 TWAP 期是 7.8 个和 1.1%,和上一节从另一个口径看到的一致。
被操纵周期按前面 Binance 那个口径(最后 10 秒相对净流量在本期前 10%)。疑似账户要在至少 3 个被操纵周期里出现、在那些周期里净赚超过 50 美元、而且单周期平均盈利高于它在其它周期的平均;这三个阈值是我定的。这条规则本身就会选出一些人,所以我把被操纵标签在周期间随机打乱 200 次,看同一条规则能随机选出多少人、多少钱,拿真实的数和它比。
| 时期 | 抽样周期 | 被操纵周期 | 易手:被操纵 / 其它 | 疑似人数 | 随机:均值 / 95% | 匹配:均值 / 95% | p(人数) | 疑似账户在被操纵周期的利润 | 随机:均值 / 95% | 匹配:均值 / 95% | p(利润) |
|---|---|---|---|---|---|---|---|---|---|---|---|
| 论文期 | 744 | 65 | $27.8k / $14.0k | 647 | 457 / 506 | 600 / 654 | 0.065 | $223.9k | $107.5k / $127.8k | $188.5k / $218.9k | 0.025 |
| 7月(7/1–8/6) | 95 | 12 | $21.3k / $9.5k | 108 | 46 / 61 | 79 / 96 | 0.010 | $28.6k | $8.5k / $13.2k | $18.7k / $25.9k | 0.005 |
| TWAP30 | 96 | 14 | $7.0k / $7.4k | 51 | 55 / 72 | 53 / 67 | 0.590 | $7.7k | $10.7k / $15.1k | $9.8k / $13.0k | 0.855 |
| TWAP60 | 457 | 41 | $6.1k / $7.0k | 142 | 147 / 176 | 137 / 156 | 0.325 | $26.8k | $33.7k / $43.5k | $31.1k / $39.1k | 0.855 |
论文期抽到的 744 个周期里有 65 个被操纵周期,规则选出 647 个疑似账户,它们在这 65 个周期里一共赚了 22.4 万美元,在其它周期里合计 −0.1 万;随机打乱标签,同一条规则平均选出 457 个人、10.8 万美元,95% 分位是 506 个人、12.8 万美元,真实的数在 200 次里一次都没被超过。到这里看起来是复现了。但核对的时候发现一件事:被操纵周期里易手的钱是其它周期的两倍(每周期所有钱包 |盈亏| 之和 2.8 万美元对 1.4 万,钱包数和名义额都差不多),因为这些周期的结果最后翻了。钱易手多,「在这些周期里赢」的人本来就多。把随机标签限制在 |盈亏| 合计同一个十分位的周期里再打乱,论文期就和随机分不开了:匹配打乱平均选出 600 个人、18.9 万美元,95% 分位 654 个人、21.9 万,真实的 647 人、22.4 万对应 p = 0.065 和 0.025。也就是这条规则在我的样本上认出来的,主要是钱易手多的周期里站在赢方的人;真的操纵者在不在里面,我从这一步分不出来。论文的 821 个账户、820 万美元我对不上,也不该拿抽样放大去对:表 6 没减随机的 22.4 万按 30 倍放大是 676 万,随机自己放大也有 320 万。
其它三期:7 月 1 日到 8 月 6 日,108 个人、2.9 万美元,随机 46 人、0.8 万,匹配打乱 79 人、1.9 万(95% 分位 96 人、2.6 万),p = 0.010 和 0.005,还多于匹配随机,但只有 12 个被操纵周期。30 秒 TWAP 那周:51 个人、0.8 万,匹配打乱 53 人、1.0 万,p = 0.59 和 0.86。60 秒 TWAP 期:142 个人、2.7 万,匹配打乱 137 人、3.1 万,p = 0.33 和 0.86,真实值在随机均值上下,不是样本小看不见;而且这 142 个账户在其它周期里也赚 1.5 万,不是「只在被操纵周期里赚」的样子。
另一个不依赖标签、也不受易手多少影响的检验是分半持续性:周期按奇偶分两半,在一半里按收益率排名,看前 10% 的钱包在另一半里赚不赚。运气活不过这一步。
| 时期 | 口径 | 参与排名的钱包 | 前10%人数 | held-out 收益 bps | held-out 美元 | 后10% bps | 随机95% | p |
|---|---|---|---|---|---|---|---|---|
| 论文期 | 整周期 | 12,982 | 1,298 | +1,025 | $58,554 | -803 | +359 | < 0.002 |
| 论文期 | 最后30秒 | 9,346 | 934 | +246 | $1,546 | -482 | +266 | 0.078 |
| 论文期 | 最后10秒 | 6,088 | 608 | +179 | $391 | +836 | +424 | 0.284 |
| 7月(7/1–8/6) | 整周期 | 805 | 80 | +580 | $823 | +350 | +535 | 0.034 |
| 7月(7/1–8/6) | 最后30秒 | 579 | 57 | -1,360 | $-181 | -4,837 | +455 | 0.806 |
| 7月(7/1–8/6) | 最后10秒 | 416 | 41 | +215 | $5 | -40 | +1,213 | 0.346 |
| TWAP30 | 整周期 | 931 | 93 | +497 | $1,305 | -456 | +768 | 0.210 |
| TWAP30 | 最后30秒 | 549 | 54 | +576 | $121 | -2,452 | +2,474 | 0.314 |
| TWAP30 | 最后10秒 | 194 | 19 | -3 | $-0 | -4,439 | +6,379 | 0.674 |
| TWAP60 | 整周期 | 3,972 | 397 | +305 | $6,051 | +613 | +353 | 0.128 |
| TWAP60 | 最后30秒 | 2,055 | 205 | -204 | $-103 | -323 | +872 | 0.806 |
| TWAP60 | 最后10秒 | 812 | 81 | +2,473 | $181 | -4,071 | +3,214 | 0.138 |
论文期:12,982 个钱包参与排名,前 10% 的 1,298 个在另一半里赚了 +1,025 bps、5.9 万美元,后 10% 是 −803 bps,随机挑同样多的钱包 95% 分位只有 +359,500 次里没有一次到 1,025。也就是论文期有一批账户的盈利是持续的,不是运气。只看最后 30 秒或最后 10 秒的成交,前 10% 在另一半是 +246 和 +179 bps,随机 95% 分位 +266 和 +424,分不开;这两个口径参与排名的人少三分之一到一半,held-out 只有 1,546 和 391 美元,按最后 10 秒排的后 10% 反而 +836,这个口径大概就是噪音。边在不在最后几秒,这一步测不出来。7 月 1 日到 8 月 6 日:805 个钱包参与排名,前 10% 的 80 个在另一半 +580 bps,随机 95% 分位 +535,p = 0.03,刚过线;后 10% 也是 +350,这一期我不敢说有。60 秒 TWAP 期:3,972 个钱包参与排名,前 10% 在另一半里 +305 bps、0.6 万美元,随机 95% 分位 +353,p = 0.13,后 10% 反而 +613,分不开;30 秒 TWAP 那周 +497,随机 95% 分位 +768,p = 0.21,那周只有 96 个周期。
所以钱包这一节能站住的只有一条:论文期有一批账户的盈利在分半之后还在,TWAP 之后和随机分不开。论文那条认人的规则,在我这里认出来的主要是成交多的周期里站在赢方的人,操纵者我分不出来。
最近三天的回升
逐周图的最后一段是 9 月 3 日到 7 日,+2.0 [0.2, 4.5]。拆到天:9 月 3 日 −0.3、4 日 +0.5、5 日 +1.6、6 日 +6.4、7 日(到 08:45Z,106 个边界)+2.3。9 月 6 日是星期天,那天有 38 个周期最后 10 秒的净流量超过典型值的 10 倍;论文期一天的中位数是 19 个,60 秒 TWAP 期其它日子是 6 个,之前三个星期天是 14、8、8 个。9 月 5 日 18 个,7 日半天 7 个。
这些推单是什么样子。9 月 6 日的 38 个里,推向翻转的占 87%(论文期 65%,上线前 38%);按快照口径,33 个把最后一笔成交价推过了 strike;按 60 秒均价,0 个翻转了合约结果。9 月 5 日的 18 个和 7 日的 7 个也一样:快照口径翻过线的 12 个和 4 个,60 秒均价 0 个。它们的流量集中在最后 10 秒(9 月 6 日最后 10 秒 |净流| 84 万美元,最后 60 秒 87 万),推的人还是把单子集中在最后 10 秒,而最后 10 秒在 60 秒均价里只占六分之一。价格被推动了 2 个基点左右,这些周期离 strike 的中位距离是 2.3 个基点,推得过最后一笔,推不过均价。Polymarket 那边,这三天最后 10 秒的成交占周期的 0.58% [0.34, 0.81],逐日 0.3% 到 0.8%,平均 5.4 个钱包;把 Binance 有推单的 62 个周期单独拿出来,最后 10 秒占比 0.4%、5.2 个钱包,和其它周期(0.6%、5.4 个)看不出差别,合约价格在 T−10 秒时 100% 对。和论文期(上一节:143 对 77 个钱包,69% 对 94%)正好反过来:现在的推单发生在结果早就定了的周期里。
所以我现在的读法是:9 月 6 日推单的数量和方向性回到甚至超过论文期,但推不动 60 秒均价,Polymarket 侧也没人跟着下注,没有人从中赚到结果。是不是有人在试新规则,还是别的什么,三天太短,我会接着跟。前面说的方向判定 6.6% 到 9.1% 的误差,对这里的「87% 推向翻转」同样适用。
不稳的地方
- Binance 代理 Chainlink。strike 和结算价都是 Binance 的价格。快照期近 strike 周期里,T−10 的价格离 strike 的距离(gap)中位数只有 0.6 到 1.1 个基点,而同一周期的快照 strike 和 60 秒均价 strike 之间的差就有 0.9 到 1.6 个基点,所以方向判定在 6.6% 到 9.1% 的周期里会变。按方向或距离分类的量(推向翻转、翻转成功、近 strike)只能当汇总看;成交额占比不受影响。
- 30 秒 TWAP 那一期只有 7 天、2,012 个周期,区间宽 ±0.7 个百分点。60 秒 TWAP 期区间 [−0.3, +0.8],也只能说低于论文期的八分之一,排不掉半个百分点以内的正值。
- 跨制度的「翻转成功率」在构造上就不可比:TWAP 下最后 10 秒几乎不可能翻转 60 秒均价(把 60 秒规则反套到论文期,翻转成功从 65.6% 掉到 7.9%)。文里统一用快照口径,或者用推向翻转的比例。
- 4 小时整点在没有 5 分钟合约信号的时期(上线前、TWAP 之后)有 +2 到 +2.6 个百分点的超额;每小时整点在这些时期是 +0.2 到 +1.4,区间跨零;快照期两种整点都到 +5 以上。那是 Binance 的时点效应,不能当 Polymarket 的证据,15 分钟合约的比较已经把整点扔掉了。
- 上线前的基线本身不是零:只结算 5 分钟的边界在上线前是 −0.33 [−0.60, −0.08]。上线前的 +0.07 是负的 5 分钟网格和正的 15 分钟、整点网格混出来的。
- 5 月和 6 月没有抓。「见报后没减弱」的对照是 2 到 4 月,中间空两个月,而逐周超额 3 月 +7.0 到 4 月下旬 2.3 本来就在漂。9 月 7 日只有 106 个边界。
- 8 月 7 日改规则的同一天,Polymarket 上了做市奖励计划(市场页面上的 rewards 标签,我没有找到正式公告的链接)。跨过这一天的比较都同时混着这两件事。
- Polymarket 周期是抽样的(论文期 1,500 个、60 秒 TWAP 期 1,500 个,拿到数据的少一些),60 秒 TWAP 期的抽样覆盖了 25 天里的 24 天;周期成交额是 Polymarket 报的市场成交额,约为成交带名义额的两倍;最后 10 秒的金额从最新一页成交算,论文期 99% 的周期一页盖不住整个周期,但盖得住最后 60 秒。钱包面板只覆盖论文期 3% 的周期,疑似账户的人数不能和论文的 821 直接对,只能比「多于随机多少」。随机打乱标签的基线没控制一件事:被操纵周期里易手的钱是其它周期的两倍,同一条规则在钱多的周期里本来就会多选出人;按 |盈亏| 匹配再打乱,论文期的超出就基本没了。认人的三个阈值是我定的,换阈值人数会变。面板抓的时候续跑过几次,有 1.2% 的重复行,分析前去掉了。没有订单 ID,认不出同一个人换钱包。
- 近 strike 的划分用了当天的波动做尺子,包含本周期和当天之后的周期,有一点前视;换成前一天的尺子结果不变(论文期 +8.1 [6.6, 9.6] 对 +7.9 [6.7, 9.2])。
最后
- 论文期的信号基本都复现:超额 +3.75 个百分点、最后 10 秒 |净流| 比上线前高 51%(论文说 50%)、近平价周期两倍多(论文是 3.9 倍)、被操纵周期推向翻转 65%、翻转成功 66%、结算后反转、夜间周末集中。
- 论文见报三个星期,操纵没减弱。
- 8 月 7 日改成 TWAP 那一周起,超额和零分不开,之后四周都是这样;方向回到上线前的水平;活动没有挪进 TWAP 窗;全部周期和近 strike 周期上反转和对照分不开。
- 9 月 5 日到 7 日 Binance 侧又出现推单,9 月 6 日的数量和方向性超过论文期,但 60 秒均价下 0 次翻转,Polymarket 侧没有跟进。要接着看。
- 钱包:论文那条认人的规则(被操纵周期里赚、其它周期持平)在我这里认出来的主要是成交多的周期里站在赢方的人,按易手规模匹配后和随机分不开。站得住的是分半持续性:论文期前 10% 的账户在另一半还赚 +1,025 bps(随机 95% 分位 +359);TWAP 之后和随机分不开(+305 对 +353,p = 0.13,后 10% 反而 +613)。
复现。脚本都在一个目录里:z1 从日包重建逐秒流,z1b 用 API 补当天,z2 抽 Polymarket 周期,z3 抓钱包面板,a1 到 a5 是分析和画图,verify 目录里是核对时另算的几段(波动率重加权、几种「近」的定义、几种分母、方向判定的差异)。8 月那次的 25 个脚本还在旁边,这次的对照设计、翻转定义、分半持续性都是从那里搬的。
看过的东西:
- Dai, D., Jia, R., & Yu, S. (2026). Settlement Manipulation in Prediction Markets. arXiv:2606.31675 / SSRN 7028398.
- Polymarket 市场描述里引用的 Chainlink 数据流:btc-usd-twap-30s-streams(8 月 7 日至 13 日)与 btc-usd-twap-60s-streams(8 月 14 日起)。
- 我 8 月 11 日的验证笔记(未发布):同一套对照设计,4 天 TWAP 数据。
用到的定义
超额成交额占比:最后 w 秒成交额占该边界 [T−130, T+40) 窗的比例,结算刻度减去整分钟刻度。w=10 时对照是 T−60 与 T−120 的均值;w=30、60 时只用 T−60(T−120 的窗口超出采集范围)。
推向翻转:最后 10 秒净 taker 流量的方向,与「让当前领先方翻转」所需方向一致的比例。领先方按 T−10 时的价格与 strike 比较。
相对净流量:最后 10 秒 |净流量| 除以本周期 [T−130, T−10) 内 12 个 10 秒窗的平均 |净流量|。被操纵周期 = 各期内前 10%。
γ:结算后 10 秒对数收益对结算前 10 秒对数收益的回归斜率,按天 bootstrap。
翻转成功(快照口径):T−10 的最后价与 T−1 的最后价在 strike 两侧,且最后 10 秒净流量推向翻转。
区间都是按天 bootstrap 的。数字随方法修订会更新(v1.1,2026-09-07:按核对清单改了 30 多处数字和措辞;v1.2,同日:补上钱包一节;v1.3,同日:钱包一节的随机基线加了按易手规模匹配的打乱,论文期「认出的人」不再显著,结论改口)。