[世界杯]根据赔率计算各种组合可能性与赔率
创始人
2024-04-14 22:02:17
0

目录

一、背景

二、数据输入

2.1 赔率示意图

2.2 代码

三、数据处理

3.1 计算各种组合可能性

3.2 修正概率

四、输出结果


一、背景

本文以世界杯体彩“混合过关”4场串胜平负为的赔率进行编码

其他类型如比分 、总进球数可以参考代码进行相应修改

需要的库:numpy与pandas

二、数据输入

2.1 赔率示意图

 2.2 代码

采用字典保存各比赛对应的胜平负的赔率

import pandas as pd
import numpy as npvs1 = {"胜":2.38,"平":2.93,"负":2.65} #厄瓜多尔-塞内加尔
vs2 = {"胜":13.0,"平":6.20,"负":1.11} #卡塔尔-荷兰
vs3 = {"胜":3.58,"平":3.16,"负":1.84} #伊朗-美国
vs4 = {"胜":7.35,"平":4.16,"负":1.31} #威尔士-英格兰

三、数据处理

3.1 计算各种组合可能性

计算采用的公式主要为:(图中10%为抽水率,仅为假设)

其中0.9913为初步计算得到的体彩抽水率,实际不准确,该数值仅供初步计算,之后需要根据计算所得的概率进行相应修正

count = 1
probList = []
probListIndex = []
probVs = []
timesList = []vsCode1 = []
vsCode2 = []
vsCode3 = []
vsCode4 = []for key1,each1 in vs1.items():for key2,each2 in vs2.items():for key3,each3 in vs3.items():for key4,each4 in vs4.items():
#             print(count,key1,key2,key3,each1*each2*each3)prob = 99.13 / (each1*each2*each3*each4)#print(count,key1,key2,key3,key4,prob)probList.append(prob)probListIndex.append(count)probVs.append(key1+key2+key3+key4)timesList.append(each1*each2*each3*each4)vsCode1.append(key1)vsCode2.append(key2)vsCode3.append(key3)vsCode4.append(key4)count += 1data = pd.DataFrame(probList,index = probListIndex,columns=["prob"])
data_temp = pd.DataFrame(probVs,index = probListIndex,columns=["vs"])
data_times = pd.DataFrame(timesList,index = probListIndex,columns=["times"])data_vs1 = pd.DataFrame(vsCode1,index = probListIndex,columns=["vs1"])
data_vs2 = pd.DataFrame(vsCode2,index = probListIndex,columns=["vs2"])
data_vs3 = pd.DataFrame(vsCode3,index = probListIndex,columns=["vs3"])
data_vs4 = pd.DataFrame(vsCode4,index = probListIndex,columns=["vs4"])# data = data.add(data_temp,fill_value=False)
data["vs"] = data_temp["vs"]
data["vs1"] = data_vs1["vs1"]
data["vs2"] = data_vs2["vs2"]
data["vs3"] = data_vs3["vs3"]
data["vs4"] = data_vs4["vs4"]data["times"] = data_times["times"]
data = data.sort_values(by="prob",ascending=False)
data["total_prob"] = 0sum_prob = 0
for each in data.index:
#     print(each)sum_prob += data["prob"].loc[each]data["total_prob"].loc[each] = sum_prob

3.2 修正概率

该段代码无实际含义,仅为修正由于采用估计抽水率计算所得的概率偏差

主要思路是采用数据标准化后并将数据映射到合理的区间,并对部分概率进行转换

total_prob_min = data["total_prob"].min()
data["total_prob"] = (data["total_prob"]-data["total_prob"].min())/(data["total_prob"].max()-data["total_prob"].min())*(100-total_prob_min)+total_prob_min
data["total_prob"].iloc[0] = (data["total_prob"].iloc[1]*data["total_prob"].iloc[0])/(data["prob"].iloc[1]+data["total_prob"].iloc[0])temp = data["total_prob"] - data["total_prob"].shift(1)
temp[0] = data["total_prob"].iloc[0]
data["prob"] = temp
data["prob"].iloc[0] = data["total_prob"].iloc[0]
data.to_csv(r"C:\Users\kkkk\Desktop\世界杯1129.csv")

四、输出结果

prob该组合可能性,total_prob为累计可能性,times为赔率,VS1~4为该组合对应的胜平负

 以11.29日赛程为参考,卡塔尔与威尔士大概率负,因此采用Excel筛选出相关组合,在所列组合中选取赔率较高的组合。

五、代码

