翻译《Polymarket交易所需的数学知识(完整路线图)- 第二部分)》

在Polymarket交易所需的核心数学原理

我将为您拆解在Polymarket交易所需的核心数学知识。我还会分享帮助我入门的具体路线图和资源。

让我们直接进入正题。

第一部分获得了超过220万次浏览。读者的反馈明确了一点:如果你想像顶级套利机器人那样真正赚钱,就必须从系统层面理解Polymarket等预测市场。光靠理论不够,执行才是关键。

收藏本文
我是Roan,一名后端开发者,专注于系统设计、高频交易风格的执行层以及量化交易系统。我的工作重点是预测市场在负载下的实际行为。如有建议、深度合作或商业合作意向,欢迎私信联系。

继续阅读前请注意: 如果你还没读过第一部分,请在此停下,先读完第一部分。第一部分涵盖了边际多面体(marginal polytopes)、Bregman投影和Frank-Wolfe优化。本文直接建立在这些基础之上。

当你理解Frank-Wolfe通过迭代优化求解Bregman投影时,你会想"我可以实现这个"。没错。但大多数人从未意识到的是:当你还在第1次迭代中苦苦寻找有效的起始顶点时,生产级系统已经用算法3(本文将解释)完成了初始化,使用自适应收缩(adaptive contraction)防止梯度爆炸,在达到最大利润的 90% 时精准停止,并执行了交易。当你手动开始第一次迭代时,这些系统已经跨多个市场完成了套利捕获,根据订单簿深度确定了仓位规模,并转向下一个机会了。

差距不仅在于数学知识。 而在于实现精度

读完本文,你将确切知道如何构建那个提取了超过4000万美元的系统。

  • 第一部分给了你关于整数规划、边际多面体、Bregman投影的理论
  • 第二部分给你关于如何真正从零开始启动算法、如何防止导致业余尝试失败的崩溃、如何在执行前计算精确的利润保证,以及为什么Polymarket等平台故意保留这些机会的实现细节

数学是公开的。那4000万美元就摆在那里。提取它的交易者与其他人之间的唯一区别,是首先解决了四个关键的实现问题。这正是将方程式转化为数百万美元的精确策略。

注意:这不是一篇可以略读的文章。如果你是认真的想构建能扩展到七位数的系统,请从头到尾读完。如果你是为了快速获利或"vibe coding"而来,本文不适合你。

第一部分:初始化问题(设置市场状态)

你不能随便用随机数启动Frank-Wolfe然后指望它能工作。该算法需要一个有效的起始点——一组来自边际多面体 MM 的、已知可行的顶点。这就是初始化问题,它比听起来要难得多。

为什么初始化很重要

回顾第一部分,Frank-Wolfe算法维护一个活跃集 ZtZ_t,记录到目前为止发现的顶点。在每次迭代中,它在 ZtZ_t 的凸包上求解凸优化,然后通过求解整数规划找到新的下降顶点。

但第1次迭代有个问题:Z0Z_0 是什么?

你需要至少一个有效的收益向量来启动。理想情况下,你需要多个跨越结果空间不同区域的顶点。最关键的是,你需要一个内点 uu——一个一致的价格向量,其中每个未结算的证券价格严格介于0和1之间。

为什么?因为我们使用的Barrier Frank-Wolfe变体(本文第二部分将介绍)会向这个内点收缩多面体以控制梯度增长。如果你的内点有任何坐标恰好为0或1,收缩就会失败,算法崩溃。

算法3:InitFW 详解

算法3:InitFW

InitFW的目标有三个:

  1. 找到初始活跃顶点集 Z0Z_0
  2. 构建有效的内点 uu
  3. 扩展部分结果 σ\sigma,以纳入所有可逻辑结算的证券

其工作原理如下。你从一个部分结果 σ\sigma(已结算为0或1的证券集合)开始,遍历每个未结算的证券 ii

对于每个证券 ii,你向整数规划求解器提出两个问题:

  • 问题1: “给我一个收益向量 zz 满足 zi=1z_i = 1
  • 问题2: “给我一个收益向量 zz 满足 zi=0z_i = 0

IP求解器要么找到这样的向量,要么证明其不存在。

情况1: 求解器找到了 zi=0z_i = 0zi=1z_i = 1 的有效向量。这意味着证券 ii 确实不确定——可能以任一方式解决。将两个向量都加入 Z0Z_0。证券 ii 保持未结算。

