介绍
# Polymarket Arbitrage
在 Polymarket 预测市场上寻找并执行套利机会。
## 快速开始
### 1. 模拟交易(推荐的首要步骤)
运行单次扫描以查看当前机会:
```bash cd skills/polymarket-arbitrage pip install requests beautifulsoup4 python scripts/monitor.py --once --min-edge 3.0 ```
在 `polymarket_data/arbs.json` 中查看结果
### 2. 持续监控
每 5 分钟监控一次,并在发现新机会时发出警报:
```bash python scripts/monitor.py --interval 300 --min-edge 3.0 ```
使用 `Ctrl+C` 停止
### 3. 理解结果
每个检测到的套利包括: - **net_profit_pct**:扣除 2% 手续费后的利润空间 - **risk_score**:0-100,越低越好 - **volume**:市场流动性 - **action**:操作建议(买入/卖出所有结果)
优质机会: - 净利润:3-5%+ - 风险评分:<50 - 交易量:$1M+ - 类型:`math_arb_buy`(更安全)
## 检测到的套利类型
### 数学套利(主要关注点)
**A 类:买入所有结果**(概率总和 < 100%) - 最安全的类型 - 如果可执行,则保证盈利 - 示例:48% + 45% = 93% → 7% 的空间,扣除手续费后约 5% 的净利润
**B 类:卖出所有结果**(概率总和 > 100%) - 风险较高(需要流动性) - 需要资金进行抵押 - 在有经验之前避免操作
详细示例和策略请参阅 `references/arbitrage_types.md`。
### 跨市场套利
同一事件在不同市场上的定价不同(尚未实现 - 需要语义匹配)。
### 订单簿套利
需要实时订单簿数据(主页显示的是中间价,而非可执行价格)。
## 脚本
### fetch_markets.py
抓取 Polymarket 主页以获取活跃市场。
```bash python scripts/fetch_markets.py --output markets.json --min-volume 50000 ```
返回包含市场概率、交易量和元数据的 JSON。
### detect_arbitrage.py
分析市场以寻找套利机会。
```bash python scripts/detect_arbitrage.py markets.json --min-edge 3.0 --output arbs.json ```
计算包括: - 2% 的 taker 手续费(每条腿) - 多结果手续费的叠加 - 风险评分
### monitor.py
具有警报功能的持续监控。
```bash python scripts/monitor.py --interval 300 --min-edge 3.0 [--alert-webhook URL] ```
功能: - 每隔一定时间获取市场数据 - 检测套利 - 仅针对新机会发出警报(去重) - 将状态保存到 `polymarket_data/`
## 工作流程阶段
### 第一阶段:模拟交易(1-2 周)
**目标:** 了解机会的频率和质量
1. 每天运行监控 2-3 次 2. 在电子表格中记录机会 3. 检查当你查看时它们是否仍然可用 4. 计算本可以获得多少利润
**决策点:** 如果每周看到 3-5 个好的机会,则进入第二阶段。
### 第二阶段:微额测试($50-100 CAD)
**目标:** 学习平台机制
1. 创建 Polymarket 账户 2. 存入 $50-100 的 USDC 3. 仅手动交易(无自动化) 4. 每个机会最多 $5-10 5. 在电子表格中跟踪每一笔交易
**决策点:** 如果在 20 多笔交易后盈利,则进入第三阶段。
### 第三阶段:扩大规模($500 CAD)
**目标:** 增加仓位规模
1. 将资金增加到 $500 2. 每笔交易最多 5%($25) 3. 仍然手动执行 4. 实施严格的风险管理
### 第四阶段:自动化(未来)
需要: - 钱包集成(私钥管理) - Polymarket API 或浏览器自动化 - 执行逻辑 - 监控基础设施
**仅在持续盈利的手动交易之后考虑。**
详细设置说明请参阅 `references/getting_started.md`。
## 风险管理
### 关键规则
1. **最大仓位规模:** 每个机会占总资金的 5% 2. **最小利润空间:** 3% 净利润(扣除手续费后) 3. **每日亏损限额:** 总资金的 10% 4. **专注于买入套利:** 在有经验之前避免卖方套利
### 危险信号
- 利润空间 >10%(可能是过时数据) - 交易量 <$100k(流动性风险) - 概率最近更新过(套利可能已消失) - 卖方套利(资金 + 流动性要求)
## 手续费结构
Polymarket 收取: - **Maker fee:** 0% - **Taker fee:** 2%
**保守假设:** 每条腿 2%(假设为 taker)
**盈亏平衡计算:** - 2 结果市场:需要 2% × 2 = 4% 的总利润空间 - 3 结果市场:需要 2% × 3 = 6% 的总利润空间 - N 结果市场:需要 2% × N 的总利润空间
**目标:** 3-5% 的净利润(扣除手续费后)
## 常见问题
### “利润空间很高但消失了”
主页概率是过时的,或者代表中间价,而非可执行价格。这是正常现象。真正的套利会在几秒钟内消失。
### “无法以显示的价格执行”
流动性问题。低交易量的市场显示的概率具有误导性。坚持交易量在 $1M+ 的市场。
### “扣除手续费后利润空间太小”
提高 `--min-edge` 阈值。尝试 4-5% 以进行更保守的过滤。
## 文件和数据
所有监控数据存储在 `./polymarket_data/` 中: - `markets.json` - 最新市场扫描 - `arbs.json` - 检测到的机会 - `alert_state.json` - 去重状态(已发出警报的套利)
## 高级主题
### Telegram 集成(未来)
将 webhook URL 传递给监控脚本以获取警报:
```bash python scripts/monitor.py --alert-webhook "https://api.telegram.org/bot<token>/sendMessage?chat_id=<id>" ```
### 仓位配置
对于概率为 p₁ 和 p₂ 的 2 结果数学套利,其中 p₁ + p₂ < 100%:
**最优分配:** - 押注结果 1:资金的 (100% / p₁) / [(100%/p₁) + (100%/p₂)] - 押注结果 2:资金的 (100% / p₂) / [(100%/p₁) + (100%/p₂)]
这确保无论哪个结果获胜,利润都相等。
**简化规则:** 对于小利润空间,在结果之间平均分配资金。
### 执行速度
套利消失得很快。如果计划自动化: - 使用 websocket 连接(而非轮询) - 同时放置限价单 - 预存资金 - 监控 Polygon 上的 gas 费
## 资源
- **Polymarket:** https://polymarket.com - **文档:** https://docs.polymarket.com - **API(如可用):** 查看 Polymarket 文档 - **社区:** Polymarket Discord
## 支持
对于技能问题: - 查阅 `references/arbitrage_types.md` 了解策略详情 - 查阅 `references/getting_started.md` 获取设置帮助 - 查看 `polymarket_data/` 中的输出文件 - 确保已安装依赖项:`pip install requests beautifulsoup4`