- name
- football-betting-prediction
- description
- 竞彩足球 / 体彩混合过关的赛事预测与出单方案设计,以及赛前临场复核、赛果回填与复盘。适用于胜平负/让球/比分/总进球/半全场及串关组合分析;含数据源停摆降级预案、负期望资金纪律与防编造铁律。
Triggers: "预测足彩", "竞彩", "足球预测", "足球比赛结果", "胜平负", "让球", "比分预测", "总进球", "半全场", "串关", "过关", "胆材", "混合过关", "投注方案", "临场复核", "出票前确认", "sporttery", "体彩".
# 竞彩足球混合过关预测 v5.10
> 更新日期:2026-09-16(常见比分赔率条件模板):新增 `skill/references/score-odds-template.md`,将1:0、0:1、2:0、2:1、0:2、1:2按胜平负热门赔率区间与形状族纳入比分预筛;历史条件频率只作基线,不得替代本场模型概率。
> 更新日期:2026-09-15(比分形状校准补强):方向与精确比分分离;强队零封集中、低估弱队进球、同形状候选伪分散纳入硬复盘字段;新增 `skill/references/score-calibration.md`,先影子比较 DC、freq-band 与校准混合链,样本达标前不替换生产概率源。
> 更新日期:2026-09-11(形状回测实证标注 ★ engine/scripts/research/shape_backtest.py·636 轮孪生票·fd 四季 16414 场 B365 收盘:①三形状(4串1/4串11/全2关-4)**期望回收率打平**(100.7~103.8%·配对差 CI 全跨 0·分季冠军轮换),真差异全在**方差**——容错族回款轮占比 96.8% vs 4串1 38.5%、连灭 1 vs 10、回撤减半:保底档 4串11 骨架实证=**同等回报下路径质量,非更高回报**;②选腿 α 唯一来源=**热度集中**(top4 vs 随机 +4.5~23pp·B365 超热腿系统性慷慨=favorite-longshot bias 强形式·全中率实测 38.5% vs 去水理论 21%),**B365 抽水 6.41% ≠ 体彩 12.9%,回收率绝对值禁外推体彩加注**——体彩价是否存活靠实盘 CLV 验证;③排除逻辑阶梯 v2:胶着排除 top4 口径 **0 触发冗余**、开季限1 市场口径**负贡献**(丢 34 开季赚钱轮·净额差 -244——纪律动机是模型保护(开季 DC 失真)不在市场口径废立范围)、超低赔通道 p≥0.55 下 **0 触发死代码**——两条零成本保险保留勿记功;④报告 data/04-summaries/2026-09-11-shape-backtest.html + shape-backtest-v2-report.json)
> 更新日期:2026-09-04(批次4 规则三条 · 审计修复设计 docs/2026-09-04-prediction-audit-fix-design.html:①轮次判定定式=insight gameweek 先查+standing 已赛场次一致性校验,ESPN 榜只做参考(当日法甲 ESPN 推 R4 实为 R3 靠 insight 勘定)②四星踩线(65~67%)+基面反向→降半档 ③保底腿全含于彩票档→必须算耦合概率(v5.1 条款补执行))
> 更新日期:2026-09-04(平局轨入轨第五条:`poolSingle.HAD=1` 单关资格前置核验——09-03 周四001 入轨四条全过但该场 HAD 不可单关,被迫与周四002 组混串;09-04 结算平腿 @3.10 命中(2:2)被捆绑腿拖死整注归零(单关口径应回 31 元)。=0 降级路径=①与合格腿混串(须对捆绑腿有独立信心,CRS/TTG/HAFU 单关资格全场=1 不受限)或②撤注,不硬凑;出票核对单环节必查此字段)
> 更新日期:2026-09-03(v5.8 实票×推荐对齐——系统同推制六件套:票腿 agreement 五值/偏好档案 gateRule/登记对照回执/推荐 play 三态每场必答/tickets.html ⑤ 一致率区块;底子=16票60腿分析:一致腿40%vs偏离14%、高一致票+212.9vs零一致-75.6、排除场照买0%全亏,设计见 docs/2026-09-03-ticket-recommend-alignment-design.html)
> 更新日期:2026-09-03(v5.7 平局轨:搏奖档内 HAD 平单关——入轨四条 p平≥28%+极差<12pp+R4起+每轮≤2注,胶着是灵魂(极差加回测 18%→60%)、开季系数抬平污染禁入、杯赛富矿放行、星级豁免、EV 不拦截、永久单关;无影子期无转正符合门槛即纳入,设计见 docs/2026-09-03-draw-track-design.html)
> 更新日期:2026-09-02(v5.6 彩票档:boldplay 两档制→三档制,HAD/HHAD N串1×1倍=2元合格腿全上 4~8 串、p_fused≥0.55/超低赔≤1.25 门槛、无预算管理独立轮红线,设计见 docs/2026-09-02-lottery-tier-design.html)
> 更新日期:2026-08-27(v5.3 比分选法重设计 freq-band:联赛频率模板+球队平移+形状带+q排序为默认链路,DC 退出比分选择;--method=amix 过渡保留一个月待回测对照,设计见 docs/2026-08-27-freq-band-design.html)
> 更新日期:2026-08-26(v5.2 修正三向经 --adjust 传导全玩法(三域重标定+池级温度+半场参数,设计见 docs/2026-08-26-pool-coverage-design.html);v5.3 起该传导仅服务 amix 过渡路径)
> 更新日期:2026-08-25(v5.1 实战纪律回灌:高赔池全量 EV 扫描 / 注间耦合计算 / 静默失败追查入铁律 / 用户偏好形状档案 / 方案命名规范+对比表;v5.0 阶梯出票卡为默认输出)
> 实战基线:方向正确率 63.2%(12/19),比分命中率 26.3%(5/19);CLV 记录自 v4.1 起
## 文件存储路径 ★ v4.0 新增
所有预测相关文件统一存储在 `$FOOTBALL_HOME` 项目根目录中(环境变量,由 install 脚本设置;未设则用 skill 目录的父级 `../` 推导):
| 目录 | 用途 | 文件命名 |
|:---|:---|:---|
| `data/00-leagues/` | 联赛画像(积分榜/场均进球/冷门率/TOP 比分) | `{league}.json` |
| `data/01-teams/` | 最新球队信息(排名、阵容、伤停) | `{联赛名}/` 按联赛分子目录 |
| `data/02-results/` | 历史比赛结果(赛果回填)+ `league/` 本地赛果库 | `YYYY-MM-DD.json` 按日期 |
| `data/03-predictions/` | 最近预测文件 | `YYYY-MM-DD*.html` |
| `data/04-summaries/` | 预测总结与复盘(含 corpus.json/trend.html) | `YYYY-MM-DD-review.html` |
| `data/05-trends/` | **赛前情报时序库**(intel-timeline,docs/2026-08-30-intel-timeline-design.html):`{date}-odds.json` 五池赔率 diff 增量链(刷新自动落盘)/ `{date}-intel.json` 情报摘要(insight 拉取自动落盘)/ `{date}-livescan.json` 临场扫描事件(skill 录入,`trends_snapshot.py livescan` 校验通道);2026-08-29 前的 livescan 为 legacy 格式双格式兼容 | `YYYY-MM-DD-{odds\|intel\|livescan}.json` |
| `engine/cache/` | DC 参数缓存 + models/ 版本存档 + fusion.json + 体彩缓存 | `{league}_dc.json` 等 |
| `skill/references/` | 低频参考(官方规则/系数详表/教训档案,按需加载) | `*.md` |
**执行时自动归档**:
- Step 7 报告输出 → 保存到 `data/03-predictions/`
- Step 8 赛果回填 → 保存到 `data/02-results/`
- Step 8 复盘报告 → 保存到 `data/04-summaries/`
- Step 3 采集的球队数据 → 更新到 `data/01-teams/`
---
## 适用范围
- 竞彩足球:胜平负 / 让球胜平负 / 总进球 / 半全场 / 比分,及混合过关
- 90 分钟常规时间(含伤停补时)结果预测
- 不适用:加时点球、冠军竞猜、滚球
---
## 〇、十条铁律(违反即返工)
| # | 铁律 | 来源教训 |
|:--:|:---|:---|
| 1 | **绝不编造数据**:交锋/球员/战绩查不到就标 ❓,每条数据标注来源 + 加载状态 | v1 编造数据导致信任崩塌 |
| 2 | **用户反馈优先级最高**:用户提供的信息 > 模型推断,置信度 +1 级 | 忽视"长崎主场强"反馈致预测失误 |
| 3 | **出票前终端实盘核对**:编号 × 联赛 × 主客三重验证,官方对阵偶有错误 | 2026-08-17 001 场次实际不存在 |
| 4 | **失败降级纪律**:同一数据任务失败 ≤ 2 次即停;全源失败降级为"官方赔率 + 排名 + 赛季阶段"主线分析,如实标注缺失维度并下调置信度 | — |
| 5 | **模型 ≠ 必中**:方向精度实测 60~65% 区间(基线 63.2%);赔率以官方终端为准,预估仅作决策参考 | — |
| 6 | **赛果必须回填**:每轮预测后自动查询赛果并回填到预测记录,完成五维复盘统计 | v4.0 新增:无闭环 = 无法迭代 |
| 7 | **归档禁止整文件覆盖** ★ v4.6:同日期重跑时必须先读旧 `data/02-results/` 文件——同 schema 则增量合并赛果字段,不同 schema 则另存 `-r1` 后缀新文件;预测记录与 plans 格式须遵 Step 8 v4.6 schema(corpus.py 双格式兼容已就位) | 2026-08-22 f4558c2 事故:matches[] 覆盖 records[] 致 52 条语料归零,靠 git 历史抢救 |
| 8 | **比分选法三步铁律 + 空结果追查** ★ v5.3:比分选择 = freq-band(legacy 路径默认;v5.5 翻身档=三池 EV 选优,CRS q 源仍 freq-band):①生存阈模板真实频率 q≥1%(平移不救真实出现不足的比分,c=0 永不入选)②赔率只做形状带门槛(桂林 10-17/梅州 18-28)不做排序③带内真实频率最高者胜出,每场 1 腿、<4 腿关档不硬凑;脚本输出空列表/空结果 = 异常必须追查,**禁止静默跳过**;方案里声明选腿结果(关档也要写)——玩法凭空消失 = 执行漏洞。`--method=amix`(DC×体彩EV 三池扫描)过渡保留一个月,调用须标注 | 2026-08-27 大哥质疑"比分总取最小赔率,赔率=购买热度≠真实结果"——模型审计已证 DC 无增量,A-MIX 却用 DC 找市场定价错误=自相矛盾(docs/2026-08-27-freq-band-design.html);8-25 双教训(DC TOP1 全低赔 EV-6.9%/空结果没追查)为同一病根 |
| 11 | **比分形状不得伪分散** ★ v5.9:方向命中与比分命中分开统计;强队候选不得全部落在零封族(1:0/2:0/3:0只算一个剧本),应按经回测的双方进球/零封概率保留相邻形状候选;官方首发/核心伤停更新比分尾部而非机械平移胜负。每场记录 `score_source`、`shape_family`、`p_btts`、`p_clean_sheet`、`topk_hit`,并在 `score-calibration.md` 规定的影子实验达标前禁止替换生产链。|
| 9 | **同场限一玩法·不同场可混串** ★ v5.6(最易看反):同一注串内**同一场次**只能选一种玩法(同场不能既买 CRS 又买 HAD);但**不同场次可用不同玩法组同一注串**(A场CRS+B场TTG+C场HAD 一注3串合法)=混合过关本义,**也是方案优化手段**——各场取 EV 最优玩法混串,低抽水池腿(TTG/HAFU 20.4% < CRS 33.9%)降整串期望抽水。**≠ 整注必须同玩法**:此误读致方案默认全同玩法串、从不评估混串优化(2026-08-31 实例:011 CRS@13 EV-7% 本可换 TTG@4.9 EV+4% 同注混串,因误读铁律而漏评估)。混串总关数 ≤ 最低玩法上限(木桶);同场跨票分池合法(001 CRS 单关票A + 001 HAD 3串票B) | 2026-08-31 大哥纠正:铁律被读反成"整注同玩法",方案系统性漏混串优化 |
| 10 | **无锚联赛腿禁入保底胆** ★ v5.6:fd 不覆盖联赛(瑞超/日职/沙特/韩职等,无 Pinnacle 收盘锚)的场次**不得作为保底票胆材**——单锚先验(上轮收盘/联赛画像)不满足保底档的市场隐含 ≥65% 准入口径,只可入翻身池/搏奖池或平腿;保底胆必须是 fd 收盘锚场次 | 2026-08-31 周二 10 场全灭归因两假胆 EV-17~-19(无锚联赛被程序当胆,docs/2026-09-01-qa 归档);09-01 双轨分化设计复审补纪律线(C2) |
---
## 一、执行流程(13 步)
```
Step 0 模式判定(全局 / 快速)
Step 1 赛事与赔率采集(体彩五池=可买性 + Pinnacle 收盘=概率锚)★ v4.5 五池
Step 1.5 预筛选快排(赔率分层 → 搜索优先级排序)
Step 2 双锚隐含概率(Pinnacle 去水为概率基准)
Step 2.5 数据就绪检查 + 冷启动初始化(联赛画像/球队画像/别名)★ v4.3 新增
Step 3 深度数据采集与分级(A/B/C/D)— 联赛分组批量 + 本地知识库优先
Step 3.5 DC 模型概率 + logit 融合(含 ttg/hafu 输出)★ v4.5 扩展
Step 4 8 因子加权评分 + 修正系数(消融清单内,ξ=0.005)★ v4.1 修订
Step 5 星级评级(概率阈值 × 数据等级约束)
Step 6 玩法匹配与风险三档方案(🚀/⚖️/🛡️ + EV 硬门槛 + 资金纪律)★ v4.6
Step 6.5 出票前临场终审(信息边际 → 最终方案逻辑校验)★ 出票必经
Step 7 分层报告输出(摘要卡概率×赔率×EV → 推荐详情 → 排除简报)★ v4.6
Step 8 赛果回填 + 五维复盘 + 闭环学习(corpus/attribute/trend/learn)★ v4.5.1
```
并行控制:同一时间最多 4~5 个查询,按联赛分组采集,高关注度比赛优先。
---
## Step 0:模式判定 ★ v4.0 新增
| 模式 | 触发条件 | 流程 |
|:---|:---|:---|
| **全局模式**(默认) | 用户说"帮我预测" / 未指定场次 | Step 1~8 全流程 |
| **快速模式** | 用户指定编号(如"帮我看看周五006") | 跳过 Step 1 全局采集,仅对指定场次执行 Step 2~7;如指定场次数据不足则提示用户 |
快速模式下仍须完成:赔率采集(仅该场)、数据分级、星级评级、推荐选项。不输出串关方案(除非用户追加)。
---
## Step 1:赛事与赔率采集(必须完成)★ v4.1 双锚制
**赛程采集优先用脚本**:`python sporttery_fetch.py`(直连 API,绕过 WebFetch 截断,拿全部在售场次)。WebFetch 有长度截断(实测只能拿 18 场,实际 52 场),**仅作脚本失效时的备选**。
**双锚原则**:体彩赔率(毛利>7%)只用于**可买性判断**(能不能买、算奖金);**概率锚**用 Pinnacle 收盘价(毛利~2.5%)去水。若 Pinnacle 数据不可得,标注"锚偏差 ~5pp,置信度下调一档"。
| 锚 | 来源 | 用途 |
|:---|:---|:---|
| 体彩官方 API | `sporttery_fetch.py`(直连,完整赛程+赔率) | 赛程编号、可买玩法、实际赔率、奖金计算、CLV 记录 |
| Pinnacle 收盘价 | oddsportal 存档 / Pinnacle 公开数据 / 搜索"match pinnacle closing odds" | 去水得市场真实概率,作为概率基准 |
必采字段:编号、联赛、主客队、开赛时间、**胜平负赔率 + 让球盘赔率**(逐一核验)+ Pinnacle 收盘三向赔率
检查项:
- [ ] 覆盖**所有比赛日**(不能只取第一天)
- [ ] 编号 × 联赛 × 主客队三重交叉验证
- [ ] 按联赛分组输出场次统计
- [ ] **场次完整性**:脚本拉取后核对编号连续性,如周五→周六→周日有断裂则补查(体彩偶有停售场次,编号跳号属正常)
- [ ] **双锚齐全**:至少 70% 场次拿到 Pinnacle 收盘价;未拿到的标注"锚缺失"并降级处理
- **刷新即快照 ★ v5.4**:任何路径刷新 `sporttery_matches.json` / 拉取 insight 自动落盘 `data/05-trends/` 时序(钩子内嵌,失败不阻断);手动补拍 `python engine/scripts/run.py snapshot [--insight 编号,编号]`
输出:`| # | 场次编号(体彩) | 联赛 | 主队[排名] | 客队[排名] | 开赛日期时间 | 体彩赔率 | Pinnacle收盘 |`(# 为全局序号,场次编号列=体彩编号 `周X00N`,两列并存职责不同勿混)
> 每场比赛标注全局序号 #1~#N,方便后续所有环节交叉引用。报告输出必须带**日期 + 编号**(2026-08-21 实测教训:无日期/编号无法回填赛果)。
---
## Step 1.5:预筛选快排 ★ v4.0 新增
拿到赔率后、深度搜索前,先做一轮 30 秒快速分级:
| 赔率特征 | 分级 | 搜索策略 |
|:---|:---|:---|
| 单方概率 >60% 或 <15% | **高确定性** | 优先搜索,大概率 A/B 级 |
| 三项概率在 35%~50% 区间(极差 <10pp) | **胶着区** | 最后搜索;搜索后若仍胶着则标 C 级并标记"建议避开" |
| 胜平负未开售(仅让球盘) | **特殊场** | 标记为"仅让球/比分可用",走让球盘反推流程(见 Step 4 修正系数 6) |
| 小联赛(瑞超/挪超/芬超/荷乙) | **高风险** | 仅搜索排名+交锋两项,快速判定能否达到 B 级;达不到直接标 D |
**搜索优先级排序**:高确定性场次 → 入串热门场次(三星以上潜力)→ 胶着区 → 高风险小联赛
---
## Step 2:双锚隐含概率(去水归一化)★ v4.1
```
p_i = (1/o_i) / Σ(1/o) ← 对 Pinnacle 收盘价计算(概率基准)
```
- **概率基准** = Pinnacle 收盘价去水(毛利~2.5%,偏差最小)
- **体彩赔率** = 另行去水,仅用于计算实际价值(体彩赔率 vs 概率的正值判断)
- 胜平负盘与让球盘**分别计算**
- **盘口矛盾校验**:让球盘与不让球盘隐含概率矛盾时,以终端实盘为准并在报告中标注
- 体彩赔率与 Pinnacle 隐含概率差异 >7pp 的场次:体彩该选项无购买价值(负期望显著放大),报告标注
---
## Step 2.5:数据就绪检查 + 冷启动初始化 ★ v4.3 新增
预测前对每场检查三类数据,缺的先初始化再分析(RAG 冷启动闭环:初始化落盘,下轮同联赛/球队直接命中):
1. **联赛画像** `data/00-leagues/{league}.json`:missing/stale → fd 覆盖联赛跑 `engine/scripts/run.py update`;不覆盖(日职/沙特/北欧/南美)WebFetch ESPN 积分榜结构化写入(standingsSource=espn-manual)
2. **球队画像** `data/01-teams/{league}/{teamId}.json`:lastUpdated >7 天或缺失 → 联赛分组搜索提取近5场/排名/伤停/主客战绩,按规范 JSON 写入(含 source)
3. **别名覆盖** `data/01-teams/_aliases.json`:中文名查不到 → 先补别名(规范 ID+zh+league)再走 ②
**执行方式**:调 `python data_check.py matches.json`(对阵清单 JSON)→ 拿到缺口报告(missingLeagues / missingAlias / notReadyTeams)→ 按清单初始化 → 复检。
**初始化优先级**:入串场次(三星+)球队 > 联赛积分榜 > 其余球队。联赛级初始化一次覆盖全联赛球队基础数据,比逐队省。
---
## Step 3:深度数据采集与分级
### 检索顺序 ★ v4.1:本地知识库优先 · v4.2 加联赛画像
```
1. 读 data/00-leagues/{league}.json → 联赛画像(积分榜/统计/争冠保级格局)
├─ fd 推导版由 league_profile.py 生成(engine/scripts/run.py update 自动)
└─ 预测时 WebFetch ESPN 实时积分榜覆盖 standings(改 freshness.standingsSource=espn;轮次不一致标 stale)
2. 读 data/01-teams/_index.json → 哪些球队有本地画像?
3. 读 data/01-teams/{league}/{team}.json → Elo/xG/近况/伤停(新鲜则直接用)
4. 读 data/02-results/_h2h_index.json → 交锋(仅叙事参考,不进权重,见 H2H 降权)
5. 检查 engine/cache/{league}_dc.json 新鲜度(新增比赛 ≥5 场 → 调 dc_fit.py 重拟合)
6. 本地缺什么 → 只搜缺的(联赛分组批量)
```
### 数据源优先级
| 优先级 | 数据源 | 可获取数据 |
|:--:|:---|:---|
| 🥇 | 本地知识库(football/) | 球队画像、Elo、xG、交锋索引、DC 缓存 —— 零成本 |
| 🥈 | `espn_fetch.py`(ESPN API 直连) | 实时积分榜 + 按日期赛果,覆盖日职/瑞超/挪超/丹超/沙特/荷甲/葡超等 fd 不含联赛(**脚本直连勿用 WebFetch:浏览器 UA 会 403**) |
| 🥉 | `cn_fetch.py`(titan007 国内源) | 积分榜兜底(ESPN 不可达时)+ `teams` 子命令出中英文队名对照补 `_aliases.json`;须带浏览器 UA+Referer |
| 4 | 体彩官方 API(sporttery_fetch.py) | 赛程 + 赔率 + 赛果(`league-results` 联赛历史 / `results` 开奖口径按编号对票)+ **单场情报 `insight <matchId>`**(伤停名单+近10场+即时排名+H2H;matchId 见 sporttery_matches.json,免搜索配额,韩职等冷联赛同样覆盖) |
| 5 | clubelo.com | Elo 评级(elo_fetch.py 双链路:api 子域被墙自动切主域 HTML,仅活跃队有效) |
| 6 | Understat | xG/xGA(六大联赛) |
| 7 | Transfermarkt / flashscore | 交锋、近期战绩、伤停(**体彩 insight 未覆盖的才用**——insight 优先,免配额) |
| 8 | Google 搜索 | 快速验证特定信息 |
agent 可灵活替换等效数据源;执行铁律 4 的失败降级。
### H2H 降权 ★ v4.1(学术依据:Groll 2018 特征重要性垫底)
- data/02-results/_h2h_index.json 保留存储,但检索层标注"仅叙事参考,不进权重"
- 预测推理时 H2H 不作为方向判断依据(阵容换血 + 信息已被实力评分覆盖)
- 例外:近 1 年内交锋 ≥2 次且战术风格延续的,可作定性参考(标注"弱参考")
### 降级模式(数据源停摆常态预案)★ v4.9 新增
实测 2026-08 下旬 ESPN 赛果停摆 / Pinnacle 缺失 / 搜索配额耗尽**三重叠加是常态而非异常**,双锚体系实际常跑在体彩单锚。降级须量化处理,不做文字标注了事:
| 触发 | 处理 | 置信度代价 |
|:---|:---|:---|
| Pinnacle 收盘价缺失 | 概率锚退化为体彩去水(毛利 ~13%) | 修正后概率整体 ×0.97,星级上限 ⭐⭐⭐,报告标"单锚模式" |
| ESPN 积分榜停摆 | cn_fetch.py(titan007)兜底,全 0 榜跳过防污染 | 数据等级按实际覆盖重判(insight 即时排名可替代) |
| 搜索配额耗尽 | `insight <matchId>` 单场情报全量替代(伤停/近10场/排名/H2H 免配额) | insight 覆盖场可判 A 级 |
| 赛果回填 | 体彩编号对票主链路 + ESPN 兜底(backfill 双链路,v4.9 修复) | 无降级 |
### 搜索降级链 ★ v4.0 标准化
```
Transfermarkt 完整数据
→ 失败?降级到 espn_fetch.py 直连(积分榜 standings / 赛果 results)
→ 失败?降级到 cn_fetch.py(titan007 国内源)
→ 失败?降级到 flashscore 简要
→ 失败?Google 搜索单条验证
→ 失败?标 ❓ 放弃该项,不再重试
```
每个数据源**失败 1 次即降级**,不重试,节省 token。
### 联赛分组批量搜索策略 ★ v4.0 新增
把场次按联赛分为 3~4 组,每组用一条搜索词批量查:
```
示例分组:
- 欧罗巴组(6场):"Europa League playoff 2026 August recent form results"
- 日职组(2场):"J联赛 2026 standings recent results"
- 沙特联组(3场):"Saudi Pro League 2026 standings round X"
- 其余混合组(法甲/法乙/荷乙/芬超/瑞超):各一条
```
每组搜索同时获取排名、近期战绩、交锋记录。单组失败才降级到逐场搜索。
### 每场 6 项必查
| # | 检查项 | 查不到的处理 |
|:--:|:---|:---|
| ① | 历史交锋(近 3~5 场) | 标 ❓,置信度上限 ⭐⭐ |
| ② | 主队近期战绩(近 5 场) | 标 ❓,置信度上限 ⭐⭐ |
| ③ | 客队近期战绩(近 5 场) | 标 ❓,置信度上限 ⭐⭐ |
| ④ | 两队当前排名 | 标 ❓则本场不预测 |
| ⑤ | 是否开季前 3 轮(轮次判定定式 ★ 2026-09-04) | 轮次一律**先查 `sporttery_fetch.py insight` 的 gameweek 字段**,并与 standing 已赛场次(胜+平+负计数)一致性校验;ESPN 积分榜首积分推轮次**只做参考不做定论**(09-04 教训:ESPN 推法甲 R4 实为 R3,靠 insight 勘定,避免修正系数错档);开季前 3 轮 → 评级降半档(见修正系数,分档修正) |
| ⑥ | 联赛级别 | 事实信息,决定波动系数 |
可选补充(仅定性参考,不进权重):教练、战术、明星球员、天气。
### 数据可信度分级
| 级别 | 标识 | 标准 | 可否预测 |
|:--:|:---|:---|:---|
| **A 级** | ✅ | insight 覆盖(排名+近况+伤停+H2H 四要素,`sporttery_fetch.py insight` 一次拉全)或 6 项手动齐全 | 可预测比分,置信度 ⭐⭐⭐⭐+ |
| **B 级** | 🟡 | 3~5 项 | 胜平负为主,比分至多搭配 1 场,置信度上限 ⭐⭐⭐ |
| **C 级** | 🔴 | 1~2 项 | 仅预测方向,不选比分/半全场 |
| **D 级** | ❌ | 赛程都无法确认 | 不选入任何串关 |
---
## Step 3.5:DC 模型概率 + logit 融合 ★ v4.1 新增
GitHubで見る