返回博客

MuchSci-对话+智能体+编程|我让 AI 写了个竞彩预测模型:240 场回测 + 5 轮实战,结果让我冷静了

01 朋友天天晒红单,我决定用数据说话 事情起因是同学群。上个月开始,有个老同学每天在群里晒竞彩红单,两天红一天黑,红的时候特别高调,黑的时候装没看见。我问他总体赚了没,他回我一句"别算账,算账就没意思了"。这话我熟——所有不肯算账的事情,账一般都不太好看。 我没急着反驳他。正好,这是我手上 MuchSci「编程」功能

AI AgentAI 办公助手智能体AI办公助手办公助手

01 朋友天天晒红单,我决定用数据说话

事情起因是同学群。上个月开始,有个老同学每天在群里晒竞彩红单,两天红一天黑,红的时候特别高调,黑的时候装没看见。我问他总体赚了没,他回我一句"别算账,算账就没意思了"。这话我熟——所有不肯算账的事情,账一般都不太好看。

我没急着反驳他。正好,这是我手上 MuchSci「编程」功能还没正经测过的场景:让 AI 写一个像样的赛事预测模型,用公开赛果回测,再纸上跟几轮,看看"AI 预测足球"这件事的真实成色。数据是公开的,模型是教科书级的,结论不用猜,跑一遍就知道。

▲ 图 1|把问题交给 MuchSci,把时间还给研究——这次我的"问题"是:一个泊松模型,到底能不能赢过瞎猜

先把立场写在最前面:这篇不教人买彩票,全程纸上模拟,我没有花一分钱。这篇要回答的问题只有一个——AI 写出来的预测模型,到底是个什么水平。答案在第四节,不太体面,但很值钱。

02 让 AI 写个泊松模型:10 分钟出第一版

数据用的是公开渠道能查到的英超 2025-26 赛果:每场一行,主队、客队、主队进球、客队进球。我把 CSV 丢进对话,要求写得明确:用两队近 10 场的场均进失球算进攻/防守强度,推出各自的预期进球 λ,再用泊松分布算出 0:0 到 6:6 每个比分的概率,汇总成胜平负三向概率。

10 分钟出了第一版脚本,跑得挺快——然后我就发现它错了。它把"主队进球"和"客队失球"当成两个独立信息重复计了一次强度,λ 双重计入,主胜概率全部飘在 70% 以上。我把口径写成注释让它重跑,第二版才正常。

▲ 图 2|泊松模型的核心输出:主队预期进球 λ=1.8,最可能的单场进球数是 1 和 2;客队 λ=1.1,最可能是 1。整场比赛每个比分的概率,就是这两条分布相乘算出来的

这个分布有什么用?把主队进 k 球的概率和客队进 j 球的概率相乘,就得到每一个比分的概率;再把所有主队进球多的比分加起来,就是主胜概率。听起来很粗糙——它确实粗糙,足球不是独立事件的红白球——但它是所有赛事模型的起点,足够当这次实测的主角。

▲ 图 3|模型对一场比赛的输出:主胜 53%、平局 22%、客胜 25%。最扎心的是底部那行——市场赔率 1.88 隐含的主胜概率也是 53%,模型和市场想到一块去了

模型能算出"谁更可能赢",算不出"赔率有没有给够"——而后者才决定你能不能赚钱。

第三张图是整个实测里我最意外的一张。我以为模型算出来的概率会是独家情报,结果它和市场赔率几乎重合。赔率是全市场真金白银投出来的概率,一个用进失球平均数搭起来的泊松模型能跟它对上大方向,说明模型"没毛病";但也说明,它知道的,市场早就知道了。

03 回测 240 场:比瞎猜强,但没强过市场

光看一场不算数。我让 AI 加了个回测脚本:把 2025-26 赛季前 240 场按时间顺序喂给模型——每场只用之前的历史数据算 λ,输出三向概率,取概率最高的一项当预测,跟真实赛果对答案。怕有运气成分,同一套流程我让它跑了三遍取平均:

▲ 图 4|240 场回测:纯随机命中 33%(79 场),泊松模型 47%(113 场),市场赔率隐含 51%(122 场)。模型比瞎猜强 14 个百分点——但离"能赚钱"还差着关键的一截

47% 这个数字怎么读?好消息:它明显高于瞎猜的 33%,说明模型确实从数据里学到了东西。坏消息有两层:一是离市场还差 4 个点——赔率里集合了伤停、状态、赛程动机这些我模型里没有的信息;二是 47% 的命中配上竞彩的赔率结构,大概率是亏的,这个第四节用真数据验证。

回测之外,我让它把每轮预测整理成一份报告,模拟实际使用的样子,长这样:

