传统散户看价格图表(Charts)。量化基金看限价订单簿(L2)。
这是两种完全不同的信息层级。图表是执行结果的事后记录,订单簿是市场深度的实时切片。
当同一事件在多个平台同时交易时,临时流动性失衡会产生确定性的价格缺口。Backtest 这种非效率,需要的是 bid-ask 队列深度,不是执行打印价格。
数据集:机构级别的真实数据
Ridark 发布了一个 55GB 的数据集,包含:
- L2 订单簿快照:最深 20 个 level,100ms 采样间隔
- 跨平台同步时间戳:Polymarket + Kalshi 微秒级对其
- 8.5 亿+ 状态更新:Apache Parquet 格式,高压缩率
这个数据集覆盖了 2024 年底至今的完整历史。
Step 1:安装 uv
# Mac/Linux
curl -LsSf https://astral.sh/uv/install.sh | sh
# Windows (PowerShell)
irm https://astral.sh/uv/install.ps1 | iex
uv 是 Astral 出品的极速依赖管理工具,比 pip 快 10-100 倍。
Step 2:克隆量化套利代码库
git clone https://github.com/Jon-Becker/prediction-market-analysis
cd prediction-market-arbitrage
Step 3:同步虚拟环境
uv sync
自动创建隔离环境,安装 polars、scikit-learn、statsmodels 和高性能分析扩展。
Step 4:下载并解压 L2 订单簿数据
make download-ob
从 Cloudflare R2 高吞吐 bucket 拉取 39GB 压缩包(.tar.zst 格式),本地 native 解压。
Step 5:验证数据集完整性
ls data/snapshots/polymarket/
ls data/snapshots/kalshi/
正确配置后,可以看到按市场分类的每日 Parquet 文件。
核心策略逻辑
价格缺口来源:
- Polymarket 和 Kalshi 对同一事件定价不同(流动性差异)
- 临时流动性失衡制造了确定的价差窗口
- 价差通常在事件结果明确后收敛
为什么散户无法复制:
- 散户看的是交易价格(Charts),不是订单簿深度
- 没有 L2 数据,无法判断价差是否真的存在机会
- 价差窗口持续时间可能只有几秒,手动无法捕捉
量化套利的优势:
- 实时监控多平台订单簿
- 算法检测价格缺口
- 自动下单,毫秒级执行
数据格式说明
数据用 Apache Parquet 存储,列式格式,适合快速列运算。
主要字段:
timestamp:微秒级时间戳bid_levels:各 level 买入价和量ask_levels:各 level 卖出价和量spread:买卖价差market_id:市场标识符
警告
这不是「如何用 AI 预测事件结果」,而是「事件结果已知后如何捕捉平台间价差」。预测市场本身就是事件结果的赌注池,套利策略假设事件结果已经基本确定,真正博弈的是平台间流动性差异。
这个策略容量有限(每个市场的流动性有上限),且需要低延迟基础设施。55GB 数据集的获取只是第一步,后面还需要自己搭建交易引擎。