5 分钟涨跌盘是怎么结算的
结论先说:结算看的是「官方 Chainlink TWAP60」相对「开盘那一刻的同一个官方读数」的涨跌, 不是现货价,也不是你自己算出来的 TWAP。 这一点搞错,方向会系统性做反。
一、盘口在赌什么
每个盘是一个 5 分钟的窗口,标题形如 BTC up or down 5m。窗口结束时:
- 窗口内 Chainlink 的 TWAP60(60 秒时间加权均价,滚动计算)
- 相对 窗口起始那一刻的同一个读数(即 price to beat)
- 大于等于 → UP;小于 → DOWN。
市场规则原文写得很死:用的是 Chainlink 生成的 TWAP, 而不是任何其它数据源、也不是现货市场。所以「锚点」必须是官方读数。
二、数据里为什么有「两个起点值」
这是最容易踩的坑。接口与原始样本里同时存在两个看起来都像「开盘值」的字段, 语义完全不同:
| 字段 | 它是什么 | 能当 price to beat 吗 |
|---|---|---|
twap60_off_start |
开盘那一刻的官方 Chainlink 流读数 | ✅ 就是它 |
twap60_at_start |
本站用多家交易所中位价自算出来的 TWAP60 起点值 | ❌ 不能 |
接口对外只暴露一个 price_to_beat,并额外给两个可信度标记:
beat_source:official/computed/nonebeat_trusted:false表示官方读数那一刻没进来,price_to_beat退化成了自算值
beat_trusted == false 时不要用这个窗口定方向。
线上实测官方读数覆盖率约 98%,退化是低频事件,但一旦发生就是方向级错误。
三、用自算值当 beat 会偏多少
这不是理论担忧。本机拿 60 个窗口实测:
- 官方 − 自算 = 中位 −2.72 bp(区间约 −3.37 ~ −1.26 bp)
- 而 60 秒里真实位移的中位数只有 1.83 bp
- 约 3% 的窗口,用官方 beat 与用自算 beat 得出的方向是相反的
也就是说:自算值的系统性偏差比「行情本身的波动」还大。 用它判方向,等于在自己不了解的地方加了一个恒定的方向性偏移。
四、怎么自行复算
/v1/settle.php 的每条结算记录里带四个数,就是四个关键观测:
so / sc(开盘、收盘的现货中位)与
to / tc(开盘、收盘的TWAP)。
GET /quant/polymarket/v1/settle.php?last=5
X-Api-Key: <你的 key>
→ data.windows[i].rules = {
"so": 85594.295, "sc": 85644.75, // 现货 开 / 收
"to": 85594.295, "tc": 85634.44, // TWAP 开 / 收
"anchor": "spot", "move_bp": 6.307
}
用 TWAP 那一对(to → tc)自己比一次,
就能复算出与官方 outcome 一致的结果,不必信本站。
五、四条候选规则的分歧是什么意思
结算规则在「开盘锚点取现货还是 TWAP」上可以写出四条候选(A/B/C/D)。 它们的差别只在开盘那一个取值上,而这两个量在开盘时通常只差 1~2 bp。
于是:当窗口内的位移大于开差的绝对值时,四条规则必然同号 —— 那种窗口对「哪条规则才是真的」没有任何信息量。 所以本站看的是四规则分歧的窗口数,而不是「命中率」。
六、下一步
- 基差有多大、哪类信号会因此反向 → 官方 TWAP60 与现货的基差
- 「看到价」与「能成交」的区别 → 2 秒粒度下的盘口陷阱
- 字段全表与错误码 → 接口文档