Polymarket Bot 教程 · 第 23 章,共 32 章
Polymarket 5 分钟 BTC/ETH 涨跌市场 bot 模式:每天 288 次到期、对延迟极其敏感的执行、边际来源、为什么大多数散户 bot 会亏损,以及该策略的代码骨架。
本章涵盖什么
Polymarket 的 5 分钟 BTC 涨跌系列每天结算 288 次,任何边际优势都会在多次重复中复利放大。尽管交易量很大,但大多数散户 bot 在这里仍然亏损,因为延迟和边际门槛是由专业机构设定的。本章讲的就是那些能活下来的方法。
- 什么是 5 分钟加密市场
- 每天 288 次到期 = 复利式重复交易
- 为什么散户 bot 会在这里亏损
- 能存活下来的边际来源
- 延迟预算
- 风险:单笔小、日内大
- 代码:5 分钟策略骨架
什么是 5 分钟加密市场
Polymarket 的 5 分钟加密市场是围绕 BTC(以及 ETH)价格的二元涨跌问题。每 5 分钟会开出新市场;每个市场在开盘 5 分钟后的收盘价结算,数据来源于已公布的 oracle。
这意味着每个资产每天会产生 288 个市场。任何边际优势的复利机会都非常惊人:即使单笔优势很小,只要每天能执行 100 次以上,也会变得有意义。
反过来说,门槛是由专业机构设定的。中间价会与底层价格源紧密同步,而订单簿在错误方向那一侧通常非常薄。
每天 288 次到期 = 复利式重复交易
如果你的优势是每笔 0.5 美分,胜率 55%,并且每天能做 60 笔交易,那么预期日 PnL 为 60 × 0.5c = $0.30,按 10 份仓位计算就是 $3/天。看起来很小,但它会复利:252 个交易日 × $3 = $750/年,而且资本占用几乎为零(仓位会在 5 分钟内结算)。
如果要让同样的优势在一个每季度只结算一次的二元市场上实现 $750/年的收益,你就需要更大的单笔仓位和更宽的亏损尾部。
5 分钟市场是 Polymarket 上唯一一个“小而频繁”的优势能够累积成可观年收入的板块。
为什么散户 bot 会在这里亏损
有三个失败模式会持续击垮散户入场者。
- 延迟:专业机构在 50-100ms 内下单;散户 bot 通常要 1-3 秒。等你发单时,价格已经进入新的中间价。
- 信息不对称:底层 CEX(Binance、Coinbase)的成交数据,比 Polymarket 的价格源更快。没有直接订阅 CEX 数据的 bot,其实是在用过时数据交易。
- 点差税:在 5 分钟节奏下,即使 0.5c 的点差 × 60 笔 = 每天 30c,也是不可能避免的成本。策略必须先覆盖这部分成本,才有机会盈利。
散户 bot 通常只能打平或亏损,因为它们既跑不过专业机构,也无法摆脱点差税。对散户有效的策略,不是去和专业机构拼边际,而是那些决策较慢、但拥有特定信息优势的策略。
能存活下来的边际来源
适合散户在 5 分钟市场使用的方法。
- 由 funding rate 驱动的方向性偏差:perp futures 上极端的正 funding 往往预示均值回归;可以反向交易 funding rate。
- 未平仓合约清算窗口:每小时整点时,perp futures 更容易发生强平;在这个窗口内可以做极端行情回撤。
- 末段窗口结算套利:在 5 分钟窗口最后 30 秒,结算价格会越来越可预测;订单簿通常会给出与实时成交不匹配的稀薄流动性。
什么不行:纯技术信号(RSI、移动平均线)、简单的动量跟随、任何要求 bot 比专业机构更快的东西。
延迟预算
对于一个可行的 5 分钟策略,预算大致如下:
- 读取信号源(CEX 成交数据、funding rate):100-300ms
- 计算决策:50ms
- 提交 FOK 订单:200-500ms
- 收到成交确认:200ms
总计:550-1050ms。在配有付费 RPC 和直接 CEX WebSocket 订阅的 VPS 上是可实现的。用家用笔记本或免费层 API 是做不到的。
需要总延迟 < 500ms 的策略属于专业机构领域;散户不应在这里竞争。
风险:单笔小、日内大
5 分钟市场的仓位控制:单笔小,日内总量封顶。
- 单笔:每个市场 5-15 份($1-6)。低于 5 份会让 GTC 卖单难以成交;高于 15 份则会在开仓时扫动订单簿。
- 日内总量:50-100 笔交易。更多会让你对某个单一 oracle 细节产生相关性暴露。
- 日内 PnL 止损开关:如果累计 PnL 亏损超过 $10(或分配资金的 5%)就暂停。5 分钟市场上的坏日子通常意味着策略假设已经失效;先活过当天,再排查、再重新部署。
单笔仓位与日内笔数之间的非对称性是刻意设计的。你是在做广度,而不是深度。
代码:5 分钟策略骨架
参考:一个由 funding rate 驱动的 5 分钟 bot 交易循环。
def five_min_loop():
while True:
wait_for_next_window_open() # blocks until xx:x0:00 or xx:x5:00
markets = find_open_5min_markets("btc")
if not markets: continue
funding = fetch_perp_funding_rate("BTCUSDT")
bias = "DOWN" if funding > 0.001 else "UP" if funding < -0.001 else None
if bias is None: continue
market = markets[0]
token = market["clobTokenIds"][0 if bias == "UP" else 1]
book = fetch_book(token)
if not book.best_ask or book.best_ask > 0.55: continue
place_fok(token, "BUY", book.best_ask + 0.01, 10)
生产版本需要增加的内容:在 5 分钟窗口内跟踪仓位以便准确把握退出时机,先 paper trade 30 个窗口再实盘,连续亏损时停止交易。





