聚合器做出来第一版,最兴奋的时刻是看到这样的画面:
事件:BTC 是否在 2026-09-30 前突破 $120,000
Polymarket YES 0.62
predict.fun YES 0.58
────
价差 0.04
4 个点。在 predict.fun 买 YES、在 Polymarket 卖 YES,锁死 4% 的无风险收益?
绝大多数时候,不是。
这篇把这 4 个点是怎么被一层层吃掉的拆开讲。结论提前说:名义价差是幻觉,可执行价差才是生意。 而在预测市场这个特定场景里,“可执行”这三个字比在普通 DEX 套利里复杂得多。
前两篇:事件对齐(怎么确认这两个市场说的是同一件事)、adapter 陷阱(怎么在两条链上安全下单)。这篇假设这两件事都已经做对了。
第 0 层:先确认你比的是同一个方向
在算钱之前,有一个纯技术性的坑要先跨过去。
因为 1 YES + 1 NO = $1 这条恒等式,每个市场的订单簿都是镜像的:
买 YES @ 0.62 ≡ 卖 NO @ 0.38
卖 YES @ 0.65 ≡ 买 NO @ 0.35
所以两个平台之间,你其实有四个方向要看,而不是两个:
| 组合 | 含义 |
|---|---|
| A 买 YES / B 卖 YES | 直觉上的跨平台价差 |
| A 买 YES / B 买 NO | 两边都做多不同方向 → 合成对冲 |
| A 卖 YES / B 卖 NO | 两边都做空 |
| A 买 NO / B 卖 NO | NO 侧的价差 |
第 2 行特别值得注意:如果在 A 平台买 YES 的价格 + 在 B 平台买 NO 的价格 < $1,你就锁定了一个无风险收益(因为结算时必有一边赔付 $1)。这是预测市场跨平台套利最干净的形式,比”同向对冲”更好,因为它不需要借券、不需要卖空。
所以归一化的第一步不是比价,是把两个平台的订单簿都展开成统一的四向视图。只看 YES 的报价对比,你会漏掉一半机会。
第 1 层:Best price 是骗人的,你要的是深度
这一层是所有交易系统的通病,但在预测市场里更明显。
界面上的 0.62 是最优挂单价。它背后可能只有 200 份的量。而你想做 5000 份。
predict.fun YES 卖盘:
0.58 × 300
0.59 × 500
0.61 × 1200
0.64 × 3000 ← 你的第 5000 份成交在这里
────────────────
加权均价 ≈ 0.622
原本的 0.58 变成了 0.622。而另一边 Polymarket 的卖出也会同样吃深度。4 个点的价差,在你真正想做的量上,可能已经归零甚至反向。
所以聚合器的比价引擎必须:
- 基于完整订单簿做,而不是 best bid/ask
- 输入是目标数量,输出是该数量下的加权成交价
- 对每个方向都算一遍”可成交量 → 均价”的曲线
一个实用的做法是提供”给定金额,最优执行路径”的查询,而不是给一个价格数字。因为对用户真正有意义的问题是”我要花 $1000,在哪买、能买到多少份”,不是”现在报价多少”。
顺带一个预测市场特有的观察:这个赛道的流动性分布极不均匀。头部事件(大选、大赛事)两边都很厚;长尾事件可能一边有几万美元深度,另一边只有几百。所以价差最大的地方,往往正是深度最差的地方——这不是巧合,是因果。
第 2 层:两个平台的手续费不是同一种东西
这是我在上一篇提到、但值得在这里展开的一点。
两个平台的费用在语义上就不对齐:
- Polymarket 的模式是在结算时对净利润抽成
- predict.fun 是交易手续费(成交时收),另外它还有一个反向项:抵押品在持仓期间生息
一个 feeRate 数字表达不了这件事,原因有三:
- 收取时点不同:一个在成交时,一个在结算时
- 计费基数不同:一个基于成交额,一个基于净利润
- 符号可能相反:持仓收益是负成本
第 2 点尤其反直觉。“对净利润抽成”意味着:如果这笔交易最终亏钱,这部分费用是 0。 所以它不是一个可以提前从价差里扣掉的固定成本,而是一个依赖最终结果的条件成本。
这直接影响你怎么算套利:如果你构造的是一个真正无风险的对冲(两边合起来必有一边赔付 $1),那你需要分别算清楚赢的那一边要交多少利润抽成,而不是对总额套一个平均费率。
第 3 层:时间价值——被大多数人漏掉的一项
这是我认为预测市场跨平台定价里最独特、也最容易算错的一项。
predict.fun 的核心差异化是收益型抵押品:你下注的资金在持仓未结算期间会被路由去生息,而不是像传统预测市场那样闲置。(Polymarket 侧则是纯闲置,你付的是机会成本。)
这件事对套利定价的影响是结构性的:
同样的名义价差,持有到结算的时间越长,两个平台的实际成本差异就越大。
举个纯示意的例子(数字只为说明结构):
名义价差: +4.0%
减:两边手续费/滑点 -2.0%
减:Gas + 资金搬运 -0.5%
──────────────────────────
表面可执行价差 +1.5%
如果这笔仓位要持有 6 个月到结算:
加:predict.fun 侧持仓期收益 +?%
减:Polymarket 侧资金机会成本 -?%
最后两项的大小完全取决于持有期长度和当期收益率。这意味着:
- 对短期市场(比如 15 分钟的 BTC 涨跌),时间价值项趋近于 0,可以忽略
- 对长周期市场(比如一年后的选举),时间价值项可能大于名义价差本身,直接决定这笔套利的方向
所以”跨平台价差”这个指标如果不带上持有期,是没有意义的。 我的做法是把它建模成年化:
// 不要问「价差多少」,要问「年化可执行收益多少」
annualizedEdge =
(executableSpread + holdingYieldDiff) / daysToResolve * 365
这个视角一换,很多东西就清楚了:一个持有 6 个月才结算的 1.5% 价差,年化只有 3%——扣掉资金占用和尾部风险后,很可能不值得做。而一个 3 天结算的 1.5% 价差,年化超过 180%。
名义价差大的机会往往是长周期的(因为长周期市场定价更松散、流动性更差),而它恰恰是年化最差的。 这是我在这个赛道里最反直觉的一课。
第 4 层:结算时间不对称,套利不是瞬时闭合
前面几层还只是”算得准不准”。这一层是风险。
两个平台的结算路径不同(我在整理资料时注意到的结构性差异):
- Polymarket 的长期事件走 UMA 乐观预言机:提议 → 争议窗口 → 上链。无争议的情况下有一个固定等待期,有争议可能拖上数天甚至更久
- predict.fun 除了乐观预言机路径,还对短期价格市场用 Chainlink 做自动结算——到点即结,无争议流程
对聚合器意味着一件很具体的事:
你以为的”锁死无风险”,在结算阶段可能变成一段单边敞口。
具体场景:
- 事件结果实际已经明确
- predict.fun 侧自动结算完成,资金释放
- Polymarket 侧还在争议窗口里,甚至进入了争议投票
- 这段时间里,你的资金一边已回笼、一边还锁着
更糟的尾部情况:两边最终判定结果不一致。 这在正常情况下不会发生,但如果两个市场的结算数据源本来就不同(回到第一篇的问题),或者一边发生了争议改判——你那个”无风险对冲”就变成了两边都亏。
所以套利模型里必须显式包含:
| 项 | 说明 |
|---|---|
| 资金占用期 | 按较慢的那一边算,不是按平均 |
| 争议风险 | 乐观预言机侧有非零概率进入长争议 |
| 判定不一致风险 | 结算数据源不同时不可忽略 |
| 提前退出成本 | 想在结算前平掉,要付订单簿的价差 |
这也是为什么第一篇里我坚持”置信度必须卡住操作权限”:如果事件对齐的置信度不是”高”,就根本不该允许跨平台对冲——因为你对冲的可能不是同一个风险。
把它拼起来:可执行价差的完整式子
我最后落地的模型,大致是这个形状(示意,不是可以直接用的公式):
可执行年化收益 =
(
名义价差(按目标数量的加权成交价算,四向取最优)
− 两边 taker 成本 / 滑点
− 赢方的结算利润抽成
− Gas(两条链)
− 资金搬运成本(跨链 / 出入金)
+ 持仓期收益差(predict.fun 侧生息 − Polymarket 侧机会成本)
)
÷ 到结算的天数 × 365
× 置信度折扣(事件对齐置信度 + 争议概率)
最后那个”置信度折扣”是我加的,也是我觉得最重要的一项。它把工程上的不确定性显式地定价进了收益里——而不是假装它不存在。
几条落地经验
- 不要展示”价差”,展示”给定金额的最优执行”。 用户要的是”我花 $1000 该在哪买”,不是一个报价对比
- 把持有期放进 UI。 一个 4% 的价差旁边如果不写”9 个月后结算”,就是在误导
- 四向都要算。 “A 买 YES + B 买 NO < $1” 是最干净的套利形式,只比 YES 会漏掉它
- 年化是唯一可比的口径。 不同结算周期的机会不能直接比绝对价差
- 价差最大的地方深度最差,这是结构性的,不要指望
- 短周期市场才是价差生意的主场。 时间价值项小、资金周转快、结算风险窗口短
- 把不确定性折价,不要把它藏起来。 这是我从交易所那些年学到的最有用的一条:金融系统里,宁可保守到错过,不要乐观到错账
小结
聚合器最容易做出来的功能是”并排展示两个价格”,最容易给用户造成的伤害也是它——因为一个不带深度、不带手续费、不带持有期、不带结算风险的价差数字,是一个看起来精确的错误答案。
这三篇写下来,我发现这个系列的主线其实是同一句话的三个变体:
- 第一篇:市场的真正身份是结算规则,不是问题文案
- 第二篇:平台的真正身份是那些常量,不是架构图
- 第三篇:机会的真正大小是可执行年化,不是名义价差
都是同一个毛病的三个面:看起来一样的东西,其实不一样。 而聚合器这门生意,本质上就是把这些”其实不一样”一个个显式建模出来。
延伸阅读
- 同一个事件,在两个平台是两个世界 —— 本系列第 1 篇,事件对齐
- 两条链,一套代码:Polymarket 与 predict.fun 的同构与陷阱 —— 本系列第 2 篇,adapter 与常量
- 你的 100 美元 meme 买单,实际付了 107 美元 —— 同一种”把隐性成本全部摊开”的拆法
- 预测市场的 2026 —— 赛道全景与基础机制