FinHub API
量化接口 总览 Polymarket

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 / none
  • beat_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。

于是:当窗口内的位移大于开差的绝对值时,四条规则必然同号 —— 那种窗口对「哪条规则才是真的」没有任何信息量。 所以本站看的是四规则分歧的窗口数,而不是「命中率」。

六、下一步