KK Blog
← 全部文章
研究笔记 · 2026-09-07 · Polymarket 5 分钟比特币合约 × Binance 逐笔

改了规则之后,5 分钟比特币合约还有人在操纵结算吗

likangxian 2026-09-07(v1.3) 数据:Binance 日包逐笔(data.binance.vision)· Polymarket gamma / data API 代码和中间结果可以提供

七月有一篇斯坦福的论文说,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 多。

表 1 · 六个时期。每期的 5 分钟边界数、天数、当期平均 10 秒绝对价格变动(美元)、每周期(170 秒窗)Binance 成交额。
时期起止(UTC,2026)5m 结算规则边界数天数(含首尾不完整日)10 秒波动 $窗内成交额
发布前2/1–2/11无 5m 合约3,1671118.5$6.03M
论文期2/12–4/30快照22,4607810.5$2.82M
7月上半7/1–7/14快照4,030146.0$2.17M
见报后7/15–8/6快照6,621234.6$1.94M
TWAP308/7 00:05–8/14 00:0030s TWAP2,01282.3$1.45M
TWAP608/14 00:05–9/7 08:4560s TWAP7,014256.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 倍。

00.511.522.53-120-90-60-30030倍数相对结算时刻的秒数整分钟整分钟结算发布前(n=2,112)论文期(n=14,975)见报后(n=4,413)TWAP60(n=4,675)
图 1 · 结算前后逐秒成交额,按时期,只结算 5 分钟合约的边界。整分钟刻度上的鼓包每个时期都有,是 Binance 自己的东西;结算刻度上的鼓包上线前和整分钟一样高,论文期 2.0 倍,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%。

表 2 · 结算刻度相对同周期整分钟刻度的超额成交额占比(百分点)。最后 10 秒的对照是 T−60 和 T−120 两个刻度的均值;30 秒和 60 秒窗口只能用 T−60 做对照(T−120 的窗口超出采集范围)。括号内为按日重抽的 95% 区间。
时期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%。

表 3 · 论文口径的“被操纵周期”:最后 10 秒 |净流量| 相对本周期前 120 秒典型流量的 top 10%。倍数列为中位数 / 均值。成功翻转按统一的快照口径算(结算前 10 秒的最后价与结算时的最后价是否在 strike 两侧),这样才能跨制度比较;真正的合约结果在 TWAP 期几乎不会被最后 10 秒翻转。基线 = 全部周期的同一比例。
时期周期数相对净流量(中位/均值)超额占比 pp推向翻转成功翻转(快照口径)基线γ
发布前3174.5 / 6.6+12.80.385 [0.329, 0.439]0.205 [0.129, 0.275]0.079-0.112 [-0.268, 0.019]
论文期2,24617.4 / 54.4+42.30.647 [0.623, 0.673]0.656 [0.628, 0.682]0.164-0.142 [-0.240, -0.023]
7月上半40316.6 / 50.1+42.70.623 [0.556, 0.665]0.656 [0.575, 0.725]0.138-0.277 [-0.397, -0.166]
见报后66319.4 / 53.0+45.10.636 [0.589, 0.678]0.674 [0.630, 0.715]0.133-0.192 [-0.275, -0.098]
TWAP302025.8 / 12.8+22.30.455 [0.371, 0.538]0.224 [0.149, 0.307]0.0440.275 [0.042, 0.464]
TWAP607025.5 / 13.2+19.80.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]。论文说近平价周期回吐大约四分之一,我这里差不多是五分之一。

表 4 · 结算后 10 秒对结算前 10 秒收益的回归斜率 γ(负 = 反转),以及最后 10 秒净流量推向翻转一侧的比例。对照 = 同一周期 T−60 整分钟刻度上的同一统计量。推向翻转 50% 表示没有方向。
时期γ 全部γ 对照γ 近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]
TWAP300.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]
-0.200.20.4发布前论文期7月上半见报后TWAP30TWAP60γ全部周期 P0_prelaunch: γ=-0.162 [-0.226,-0.094]全部周期 P1_paper: γ=-0.075 [-0.128,-0.015]全部周期 P1_july: γ=-0.085 [-0.135,-0.034]全部周期 P1_public: γ=-0.002 [-0.082,0.088]全部周期 P2_twap30: γ=0.175 [-0.103,0.331]全部周期 P3_twap60: γ=-0.069 [-0.134,0.030]最接近strike的1/5 P0_prelaunch: γ=-0.007 [-0.156,0.130]最接近strike的1/5 P1_paper: γ=-0.187 [-0.271,-0.105]最接近strike的1/5 P1_july: γ=-0.036 [-0.258,0.265]最接近strike的1/5 P1_public: γ=-0.033 [-0.121,0.090]最接近strike的1/5 P2_twap30: γ=0.119 [-0.040,0.490]最接近strike的1/5 P3_twap60: γ=0.043 [-0.053,0.133]全部周期最接近strike的1/5
图 2 · 结算后 10 秒对结算前 10 秒的回归斜率,按时期。论文期近 strike 的周期是负的,其它时期和对照刻度分不开。

