足球预测是把一场比赛拆成可量化的输入、再由模型把这些输入压成三个概率的过程。进去的是四类数据——赛程与赛果、表现数据、阵容与可用性、市场报价;模型用它们估出两队各自的期望进球数,把这两个数字展开成每一个可能比分的概率,再把比分归并成三个数:主胜、平局、客胜,三者相加等于 100%。这三个数字描述的是「同样的条件重复很多次会怎样」,而不是眼前这一场会怎样。发布之后到结算之前,首发会公布、价格会变,所以一条预测只有带着发布时间戳和当时的标价,才谈得上可核验。下面把这条流水线从头到尾拆一遍。
第一步:四类输入
赛程与赛果。 谁对谁、主场还是客场、哪一天、上次打成什么样。这是最容易拿到的一层,也是每一个看球的人都已经看过的一层。单靠它,定不出任何还没被定进价格里的东西。
表现数据。 射门、射正、预期进球、控球、区域推进、定位球数量。它们描述的是一支球队实际踢成什么样,而不是记分牌最后停在哪。一场比赛每队大约十到十五脚射门,所以单场数字是建立在极少事件上的估计;要稳下来,得放到十到十五场的窗口上看。
阵容与可用性。 伤病、停赛、轮换风险,以及最后的确认首发——在多数联赛里,首发在开赛前约六十分钟才公开。这是赛前价值最高的一项输入,同时也是可用窗口最短的一项。
市场报价。 每个结果的挂牌价格,持续更新。这一类输入和前三类在性质上不同:前三类描述这场比赛,第四类描述别人已经对这场比赛得出了什么结论。把两者混为一谈,是这个领域里最常见的分析错误。
第二步:模型怎么把输入压成三个概率
公开的足球模型不管还加了什么,基本都要经过三道工序。
- 1.先估每支球队的进球率。 模型给出九十分钟内的期望进球数——比如主队 1.55、客队 1.10——依据是表现数据,再按对手强弱、主客场和阵容状态做调整。
- 2.把进球率展开成比分分布。 假设进球在比赛时间里近似随机到达,用泊松类分布把这两个数字换成每一个比分的概率:0-0、1-0、2-1,依此类推。
- 3.把比分归并成结果。 所有「主队进球多于客队」的比分概率加总,就是主胜概率;平局和客胜同理。
拿 1.55 和 1.10 实际算一遍,得到的大约是主胜 48%、平局 25%、客胜 27%。把任何一个进球率改动十分之一个球,三个数字全都会动。这种敏感性正是重点:三个门面概率是两个估计的下游产物,整条预测的质量,就是那两个估计的质量。
第三步:概率不是对一场比赛的预告
48% 的主胜,不是在说「主队会赢」。它说的是:把这套条件重复很多次,其中接近 48% 会以主胜收场。而眼前这一场,只发生一次。
由此有两个后果,两个都经常被漏掉。
单一结果无法给一条预测打分。 主队没赢的那 52%,不是错误,它本来就是这个分布里被写明的多数。一场一场地给预测判对错,量到的是运气,叫出来的是水平。
三个数字里最大的那个不等于「预测」。 当分布是 40 / 30 / 30 时,最高的那一项也只是三件不太可能的事里最不那么不可能的一件。一个只报自己最看好那一项的模型,等于把它算出来的东西扔掉了大半。
真正能被打分的是校准:把某个模型标在 45%–50% 之间的所有条目收集起来,数一数其中实际发生了多少,看实现比例落不落在这个区间里。这个检验需要几百条样本,不是几条——背后的道理写在《AI 足球预测准吗》里。
第四步:发布之后到结算之前
一条预测是被发布进一个持续变动的世界里的。下面这条时间线,就是「时间戳不是形式主义」的原因。
| 阶段 | 典型时间 | 变动的东西 | 对已发布条目的影响 |
|---|---|---|---|
| 发布 | T | 暂时没有 | 概率与当时标价被钉死 |
| 首发公布 | 开赛前约 60 分钟 | 首发、临场伤情 | 模型会重算;已发布那条不改 |
| 开赛 | T0 | 赛前窗口关闭 | 条目就此对着现实锁定 |
| 比赛进行中 | 0–90+ 分钟 | 比分、红黄牌、换人 | 实时概率与赛前概率分叉 |
| 终场 | 约 T0 + 105 分钟 | 结果确定 | 结算依据出现 |
| 结算 | 终场之后 | 无 | 命中与未命中一起入账 |
这张表里最吃重的一句,是第一行的第四列:已发布的条目事后不会被编辑。我们的记录镜像到一个公开的 git 仓库——github.com/oddsflowai-team/clawsportbot-protocol/tree/main/record——提交历史本身就是防篡改的证据;结算完的条目,命中的和未命中的,一起排在公开预测记录上。这些计数每天随着比赛结算而变动。
怎么分辨「建模的预测」和「拍脑袋的预测」
五个问题,按区分力从高到低排。
- 1.有没有概率? 「我看好主队」里没有任何可以被校准检验的量。一个数字可以被证明是错的;一句观点连检验都无从谈起。
- 2.有没有对应的标价? 不带价格的概率,是对一场比赛的看法;对着价格的概率,是关于「分歧」的主张——而只有后者,在唯一重要的那个维度上可被证伪。两者之间的换算写在《足球赔率怎么看》里。
- 3.有没有发布时间戳,而且早于开赛? 拿它去比对既定开球时间,永远不要去比对终场哨。
- 4.未命中的条目在不在命中的同一个页面上? 只陈列赢的那一份,是宣传页面,不是记录。
- 5.结算口径事先写下来了吗? 走盘、半赢半输、比赛腰斩,都需要事先写明怎么记,否则计数可以在事后被调整。我们的口径写在《我们的胜率是怎么算出来的》里。
一条五关全过的预测,仍然可能在某一场上判断错误。而任何一关没过的预测,则根本无法被证明在任何事情上判断正确。
常见问题
足球预测最高能做到多准? 有天花板,而且这个天花板是由这项运动本身、而不是由模型决定的。足球进球稀少,单一事件的影响极大,所以任何一个结果里都有相当大一部分是不可压缩的噪声。诚实的目标是校准——让标 60% 的事真的以六成的频率发生——而不是在单场上追求高命中率。
为什么三个挂牌价格换算出来超过 100%? 因为挂牌价格在底层概率之上还带着报价方的抽水。把它剥掉是一道算术题,而不同的剥法在冷门一侧分歧最大——具体算法逐步写在《足球赔率怎么看:从标价到概率的深读》里。
模型比一个懂球的人更强吗? 单论读一场比赛,经常不是。但论「把读出来的东西表述成一个校准过的概率、对着一个实时价格、同时处理很多场、按一条固定规则、而且不会累」——是的,而在操作层面,只有这个比较能决定任何事情。