情况2: 求解器找到了 zi=1z_i = 1 的向量,但找不到 zi=0z_i = 0 的。这意味着每个有效结果都有 zi=1z_i = 1。证券 ii 必须结算为1。将其作为 (i,1)(i, 1) 加入扩展部分结果 σ^\hat{\sigma}

情况3: 求解器找到了 zi=0z_i = 0 的向量,但找不到 zi=1z_i = 1 的。每个有效结果都有 zi=0z_i = 0。证券 ii 必须结算为0。将其作为 (i,0)(i, 0) 加入 σ^\hat{\sigma}

遍历所有未结算证券后,你得到:

  • 一个扩展的部分结果 σ^\hat{\sigma},其结算的证券数量多于初始数量
  • 一个顶点集 Z0Z_0,对于每个尚未结算的证券,在该集合的不同向量中,其对应分量既会出现 0,也会出现 1。

内点 uu 就是 Z0Z_0 中所有顶点的平均值:

u=1Z0×zZ0zu = \frac{1}{|Z_0|} \times \sum_{z \in Z_0} z

因为每个未结算证券在 Z0Z_0 中都同时出现为0和1,平均值保证了对于所有未结算的 iiuiu_i 严格介于0和1之间。

真实案例:NCAA锦标赛初始化

考虑第一部分的Duke对Cornell市场。每支队伍有7个证券(0到6场胜利)。最初,没有比赛进行,所以 σ=\sigma = \emptyset

InitFW 遍历全部14个证券:

  • 对于"Duke:0胜",求解器找到0和1的有效向量(Duke可能赢0场,也可能不赢)
  • 对于"Duke:6胜",求解器找到0和1的有效向量(Duke可能赢得冠军,也可能不赢)
  • Cornell的所有证券同理

但有一个约束:Duke和Cornell不能同时进入决赛(各5+胜),因为他们会在半决赛相遇。当InitFW请求一个Duke: 5胜 = 1 Cornell: 5胜 = 1 的向量时,IP求解器返回不可行。

这不会结算任何证券(两支队伍都可能赢5场,只是不能同时)。但它用尊重依赖关系的向量填充了 Z0Z_0。算法在第一次迭代前就已经知道了结果空间的结构。

初始化后:

  • Z0Z_0 包含所有可能锦标赛结果的有效收益向量
  • uu 是一个所有坐标都在0和1之间的价格向量(比如每支队伍0-6胜的概率各约为0.14)
  • σ^=σ=\hat{\sigma} = \sigma = \emptyset(尚无比赛结算)

一旦比赛开始产生结算结果,后续调用 InitFW 会逐步扩展 σ^\hat{\sigma}。例如,若杜克大学队在第一轮即遭淘汰,则下一次 InitFW 调用会检测到:所有有效向量中"杜克队获胜场次 ≥1"这一证券的取值均为 0,于是将该证券加入 σ^\hat{\sigma}。已结算证券的价格将永久锁定在 0 或 1。

为什么这一步至关重要?

如果没有适当的初始化,Frank-Wolfe可能会以三种方式失败:

失败1:空 Z0Z_0 — 如果你找不到任何有效顶点,就没有可优化的对象。算法无法启动。

失败2:边界内点 — 如果你的内点 uu 有任何坐标在0或1,Barrier Frank-Wolfe中的收缩是未定义的。梯度爆炸。算法发散。

失败3:遗漏结算 — 如果你不将 σ^\hat{\sigma} 扩展到包含逻辑上已结算的证券,你会浪费计算资源优化本应固定的价格。更糟的是,会错过套利消除机会,因为已结算证券按定义没有套利。

Kroer等人的实验表明,即使在完整规模(63场比赛,2632^{63} 种结果)的NCAA锦标赛中,InitFW也能在1秒内完成。IP求解器高效处理这些查询,因为它只是检查可行性,而非优化任何东西。

关键要点: 没有有效初始化,你无法运行Frank-Wolfe。算法3同时解决三个问题:构建有效的起始活跃集 Z0Z_0,构建所有未结算坐标严格介于0和1之间的内点 uu,以及将部分结果 σ\sigma 扩展到包含可逻辑结算的证券。IP求解器执行的是可行性检查而非优化,所以这一步即使对于巨大的结果空间也很快。InitFW使Frank-Wolfe能够开始运行,并使算法能随着结果确定而加速。错过这一步,你的投影要么永远无法启动,要么立即发散。