论文里两条小一点的结果也对上了。被操纵周期集中在夜里和周末:论文期 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。

-5051001-2902-1903-1204-0204-2307-0207-2308-1309-03百分点1769644800: 超额占比 +0.02pp1770249600: 超额占比 +0.10pp1770854400: 超额占比 +2.07pp1771459200: 超额占比 +0.95pp1772064000: 超额占比 +1.64pp1772668800: 超额占比 +7.01pp1773273600: 超额占比 +6.21pp1773878400: 超额占比 +4.12pp1774483200: 超额占比 +5.59pp1775088000: 超额占比 +4.63pp1775692800: 超额占比 +4.47pp1776297600: 超额占比 +2.25pp1776902400: 超额占比 +2.45pp1777507200: 超额占比 +3.09pp推向翻转 -3.4pp推向翻转 +0.0pp推向翻转 +2.8pp推向翻转 -1.4pp推向翻转 +2.8pp推向翻转 +3.0pp推向翻转 +2.7pp推向翻转 -0.1pp推向翻转 +2.2pp推向翻转 +3.6pp推向翻转 +2.6pp推向翻转 +4.4pp推向翻转 -0.0pp推向翻转 -1.0pp1782345600: 超额占比 -0.69pp1782950400: 超额占比 +3.91pp1783555200: 超额占比 +3.13pp1784160000: 超额占比 +4.58pp1784764800: 超额占比 +3.44pp1785369600: 超额占比 +4.14pp1785974400: 超额占比 +0.36pp1786579200: 超额占比 -0.35pp1787184000: 超额占比 -0.44pp1787788800: 超额占比 -0.19pp1788393600: 超额占比 +2.05pp推向翻转 -1.6pp推向翻转 +1.0pp推向翻转 +0.5pp推向翻转 +1.1pp推向翻转 +3.1pp推向翻转 +0.9pp推向翻转 +2.4pp推向翻转 +1.1pp推向翻转 +1.3pp推向翻转 -1.1pp推向翻转 +1.5pp5m上线论文见报30s TWAP60s TWAP超额成交额占比(最后10秒)推向翻转的比例 − 整分钟对照
图 3 · 逐周的超额成交额占比(最后 10 秒)和推向翻转的比例减去对照。2 月 12 日上线当周 +2.1,3 月 5 日那周最高 +7.0,4 月从 4.6 回落到 2.3,7 月在 3.1 到 4.6 之间;8 月 7 日那周起和零分不开。5 月和 6 月没有抓,线是断开的。

改成 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 个百分点以下」。

0510发布前论文期7月上半见报后TWAP30TWAP60超额占比(百分点)5m all P0_prelaunch:+0.07pp (n=3167)5m all P1_paper:+3.75pp (n=22460)5m all P1_july:+3.33pp (n=4030)5m all P1_public:+3.82pp (n=6621)5m all P2_twap30:+0.12pp (n=2012)5m all P3_twap60:+0.13pp (n=7014)5m near P0_prelaunch:+0.09pp (n=634)5m near P1_paper:+7.87pp (n=4492)5m near P1_july:+8.06pp (n=806)5m near P1_public:+9.67pp (n=1325)5m near P2_twap30:+0.42pp (n=403)5m near P3_twap60:+0.64pp (n=1403)15m all P0_prelaunch:+0.88pp (n=1055)15m all P1_paper:+4.66pp (n=7485)15m all P1_july:+3.90pp (n=1343)15m all P1_public:+4.56pp (n=2208)15m all P2_twap30:+0.07pp (n=671)15m all P3_twap60:+0.13pp (n=2339)5m 全部周期5m 最接近strike的1/515m 全部周期
图 4 · 结算刻度相对整分钟刻度的超额成交额占比(最后 10 秒),按时期。三组柱:5 分钟全部周期、最接近 strike 的五分之一、非整点的 15 分钟边界。