▲ 图 5|每轮跑出来的预测报告(界面为示意,结论按回测与模拟记录整理)

这个报告我最看重的是侧栏那行小字:它只能看到赛果数据,看不到世界。足球比赛的结果里藏着大量模型永远拿不到的信息——谁受伤了、谁在保级、谁下周要打欧战把主力歇了。市场赔率之所以难赢,就是因为这些东西全被买进价格里了。

04 纸上实战 5 轮:命中率 48%,收益 -7.8%

回测是历史,实战才是照妖镜。规矩定好:每轮从模型输出里挑置信度最高的 5 场,每场纸上 10 元,按竞彩当期赔率记账,跟 5 轮共 25 场。不碰真钱,全按真实赔率算:

▲ 图 6|5 轮纸上跟单的累计收益率:第 1 轮 +12% 飘了,第 3 轮连错三场高赔直接砸到 -21%,最终收在 -7.8%。25 场命中 12 场(48%),钱是负的(示意记录,赔率按当期官网)

过程比结果有意思。第 1 轮 3 中 1 小亏变盈利,账面 +12%,我差点就把"模型靠谱"写进标题了。然后是第 3 轮:三场 2.3 以上赔率的"高价值场次"全黑,一夜回到解放前。复盘账本发现一个特别工整的规律——命中的全是 1.5 到 1.7 的低赔,亏掉的全是 2.3 以上的高赔。模型看对比赛的次数不少,可惜看对的那几场,赔率都没给够。

这不是模型不行,是数学不行:竞彩的赔率里已经抽走了返还率,命中 48% 配上这个赔率结构,长期期望就是负的。我同学两个月"看起来在红",把黑的那些天算进去,大概率跟我这本账一个颜色。这也是我把这篇写出来的真正原因——模型把"感觉"变成了"概率",概率把幻想变成了账本,账本是冷的。

05 先说清楚:这几个地方它真的帮不上忙

五轮跑完,把三个硬限制摆在台面上。

① 它看不到新闻,只看得见赛果。模型的世界里只有比分,没有伤停、轮换、保级动机。5 轮里两次明显的翻车,都是主力门将缺阵这种"赛前新闻一目了然、赛果表里永远没有"的信息。想补这一块,得自己加数据源,工程量翻几倍。

② 数据要自己找、自己洗。公开赛果好找,但口径很乱:有的源把中立场算成主队,杯赛和联赛混在一起,加时算平局还是分胜负各说各话。第一版脚本就是在"客队失球重复计入"这种口径问题上翻的车。洗数据花的时间,比写模型多。

③ 它给的是概率,不是答案。47% 命中意味着超过一半的场次模型是错的。连对 5 场之后,接下来大概率是均值回归,不是"手感来了"。把模型的输出当成"今晚买哪场"的答案,是对它最严重的误用——它只能告诉你一件事在多大比例上发生,不能告诉你这一次发不发生。

那这东西到底什么时候值得用?结论直接放这里:

✓ 值得用的场合:想系统练"数据分析 + 让 AI 写模型"的人——足球赛果数据公开、免费、样本量大、答案马上揭晓,是练回测方法的好题材。这篇里用的泊松、回测、口径核对,换到销量预测、用户留存上一样能用。

✗ 不适合的场合:想靠它稳赚的人——模型不比市场聪明,赔率长期抽水,期望为负是数学不是观点;以及想问"今晚买哪场"的人——这篇没有答案,也不应该有。命中率和收益率是两回事,这篇 48% 对 -7.8% 就是证据。

如果只给一句实际建议:把彩票当娱乐预算,把模型当练习题。这五轮我最大的收获不是那本亏 7.8% 的账,是我现在能一眼看出"某某 AI 预测胜率 90%"这类话术的问题出在哪——回测区间没说、样本量没说、赔率结构没说。数据素养这东西,练一次就值回票价。

合规与边界声明

1. 本文全程纸上模拟,未进行任何真实投注,文中金额为模拟记账。

2. 文中模型、概率与"预测"均不构成任何投注建议;彩票长期回报期望为负,请把它当娱乐消费。

3. 未满 18 周岁不得购彩。理性购彩,量力而行。

赛果与赔率为公开渠道信息整理,回测与跟单数据为示意呈现,模型输出以实际脚本运行为准。功能描述以当期版本为准。

---

本文为个人使用流程记录。竞彩预测模型基于公开赛果数据构建,仅用于演示"数据 → 模型 → 回测"的分析方法,不构成任何投注建议或收益承诺;文中回测与实战数据为示意呈现,全程纸上模拟、未真实投注。彩票长期回报期望为负,未满 18 周岁不得购彩,理性购彩、量力而行。功能描述以当期版本为准。

返回博客列表