L0 原始事实
只读数据源事实:比分、分钟、红牌、射门/射正、当前赔率。缺失即缺失,不默认补 0。
从 λ 到概率到 edge,一条链上的每一步都能在源码里找到对应实现; 每个市场都标了「是否优于公开盘口」,不优于的地方原样写出来。
赛前 λ 加 Dixon-Coles 低比分修正 ρ 生成精确比分矩阵,再对矩阵求和得到主胜 / 平局 / 客胜三路概率。
回测中 ρ 只在训练集上网格搜索得到,本次取值 −0.06;因子路径单独拟合 factor_rho = −0.05,
不复用 Poisson λ 的 ρ。
同一条比分矩阵求总进球超过指定线之和。市场对比只固定用 2.5:1.5 与 3.5 没有公开的两路报价, 所以只报告模型自身指标,不虚构市场基准。
| 线 | 测试集 n | Brier | LogLoss | ECE | 方向命中率(95% CI) | 市场基准 |
|---|---|---|---|---|---|---|
| 1.5 | 6498 | 0.1703 | 0.5221 | 0.0075 | 77.73% (76.70–78.73) | 无公开两路报价 |
| 2.5 | 6498 | 0.2442 | 0.6815 | 0.0102 | 56.79% (55.58–57.99) | 不优于公开盘口 |
| 3.5 | 6498 | 0.2083 | 0.6062 | 0.0136 | 69.31% (68.18–70.42) | 无公开两路报价 |
网格覆盖 −1.00 / −0.75 / −0.50 / −0.25 / ±0.00 / +0.25 / +0.50 / +0.75 / +1.00。
半线以下按四分之一球结算,走水从命中率分母中剔除并单列 push_rate。
收盘线市场对比用每场 AHh 实际报价,没有该报价的场次不进入对比(n = 6489 而非 6498)。
| 线 | n | 已决 | 走水率 | Brier | 方向命中率(95% CI) |
|---|---|---|---|---|---|
| −1.00 | 6498 | 5105 | 21.44% | 0.1461 | 75.42% (74.22–76.58) |
| −0.75 | 6498 | 6498 | 0.00% | 0.1724 | 64.22% (63.05–65.38) |
| −0.50 | 6498 | 6498 | 0.00% | 0.2195 | 64.47% (63.29–65.62) |
| −0.25 | 6498 | 6498 | 0.00% | 0.1770 | 62.73% (61.54–63.89) |
| ±0.00 | 6498 | 4823 | 25.78% | 0.1582 | 68.21% (66.89–69.51) |
| +0.25 | 6498 | 6498 | 0.00% | 0.1632 | 71.51% (70.40–72.60) |
| +0.50 | 6498 | 6498 | 0.00% | 0.1920 | 70.61% (69.49–71.70) |
| +0.75 | 6498 | 6498 | 0.00% | 0.1463 | 70.11% (68.99–71.21) |
| +1.00 | 6498 | 5397 | 16.94% | 0.1176 | 83.44% (82.42–84.40) |
亚盘收盘线的模型 Brier 0.2113 vs 公开盘口去水 0.2062, ΔBrier +0.005108(95% CI 0.003522–0.006801)→ 不优于公开盘口。 客户端对该市场标注「仅供参考,不优于公开盘口」。
测试集 n = 6498,Brier 0.2460、LogLoss 0.6851、ECE 0.0100,方向命中率 55.40%(95% CI 54.19%–56.61%)。该数据源没有公开 BTTS 赔率,因此只报告模型指标。
L3 除 1X2 与总进球外,还输出精确比分矩阵与「下一个进球归属」概率; 月卡(advanced)可见比分矩阵、亚洲让球、风险因子,周卡(basic)只有基础分析。
引擎与 FastAPI 服务解耦,因此同一套因子既能跑在模型工作进程里,也能跑在离线回测里。 层级规则由注册表在 导入时校验,因子不允许读到同层或更高层。
只读数据源事实:比分、分钟、红牌、射门/射正、当前赔率。缺失即缺失,不默认补 0。
由 L0 派生单场速率(射门/射正/进攻节奏等),带时间衰减权重。
lam_rem_home / lam_rem_away —— 这是唯一允许流向 L3 的输入。
Elo、滚动 10 场 xG 代理、休息天数、联赛均值、红牌修正全部在这一层收敛。
只消费两个 λ(加上 L0 的当前比分/分钟),产出 1X2、总进球、亚盘、下一进球概率。
把概率与价格变成 edge 与四分之一 Kelly 仓位(上限 2%)。这些字段永不通过 API 下发。
abort 并置 degraded
L2 的魔法数字集中放在 factors/params.py,每个常数带来源标签:
拟合(只在训练集拟合)/ 手调(领域判断,没有拟合证据)/ 文献。
手调值不得被说成「学出来的」。
prematch_lambdas() 把赛前聚合输入灌进同一套 λ 函数实时通路没有回测验证。上游数据源只有赛前与赛后统计,没有分钟级比赛快照, 所以回测只能验证赛前分支。任何「实时因子链已经过回测」的说法都是错的。
技术栈:Python + PySide6 + PyInstaller,暗色主题,无边框窗口。下面按周卡 basic / 月卡 advanced 分档。
| 功能 | 周卡 ¥40 / 7 天 | 月卡 ¥300 / 30 天 |
|---|---|---|
| 赛事列表、实时比分 | ✓ | ✓ |
| 全部进行中赛事原始数据 | ✓ | ✓ |
| 基础分析(胜平负、按实时盘口的大小球、双方进球) | ✓ | ✓ |
| 基础数据完整度与趋势摘要 | ✓ | ✓ |
| 高级分析与多盘口矩阵 | — | ✓ |
| 比分矩阵、亚洲让球、风险因子 | — | ✓ |
| 深度历史与整场回放 | — | ✓ |
| 多维度面板与动量分析 | — | ✓ |
列表、联赛/状态筛选、实时比分、基础与高级预测展示
多维度面板、趋势、比分矩阵、比赛事件(3 个 tab)
深度历史与整场回放;真实源缺历史帧时只用运行期快照
套餐、内嵌收银台、会员到期时间、设备信息、退出登录
payment.provider = qr。管理后台上传本人支付宝/微信收款码,用户扫码付款后提交交易单号(4–64 位),
订单进入「待人工确认」,管理员核对账单金额/时间/单号后才发放会员。
同一交易单号只能使用一次。
payment_unavailable,不生成无法支付的订单pending 订单 15 分钟过期;claimed 待确认订单不自动过期
payment.provider = custom_webhook。需配置 custom_webhook_url 与
custom_webhook_secret_file;回调必须带 X-Webhook-Timestamp 与
X-Webhook-Signature,服务端按
HMAC-SHA256(secret, timestamp + "." + raw_body) 验签。
wechat_native / alipay_face 未接入官方 SDK 时 fail-closed,不生成假二维码sandbox 仅用于功能验收,不能收取真实款项