LZLZL/预测市场/坑与口径
免费深 · 动手 壬 坑与口径取证

589 股无声蒸发
——为什么活动流会让你高估自己

2026-08-20 · 全部数字可用公开接口自行复核,方法见文末

在 Polymarket 上,输掉的那条腿到期归零,在活动流里不留任何记录。 把活动流加总来算盈亏,会系统性地把自己算得比实际赚。 我们拆一个做市钱包时第一版就是这么错的:算出 +$187,重算后是 +$23

同一个钱包,两种算法,差了八倍

我们拆过一个在加密上下盘做市的钱包,30 小时、23,467 股(只取已结算的盘)。 第一遍按最自然的方式算:把活动流里所有的买入、卖出、赎回加总。得到 +$187

重算之后是 +$23.23

差额不是手滑,是数据源本身有个天然的缺口——而且这个缺口只朝一个方向偏: 永远让你显得更赚。

为什么:赢的腿有记录,输的腿什么都没有

做市方常见的姿势是两边都挂:同一个盘的 Yes 和 No 都放单。 成交之后手上就有两种腿,结局分两类:

情形发生了什么活动流里留下
配上对(一份 Yes + 一份 No) 可以合并(merge)换回 USDC✅ 一条 MERGE
没配上、结果赢了 结算后赎回,每股拿 $1✅ 一条 REDEEM
没配上、结果输了 到期直接归零什么都没有

第三行是全部问题的来源。归零不是一笔交易——没有对手方、没有转账、没有链上事件, 所以活动流里不会出现任何东西。它就是安静地不见了。

这次的具体数字

已结算的盘里一共有 825 股没配上对。其中 236 股是赢的, 留下了 REDEEM 记录(赎回 $235.69);剩下 589 股输掉了, 在活动流里一条记录都没有

而买这 825 股是花过钱的——成本 $347.20。只加总活动流, 等于把这笔成本里对应输掉那部分的支出算进去了,却没有任何一条记录告诉你它变成了零。

干净口径怎么算

正确的做法是按腿分类,分别结账,而不是把活动流拉平加总:

每股金额说明
配对腿(merge)+0.326¢+$76.6111,321 对,成本 $11,244
未配对腿−0.475¢−$111.51赎回 $235.69 − 成本 $347.20
交易净额−0.149¢纯交易是亏的
做市返还+0.248¢+$58.14公式验证值
净利+0.099¢+$23.2330 小时

这张表有个自洽检查可以顺手做一下:11,321 对 × 2 + 825 股裸腿 = 23,467 股, 与总股数分毫不差;$235.69 ÷ 236 股 = $0.9987,与「赢家每股赔 $1」也对得上。 两条都闭合,说明分类没有漏项——做这类拆解时先跑一遍闭合检查,比事后 debug 省事得多

三件事值得单独指出来:

第一,每股数字的分母是全部 23,467 股,不是各自那一类的股数。 这样四行才能直接相加,别混。

第二,这个钱包的纯交易是亏的(−0.149¢/股)。它之所以整体为正, 完全靠做市返还那 +0.248¢/股 —— 也就是说 补贴不是锦上添花,是唯一的利润来源

第三,+$23.23 是 30 小时的结果。把窗口末尾还没结算的持仓也算进去, 稳态大概是每天 $20–30。这是个真实但很小的数字——重点不在它多少, 而在于如果按活动流算,你会以为它是八倍

连带的三个坑

⚠ 坑一:排行榜的 /profit 不含补贴收入

补贴(做市返还、阶梯返利、流动性奖励、邀请返利)都是转账,不是交易盈亏, 所以排行榜接口的 /profit 字段里一分都没有。

这个坑和「隐形亏损」方向正好相反:一个让你高估自己,一个让你低估别人。 两个叠在一起,最容易得出的错误结论就是「我比榜上那些人强」。要算真实净收益, 必须 交易盈亏 + 累计发放额 两条分开查再相加。

⚠ 坑二:data-api 有 5,500 条硬顶

拉某个钱包的历史时,接口最多给 5,500 条。对高频钱包来说,这可能只覆盖几个小时—— 而你以为拿到的是全部历史。

所以任何「每天赚多少」的推算,都必须先确认样本真实覆盖了多长时间, 再拿总额去除。我们这次拿到的是 30 小时,所以所有结论都只敢说 30 小时。

⚠ 坑三:窗口边界

取一段时间的数据,开头会有「买在窗口前、结算在窗口内」的腿,结尾会有「买在窗口内、 还没结算」的腿。两头都会污染口径。

这次的处理是把边界腿量化出来(229 股,约占 1%)并从干净口径里剔除, 窗口末尾未结算的部分单独列出(97 对 + 35 股裸腿),不混进主表。

更值钱的那一层:它在买成交流,不是买价差

把配对成本摊开看,会发现一件反直觉的事:62 个盘里有 25 个,配对均价之和大于 1.00 (最高到 1.250)。

一份 Yes 加一份 No 合并回来只值 $1。均价和大于 1,意味着这一对在合并时就是亏的—— 它是明知会亏还去成交的。

为什么?因为做市返还只在被成交时产生。它接受在一部分盘上做亏本的配对, 换来的是成交量,而成交量就是返还。这是理解整个打法的钥匙:

它买的不是价差,是成交流

照抄这类钱包的人常常只抄了挂单结构,却没意识到对方在某些盘上是故意亏的。 只抄形不抄意,结果就是把亏损照抄了,把补贴漏掉了。

一句话记住

Polymarket 的活动流是一份只记录了好消息的账本。 赢的腿有 REDEEM,配上的有 MERGE,输掉的什么都没有。 任何基于活动流的盈亏计算,如果没有单独处理归零的腿, 结论都会朝同一个方向偏——偏向你更赚。

证据怎么自己核对

被拆的钱包 0xd535415f529f41db9232d96bdd71a9c9f4e59fae  链上公开地址,你可以自己拉它的成交流重算一遍。 (本站只给地址、不对地址背后的身份做任何归因。)
数据源 全部来自公开只读接口,不需要账号:data-api 的成交与持仓、链上的结算结果。
核对归零腿 取一个已结算的盘,把该钱包在这个盘上的买入按 Yes / No 分别加总, 取较小的一边=配对量;两边之差=裸腿。再去查这条裸腿所在方向有没有 REDEEM—— 没有 REDEEM 的裸腿,就是蒸发掉的那部分
本文数字 30 小时、23,467 股、仅已结算盘;边界腿 229 股(约 1%)已剔除; REDEEM 归因已验证不含更早的老仓。
闭合检查 11321×2 + 825 = 23467 ✓ 235.69/236 = 0.9987 ✓  +76.61 − 111.51 + 58.14 = +23.24
已知局限 样本只有 30 小时、单个钱包,稳态外推是薄的; 「做市方」这个身份是从成交粒度和返还的存在推断的,接口里没有显式字段。 这两条我们没法消除,所以一并写在这里。

相关接着读什么

乙 · 费用与补贴
「四种返利」辨析——它们不是一个东西
丁 · 盘口微结构
配对率与裸腿:tenor 决定一切
辛 · 研究方法
量尺会坏:你的回测赢了,可能只是尺子错了
壬 · 坑与口径
8 个 API 口径陷阱
本文属教育与研究记录,不构成投资建议,不承诺任何回报。所引数字来自我们自己的拆解与台账, 方法与局限均已列出,欢迎自行复核并指出错误。