方向也没了。全部周期和近 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] 的反转,但这些周期本来就是大单,推完弹回是正常的价格冲击,分不出是不是操纵。

00.20.40.60.8发布前论文期7月上半见报后TWAP30TWAP60比例P0_prelaunch: 0.205 (n=122)P1_paper: 0.656 (n=1449)P1_july: 0.656 (n=250)P1_public: 0.674 (n=414)P2_twap30: 0.224 (n=85)P3_twap60: 0.341 (n=349)全部周期基线 P0_prelaunch: 0.079全部周期基线 P1_paper: 0.164全部周期基线 P1_july: 0.138全部周期基线 P1_public: 0.133全部周期基线 P2_twap30: 0.044全部周期基线 P3_twap60: 0.075被操纵周期(top 10%)全部周期基线
图 5 · 论文口径的被操纵周期里,推向翻转时快照结果真的翻转的比例(统一用快照口径,不然 TWAP 期在构造上就翻不动)。论文期 66%,上线前 20%,TWAP 之后 22% 到 34%;虚线是全部周期的基线,4% 到 16%。

图 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 侧能看到另一半:有没有人在最后几秒往合约里下注,以及合约价格什么时候就已经知道答案了。先看三件事。

表 5 · Polymarket 合约侧。成交额用 Polymarket 报的市场成交额(它大约是成交带名义额的 1.9 到 2.0 倍,两边各算一次),所以「占比」的绝对水平偏低一半,跨时期比较不受影响;最后 10/30 秒的金额从最新一页成交算;准确率 = 合约价格在 T−60/−30/−10 秒时预测对结果的比例;在玩 = T−60 时价格在 0.2–0.8 之间的周期。
合约时期周期数市场成交额中位最后10秒占比 %最后30秒 %钱包数(10秒)准确率 −60s−30s−10s在玩比例 %在玩·−10s 准确率
5m论文期1,081$103,8413.8 [3.2, 4.6]8.980.90.8450.8820.925 [0.909, 0.940]35.90.866
5m7月上半749$70,9092.7 [2.4, 3.0]6.867.60.8400.8990.933 [0.910, 0.954]35.90.892
5mTWAP30782$47,0631.3 [0.7, 1.8]6.716.50.8730.9300.990 [0.986, 0.994]28.30.968
5mTWAP601,417$49,8770.4 [0.3, 0.5]2.37.20.9220.9700.993 [0.988, 0.997]15.70.973
15m论文期374$83,9361.0 [0.6, 1.7]2.417.30.9300.9490.949 [0.928, 0.970]15.50.810
15m7月上半370$25,9380.8 [0.6, 0.9]2.07.20.9410.9700.995 [0.987, 1.000]10.51.000
15mTWAP30397$23,6100.4 [0.3, 0.5]2.11.40.9700.9900.987 [0.977, 0.997]8.80.914
15mTWAP60487$25,8090.2 [0.1, 0.4]1.11.20.9490.9900.996 [0.990, 1.000]11.70.982
0.50.60.70.80.91论文期7月上半TWAP30TWAP60准确率T−60s P1_paper: 0.845T−60s P1_july: 0.840T−60s P2_twap30: 0.873T−60s P3_twap60: 0.922T−30s P1_paper: 0.882T−30s P1_july: 0.899T−30s P2_twap30: 0.930T−30s P3_twap60: 0.970T−10s P1_paper: 0.925T−10s P1_july: 0.933T−10s P2_twap30: 0.990T−10s P3_twap60: 0.993T−60sT−30sT−10s
图 6 · 5 分钟合约的价格在结算前 60、30、10 秒时对结果的准确率,按时期。

一是最后 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 次,看同一条规则能随机选出多少人、多少钱,拿真实的数和它比。