现在让我们谈谈为什么那个内点如此重要。

第二部分:自适应收缩与受控增长(为何FW不会崩溃)

标准Frank-Wolfe假设目标函数的梯度是Lipschitz连续的,且有有界常数 LL。这个假设使收敛证明成为可能:算法保证以 O(L×diam(M)/t)O(L \times \text{diam}(M) / t) 的速率缩小间隙 g(μt)g(\mu_t)

但对数市场计分规则(LMSR)会严重违背这一假设,且其违背程度极具破坏性。

梯度爆炸问题

回顾第一部分,对于LMSR,Bregman散度是KL散度:

D(μθ)=iμiln(μipi(θ))D(\mu \| \theta) = \sum_i \mu_i \ln\left(\frac{\mu_i}{p_i(\theta)}\right)

要通过Frank-Wolfe最小化这个,我们需要关于 μ\mu 的梯度 D\nabla D。求导得:

R(μ)=ln(μ)+1\nabla R(\mu) = \ln(\mu) + 1

这个梯度仅在 μ>0\mu > 0 时有定义。当任何坐标 μi\mu_i 趋近0时,梯度分量 (R)i=ln(μi)+1(\nabla R)_i = \ln(\mu_i) + 1 趋向负无穷。

这是个问题。边际多面体 MM 的顶点中有些坐标恰好为0。结算为False的证券在相应收益向量中有 μi=0\mu_i = 0。当Frank-Wolfe迭代接近这些边界顶点时,梯度爆炸。

标准FW收敛分析要求有界的Lipschitz常数。这里,LL 是无界的。算法可能发散、振荡或卡住。

Kroer等人的解决方案:带自适应收缩的Barrier Frank-Wolfe

受控增长条件

不是全局要求有界的Lipschitz常数,我们仅在 MM 的收缩子集上局部要求。

定义收缩多面体:

M=(1ε)M+εuM' = (1 - \varepsilon)M + \varepsilon u

其中 ε(0,1)\varepsilon \in (0,1) 是收缩参数,uu 是来自InitFW的内点。

几何上,MM' 是向点 uu 收缩的多面体 MMMM 的每个顶点 vv 被拉向 uu

v=(1ε)v+εuv' = (1 - \varepsilon)v + \varepsilon u

由于 uu 的所有坐标都严格介于0和1之间(由InitFW的构造保证),且 ε>0\varepsilon > 0,所以 vv' 的每个坐标都严格介于0和1之间。收缩多面体 MM' 远离边界。

现在梯度 R(μ)\nabla R(\mu)MM' 上是有界的。具体地,MM' 上的Lipschitz常数为:

Lε=O(1/ε)L_\varepsilon = O(1/\varepsilon)

ε\varepsilon 越小(越接近真实多面体 MM),LεL_\varepsilon 越大。但关键是,对于任何固定的 ε>0\varepsilon > 0LεL_\varepsilon有限的

