源文件:research/quant_digests/2026-04-11_1617_polymarket-favorite-vwap-momentum-alpha.md
README.md + btc-binary-VWAP-Momentum-bot/README.md + PROJECT_LOGIC.md + CONFIG.md + config.json + main.py)+ Polymarket Gamma API live availability probe5m/15m BTC Up/Down 硬到期二元市场里,当“当前 favorite 一侧”的 token 同时满足 价格处于中高但未过贵区间、高于自己近端 VWAP、相对 60s 前仍在上冲 时,这一侧更像会把领先优势延续到结算。这轮的 base alpha 不是“Polymarket 很热闹”,也不是“预测市场可以拿来当情绪滤镜”。
真正要 intake 的,是一条非常具体的 single-market raw alpha:
> 在固定 5 分钟 / 15 分钟生命周期的二元市场里,赢家侧 token 如果已经站上自己近端成交均价(VWAP),而且过去 60 秒还在继续变贵,那么这更像是“临近结算的顺势延续”,不是单纯随机噪音。
翻成人话: 不是猜最终涨跌,而是看“当前领先那边,是不是还在被继续抢、而且抢得不算过贵”。
所以它不是:
spot-vs-strike fair value 错价。它本身就是一条可以单独回放、单独下单、单独算成本的 raw alpha。
---
原因有 4 个:
不是“favorite 就买”,而是 favorite-side 自身的成交流是否继续推着它走。
5m / 15m。不需要把日线逻辑硬压成短周期;产品生命周期本来就是我们现在最关心的时间框架。
市场发现、盘口、trade prints 都能从公开接口拿;研究回放阶段不需要先有下单权限。
strike-gap / fair probability 错价;adjacent-horizon spread;favorite-confidence late entry;也就是说,这轮补的是 binary microstructure continuation,不是再写一遍 prediction-market 套壳。
---
polymarket-5min-15min-1hour-arbitrage-trading-bot-tools203 stars / 2026-02-18 / 2026-04-10btc-binary-VWAP-Momentum-bot/README.mdbtc-binary-VWAP-Momentum-bot/PROJECT_LOGIC.mdbtc-binary-VWAP-Momentum-bot/CONFIG.mdbtc-binary-VWAP-Momentum-bot/config.jsonbtc-binary-VWAP-Momentum-bot/main.pywss://ws-subscriptions-clob.polymarket.com/ws/marketwss://ws-live-data.polymarket.com> 这轮最值钱的不是“它能自动下单”,而是:它把一条 5m/15m hard-expiry raw alpha,拆成了可逐项审计的信号层。
---
5m / 15m BTC hard-expiry marketconfig.json 明写:
market.interval_minutes = 5(可切到 15)btc-updown-5m-<ts> / btc-updown-15m-<ts>这很关键,因为它不是“先有日内信号,再找地方落地”,而是直接在 原生短周期固定到期产品 上交易。
repo 的核心定义是:
favorite = price 更高的一侧翻成人话: 不是在二元市场里做对敲,不是做均值回归,而是明确押“当前看起来更可能赢的那一边”,再看它是不是还在被继续追。
从 config.json / CONFIG.md / main.py 能拼出它的最小骨架:
min_price = 0.75,max_price = 0.88min_deviation_pct = 3momentum_window_sec = 60vwap_window_sec = 30min_elapsed_sec = 180no_entry_before_end_sec = 110也就是:
这 5 条合起来,才是这条 alpha 的本体。
在普通 perp 市场里,追涨常常会遇到“上面还有多远”这个问题; 但在二元市场里,收益上限天然被封在 1.00。
所以这里最核心的问题不是“还能涨多少”,而是: “在 payout 已封顶的前提下,这个价格是不是还没贵到不值得买,但已经出现了明显的流持续推动?”
repo 用的其实就是这套思路:
0.75~0.88 控制赔率区间;VWAP deviation 控制“是不是正在被追”;60s momentum 控制“不是刚好站上去一下就掉下来”。---
从公开 config.json 看到的默认值:
interval_minutes = 5min_price = 0.75max_price = 0.88min_elapsed_sec = 180no_entry_before_end_sec = 110min_deviation_pct = 3momentum_window_sec = 60vwap_window_sec = 30bet_amount_usd = 5price_offset = 0.02order_type = FAKmax_retries = 3hedge.enabled = true,hedge_price = 0.02这不是“以后可以再加风险管理”,而是 entry / execution / hedge 已经被写成了第一版完整壳。
CONFIG.md 里明写:
15m 市场,min_elapsed_sec 建议抬到 530 左右no_entry_before_end_sec 建议改到 335 左右也就是说,这份 repo 不只是“支持 5m/15m 切换”,而是已经暗示了: 15m 版更像在 market 后半段的一个很窄 admission window 里做 continuation。
我直接检查了 Polymarket Gamma API 当前 live market:
btc-updown-5m-1775924100bestBid = 0.50bestAsk = 0.51liquidityClob ≈ 20,075.11orderMinSize = 5btc-updown-15m-1775924100bestBid = 0.45bestAsk = 0.46liquidityClob ≈ 30,920.12orderMinSize = 5这说明最关键的一点: 研究数据入口是公开可得的,最小复现实验不需要先搞私有数据库。
---
因为它的入场条件本身就是闭环的:
BTC 5m / 15m hard-expiry binaryprice band + VWAP deviation + momentumFAK + price_offset + retrybet_amount_usd0.02 对侧挂单这已经是一条完整的 主信号雏形,不是依附于别的 alpha 才能存在的门控层。
当然,它也可以反过来服务别的 raw alpha:
1m / 3m perp 最后 60~120 秒做外部 sidecar。但那是 secondary use-case。第一性分类仍然应该是 raw alpha。
---
这里要特别老实一点:
README / CONFIG.md 的语言更像:
但 main.py 实际写的是:
mom_ok = fav_mom is not None and fav_mom > 5也就是要求: favorite token 相对 60 秒前,已经涨了 5% 以上。
这不是一个小差异。 因为对二元 token 来说,+5% 不是很轻的门槛,尤其当价格已经在 0.75~0.88 区间时,这会大幅减少信号数。
所以第一轮实验不能只照 README 抄,必须把:
mom > 0mom > 2mom > 5做成三档比较。
main.py 里有一个很值得警惕的实现:
<= 10s 时,用 当下 token last_price 作为 final_pricefinal_price >= 0.70 直接当成“赢了”这意味着公开代码里:
对研究来说,这样做会把两件事混在一起:
所以它的策略骨架值得拿,但 PnL / exit accounting 不能直接信。
win_rate_csv 在配置里被引用,但公开仓库树里没有直接看到该文件config.json 引用了:
data/win_rate.csv但本轮 GitHub 树检查时,没有在公开目录里直接拉到这个路径。
这不影响我们复现 alpha 本体, 但说明: repo 里某些“显示历史胜率”的配套材料,不应被当成可直接复现的既成事实。
因此本轮 4 个字段里,我把“是否可直接落地完整策略”标成了 否。 不是因为它没有策略壳,而是因为: 它的公开实现仍然需要先把 exit / accounting / conditioning table 审清楚。
---
10s before expiry 的 last trade 当真结算5m / 15m 一个新 hard-expiry contract我建议第一轮先只做 BTC,别一上来加多币:
5m + 15m[0.75, 0.88]3%0 / 2 / 5 分桶best_ask + 0.01/0.02先看:
同样只做 favorite,但分三版:
目的不是证明 repo 神,而是回答一个更有价值的问题: VWAP / momentum 到底有没有提供增量信息,还是只是把交易数砍少了?
5m 与 15m不要合并统计。 因为两者虽然都叫 Up/Down binary,但结构并不一样:
5m 更像超短 event-time continuation15m 更像更慢的 late consensus continuation有很大概率会出现:
5m 更吃 momentum15m 更吃 price band + time-left重点分桶:
0.75~0.800.80~0.840.84~0.88>0.88因为这类 bounded payoff 策略最常见的失败,不是方向错,而是: 方向对了,但赔率已经不值。
---
deviation × momentum 比单独任何一个都更值钱只有高于 VWAP,不代表趋势在继续; 只有 60s momentum 为正,也可能只是偶发拉价。
更可能有效的是: 价格已经站上近期成交均价,而且还在继续被买。
0.80~0.86 可能比 repo 默认整段更甜0.75 太低时,共识可能不够稳; 0.88 太高时,赔率经常太差。
所以真正的甜蜜区,很可能是中间更窄的一段,而不是整段 [0.75, 0.88]。
15m 的最优入场窗口可能比 repo 建议更靠后repo 文档建议 15m 把 min_elapsed_sec 拉到 530 左右。
但真正值得测的是:
480~530s530~565s565s 以后因为 hard-expiry 市场常常在最后一小段才真正把赔率压实。
很多人看到这类 token continuation,第一反应是怕错过。
但 binary 的数学本质决定了: 买得太贵,比晚一点买更伤。
所以这条策略最终更可能死在:
而不是死在“方向逻辑完全无效”。
---
5m 市场最后几十秒,状态翻转很快。final_price >= 0.70 -> win,很容易把“临近收盘的 mark”误当“真正预测力”。---
5m / 15m这条策略不需要“映射”成短周期,它原生就是短周期。
1m / 3m 的意义主要在两个地方60~180s favorite-side 状态,能不能作为外部 donor 给 BTC perp 的微型方向判断我们已经有不少:
但 hard-expiry binary 内部的 order-flow continuation 仍然不多。 这类素材值得单独占一个位置。
---
这轮最该拿走的,不是“又一个 Polymarket bot”,而是这条更干净的研究命题:
> 在 5m / 15m hard-expiry binary 市场里,favorite-side token 若处于“不过贵的中高赔率区”,并且同步出现 站上近端 VWAP + 60s 正向 momentum,它是否会比简单的 favorite-only late-entry 更稳定地延续到结算?
这是一条:
但也要保持克制: repo 的公开实现值得拆,不值得照抄。 尤其是:
win_rate_csv 不能当作现成真相。---
做一个 BTC-only Polymarket 5m/15m replay:
favorite-only vs favorite+VWAP vs favorite+VWAP+momentum 三版。把以下 3 个参数做 3×3×3 小网格:
min_price: 0.72 / 0.75 / 0.78max_price: 0.84 / 0.86 / 0.88mom_threshold: 0 / 2 / 5先看哪一层真正提供了 EV,而不是只减少交易数。
若 Polymarket 原生 alpha 成立,再去测:
180s / 120s / 60s 的 favorite-side VWAP/momentum 状态1m 收盘方向有附加信息也就是: 先把它当 alpha,本体成立后,再把它当 sidecar。