一句话先懂:TWAP 用一段时间内的价格平均来代表起点或终点,因此最后一秒的单笔价格只是输入之一,不再天然等于结算价格。
为什么 TWAP 值得单独学习
2026 年 8 月,Polymarket 的短周期加密 Up/Down 市场开始使用 Chainlink 计算的 30 秒或 60 秒 TWAP。对于只做手动方向判断的人,买 Up 或 Down 的按钮没有变化;但对结算理解、尾盘交易和自动化脚本来说,这是一次根本变化。
旧思路是:
结束瞬间价格 > 起点价格 → Up
当前常见思路是:
结束 TWAP ≥ 起点 Price to Beat/起点 TWAP → Up
否则 → Down
具体比较符号、数据源和窗口长度必须以每个市场 Rules 为准。
TWAP 是什么
TWAP 是 Time-Weighted Average Price,中文通常称时间加权平均价格。它试图回答:在某段时间内,价格平均处于什么水平,而不是最后一笔成交在哪里。
为了建立直觉,假设一段时间内有四个等间隔示意价格:
| 时点 | 示意价格 |
|---|---|
| T1 | 65,000 |
| T2 | 65,020 |
| T3 | 64,990 |
| T4 | 65,010 |
简单平均为 65,005,而最后一笔是 65,010。若 Price to Beat 为 65,008:
- 只看最后一笔,会以为 Up;
- 看示意平均,则可能是 Down。
这个例子只用于理解“平均与最后一笔不同”。Chainlink 的正式 TWAP 不应被当成四个点的简单算术平均来复刻。
30 秒和 60 秒代表什么
官方文档说明,30 秒与 60 秒指回看窗口,不是数据每隔 30 秒或 60 秒才发布。
当前常见映射为:
- 5 分钟加密 Up/Down:30 秒 TWAP;
- 15 分钟加密 Up/Down:60 秒 TWAP;
- 4 小时加密 Up/Down:60 秒 TWAP。
Polymarket 的实时数据服务 RTDS 可以转发 Chainlink 计算的 TWAP 更新;直接使用 Chainlink Data Streams 也可以取得正式数据。手动交易者不需要自己写接口,但要知道页面现货数字、其他交易所价格和正式 TWAP 可能短暂不同。
为什么不要自己“算一个差不多的 TWAP”
官方开发文档明确提醒:Chainlink 当前没有公开该定制数据流的全部采样边界、权重、舍入与缺失输入处理方式。
所以你可以用本地平均值观察大致方向,却不能把它当成精确结算值。尤其在起点附近只差几美元甚至几美分时,微小计算差异就可能改变 Up/Down。
正确优先级是:
- 市场 Rules 指定的数据流;
- Polymarket 显示的 Price to Beat;
- 官方转发或签名的 TWAP 值;
- 其他交易所和自己计算的参考值。
第四项只能辅助,不能推翻第一项。
起点和终点为什么都要一致
如果起点使用瞬时价格、终点使用平均价格,比较会带入不对称误差。当前短周期市场的设计通常让起点和终点使用同类 TWAP 数据,再比较两者。
假设:
- 起点 30 秒 TWAP:65,000;
- 中途 BTC 一度冲到 65,300;
- 结束 30 秒 TWAP:64,998;
- 结束瞬间某交易所最后价:65,040。
尽管中途上涨很多、最后一笔也高于起点,按上述 TWAP 规则仍可能结算为 Down。市场只回答规则定义的问题,不奖励“这一段大部分时间方向看对”。
相等时为什么也必须读 Rules
当前 BTC 短周期页面通常写明:结束 TWAP 大于或等于起点时判 Up,否则判 Down。
这意味着完全相等时可能由 Up 获胜,而不是自动 50–50。但历史市场、其他周期或其他类别可能有不同相等处理。不要凭产品名称猜测。
TWAP 改变了尾盘交易什么
单一尖刺的影响下降
最后一秒突然拉升或下跌,只占平均窗口的一部分。要显著改变 TWAP,需要价格在整个回看窗口中持续偏向一侧,或产生足够大的偏离。
最后 30—60 秒都变重要
不是说尾盘不重要,而是权重从“某一个瞬间”扩展到一段窗口。一个在最后 20 秒持续的走势,可能比最后 1 秒的更大尖刺更有影响。
旧的快照脚本可能失效
任何只读取到期时单点价格、再与开盘单点比较的机器人,都可能判断错误。自动化系统需要直接消费对应 TWAP 数据,并检查时间戳与数据新鲜度。
市场可能更愿意提供尾盘流动性
单点价格决定结果时,做市商面临瞬时翻转风险,容易在临近到期撤单或扩大价差。平均结算降低了单一打印改变结果的风险,但不能保证尾盘一定有深度。
TWAP 没有消除哪些风险
- BTC 在整个窗口内仍可剧烈波动;
- 你的页面或网络仍可能延迟;
- Chainlink TWAP 与常用交易所价格仍可能不同;
- 订单簿仍可能瞬间撤单;
- 持续性价格冲击仍会影响平均值;
- 数据中断、时间戳和错误订阅仍会让机器人失效;
- Rules 未来仍可能更新。
TWAP 提高了单点影响结果的成本,不代表市场变成无风险产品。
结果发生后,为什么还没有立刻变成 $1
“比赛结束”或“时间窗结束”只是基础事件完成,市场还要进入正式结算流程。
Polymarket 的一般结算框架包括:
- 按预设 Rules 和 Resolution Source 确定结果;
- 由提议者提交结果并提供保证金;
- 进入挑战期;
- 若无人争议,结果最终确定;
- 若发生争议,进入进一步裁决流程;
- 获胜份额可以按每份 $1 赎回,失败份额归零。
官方当前一般说明中的挑战期为 2 小时,常见提议保证金约为 $750 pUSD,但不同市场与专用解析机制可能有所不同。不要把“页面已经显示 99¢”当成正式结算完成。
Rules、Resolution Source 与 Oracle 的关系
可以把三者理解为:
| 层级 | 作用 |
|---|---|
| Rules | 定义问题、时间、边界和特殊情况 |
| Resolution Source | 指定去哪里读取答案 |
| 结算/Oracle 流程 | 把答案正式写入并允许争议 |
例如,一个 BTC 5 分钟市场:
- Rules 定义起止时间、Up 的比较条件和相等处理;
- Resolution Source 指向 BTC/USD 30 秒 TWAP 数据流;
- 结算系统根据该来源确认最终结果并让获胜份额可赎回。
只看其中一层都不完整。
手动交易者应该怎样观察
- 直接从市场页面记录 Price to Beat;
- 确认使用 30 秒还是 60 秒 TWAP;
- 不用 Binance、OKX 或永续标记价替代;
- 最后一分钟观察一整段价格,而不是只盯最后一笔;
- 价格接近起点时,承认自己无法精确重建正式 TWAP;
- 未正式结算前,不把 99¢ 仓位当现金;
- 下一个时间窗重新读 Rules,不复制旧假设。
自动化交易者的额外检查
- 使用正确交易对,如
btc/usd,不要混用 BTC/USDT; - 明确订阅 30 秒或 60 秒窗口;
- 使用 TWAP 事件中的观测时间检查新鲜度;
- 断线后重新订阅,因为实时流不保证补发历史;
- 保存精确十进制值,避免浮点误差;
- 为数据缺失设置停止交易逻辑;
- 用真实 TWAP 历史重新回测,不把旧快照数据冒充新规则。
最后记住
TWAP 并没有改变 Up/Down 的表面玩法,却改变了“什么价格才算答案”。
结算看的是 Rules 指定的平均价格,不是你最熟悉交易所的最后一根针;结果看的是正式流程,不是页面提前显示的 99¢。
理解这两点,才能避免在方向判断正确时仍输给数据口径。