这给了我们一个权衡:

  • ε\varepsilon 收敛快(LεL_\varepsilon 小),但我们在错误的多面体上优化(远离 MM
  • ε\varepsilon 收敛慢(LεL_\varepsilon 大),但我们在接近 MM 的东西上优化

自适应收缩方案通过从大 ε\varepsilon 开始并随时间减小来解决这个问题。

自适应Epsilon规则

Kroer论文中的算法2实现了这一点。在每次迭代 tt,算法维护 εt\varepsilon_t 并按以下规则更新:

如果 g(μ_t) / (-4g_u) < ε_{t-1}:
    ε_t = min{g(μ_t) / (-4g_u), ε_{t-1} / 2}
否则:
    ε_t = ε_{t-1}

这是什么意思?

  • g(μt)g(\mu_t) 是第 tt 次迭代的Frank-Wolfe间隙(μt\mu_t 的次优程度)
  • gug_u 是在内点 uu 处评估的间隙

比率 g(μt)/(4gu)g(\mu_t) / (-4g_u) 衡量我们相对于内点离真实最优解有多近。如果这个比率很小(意味着我们正取得良好进展),我们将 ε\varepsilon 减半。如果比率很大(表明我们离最优解仍较远),我们保持 ε\varepsilon 不变。

关键洞察:ε\varepsilon 根据收敛情况自适应减小,而非按固定时间表。

随着迭代进行:

  • 早期迭代: ε\varepsilon 很大(比如0.1)。我们在重度收缩的多面体 MM' 上优化。收敛快。
  • 中期迭代: ε\varepsilon 缩小到0.05、0.025等。我们接近真实多面体 MM。收敛变慢。
  • 后期迭代: ε\varepsilon 趋近0.001。我们在几乎真实的 MM 上优化。收敛慢但精确。

Krishnan等人2015年的分析证明,当 tt \to \inftyεt0\varepsilon_t \to 0,所以算法收敛到 MM 上的真实Bregman投影,而不仅仅是某个收缩近似。

为什么这有效:Hessian界

受控增长条件对LMSR成立,因为 R(μ)R(\mu) 的Hessian在 MM' 上表现良好。

Hessian是对角矩阵,对角线元素为:

Hii=2Rμi2=1μiH_{ii} = \frac{\partial^2 R}{\partial \mu_i^2} = \frac{1}{\mu_i}

在收缩多面体 MM' 上,每个坐标 μiε\mu_i \geq \varepsilon(因为向 uu 收缩)。因此:

Hii1εH_{ii} \leq \frac{1}{\varepsilon}

Hessian的算子范数(上界为梯度的Lipschitz常数)为:

H=maxi(1μi)1ε\|H\| = \max_i \left(\frac{1}{\mu_i}\right) \leq \frac{1}{\varepsilon}

这给了我们 Lε=O(1/ε)L_\varepsilon = O(1/\varepsilon),正如所声称的。

对于其他成本函数(如LMSR的和),同样的分析适用。只要成本函数的共轭 RR 的Hessian在收缩多面体上最多以 O(1/ε)O(1/\varepsilon) 增长,Barrier Frank-Wolfe就收敛。

带自适应收缩的收敛速率

Barrier FW的收敛速率为:

O(Lε×diam(M)t)=O(1ε×t)O\left(\frac{L_\varepsilon \times \text{diam}(M')}{t}\right) = O\left(\frac{1}{\varepsilon \times t}\right)

随着 ε\varepsilon 缩小,收敛变慢。但自适应规则确保我们仅在足够接近最优解、精度比速度更重要时才缩小 ε\varepsilon

实践中(来自Kroer实验):

  • 前10次迭代:ε=0.1\varepsilon = 0.1,快速向粗略解进展
  • 迭代10-50:ε\varepsilon 缩小到0.01,精炼解
  • 迭代50-150:ε\varepsilon 趋近0.001,收敛到高精度

总迭代次数:对于拥有数千种证券的全美大学体育协会(NCAA)锦标赛市场,为50到150次。总时间:当结果空间收缩至足够规模,使得整数规划求解可快速完成时,全程耗时约 30 分钟。

没有自适应收缩会发生什么?

如果你直接在 MM 上运行标准Frank-Wolfe(无收缩),可能发生两种情况:

情景1: 算法遇到某个 ii 满足 μi=0\mu_i = 0 的顶点。梯度分量变为 -\infty。数值溢出。算法崩溃。

情景2: 算法略微保持在 MM 内部(数值舍入保持 μi>0\mu_i > 0 但很小)。梯度变得巨大。步长不稳定。收敛不稳定或不存在。

研究论文明确指出:“没有自适应收缩,FW在LMSR中不会收敛。”

Without adaptive contraction, FW does not converge for LMSR.

具有自适应收缩的障碍Frank-Wolfe算法并非优化手段,而是一种必要方法。

关键要点: 标准Frank-Wolfe在LMSR上失败,因为当 μi\mu_i 趋近零时梯度在价格边界处爆炸。Barrier Frank-Wolfe通过在收缩多面体 M=(1ε)M+εuM' = (1-\varepsilon)M + \varepsilon u 上优化来解决这个问题,其中所有坐标都远离零,给出有限的Lipschitz常数 Lε=O(1/ε)L_\varepsilon = O(1/\varepsilon)。自适应epsilon规则从大 ε\varepsilon 开始以实现快速早期收敛,并随时间缩小 ε\varepsilon 以接近 MM 上的真实投影。这在保持梯度受控增长的同时保证渐近收敛到正确解。没有这个机制,算法要么因数值溢出而崩溃,要么因不稳定梯度而发散。

现在你知道如何保持算法稳定了。但你实际上什么时候停止并执行交易呢?


第三部分:利润保证(何时停止并交易)

你正在运行Frank-Wolfe。第50次迭代。间隙 g(μt)g(\mu_t) 在减小。IP求解器仍在运行。

你什么时候停止?

  • 停止太早 → 错过大部分利润
  • 停止太晚 → 市场变动,机会消失

你需要一个能保证利润的停止条件。

命题4.1:公式

命题4.1

将市场状态从 θ\theta 移动到 θ^\hat{\theta}(其中 p(θ^)=μ^p(\hat{\theta}) = \hat{\mu})的保证利润为:

ProfitD(μ^θ)g(μ^)\text{Profit} \geq D(\hat{\mu} \| \theta) - g(\hat{\mu})

其中:

  • D(μ^θ)D(\hat{\mu} \| \theta) = Bregman散度(若μ^\hat{\mu}为最优解,其值即为最大套利空间)
  • g(μ^)g(\hat{\mu}) = Frank-Wolfe间隙(μ^\hat{\mu} 当前的次优程度)

这就是一切。

D(μ^θ)D(\hat{\mu} \| \theta) 是完美优化下你能获得的利润。g(μ^)g(\hat{\mu}) 是因为 μ^\hat{\mu} 尚未达到完美状态而损失的利润。二者的差值即为使用近似解时仍能确保获得的最低利润。

为什么这很重要

在传统优化中,当在 g(μ^)g(\hat{\mu}) 较小时,你就会停止。你不关心 D(μ^θ)D(\hat{\mu} \| \theta)

在套利中,需要同时关注两者:

情况1:
D(μ^θ)=0.15D(\hat{\mu} \| \theta) = 0.15g(μ^)=0.20g(\hat{\mu}) = 0.20
保证利润 = 0.150.20=0.050.15 - 0.20 = \mathbf{-0.05}
不要交易。你的近似太差了。

情况2:
D(μ^θ)=0.15D(\hat{\mu} \| \theta) = 0.15g(μ^)=0.02g(\hat{\mu}) = 0.02
保证利润 = 0.150.02=0.130.15 - 0.02 = \mathbf{0.13}
立即交易。你捕获了87%的可用套利。

情况3:
D(μ^θ)=0.0001D(\hat{\mu} \| \theta) = 0.0001g(μ^)=0.00001g(\hat{\mu}) = 0.00001
保证利润 = 0.00009\mathbf{0.00009}
技术上为正,但执行成本超过利润。跳过。

三个停止条件

条件1:α\alpha-提取

g(μt)(1α)×D(μtθ)g(\mu_t) \leq (1-\alpha) \times D(\mu_t \| \theta)

重排为:

D(μtθ)g(μt)α×D(μtθ)D(\mu_t \| \theta) - g(\mu_t) \geq \alpha \times D(\mu_t \| \theta)

解释: 保证利润至少是最大可能利润的 α\alpha 比例。

研究实现:α=0.9\alpha = 0.9

“当你保证捕获至少90%的可用套利时停止。”

为什么是90%而不是100%? 获取最后10%可能需要50次额外迭代。IP求解器可能超时。市场可能变动。现在就拿90%。

条件2:接近无套利

D(μtθ)εDD(\mu_t \| \theta) \leq \varepsilon_D

如果最大可用套利低于阈值 εD\varepsilon_D,就别费心了。

研究值:εD=0.05\varepsilon_D = 0.05

“如果利润低于每美元5美分,跳过它。”

为什么? 执行风险和gas费会吃掉它。

条件3:强制中断

新交易到达或时间限制触发 → 返回目前为止找到的最佳迭代。

在所有迭代中跟踪:

t=argmaxτt[D(μτθ)g(μτ)]t^* = \arg\max_{\tau \leq t} \left[ D(\mu_\tau \| \theta) - g(\mu_\tau) \right]

即使第5次迭代被中断,你也返回这5次中保证利润最大的迭代。

关键:D(μtθ)g(μt)0D(\mu_t \| \theta) - g(\mu_t) \geq 0 总是成立(通过凸对偶性证明)。

你永远不会返回保证利润为负的交易。

证明概要

保证利润是:

minω[profit in outcome ω]=minμM[(θ^θ)μC(θ^)+C(θ)]\min_{\omega} \left[ \text{profit in outcome } \omega \right] = \min_{\mu \in M} \left[ (\hat{\theta}-\theta) \cdot \mu - C(\hat{\theta}) + C(\theta) \right]

使用共轭性(θ^=R(μ^)\hat{\theta} = \nabla R(\hat{\mu}))并简化:

=D(μ^θ)+minμM[(θ^θ)(μμ^)]= D(\hat{\mu} \| \theta) + \min_{\mu \in M} \left[ (\hat{\theta}-\theta) \cdot (\mu - \hat{\mu}) \right]

minμM[(θ^θ)(μμ^)]\min_{\mu \in M} \left[ (\hat{\theta}-\theta) \cdot (\mu - \hat{\mu}) \right] 根据FW间隙的定义等于 g(μ^)\mathbf{-g(\hat{\mu})}

因此:

保证利润=D(μ^θ)g(μ^)\text{保证利润} = D(\hat{\mu} \| \theta) - g(\hat{\mu})

证毕。

NCAA实验的真实数据

锦标赛早期(16场比赛已结算):

  • 第10次迭代:D=0.0045D = 0.0045g=0.0042g = 0.0042,保证利润 = 0.0003
  • 第50次迭代:D=0.0045D = 0.0045g=0.0004g = 0.0004,保证利润 = 0.0041

α\alpha-提取检查:g(μ50)=0.00040.9×0.0045=0.00405g(\mu_{50}) = 0.0004 \leq 0.9 \times 0.0045 = 0.00405

停止。保证利润:最大值的91%。

锦标赛后期(56场比赛已结算):

  • 第20次迭代:D=0.0002D = 0.0002g=0.00001g = 0.00001,保证利润 = 0.00019

α\alpha-提取检查:g(μ20)=0.000010.9×0.0002=0.00018g(\mu_{20}) = 0.00001 \leq 0.9 \times 0.0002 = 0.00018

停止。保证利润:最大值的95%。

锦标赛后期收敛更快,因为结果空间更小(128种可能性 vs 数十亿)。

何时不交易

如果出现以下情况,中止:

  1. D(μtθ)<εDD(\mu_t \| \theta) < \varepsilon_D → 无套利,无利润
  2. D(μtθ)g(μt)<0D(\mu_t \| \theta) - g(\mu_t) < 0 → 间隙超过散度,继续迭代
  3. D(μtθ)g(μt)<D(\mu_t \| \theta) - g(\mu_t) < 执行阈值 → 利润太小,不值得冒险

研究中0.05美元的最低阈值考虑了:

  • 非原子执行(一条腿可能成交,其他可能不成交)
  • Gas费(Polygon上每多腿交易约0.02美元)
  • 滑点和订单簿变动

关键要点: 命题4.1将抽象优化转化为具体交易决策。利润保证 D(μ^θ)g(μ^)D(\hat{\mu} \| \theta) - g(\hat{\mu}) 准确告诉你何时停止Frank-Wolfe。α\alpha-提取停止条件(α=0.9\alpha = 0.9)确保你在等待完美收敛前捕获90%的利润。跨迭代跟踪最佳迭代 tt^* 意味着即使强制中断也能返回盈利交易。这就是顶级套利者如何通过4,049笔交易赚取2,009,631.76美元。 每笔交易在执行前都有保证的最低利润。没有赌博。没有侥幸。在停止容差内的数学确定性。

现在你知道了:如何初始化(第一部分)、如何防止崩溃(第二部分)、何时停止并交易(第三部分)。

但还有一个部分。做市商最初是如何设定这些价格的?


第四部分:做市商的视角(为什么价格是错的)

到目前为止,一切都集中在利用错误定价上。但错误定价从何而来?

理解做市商的优化问题揭示了为什么套利根本存在。

成本函数框架

Polymarket(像所有自动化做市商一样)使用成本函数 C(θ)C(\theta) 来设定价格。

来自第一部分,LMSR:

C(θ)=b×log(ieθi/b)C(\theta) = b \times \log\left(\sum_i e^{\theta_i/b}\right)价格:pi(θ)=eθi/bjeθj/b\text{价格:} p_i(\theta) = \frac{e^{\theta_i/b}}{\sum_j e^{\theta_j/b}}

参数 bb 控制流动性。

  • bb → 价格随每笔交易快速变动
  • bb → 价格变动缓慢

做市商的问题

做市商想要:

  1. 吸引交易者(提供流动性)
  2. 保持无套利(不亏钱给套利者)
  3. 限制最大损失(最坏情况赔付是有限的)

这些目标冲突。

如果你通过Bregman投影强制执行无套利价格(第一至第三部分),你就牺牲了流动性。

为什么?因为投影求解整数规划。根据市场规模,这需要30秒到30分钟。

如果每次更新都需要求解IP,价格就无法实时更新。

权衡:速度 vs 精度

快速定价(Polymarket实际做的):

当交易到达时:

  1. 更新状态:θnew=θold+δ\theta_{\text{new}} = \theta_{\text{old}} + \delta
  2. 计算新价格:p(θnew)=C(θnew)p(\theta_{\text{new}}) = \nabla C(\theta_{\text{new}})
  3. 立即执行

时间:<100毫秒

但价格可能违反逻辑约束。如果Duke在第一轮输了,“Duke赢得冠军"应该立即变为0美元。相反,它随着交易者押注反对而逐渐衰减。

精确定价(第一至第三部分的FWMM):

当交易到达时:

  1. 运行InitFW扩展部分结果
  2. 运行Barrier FW投影到 MM
  3. 将状态更新到投影价格
  4. 执行交易

时间:30秒到30分钟

价格保证无套利。但更新缓慢。到投影完成时,已有10笔更多交易到达。你总是落后。

Polymarket选择了速度而非精度。 他们使用独立的LMSR市场进行快速更新。这创造了三种类型的错误定价:

类型1:市场内不一致性

多条件市场的概率之和不等于1。

来自实证数据的例子:

  • 662个NegRisk市场(42%的所有多条件市场)的和不等于1
  • 中位数偏差:每美元0.08

类型2:跨市场不一致性

依赖市场定价时如同彼此独立。

例子:“Trump赢得宾州"和"共和党全国领先5+“应该是相关的。但每个市场根据自己的交易独立更新。

结果:价格违反逻辑依赖关系。组合套利存在。

类型3:结算滞后

当比赛结算时,价格不会立即锁定。它们随着交易者押注已解决的结果而向0或1漂移。

来自论文的例子:阿萨德在2024年继续担任叙利亚总统。

  • 阿萨德逃离国家(结果已确定)
  • 价格:YES = 0.30美元,NO = 0.30美元(和 = 0.60)
  • 应该是:YES = 0美元,NO = 1美元
  • 套利窗口持续数小时,直到有足够多的交易者押注使其下跌

基本不可能性

定理(Kroer等人隐含):

对于具有依赖关系的组合市场上的任何成本函数:

  • 快速价格更新 → 套利存在
  • 无套利价格 → 更新缓慢

你不能两者兼得。

具有独立子市场的LMSR快速但创造套利。具有整数规划的FWMM无套利但缓慢。

Polymarket可以做什么(但没做)

混合方法:

  1. 对正常交易使用快速LMSR
  2. 每10秒运行LCMM(Dudík等人2012年的线性约束MM)以部分消除套利
  3. 每5分钟或部分结果更新时运行完整FWMM投影

这将把套利从每年4000万美元减少到也许每年500万美元。

Polymarket为什么不这样做? 因为套利吸引成熟的交易者。

做市商想要交易量。套利者提供持续的交易量。如果你消除所有套利,许多专业交易者会离开。

Polymarket容忍一些套利作为流动性激励。

做市商的损失界限

即使有套利,做市商的损失也是有界的。

来自Abernethy等人2011年:

最坏情况损失=maxω[D(ϕ(ω)θ0)]\textbf{最坏情况损失} = \max_\omega \left[ D(\phi(\omega) \| \theta_0) \right]

其中:

  • ϕ(ω)\phi(\omega) 是结果 ω\omega 中的收益向量
  • θ0\theta_0 是初始市场状态

对于LMSR,这简化为:

最大损失=b×log(Ω)\text{最大损失} = b \times \log(|\Omega|)

其中 Ω|\Omega| 是结果数量。

例子:NCAA锦标赛

  • Ω=263|\Omega| = 2^{63}
  • b=150b = 150(典型流动性参数)
  • 最大损失 = 150×log(263)=150×43.7=6,555150 \times \log(2^{63}) = 150 \times 43.7 = \mathbf{6,555}美元

无论发生多少交易,存在多少套利,做市商在这个市场上最多损失6,555美元。

这就是使用LMSR的原因。 即使在对抗性场景下,损失也是有界的。

这对套利者意味着什么

做市商选择被利用。

他们可以运行FWMM并消除套利。他们不这样做,因为:

  1. 速度比精度更重要
  2. 套利者提供流动性
  3. 损失无论如何都是有界的

作为套利者: 机会不是bug。它们是特性。做市商知道价格是错的。他们接受有界损失以换取快速更新和高交易量。

你的工作是比竞争对手更快地发现和执行。

现在你有工具了:

  • InitFW启动优化(第一部分)
  • Barrier FW处理LMSR(第二部分)
  • 利润保证知道何时交易(第三部分)
  • 理解为什么错误定价存在(第四部分)

关键要点: 做市商面临不可能的权衡:快速更新创造套利,无套利定价缓慢。Polymarket选择了速度,使用独立的LMSR子市场,在<100毫秒内更新。这创造了市场内不一致性(和≠1)、跨市场不一致性(忽略依赖关系)和结算滞后(价格向真实值漂移)。提取的4000万美元套利不是失败——它是维持流动性和交易量的可接受成本。做市商的损失无论如何都被 b×log(Ω)b \times \log(|\Omega|) 所限制,所以容忍一些利用是理性的。对于套利者,这意味着机会是系统性的,不是偶然的。

你检测和执行越快,提取的就越多。


结论:完整框架

第一部分向你展示了数学: 整数规划、边际多面体、Bregman投影、Frank-Wolfe迭代。

第二部分向你展示了实现: 如何真正从零开始启动算法、为什么标准方法会失败、何时停止并保证利润,以及为什么这些机会根本存在。

理论与执行之间的鸿沟是四个问题:

  1. 初始化(第一部分):使用带IP求解器的InitFW构建有效的 Z0Z_0,构建内点 uu,扩展部分结果 σ^\hat{\sigma}
  2. 稳定性(第二部分):使用带自适应收缩的Barrier FW防止LMSR的梯度爆炸
  3. 执行(第三部分):使用利润保证 D(μ^θ)g(μ^)D(\hat{\mu} \| \theta) - g(\hat{\mu}) 配合 α\alpha-提取,在市场变动前捕获90%的套利
  4. 市场结构(第四部分):理解做市商选择速度而非精度,创造系统性错误定价

这不是理论。 顶级套利者使用正是这些方法赚取了2,009,631.76美元

按总金额和成功机会数量排名的前10个账户

他们没有更好的信息。他们没有内幕消息。他们只是更好地实现了每个人都能在研究论文中读到的相同数学。

问题不再是"这可能吗?”

问题是:你会实现它吗?


下一步是什么?

这是第二部分。我们涵盖了初始化、稳定性、利润保证和做市商经济学。

但我们还没有谈论生产系统。

你实际上如何:

  • 从Polymarket的WebSocket API摄取实时数据?
  • 并行运行整数规划而不阻塞?
  • 以<30毫秒延迟向CLOB提交订单?
  • 同时监控17,000+个条件?
  • 在资本约束下确定仓位规模?
  • 处理部分成交(一条腿执行,其他不执行)?

我应该发布第三部分吗?

第三部分将涵盖:

  • 系统架构(数据管道、执行引擎、监控)
  • 代码示例(Python + Gurobi实现)
  • 风险管理(仓位规模、凯利准则、回撤限制)
  • 基础设施(AWS设置、数据库架构、WebSocket处理)

扩展到七位数的完整生产系统

如果你想要第三部分,请告诉我。现在是关于构建那台将为你印钞的机器。


资源

研究论文:

  • Kroer等人2016年:“通过整数规划实现无套利组合做市”(arXiv:1606.02825v2)
  • Saguillo等人2025年:“解开概率森林:预测市场中的套利”(arXiv:2508.03474v1)

工具:


数学有效。 机会存在。 唯一的问题是执行。