You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

如何基于最近5场比赛迭代索引回测体育投注概率模型

体育投注模型回测实现思路拆解

一、数据预处理

  • 按球队分组:将全赛季赛事数据按球队ID分组,确保每支球队的赛事记录按时间先后排序(这是滑动窗口取最近5场数据的核心前提)。
  • 标记对阵排名ID:给每条赛事记录添加opponent_rank_id字段(1=弱于对手,2=持平,3=强于对手),确保后续加权计算能直接调用该字段。

二、滑动窗口迭代逻辑

核心是对单队赛事数据做滚动窗口遍历,每次取最近5场数据计算下一场的概率:

  • 遍历起点:从第6场赛事(索引5,假设索引从0开始)启动,前5场(索引0-4)作为计算第6场概率的样本。
  • 窗口范围:对第i场赛事(i≥5),取索引[i-5, i-1]的5场数据作为计算样本。

代码示例(Python + Pandas)

import pandas as pd

# 示例:某支球队已按时间排序的赛事数据
team_df = pd.DataFrame({
    'match_date': pd.date_range(start='2023-01-01', periods=20),
    'opponent_rank_id': [3,2,1,2,3,1,2,3,1,2,3,1,2,3,1,2,3,1,2,3],
    'goals_scored': [1,2,0,3,1,2,0,1,3,2,1,0,2,3,1,2,0,1,3,2],
    'goals_conceded': [2,1,3,0,2,1,3,0,2,1,3,0,2,1,3,0,2,1,3,0],
    'win': [0,1,0,1,0,1,0,1,0,1,0,1,0,1,0,1,0,1,0,1],
    'lose': [1,0,1,0,1,0,1,0,1,0,1,0,1,0,1,0,1,0,1,0]
})

# 定义滑动窗口内的加权指标计算函数
def calc_weighted_metrics(window_df):
    # 自定义各指标的加权系数(可根据业务需求调整)
    coeff_config = {
        'goals_scored': {1:1.3, 2:1.1, 3:1.0},
        'win': {1:1.4, 2:1.0, 3:0.9},
        'lose': {1:0.8, 2:1.0, 3:1.2},
        'goals_conceded': {1:0.9, 2:1.0, 3:1.1}
    }
    
    # 计算各指标的加权总和
    weighted_goals = sum(window_df['goals_scored'] * window_df['opponent_rank_id'].map(coeff_config['goals_scored']))
    weighted_wins = sum(window_df['win'] * window_df['opponent_rank_id'].map(coeff_config['win']))
    weighted_losses = sum(window_df['lose'] * window_df['opponent_rank_id'].map(coeff_config['lose']))
    weighted_conceded = sum(window_df['goals_conceded'] * window_df['opponent_rank_id'].map(coeff_config['goals_conceded']))
    
    return pd.Series([weighted_goals, weighted_wins, weighted_losses, weighted_conceded], 
                     index=['weighted_goals', 'weighted_wins', 'weighted_losses', 'weighted_conceded'])

# 应用滚动窗口计算,shift(-4)确保指标与对应预测场次对齐
team_df[['weighted_goals', 'weighted_wins', 'weighted_losses', 'weighted_conceded']] = \
    team_df.rolling(window=5).apply(calc_weighted_metrics).shift(-4)

# 过滤出有效预测数据(仅保留有计算结果的第6场及以后赛事)
predict_ready_df = team_df.dropna().reset_index(drop=True)

三、加权指标到概率的转化

将计算出的加权指标映射为下一场的胜/平/负概率,常用两种方案:

  • 统计映射法:基于历史数据做区间划分,比如统计当weighted_wins在[5,7]区间时,球队胜场概率为60%,需提前对全量数据做概率区间统计。
  • 模型拟合法:用逻辑回归、随机森林等模型,以加权指标为特征,实际比赛结果(胜/平/负)为标签训练模型,直接输出概率值。

四、回测验证

将计算出的概率与实际比赛结果对比,核心验证指标:

  • 预测准确率:统计概率最高的结果与实际结果的匹配率。
  • 投注收益率:模拟真实投注规则,计算模型带来的收益情况。

内容的提问来源于stack exchange,提问作者codeinecoder

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.08.19 04:45:40