一句话摘要
标题主题:在预测市场做跨市场统计套利的完整量化路线图
如何做预测市场的跨市场统计套利(完整量化路线图) 2026 年 5 月 17 日 · 7 分钟阅读 · 查看来源 ↗ 量化 营销 自动化 金融
我要把量化对冲基金到底怎么利用竞争性预测平台(比如 Polymarket 和 Kalshi)之间的结构性价格差异,来锁定无风险 alpha 讲清楚👇
我还发布了一个公开仓库,以及一个 55GB 的数据集,里面包含回溯到 2024 年末的逐笔订单簿 L2 快照。
L2 订单簿数据集现已公开
大多数散户交易者看的是历史成交价(K 线图)。量化基金看的是限价订单簿(L2)。
当一个事件同时在多个平台交易时,暂时的流动性失衡会产生确定性的价差。要回测这些低效,你需要买卖队列的深度,而不仅仅是成交打印。
这个数据集包括:
完整的 L2 订单簿快照(最多 20 档深度),以 100ms 间隔采样。
跨平台同步的时间戳。
超过 8.5 亿条状态更新,以高度优化的 Apache Parquet 格式存储。
在我们深入预测数学之前,先把你的本地环境配置好,以处理机构级的订单簿分析。
如何设置数据集(分步)
前置条件:
Python 3.10 或更高版本
60GB 未分配的 SSD 磁盘空间
终端(Mac/Linux)或 PowerShell(Windows)
第 1 步:安装 uv(极速依赖管理器)
# Mac/Linux
curl -LsSf https://astral.sh/uv/install.sh | sh
# Windows(PowerShell)
irm https://astral.sh/uv/install.ps1 | iex
第 2 步:克隆量化套利仓库
git clone https://github.com/Jon-Becker/prediction-market-analysis
cd prediction-market-arbitrage
第 3 步:同步虚拟环境和依赖
uv sync
这会确定性地配置一个隔离环境,带 polars、scikit-learn、statsmodels,以及高性能分析扩展。
第 4 步:流式下载并解压压缩的 L2 订单簿数据
make download-ob
这会从一个高吞吐的 Cloudflare R2 桶拉取 orderbooks_l2.tar.zst(39GB 压缩包),并原生解压到你的本地目录。
第 5 步:验证数据集完整性
ls data/snapshots/polymarket/
ls data/snapshots/kalshi/
如果配置正确,你会看到按市场类别拆分的每日 Parquet 文件。你现在正坐在系统化交易台所用的那套确切的数据基础设施上。
对冲基金如何利用这些数据
散户交易者等新闻爆出来,买一份合约,祈祷自己猜对。
对冲基金不在乎谁赢得选举、某个奖项、或某项经济数据发布。他们把预测市场当作一张碎片化的订单簿网络。他们利用数学上的协整和订单流失衡,去交易平台之间的价差,把库存 delta 对冲到零。
下面是在这份数据上部署的两大算法方法论。
方法 1:协整与 Ornstein-Uhlenbeck 均值回归框架
当两个不同的平台就同一个真实世界结果做市时,它们的长期价格必须收敛到相同的终值(1.00 美元或 0.00 美元)。
然而,局部的流动性冲击(比如某个鲸鱼在单一平台上砸出 50 万美元的合约)会造成暂时的背离。我们用统计协整来建模这种关系。
阶段 1:检验协整
令 P_{P,t} 为 t 时刻 Polymarket 上合约的中间价,P_{K,t} 为 Kalshi 上的中间价。我们构造一个代表价差 S_t 的线性组合:
> S_t = P_{P,t} - β * P_{K,t} - μ
其中 β 是协整系数,μ 是常数截距。量化基金对历史 Parquet 文件跑 Augmented Dickey-Fuller(ADF)检验或 Johansen 检验,来确认 Sₜ 是一个平稳时间序列(I(0)),即它持续回归到自己的均值。
阶段 2:建模连续价差动力学
一旦协整在统计上得到验证,我们就用一个 Ornstein-Uhlenbeck(OU)随机过程来建模价差的连续时间演化:
> dSₜ = θ(μ − Sₜ)dt + σ dWₜ
其中:
• θ 代表均值回归速率(价差闭合得多快)。
• μ 是价差的长期均值。
• σ 是价差的历史波动率。
• dWₜ 是一个标准布朗运动增量,代表随机市场噪声。
阶段 3:通过极大似然估计(MLE)做解析校准
通过对我们的历史数据、在采样间隔 Δt 上应用 Euler–Maruyama 离散化,我们把连续方程转化成一个可追踪的回归模型:
> S_ti = S_ti−1 e^−θΔt + μ(1−e^−θΔt) + εt
在这 8.5 亿行的数据集上使用极大似然估计,基金提取出 θ 的精确数值。如果 θ 意味着均值回归时间
> τ = 1/θ
比平台的执行延迟还快,这个资产就被判定为高度可交易。
阶段 4:构造最优进出场阈值
一个业余交易者一看到价差出现就进场套利。一个量化台解的是一个最优停止问题。用校准好的 OU 参数,推导出最优进场阈值 x_open 和出场阈值 x_close,以最大化单位时间的期望回报:
> 最大化 E [ e^{−r τtrade} (S_t_close − S_t_open − c) / τ_trade ]
其中 c 代表跨两个场所产生的线性交易费用加滑点,r 是连续无风险利率。
价差(S_t)
^
| ============== 最优做空进场(+x_open)
| / \
------|----/---\-------/---------------- 长期均值(μ)
| / \ /
| / \___/ ==== 最优做多进场(-x_open)
+-----------------------------------> 时间(t)
方法 2:订单簿失衡(OBI)与高频微价预测
在毫秒级的时间尺度上,宏观协整模型太慢了。要在跨场所的短期价格波动上抢先,基金直接看流动性分布,用的是订单簿失衡(OBI)。
阶段 1:失衡的数学定义
标准中间价忽略了盘口内盘口的成交量。如果最优买价有 100,000 份合约,而最优卖价只有 1,000 份合约,价格在数学上就被强压着向上移动。
我们用 Level 1 OBI 指标来量化这一点:
> I_t = (V_b(t) − V_a(t)) / (V_b(t) + V_a(t)), I_t ∈ [−1,1]
其中 V_b(t) 是最优买价(P_b)上的可用成交量,V_a(t) 是最优卖价(P_a)上的可用成交量。
阶段 2:微价公式
要在成交打印之前算出合约的「真实」瞬时价值,基金计算微价(P_micro),按结构成交量对买卖价做反比例加权:
> P_micro(t) = V_b(t)·P_a(t) + V_a(t)·P_b(t) / V_b(t) + V_a(t)
把失衡定义代入微价方程,我们揭示出它对订单簿结构的线性依赖:
> P_micro(t) = P_mid(t) + I_t(Δspread / 2)
其中
> P_mid(t) = P_a(t) + P_b(t) / 2
以及
> Δspread = P_a(t) − P_b(t)
阶段 3:跨场所预测信号
真正的 alpha 出现在你跨平台映射 P_micro 的时候。
因为 Polymarket 完全上链/混合,而 Kalshi 是一个中心化的监管清算所,它们的 API 架构以本质上不同的速度处理订单流。
> ΔP_Kalshi(t+δ) = f(I_Polymarket(t), P_micro, Polymarket(t) − P_micro, Kalshi(t))
量化台在历史 Parquet 数据上计算一个滚动的马尔可夫链转移矩阵。他们测量:平台 A 上的一次显著失衡偏移(I > 0.8)预测平台 B 在 δ = 200ms 窗口内卖单簿被扫空的概率。
如果预测概率超过一个结构性阈值,自动化执行系统立即在滞后的交易所上跨价差成交,赶在散户订单路由甚至还没察觉到这次偏移之前,就捕获了这个价格调整。
过程,而非预测
核心要点很简单:机构交易台对实际底层事件完全无感。他们不读政治民调,不分析宏观经济报告,对未来没有任何专家式观点。
他们不公平的优势完全在于运营过程和结构数学:
持续风险调和:通过经验 Ornstein-Uhlenbeck 参数来校准头寸,而不是名义价差。
微观结构主导:利用多场所订单簿失衡与微价变动之间的数学关系。
延迟资本化:运行优化的执行引擎,在散户 UI 刷新之前就按跨平台预测信号行动。
这个开源仓库和 55GB Parquet 数据集,提供了原生构建、测试和执行这些框架所需的精确测试沙盒。
> 收藏它,别弄丢了 📝 标签:# X # 量化 # 营销 # 自动化 # 金融 # 指南 相关文章 我测过 8000+ 条无露脸 YouTube 脚本……这 7 条拿了 2 亿+ 观看 50+ 细分领域里的 8000+ 条脚本。 Youtube 营销 自动化 金融
原文参考:https://maxed.wiki/posts/how-to-trade-cross-market-statistical-arbitrage-on-prediction-markets-complete-quant-roadmap/ (Maxed.wiki,本页为站内中文整理)