预测示例
下面 5 张卡片的每一行都对应 data/clean/features.csv 里的一条真实记录
(split = test,2023/24 赛季)。三路概率不是手填的:由项目自己的赛前因子链
prematch_lambdas() 与 outcome_probabilities() 现场算出,
ρ 取 reports/metrics.json 的 config.factor_rho = -0.05。
市场概率直接取同一行的 market_home / market_draw / market_away(已去水)列。
这不是「挑最好看的 5 场」。
5 条样本按联赛分散挑选(英超 ×2、西甲、意甲、德甲),刻意保留了 2 条未命中,
其中 1 条模型给出客胜。挑选方式是固定行号而非按命中筛选,可原样复现;
但它不是随机抽样,不能代表整体命中率。
整体命中率见首页 50.63%(n = 6498,95% CI 49.42%–51.85%)。
5 条真实历史样本
这张表怎么读
三路概率
模型是本项目赛前因子链输出的主胜/平局/客胜概率, 市场是同一场比赛去水后的收盘赔率隐含概率(优先级 Pinnacle → Bet365 → 其他 → 平均)。 金色边框标出的是该行概率最高的一路,也就是「模型选择的结论」。
λ 与输入
每张卡片底部列出该行真实的 pre_lam 派生结果(两个剩余进球强度 λ)与进入 L2 的
关键输入:双方 Elo、滚动 10 场 xG 均值、近况、休息天数、联赛场均进球。
这些值就是 features.csv 对应列的原值。
命中 / 未命中
命中判定只看「概率最高的那一路」是否等于实际赛果,不考虑赔率与收益。 注意:命中率高不等于赚钱 —— RPS 更低只代表概率更准, 不代表扣除赔率后为正收益。
市场也常常同样结论
这 5 场里模型的 5 次选择与市场全部一致(都选同一路)。这不是巧合: 测试集上市场基线的命中率 51.86% 高于因子链的 50.63%。 模型真正的价值只能靠样本外增量证明,不能只看这几张卡片。
复现方式
示例页由脚本生成,不手填任何概率。改行号或重跑都会得到同一份结果:
| 命令 | 作用 |
|---|---|
| 'E:\寒霜工作台\Python 三\app\python.exe' tools\make_examples.py --list | 列出 test 集候选样板(含模型/市场结论与命中) |
| ... tools\make_examples.py --emit | 写出 assets/examples.json |
| ... tools\make_examples.py --emit --render | 同时重新生成本页 examples.html |
⚠️ 运行前请先备份 examples.html:脚本会用生成结果整页覆盖它。