alphax-polymarket/README.md
2026-05-22 00:38:22 +08:00

99 lines
2.9 KiB
Markdown
Raw Blame History

This file contains ambiguous Unicode characters

This file contains Unicode characters that might be confused with other characters. If you think that this is intentional, you can safely ignore this warning. Use the Escape button to reveal them.

# Polymarket BTC Up/Down Lab
只读可行性验证项目,用来研究 Polymarket BTC Up/Down 5m 市场是否存在足够稳定的定价偏差。
当前版本不会连接钱包、不会签名、不会下单。它做三件事:
- 从 Gamma API 读取事件、market、token id、`priceToBeat`。
- 从 Polymarket CLOB WebSocket 读取 Up/Down 增量盘口。
- 从 Polymarket RTDS Chainlink BTC/USD 获取实时价格,估算 `P(end >= priceToBeat)` 和扣费后的 taker edge。
- 将实时观测和盘口事件写入 DuckDB。
## 安装
```bash
python3 -m venv .venv
.venv/bin/pip install -e ".[dev]"
```
## 观察指定市场
```bash
.venv/bin/updown-lab observe --slug btc-updown-5m-1779347700 --duration 60
```
输出会写入 `data/observations.jsonl`,每行是一条可回放的 JSON 快照。
## 发现当前候选市场
```bash
.venv/bin/updown-lab discover --limit 10
```
Gamma 的 recurring series 有时会返回尚未启用订单簿的未来市场,所以实盘观察前要看 `acceptingOrders`、`enableOrderBook`、`priceToBeat` 是否存在。
## 启动实时监控网站
```bash
.venv/bin/updown-dashboard --host 127.0.0.1 --port 8765
```
然后打开:
```text
http://127.0.0.1:8765
```
监控台会按 5 分钟 Unix 时间边界自动切换当前 BTC Up/Down 市场实时展示价格、盘口、fair value、taker edge 和最近日志。实时网站的数据源是 `data/updown.duckdb`
如果 live 市场的 Gamma 元数据暂时没有 `priceToBeat`,仪表盘会优先使用 RTDS 边界 tick 作为 `rtds_boundary`。只有中途启动且缺少边界 tick 时才会临时显示 `proxy_start`,这种样本不会计入可信回测。
## 策略口径
第一版 fair value 使用短期布朗运动近似:
```text
z = (current_price - price_to_beat) / (sigma * sqrt(seconds_remaining))
fair_prob = normal_cdf(z)
```
其中 `sigma` 由最近价格收益率滚动估算,并设置了下限,避免临近结算时概率过度极端。
扣 taker fee 后的近似 edge
```text
buy_up_edge = fair_prob - up_ask - fee(up_ask)
buy_down_edge = (1 - fair_prob) - down_ask - fee(down_ask)
```
Polymarket crypto fee 近似:
```text
fee = 0.07 * price * (1 - price)
```
## 下一步
- 用 DuckDB 回放页分析入场时机、滑点、手续费后 edge 和窗口胜率。
- 增加进程锁/单实例启动保护,避免多个 dashboard 同时写一个 DuckDB 文件。
- 用海外 VPS 长时间采集,比较 RTDS 延迟、边界 tick 命中率和 CLOB 盘口年龄。
## 海外 VPS 部署
部署脚本在 `deploy/` 目录。推荐美国东部 Ubuntu VPS通过 SSH tunnel 访问本地绑定的 dashboard
```bash
deploy/sync_to_server.sh user@YOUR_SERVER_IP /opt/updown-dashboard
ssh user@YOUR_SERVER_IP
cd /opt/updown-dashboard
sudo bash deploy/install_ubuntu.sh
sudo bash deploy/install_systemd.sh
sudo systemctl start updown-dashboard
```
本地访问:
```bash
ssh -L 8765:127.0.0.1:8765 user@YOUR_SERVER_IP
```