如何基于最近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
相关产品推荐
相关产品推荐