表 6 · 按论文的思路认人:在被操纵周期里赚、其它周期里不赚的钱包;三个阈值是我定的。被操纵周期按论文口径(Binance 最后 10 秒相对净流量在本期前 10%)。「易手」= 该周期所有钱包 |盈亏| 之和的均值,被操纵周期 / 其它周期。两种零假设各打乱 200 次:随机 = 标签在周期间随便打乱;匹配 = 只在 |盈亏| 合计同一个十分位的周期里打乱。p 按匹配打乱算。
时期抽样周期被操纵周期易手:被操纵 / 其它疑似人数随机:均值 / 95%匹配:均值 / 95%p(人数)疑似账户在被操纵周期的利润随机:均值 / 95%匹配:均值 / 95%p(利润)
论文期74465$27.8k / $14.0k647457 / 506600 / 6540.065$223.9k$107.5k / $127.8k$188.5k / $218.9k0.025
7月(7/1–8/6)9512$21.3k / $9.5k10846 / 6179 / 960.010$28.6k$8.5k / $13.2k$18.7k / $25.9k0.005
TWAP309614$7.0k / $7.4k5155 / 7253 / 670.590$7.7k$10.7k / $15.1k$9.8k / $13.0k0.855
TWAP6045741$6.1k / $7.0k142147 / 176137 / 1560.325$26.8k$33.7k / $43.5k$31.1k / $39.1k0.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% 的钱包在另一半里赚不赚。运气活不过这一步。

表 7 · 分半持续性。按奇偶周期分成两半;在一半里按收益率排名(至少 8 个周期),前 10% 的钱包在另一半里的收益(bps = 万分之一 × 名义成交额)。随机基线 = 随机挑同样多的钱包 500 次的 95% 分位。
时期口径参与排名的钱包前10%人数held-out 收益 bpsheld-out 美元后10% bps随机95%p
论文期整周期12,9821,298+1,025$58,554-803+359< 0.002
论文期最后30秒9,346934+246$1,546-482+2660.078
论文期最后10秒6,088608+179$391+836+4240.284
7月(7/1–8/6)整周期80580+580$823+350+5350.034
7月(7/1–8/6)最后30秒57957-1,360$-181-4,837+4550.806
7月(7/1–8/6)最后10秒41641+215$5-40+1,2130.346
TWAP30整周期93193+497$1,305-456+7680.210
TWAP30最后30秒54954+576$121-2,452+2,4740.314
TWAP30最后10秒19419-3$-0-4,439+6,3790.674
TWAP60整周期3,972397+305$6,051+613+3530.128
TWAP60最后30秒2,055205-204$-103-323+8720.806
TWAP60最后10秒81281+2,473$181-4,071+3,2140.138
-50005001,000论文期7月上半TWAP30TWAP60bpstop10% held-out P1_paper: 1035 bps, p=0.000top10% held-out P1_july: 580 bps, p=0.034top10% held-out P2_twap30: 497 bps, p=0.210top10% held-out P3_twap60: 305 bps, p=0.128bottom10% held-out P1_paper: -727 bpsbottom10% held-out P1_july: 350 bpsbottom10% held-out P2_twap30: -456 bpsbottom10% held-out P3_twap60: 613 bps随机挑同样多钱包的95%分位:340随机挑同样多钱包的95%分位:535随机挑同样多钱包的95%分位:768随机挑同样多钱包的95%分位:353排名前10%(held-out)排名后10%(held-out)随机基线95%
图 7 · 分半持续性:一半周期里按整周期收益率排前 10% 的钱包,在另一半里的收益(bps),后 10% 的钱包,以及随机挑同样多钱包 500 次的 95% 分位。

论文期: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% 推向翻转」同样适用。

不稳的地方

最后

  1. 论文期的信号基本都复现:超额 +3.75 个百分点、最后 10 秒 |净流| 比上线前高 51%(论文说 50%)、近平价周期两倍多(论文是 3.9 倍)、被操纵周期推向翻转 65%、翻转成功 66%、结算后反转、夜间周末集中。
  2. 论文见报三个星期,操纵没减弱。
  3. 8 月 7 日改成 TWAP 那一周起,超额和零分不开,之后四周都是这样;方向回到上线前的水平;活动没有挪进 TWAP 窗;全部周期和近 strike 周期上反转和对照分不开。
  4. 9 月 5 日到 7 日 Binance 侧又出现推单,9 月 6 日的数量和方向性超过论文期,但 60 秒均价下 0 次翻转,Polymarket 侧没有跟进。要接着看。
  5. 钱包:论文那条认人的规则(被操纵周期里赚、其它周期持平)在我这里认出来的主要是成交多的周期里站在赢方的人,按易手规模匹配后和随机分不开。站得住的是分半持续性:论文期前 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 个脚本还在旁边,这次的对照设计、翻转定义、分半持续性都是从那里搬的。

看过的东西:

用到的定义

超额成交额占比:最后 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,同日:钱包一节的随机基线加了按易手规模匹配的打乱,论文期「认出的人」不再显著,结论改口)。