跳到主要内容
DA DataAlgorithm
IN-02 通俗洞察 赔率解读 过轮

赔率 2.10 是不是就等于 47.6% 的概率?

这是所有人第一次看盘口时都会做的运算:1 ÷ 2.10 = 47.62%。 看起来天衣无缝——赔率越低,概率越高。问题出在下一步:把同一场比赛主、平、客三路的倒数加起来, 得到的不是 1.0000,而是 1.0481。 多出来的 4.81% 不是计算误差,是庄家写进报价里的利润,行话叫过轮(overround)。 也就是说,那个 47.62% 从来不是“主队赢的概率”, 而是“主队赢的概率 + 庄家分摊到这一路上的抽水”。摊掉之后只剩 45.43%。 本文把这条链路一步一步走完:从倒数到过轮,从过轮到归一化, 再到盈亏平衡命中率——你的模型必须多准,才配得上这个赔率。 全程只需加减乘除,每个数字都可以用文末代码复算。

栏目:通俗洞察 Insights 阅读时长:约 11 分钟 数学门槛:只需加减乘除 发布:2026-08

1 一个赔率,一个倒数

欧洲十进制赔率(decimal odds)的定义极其干净:它是你押 1 个单位、猜中之后总共拿回多少。 注意是“拿回”,含本金。赔率 2.10 意味着押 1 块,中了收回 2.10 块——净赚 1.10 块;没中,那 1 块归庄家。

从这个定义可以直接倒推出一个概率。假设这笔投注长期下来既不赚也不亏, 那么“中的次数 × 净赚”应该刚好等于“没中的次数 × 亏掉的本金”。 设中的概率为 p,赔率为 d

p(d1) = (1p) p= 1d
(1)

左边是赢的时候的净收益期望,右边是输的时候的净损失期望。两边相等即长期打平,解出来 p 就是赔率的倒数。这个 p 有个专名:隐含概率(implied probability)。

于是有了那个人人都会的动作——取倒数:

表 1 常见赔率对应的隐含概率(1 / odds
十进制赔率1 / odds隐含概率直觉描述
1.500.666766.67%三次里赢两次以上才划算
2.000.500050.00%掷硬币,行话叫“平半”
2.500.400040.00%五次里赢两次
3.400.294129.41%典型的平局报价
4.000.250025.00%四次里赢一次
10.000.100010.00%冷门
定义 1(隐含概率)

给定十进制赔率 d,其原始隐含概率1 / d。 它回答的问题是:“若这笔投注长期零收益,中奖率必须是多少”。 它回答“这件事真实发生的概率是多少”。两者的差距就是本文剩下七节要讲的东西。

2 三路加起来超过 100%

单看一路赔率,倒数这个动作毫无破绽。破绽在把一场比赛的三条路放在一起看的时候才暴露。 一场足球比赛的结果只有三种:主胜、平局、客胜。这三件事互斥且穷尽, 所以它们的真实概率加起来必须正好是 1——这是概率论的公理,不是约定。

拿一个典型的三路盘口来试。以下赔率为示例数值,用于演示算术,不代表任何具体比赛:

表 2 示例盘口的原始倒数合计
结果赔率1 / odds
主胜2.100.4762
平局3.400.2941
客胜3.600.2778
合计1.0481

1.0481。 多出来 0.0481,也就是 4.81%。 这不是四舍五入的锅——保留再多小数位它也不会收敛到 1。 这多出来的部分有个正式名字:过轮(overround), 英美市场也叫 vigorish 或 the vig,中文盘口习惯说“水位”“抽水”。

OR= i=1k 1di 1
(2)

k 为互斥结果的路数(足球三路即 k=3)。 OR 大于 0 是常态;等于 0 意味着庄家不赚钱; 小于 0 意味着套利窗口(arbitrage),在同一家庄那里几乎不会出现。

为什么必须超过 100%

如果三路倒数刚好合计 1.0000,那么按倒数比例分别下注三条路, 无论比赛结果如何,收回的钱都正好等于本金——庄家白忙。 要盈利,庄家必须让每一路的报价都比它认为的真实概率略高一点, 于是合计必然超过 1。过轮不是庄家的失误,是庄家的商业模式。

本节要点

赔率倒数是报价,不是概率。三路倒数合计 1.0481, 说明这份报价里含 4.81% 的庄家利润。 直接把 47.62% 当成“主队赢的概率”拿去和模型输出比较, 比较的两个数字量纲根本不同。

3 归一化:把过轮摊掉

既然三路倒数合计 1.0481 而真实概率必须合计 1.0000,那最朴素的修正办法是: 每一路都除以那个合计。这个操作叫归一化(normalization), 在盘口分析里也叫按比例剔除过轮(proportional de-vigging)。

qi = 1/di j=1k 1/dj
(3)

分子是这一路的原始倒数,分母是全部路数倒数之和(即 1 + OR)。 结果 qi 合计必然为 1,可称为报价概率—— 庄家报价所隐含的、已剔除利润的概率。

对表 2 的盘口套用公式 (3),分母就是 1.0481:

表 3 归一化前后对照(分母 = 1.0481)
结果赔率 原始 1/d归一化 q百分比
主胜2.100.47620.454345.43%
平局3.400.29410.280628.06%
客胜3.600.27780.265026.50%
合计1.04811.0000100.00%

47.62% 变成了 45.43%。 差 2.18 个百分点。 如果你的模型给主胜算出 46%,那么:拿它去和 47.62% 比, 结论是“模型比盘口保守,不该下注”; 拿它去和 45.43% 比,结论反过来——“模型比盘口乐观 0.57pp”。 同一个模型,同一个盘口,因为对照物选错,结论完全相反。

按比例归一化的已知缺陷

公式 (3) 假设庄家把利润按倒数比例平摊到每一路。 实证研究普遍发现事实并非如此:冷门一路往往被加价更多,这个现象叫 最爱—冷门偏差(favourite–longshot bias)。 因此还有若干替代方案,例如按对数比例剔除、Shin 模型、幂率法等。 按比例归一化是这些方法里最简单的一个,也是把它当近似值而非真值的理由。 本文用它是因为它只需除法;一旦你要把报价概率写进真金白银的决策,就该做偏差校正。

4 过轮藏在哪一路

4.81% 的过轮被摊掉之后,具体从哪一路身上刮下来了多少?把表 3 的两列相减:

表 4 逐路被高估的幅度(原始 − 归一化)
结果原始 1/d归一化 q高估幅度
主胜0.47620.4543+2.18 pp
平局0.29410.2806+1.35 pp
客胜0.27780.2650+1.27 pp
合计(= 过轮)+4.81 pp

注意一个结构性事实:赔率越低的那一路,被高估的绝对值越大。 主胜 2.10 吃掉 2.18pp,客胜 3.60 只吃掉 1.27pp。 这是按比例归一化的必然结果——每一路都被同一个因子放大, 基数大的自然被放大得多。所以“只看热门路”的人受过轮影响最重。

反过来看,同样一组真实概率,庄家在不同过轮水平下会报出什么价? 取真实概率 48% / 27% / 25%,逐档加价再取倒数:

表 5 真实概率 48%/27%/25% 在不同过轮下的报价
过轮主胜赔率平局赔率客胜赔率市场类型
2.00%2.043.633.92交易所 / 顶级市场
5.00%1.983.533.81主流庄家
8.00%1.933.433.70零售盘口
12.00%1.863.313.57高抽水 / 小众联赛

主胜从 2.04 掉到 1.86,跌了 8.8%,而真实概率一动没动。 这解释了一个常被误读的现象:不同平台同一场比赛赔率不同, 大部分时候不是因为它们对胜负判断不同,而是因为抽水不同。 比较两家平台谁“更看好主队”,必须先各自归一化再比。

本节要点

过轮按比例摊派,热门路承担的绝对幅度最大。 跨平台比较赔率高低毫无意义,必须先剔除各自的过轮。 从 2% 到 12% 的过轮差异,能让同一场比赛的主胜赔率相差近 9%。

5 盈亏平衡命中率

现在把视角从“庄家在想什么”切换到“我需要多准”。 公式 (1) 其实已经给出答案,只是要反过来读: 1 / d 就是这个赔率对应的盈亏平衡命中率 (break-even hit rate)。低于它,长期必亏;高于它,长期才赚。

表 6 各档赔率的盈亏平衡命中率
赔率盈亏平衡命中率含义
1.5066.67%三场对两场都还只是打平
2.0050.00%必须真的比掷硬币准
2.5040.00%五场对两场打平
3.4029.41%约三成半即可
4.0025.00%四场对一场打平

这张表把一件事讲得很直白:命中率单独看毫无意义。 一个 65% 命中率的策略如果专挑 1.50 的热门,它是亏的; 一个 30% 命中率的策略如果专挑 4.00 的冷门,它是赚的。 只报命中率不报平均赔率的战绩,等于没报。

这里有一条和 IN-01 的连线

前一篇讲的多数类基线是 42.05%——“永远押主胜”在那份数据上的命中率。 查表 6:42.05% 的命中率对应的盈亏平衡赔率是 1 / 0.4205 ≈ 2.38。 也就是说,只有当主胜赔率普遍高于 2.38 时, “永远押主胜”这个笨策略才可能赚钱。而现实中热门主队的报价常在 1.60–2.20 区间。 基线在准确率上很难打败,在盈亏上却几乎必输—— 这正是“评估指标必须和决策目标对齐”的具体含义。

6 从优势到期望值

最后一步:把模型概率和报价概率放到一起,算出该不该下注。 两者之差叫优势(edge),而衡量盈亏的量是期望值(EV):

EV= p(d1) (1p) , edge=pq
(4)

p 是你的模型概率,q 是归一化后的报价概率, d 是赔率。EV 单位是“每 1 单位注码的净收益”。 EV > 0 才值得下注。

假设你的模型对表 2 那场比赛给出 55% / 24% / 21%。逐路算:

表 7 模型概率 vs 报价概率,与逐路期望值
结果赔率 模型 p报价 q 优势EV / 单位注
主胜2.100.550.4543+0.0957+0.1550
平局3.400.240.2806−0.0406−0.1840
客胜3.600.210.2650−0.0550−0.2440

只有主胜一路是正的:优势 +9.57pp, 对应每 1 单位注码期望净赚 0.1550,即 +15.5%。 另两路都是负期望——不是“赢面小”,是报价已经把那点赢面吃干了

优势与 EV 不成正比

注意平局的优势是 −0.0406,客胜是 −0.0550,差 1.44pp; 但 EV 分别是 −0.1840 与 −0.2440,差 6.00pp——放大了四倍多。 原因在公式 (4) 里:优势要乘上赔率才变成 EV, 粗略地说 EV ≈ edge × d。 所以高赔率一路的判断误差,对盈亏的杀伤力被赔率倍数放大。 模型在冷门上的校准精度,比在热门上更值钱,也更危险。

本节要点

下注决策链条只有四步:赔率取倒数 → 三路归一化 → 与模型概率相减得优势 → 乘赔率得 EV。 跳过第二步,优势的正负号可能整个反过来。 而 EV 对高赔率一路的敏感度是低赔率的数倍。

7 复算代码

本文所有数字都出自下面这段纯标准库 Python,不依赖任何第三方包。 保存为 odds.py 直接 python odds.py 即可。

Python 3
def implied(dec):
    """十进制赔率 -> 原始隐含概率"""
    return 1.0 / dec

def devig(decs):
    """按比例剔除过轮:返回 (原始, 合计, 归一化)"""
    raw = [implied(d) for d in decs]
    s = sum(raw)
    return raw, s, [r / s for r in raw]

book  = [2.10, 3.40, 3.60]      # 主 / 平 / 客
names = ["主胜", "平局", "客胜"]

raw, s, q = devig(book)
print("过轮 overround = %.2f%%" % ((s - 1) * 100))
for n, d, r, p in zip(names, book, raw, q):
    print("%s odds=%.2f raw=%.4f norm=%.4f 高估=%+.2fpp"
          % (n, d, r, p, (r - p) * 100))

model = [0.55, 0.24, 0.21]      # 你的模型输出
print()
for n, d, mp, bp in zip(names, book, model, q):
    ev = mp * (d - 1) - (1 - mp)
    print("%s edge=%+.4f EV=%+.4f 盈亏平衡命中率=%.2f%%"
          % (n, mp - bp, ev, implied(d) * 100))

代码 1 赔率 → 隐含概率 → 归一化 → 优势与期望值

运行输出(本文表 3、表 4、表 6、表 7 的数字来源):

stdout
过轮 overround = 4.81%
主胜 odds=2.10 raw=0.4762 norm=0.4543 高估=+2.18pp
平局 odds=3.40 raw=0.2941 norm=0.2806 高估=+1.35pp
客胜 odds=3.60 raw=0.2778 norm=0.2650 高估=+1.27pp

主胜 edge=+0.0957 EV=+0.1550 盈亏平衡命中率=47.62%
平局 edge=-0.0406 EV=-0.1840 盈亏平衡命中率=29.41%
客胜 edge=-0.0550 EV=-0.2440 盈亏平衡命中率=27.78%

代码 2 实际运行结果,与正文数字逐位一致

8 写在最后

本文没有推翻任何东西。1 / d 这个式子是对的, 它只是回答了一个和大家以为的不同的问题——它给出的是报价, 不是概率。这两者之间隔着庄家的利润,在示例盘口里是 4.81%, 足以让“模型比盘口乐观还是保守”这个判断整个翻转。

这与 IN-01 是同一个错误的两种形态。上一篇里, 模型的 51.79% 之所以被高看,是因为对照物选成了“瞎猜 33%”而不是“永远押主胜 42.05%”; 这一篇里,模型的优势之所以被误判,是因为对照物选成了未归一化的 47.62% 而不是 45.43%。 两次都不是模型的问题,是对照物的问题。 评估里最容易出错的从来不是被评估的那个东西,而是你拿它去比的那个东西。

本站立场

我们在文中反复标注示例盘口“不代表任何具体比赛”, 原因是本文要讲的是算术恒等式,而恒等式不需要真实盘口来证明: 任意三个正赔率取倒数求和再各自除以和,结果必然合计为 1,与是哪场球无关。 反过来说,凡是声称“用历史盘口回测出了 X% 收益”的结论, 都必须交出数据来源、时间窗口、下注规则与手续费假设——那属于另一类文章, 而本文刻意不涉及。能用恒等式说清的事,不该借回测数字来撑场面。

一句话

赔率倒数是报价,不是概率;三路加起来超过 1 的那部分是庄家的利润。 归一化之后再和模型比,才是在比同一件事。

参考文献

  1. Cortis, D. Expected Values and Variances in Bookmaker Payouts: A Theoretical Approach towards Setting Limits on Odds. Journal of Prediction Markets, 2015, 9(1), 1–14. (过轮与庄家赔付结构的理论推导)
  2. Shin, H. S. Measuring the Incidence of Insider Trading in a Market for State-Contingent Claims. The Economic Journal, 1993, 103(420), 1141–1153. (Shin 模型:按比例归一化之外的过轮剔除方法)
  3. Thaler, R. H.; Ziemba, W. T. Anomalies: Parimutuel Betting Markets — Racetracks and Lotteries. Journal of Economic Perspectives, 1988, 2(2), 161–174. (最爱–冷门偏差的经典实证综述)
  4. Štrumbelj, E. On determining probability forecasts from betting odds. International Journal of Forecasting, 2014, 30(4), 934–943. (各类去过轮方法的对比评估)
  5. Kelly, J. L. A New Interpretation of Information Rate. Bell System Technical Journal, 1956, 35(4), 917–926. (期望值为正之后的注码规模问题)
  6. 本站 IN-01:《你的模型真的比“永远猜主胜”强吗?》 baseline-vs-majority-class.html (多数类基线 42.05% 的出处,本文 §5 引用)

本文正文中的赔率 2.10 / 3.40 / 3.60 及真实概率 48% / 27% / 25% 均为示例数值,用于演示算术流程,不对应任何具体比赛或平台报价。 表 1 至表 7 的全部计算结果由 §7 代码 1 实际运行产生, 代码 2 的输出为该脚本真实 stdout,读者可自行复算逐位核对。

本文是一篇概率与评估方法论说明, 目的在于讲清赔率与概率的量纲差别,不构成任何投注建议。 足球比赛结果具有高度不确定性,任何预测模型都无法保证盈利。