// 结算 — 价格流本身

市场真正用来
结算的那条价格流。

这不是重建值,也不只是一个结果标签,而是这些市场实际用来结算的 Chainlink Data Streams 价格值,逐 tick,按平台 relay 发布的样子采集——十进制值,以及只要 relay 发了就并存的上游定点值,旁边是每个市场的 strike 与结算结果。只要某个市场的 strike 和它据以结算的那条流都在,你就能从原始价格重算出它的结果;缺了任何一样,归档会如实说明,而不是替你补上。

采集起始日2026-06-08
Polymarket 币种·
包含的数据集5
strike 与结算结果每个市场

有哪几条流

这里列的是归档中的结算流。哪条流结算哪个市场由市场自己决定:从 markets 数据集中该市场所在的行读取 raw.cryptoMarketConfig.twapLookbackSeconds,再选对应的流。不要按日期推断,这条规则改过一次。
prices
结算价流,逐 tick(Chainlink 瞬时流)
twap60s
TWAP 60 秒结算流——5 分钟与 15 分钟市场都判定在它上面
twap30s
TWAP 30 秒结算流——5 分钟市场改用 60 秒回看之前的结算线,至今仍逐日归档
markets
每个市场的元数据、strike 与结算结果
klines
由结算价流推导的 OHLC K 线,带 tick 计数——没有成交量,结算流是价格流不是成交流

为什么这一块才是关键

01

为什么四舍五入的浮点不够

每个 tick 都带十进制值,以及——只要 relay 发布了它——上游的定点整数字符串。一个被舍入成浮点的价格,已经不能再拿来结算了:这些市场是靠与 strike 比大小决定的,而在 strike 附近,舍入本身就是答案。一个浮点值,说明那个判断已经在上游某处被做掉了;只要定点值是 relay 发来的那一个,它就是那次比较的直接输入。

02

一个诚实的 null,好过一个像样的猜测

markets 数据集里带每个市场的结算结果,以及它必须越过的那个 strike,而每个 strike 都注明了它取自哪一个 tick。没有 tick 能确定它时,这个字段是 null,而不是从旁边借一个值。

猜出来的 strike 比缺失更糟:它和真的长得一模一样,而它会悄悄把每一笔压在边界附近的交易的正负号翻过来。

怎么取

和其他数据一样是 /v1/files,筛到结算流上。不传日期就是你的 key 能到的最新一天。
BASH
# 取结算流,默认是你的 key 能到的最新一天
curl -H "Authorization: Bearer $OT_KEY" \
     "https://outcometick.com/v1/files?venue=polymarket&dataset=prices,twap60s"

# 每个市场的 strike 与结算结果
curl -H "Authorization: Bearer $OT_KEY" \
     "https://outcometick.com/v1/files?venue=polymarket&dataset=markets&asset=btc"

# 下载其中一个——url 由上一条列表返回
URL=$(curl -s -H "Authorization: Bearer $OT_KEY" \
     "https://outcometick.com/v1/files?venue=polymarket&dataset=twap60s" \
     | jq -er '.files[0].url')
curl -L -H "Authorization: Bearer $OT_KEY" "$URL" -o twap60s.csv.gz

结算这一侧,付钱之前就能自己核。公开样本归档里是同样的流、同样的格式——拿原始价格重算一个市场的结果,看看和我们给的对不对得上。

你的策略可以在回测里核对我们

调用 ctx.assert_outcome,报告就会告诉你:你对规则的理解和平台的理解在哪里不一样——这个差异没搞清楚之前,它下面的每一个盈亏数字都不成立。不调用就不核对:执行器不会替你猜策略的意图。

相关