赔率 2.10 是不是就等于 47.6% 的概率?
这是所有人第一次看盘口时都会做的运算:1 ÷ 2.10 = 47.62%。 看起来天衣无缝——赔率越低,概率越高。问题出在下一步:把同一场比赛主、平、客三路的倒数加起来, 得到的不是 1.0000,而是 1.0481。 多出来的 4.81% 不是计算误差,是庄家写进报价里的利润,行话叫过轮(overround)。 也就是说,那个 47.62% 从来不是“主队赢的概率”, 而是“主队赢的概率 + 庄家分摊到这一路上的抽水”。摊掉之后只剩 45.43%。 本文把这条链路一步一步走完:从倒数到过轮,从过轮到归一化, 再到盈亏平衡命中率——你的模型必须多准,才配得上这个赔率。 全程只需加减乘除,每个数字都可以用文末代码复算。
1 一个赔率,一个倒数
欧洲十进制赔率(decimal odds)的定义极其干净:它是你押 1 个单位、猜中之后总共拿回多少。 注意是“拿回”,含本金。赔率 2.10 意味着押 1 块,中了收回 2.10 块——净赚 1.10 块;没中,那 1 块归庄家。
从这个定义可以直接倒推出一个概率。假设这笔投注长期下来既不赚也不亏, 那么“中的次数 × 净赚”应该刚好等于“没中的次数 × 亏掉的本金”。 设中的概率为 p,赔率为 d:
左边是赢的时候的净收益期望,右边是输的时候的净损失期望。两边相等即长期打平,解出来 p 就是赔率的倒数。这个 p 有个专名:隐含概率(implied probability)。
于是有了那个人人都会的动作——取倒数:
| 十进制赔率 | 1 / odds | 隐含概率 | 直觉描述 |
|---|---|---|---|
| 1.50 | 0.6667 | 66.67% | 三次里赢两次以上才划算 |
| 2.00 | 0.5000 | 50.00% | 掷硬币,行话叫“平半” |
| 2.50 | 0.4000 | 40.00% | 五次里赢两次 |
| 3.40 | 0.2941 | 29.41% | 典型的平局报价 |
| 4.00 | 0.2500 | 25.00% | 四次里赢一次 |
| 10.00 | 0.1000 | 10.00% | 冷门 |
给定十进制赔率 d,其原始隐含概率为 1 / d。 它回答的问题是:“若这笔投注长期零收益,中奖率必须是多少”。 它不回答“这件事真实发生的概率是多少”。两者的差距就是本文剩下七节要讲的东西。
2 三路加起来超过 100%
单看一路赔率,倒数这个动作毫无破绽。破绽在把一场比赛的三条路放在一起看的时候才暴露。 一场足球比赛的结果只有三种:主胜、平局、客胜。这三件事互斥且穷尽, 所以它们的真实概率加起来必须正好是 1——这是概率论的公理,不是约定。
拿一个典型的三路盘口来试。以下赔率为示例数值,用于演示算术,不代表任何具体比赛:
| 结果 | 赔率 | 1 / odds |
|---|---|---|
| 主胜 | 2.10 | 0.4762 |
| 平局 | 3.40 | 0.2941 |
| 客胜 | 3.60 | 0.2778 |
| 合计 | 1.0481 | |
1.0481。 多出来 0.0481,也就是 4.81%。 这不是四舍五入的锅——保留再多小数位它也不会收敛到 1。 这多出来的部分有个正式名字:过轮(overround), 英美市场也叫 vigorish 或 the vig,中文盘口习惯说“水位”“抽水”。
k 为互斥结果的路数(足球三路即 k=3)。 OR 大于 0 是常态;等于 0 意味着庄家不赚钱; 小于 0 意味着套利窗口(arbitrage),在同一家庄那里几乎不会出现。
如果三路倒数刚好合计 1.0000,那么按倒数比例分别下注三条路, 无论比赛结果如何,收回的钱都正好等于本金——庄家白忙。 要盈利,庄家必须让每一路的报价都比它认为的真实概率略高一点, 于是合计必然超过 1。过轮不是庄家的失误,是庄家的商业模式。
赔率倒数是报价,不是概率。三路倒数合计 1.0481, 说明这份报价里含 4.81% 的庄家利润。 直接把 47.62% 当成“主队赢的概率”拿去和模型输出比较, 比较的两个数字量纲根本不同。
3 归一化:把过轮摊掉
既然三路倒数合计 1.0481 而真实概率必须合计 1.0000,那最朴素的修正办法是: 每一路都除以那个合计。这个操作叫归一化(normalization), 在盘口分析里也叫按比例剔除过轮(proportional de-vigging)。
分子是这一路的原始倒数,分母是全部路数倒数之和(即 1 + OR)。 结果 qi 合计必然为 1,可称为报价概率—— 庄家报价所隐含的、已剔除利润的概率。
对表 2 的盘口套用公式 (3),分母就是 1.0481:
| 结果 | 赔率 | 原始 1/d | 归一化 q | 百分比 |
|---|---|---|---|---|
| 主胜 | 2.10 | 0.4762 | 0.4543 | 45.43% |
| 平局 | 3.40 | 0.2941 | 0.2806 | 28.06% |
| 客胜 | 3.60 | 0.2778 | 0.2650 | 26.50% |
| 合计 | 1.0481 | 1.0000 | 100.00% | |
47.62% 变成了 45.43%。 差 2.18 个百分点。 如果你的模型给主胜算出 46%,那么:拿它去和 47.62% 比, 结论是“模型比盘口保守,不该下注”; 拿它去和 45.43% 比,结论反过来——“模型比盘口乐观 0.57pp”。 同一个模型,同一个盘口,因为对照物选错,结论完全相反。
公式 (3) 假设庄家把利润按倒数比例平摊到每一路。 实证研究普遍发现事实并非如此:冷门一路往往被加价更多,这个现象叫 最爱—冷门偏差(favourite–longshot bias)。 因此还有若干替代方案,例如按对数比例剔除、Shin 模型、幂率法等。 按比例归一化是这些方法里最简单的一个,也是把它当近似值而非真值的理由。 本文用它是因为它只需除法;一旦你要把报价概率写进真金白银的决策,就该做偏差校正。
4 过轮藏在哪一路
4.81% 的过轮被摊掉之后,具体从哪一路身上刮下来了多少?把表 3 的两列相减:
| 结果 | 原始 1/d | 归一化 q | 高估幅度 |
|---|---|---|---|
| 主胜 | 0.4762 | 0.4543 | +2.18 pp |
| 平局 | 0.2941 | 0.2806 | +1.35 pp |
| 客胜 | 0.2778 | 0.2650 | +1.27 pp |
| 合计(= 过轮) | +4.81 pp | ||
注意一个结构性事实:赔率越低的那一路,被高估的绝对值越大。 主胜 2.10 吃掉 2.18pp,客胜 3.60 只吃掉 1.27pp。 这是按比例归一化的必然结果——每一路都被同一个因子放大, 基数大的自然被放大得多。所以“只看热门路”的人受过轮影响最重。
反过来看,同样一组真实概率,庄家在不同过轮水平下会报出什么价? 取真实概率 48% / 27% / 25%,逐档加价再取倒数:
| 过轮 | 主胜赔率 | 平局赔率 | 客胜赔率 | 市场类型 |
|---|---|---|---|---|
| 2.00% | 2.04 | 3.63 | 3.92 | 交易所 / 顶级市场 |
| 5.00% | 1.98 | 3.53 | 3.81 | 主流庄家 |
| 8.00% | 1.93 | 3.43 | 3.70 | 零售盘口 |
| 12.00% | 1.86 | 3.31 | 3.57 | 高抽水 / 小众联赛 |
主胜从 2.04 掉到 1.86,跌了 8.8%,而真实概率一动没动。 这解释了一个常被误读的现象:不同平台同一场比赛赔率不同, 大部分时候不是因为它们对胜负判断不同,而是因为抽水不同。 比较两家平台谁“更看好主队”,必须先各自归一化再比。
过轮按比例摊派,热门路承担的绝对幅度最大。 跨平台比较赔率高低毫无意义,必须先剔除各自的过轮。 从 2% 到 12% 的过轮差异,能让同一场比赛的主胜赔率相差近 9%。
5 盈亏平衡命中率
现在把视角从“庄家在想什么”切换到“我需要多准”。 公式 (1) 其实已经给出答案,只是要反过来读: 1 / d 就是这个赔率对应的盈亏平衡命中率 (break-even hit rate)。低于它,长期必亏;高于它,长期才赚。
| 赔率 | 盈亏平衡命中率 | 含义 |
|---|---|---|
| 1.50 | 66.67% | 三场对两场都还只是打平 |
| 2.00 | 50.00% | 必须真的比掷硬币准 |
| 2.50 | 40.00% | 五场对两场打平 |
| 3.40 | 29.41% | 约三成半即可 |
| 4.00 | 25.00% | 四场对一场打平 |
这张表把一件事讲得很直白:命中率单独看毫无意义。 一个 65% 命中率的策略如果专挑 1.50 的热门,它是亏的; 一个 30% 命中率的策略如果专挑 4.00 的冷门,它是赚的。 只报命中率不报平均赔率的战绩,等于没报。
前一篇讲的多数类基线是 42.05%——“永远押主胜”在那份数据上的命中率。 查表 6:42.05% 的命中率对应的盈亏平衡赔率是 1 / 0.4205 ≈ 2.38。 也就是说,只有当主胜赔率普遍高于 2.38 时, “永远押主胜”这个笨策略才可能赚钱。而现实中热门主队的报价常在 1.60–2.20 区间。 基线在准确率上很难打败,在盈亏上却几乎必输—— 这正是“评估指标必须和决策目标对齐”的具体含义。
6 从优势到期望值
最后一步:把模型概率和报价概率放到一起,算出该不该下注。 两者之差叫优势(edge),而衡量盈亏的量是期望值(EV):
p 是你的模型概率,q 是归一化后的报价概率, d 是赔率。EV 单位是“每 1 单位注码的净收益”。 EV > 0 才值得下注。
假设你的模型对表 2 那场比赛给出 55% / 24% / 21%。逐路算:
| 结果 | 赔率 | 模型 p | 报价 q | 优势 | EV / 单位注 |
|---|---|---|---|---|---|
| 主胜 | 2.10 | 0.55 | 0.4543 | +0.0957 | +0.1550 |
| 平局 | 3.40 | 0.24 | 0.2806 | −0.0406 | −0.1840 |
| 客胜 | 3.60 | 0.21 | 0.2650 | −0.0550 | −0.2440 |
只有主胜一路是正的:优势 +9.57pp, 对应每 1 单位注码期望净赚 0.1550,即 +15.5%。 另两路都是负期望——不是“赢面小”,是报价已经把那点赢面吃干了。
注意平局的优势是 −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 即可。
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 的数字来源):
过轮 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 的那部分是庄家的利润。 归一化之后再和模型比,才是在比同一件事。
参考文献
- 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. (过轮与庄家赔付结构的理论推导)
- 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 模型:按比例归一化之外的过轮剔除方法)
- Thaler, R. H.; Ziemba, W. T. Anomalies: Parimutuel Betting Markets — Racetracks and Lotteries. Journal of Economic Perspectives, 1988, 2(2), 161–174. (最爱–冷门偏差的经典实证综述)
- Štrumbelj, E. On determining probability forecasts from betting odds. International Journal of Forecasting, 2014, 30(4), 934–943. (各类去过轮方法的对比评估)
- Kelly, J. L. A New Interpretation of Information Rate. Bell System Technical Journal, 1956, 35(4), 917–926. (期望值为正之后的注码规模问题)
- 本站 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,读者可自行复算逐位核对。
本文是一篇概率与评估方法论说明, 目的在于讲清赔率与概率的量纲差别,不构成任何投注建议。 足球比赛结果具有高度不确定性,任何预测模型都无法保证盈利。