import pandas as pd
import numpy as npvs1 = {"胜":2.38,"平":2.93,"负":2.65}
vs2 = {"胜":13.0,"平":6.20,"负":1.11}
vs3 = {"胜":3.58,"平":3.16,"负":1.84}
vs4 = {"胜":7.35,"平":4.16,"负":1.31}count = 1
probList = []
probListIndex = []
probVs = []
timesList = []vsCode1 = []
vsCode2 = []
vsCode3 = []
vsCode4 = []for key1,each1 in vs1.items():for key2,each2 in vs2.items():for key3,each3 in vs3.items():for key4,each4 in vs4.items():
#             print(count,key1,key2,key3,each1*each2*each3)prob = 99.13 / (each1*each2*each3*each4)print(count,key1,key2,key3,key4,prob)probList.append(prob)probListIndex.append(count)probVs.append(key1+key2+key3+key4)timesList.append(each1*each2*each3*each4)vsCode1.append(key1)vsCode2.append(key2)vsCode3.append(key3)vsCode4.append(key4)count += 1data = pd.DataFrame(probList,index = probListIndex,columns=["prob"])
data_temp = pd.DataFrame(probVs,index = probListIndex,columns=["vs"])
data_times = pd.DataFrame(timesList,index = probListIndex,columns=["times"])data_vs1 = pd.DataFrame(vsCode1,index = probListIndex,columns=["vs1"])
data_vs2 = pd.DataFrame(vsCode2,index = probListIndex,columns=["vs2"])
data_vs3 = pd.DataFrame(vsCode3,index = probListIndex,columns=["vs3"])
data_vs4 = pd.DataFrame(vsCode4,index = probListIndex,columns=["vs4"])# data = data.add(data_temp,fill_value=False)
data["vs"] = data_temp["vs"]
data["vs1"] = data_vs1["vs1"]
data["vs2"] = data_vs2["vs2"]
data["vs3"] = data_vs3["vs3"]
data["vs4"] = data_vs4["vs4"]data["times"] = data_times["times"]
data = data.sort_values(by="prob",ascending=False)
data["total_prob"] = 0sum_prob = 0
for each in data.index:
#     print(each)sum_prob += data["prob"].loc[each]data["total_prob"].loc[each] = sum_probtotal_prob_min = data["total_prob"].min()
data["total_prob"] = (data["total_prob"]-data["total_prob"].min())/(data["total_prob"].max()-data["total_prob"].min())*(100-total_prob_min)+total_prob_min
data["total_prob"].iloc[0] = (data["total_prob"].iloc[1]*data["total_prob"].iloc[0])/(data["prob"].iloc[1]+data["total_prob"].iloc[0])temp = data["total_prob"] - data["total_prob"].shift(1)
temp[0] = data["total_prob"].iloc[0]
data["prob"] = temp
data["prob"].iloc[0] = data["total_prob"].iloc[0]data.to_csv(r"C:\Users\kkkk\Desktop\世界杯1129.csv")

相关内容

热门资讯

喜闻乐见,2026年“国补”政... 12月30日,国家发展改革委、财政部印发的《关于2026年实施大规模设备更新和消费品以旧换新政策的通...
女子与表姐夫婚外情获赠三百余万... 一桩发生在海南的民间借贷纠纷,将一段持续二十余年的婚外情推到台前。相关材料显示,男子林森(化名)在婚...
诉讼纠纷频发!中央商场子公司又... 继控股子公司新亚百货面临补缴税款及滞纳金7392万元后,百货零售巨头中央商场(600280.SH)另...
从明天起,楼市迎来两大利好政策... 作者:暴哥 来源:暴财经pro 同志们,2025年要过去了! 今年,各位在股市里应该收获不少,把过去...
国台办回应台湾网红“馆长”大陆... 12月31日,国台办举行例行新闻发布会,国台办发言人张晗就近期两岸热点问题回答记者提问。 有记者提问...
中钢天源:股东中钢热能院907... 雷达财经 文|冯秀语 编|李亦辉 12月30日,中钢天源(证券代码:002057)发布公告称,其控股...
宇树科技因侵权责任纠纷案件被起... 天眼查法律诉讼信息显示,近日,杭州宇树科技股份有限公司及邵某新增1条开庭公告,原告为孙某,涉及侵权责...
今日视点:“制度创新+科技突破... 2025年,A股市场交易活跃度持续提升。截至12月30日,全年累计成交金额达417.8万亿元,同比增...
专业文章丨第二顺位抵押权人实现... 【珠海律师、珠海法律咨询、珠海律师事务所、京师律所、京师珠海律所】 (本文转载自北京市京师郑州律师事...
企业就网络谣言报案并追究法律责... 2025-12-31 09:41:29 作者:狼叫兽 声明指出,目前相关网络平台已对上述不实信息进...