← 返回 Quant Digests · 站点首页

别把这个 2026 Polymarket Rust bot 只读成“预测市场多策略拼盘”:对 short-cycle desk,更该先拆的是「retail skew × funding-confirmed fade」这条可独立落地的 raw alpha

更新时间:2026-04-23 09:42 UTC 类型:2026 GitHub repo source audit(`README.md` + `src/strategies/basis_impl.rs` + repo metadata) 主题标签:raw-alpha/relative-value/mean-reversion/polymarket/binance/funding/skew-fade/cross-venue/short-horizon/repo/external-data/cost/risk 证据类型:repo source + strategy code + config semantics

源文件:research/quant_digests/2026-04-23_0942_polymarket-funding-confirmed-skewfade-alpha.md

1. 这次看了什么

这次主看:

先把一句话说透:这篇东西的 base alpha 是 cross-venue relative-value / mean-reversion,不是 filter,不是 overlay。

它不是在说“funding 可以预测价格”这么空的话,而是把一个更适合我们 desk 的短周期壳写得很清楚:

  1. Polymarket order book 给出 crowd skew;
  2. Binance spot velocity 负责否决“真在单边飞”的情况;
  3. Binance perpetual funding 给出 smart-money 方向确认;
  4. 真正交易的是被挤贵的 YES 或 NO token 的反向 fade。

2. 核心结论

3. 为什么和当前项目有关

这轮和当前 desk 的关系很直接:

3.5 策略拆解(必填)

4. 源码里到底写了什么

4.1 入场逻辑

src/strategies/basis_impl.rs 里的顺序非常清楚:

  1. 先过 expiry guard:离收盘太近不做;
  2. 必须有 strike:没 strike 就没法判断这个 binary 市场是否已被现货价格“决定”;
  3. 先过 fee gate:两边 taker fee 只要有一边太高,就直接跳过;
  4. 按币种切不同常数:BTC / ETH / SOL 用不同 velocity 阈值与 strike buffer;
  5. 现货必须够平:若 abs(velocity) 超过上限,说明这不是“错价回归”,而可能是现货真的在单边重定价;
  6. 现货不能离 strike 太远:否则 YES/NO 的高低价未必是 crowd 错,而可能只是结果已经快被现实锁定;
  7. 用 YES mid 计算 skewyes_mid - 0.50,而不是拿 bid 或 ask 单边看;
  8. skew 必须超过阈值:绝对值不够大,不做;
  9. funding 要与 fade 方向一致,除非 skew 极端到直接 bypass
  10. 最后再看 entry price:买 NO 或买 YES 时,ask 不得太贵。

这套顺序很像我们当前喜欢的“先定义 raw alpha,再逐层加 veto”而不是反过来。

4.2 出场逻辑

源码里 exit 也不是一句“到点就平”:

这很重要,因为它说明作者不是把 funding 当成慢频因子,而是确实在做 短持有、事件窗内回归

4.3 仓位

源码里还有独立函数 basis_trade_size(skew_abs)

5. 为什么这条线像 raw alpha,而不只是 funding overlay

因为 funding 在这里不是主信号,而是 confirming signal

真正的交易对象是:

换句话说:

这正符合当前 intake 规则:能把 base alpha / filter / overlay 拆干净,就值得进池。

6. 可复刻的最小实验

研究假设: 在 Polymarket hourly BTC/ETH/SOL binary 市场里,若某一侧隐含概率对 0.5 的偏离足够大,同时 Binance spot 处于低 velocity 且 perp funding 与 crowd 偏向相反,则该侧被挤贵的概率更大,后续数分钟到数十分钟存在回归 edge。

一个可计算定义:

  1. 数据源:
  1. 定义 yes_mid = (yes_bid + yes_ask)/2
  2. 定义 skew = yes_mid - 0.5
  3. |skew| >= 0.07 时产生候选;
  4. abs(spot_velocity_5s) < capabs(oracle - strike) < buffer,继续;
  5. skew > 0 且 funding < 负阈值,则买 NO;若 skew < 0 且 funding > 正阈值,则买 YES
  6. |skew| >= 0.14,可测试 bypass funding 版本;
  7. 出场先用 TP/SL/skew-collapse/expiry 四段式。

最小回测切口:

下一步怎么测:

  1. 先做 raw alpha baseline:只用 |skew| 入场,不上 funding confirm,看本体有没有 edge;
  2. 再做 A/B:skew only vs skew + funding vs skew + funding + flat-velocity veto
  3. 单独扫 0.05 / 0.07 / 0.09 的 skew threshold,确认现在这条线是不是被参数写死;
  4. 单独做 fee ladder50 / 100 / 200 / 300 bps;因为这条策略对 taker cost 非常敏感;
  5. 检查 hold-time 分布:若 edge 只存在于超短窗,就要把执行层当主问题,而不是继续研究高层因子;
  6. 如果要迁到纯 crypto perp desk,可测试替代版:把 Polymarket 的 yes_mid-0.5 换成“事件市场隐含概率 / 预测市场概率 / 链上赔率”的 crowd skew proxy。

7. 数据源、公开性、更新频率、最小复现实验口径

最小可复现实验口径: 只要你能连续抓取 Polymarket top-of-book + strike/closeBinance spot/funding,就能先做 event-time replay;甚至不需要先接实盘下单接口。

8. 风险与保留意见

9. 来源

  1. Michael Bordash (2026), RustPolyBot
  1. README.md
  1. Basis strategy source
  1. GitHub repo metadata / commit history