本文共 3252 字,大约阅读时间需要 10 分钟。
今年世界杯不太平,大家买球的输了不少吧,反正我一直在输,研究了下赔率和返还率,写了个算法。在确定预期收入的情况下,确定各赔率下的压金,可以根据实际情况从中选择两个投注,赢面大些。
返还率 = 预期收入 / 总投入
想算算威廉希尔和竞彩官方有没有稳赢的组合,结果没有。
import requestsfrom bs4 import BeautifulSoupimport jsonclass fiFa(): def __init__(self, atuple): # self.winOdds = winOdds # self.drawOdds = drawOdds # self.lossOdds = lossOdds self.winOdds,self.drawOdds,self.lossOdds = atuple self.winOdds,self.drawOdds,self.lossOdds = float(self.winOdds),float(self.drawOdds),float(self.lossOdds) winput = 100 / self.winOdds drawput = 100 / self.drawOdds lossput = 100 / self.lossOdds totalput = winput + drawput + lossput self.winper = winput / totalput self.drawper = drawput / totalput self.lossper = lossput / totalput def printf(self, win=None, draw=None, loss=None): if win != None: total = win / self.winper my_draw_put = total * self.drawper my_loss_put = total * self.lossper print("胜压:{}\n平压:{}\n负压:{}\n总投入:{}\n预期收入:{}\n".format(win, my_draw_put, my_loss_put, total, win*self.winOdds)) elif draw != None: total = draw / self.drawper my_win_put = total * self.winper my_loss_put = total * self.lossper print("胜压:{}\n平压:{}\n负压:{}\n总投入:{}\n预期收入:{}\n".format(my_win_put, draw, my_loss_put, total, draw*self.drawOdds)) elif loss != None: total = loss / self.lossper my_win_put = total * self.winper my_draw_put = total * self.drawper print("胜压:{}\n平压:{}\n负压:{}\n总投入:{}\n预期收入:{}\n".format(my_win_put, draw, loss, total, loss*self.lossOdds)) def per(self): print("赢的概率{}\n平的概率draw{}\n负的概率loss{}".format(self.winper, self.drawper, self.lossper)) def expincome(self, exp): win_put = exp / self.winOdds draw_put = exp / self.drawOdds loss_put = exp / self.lossOdds # total = win_put + draw_put + loss_put return win_put, draw_put, loss_put# 想算算威廉希尔和竞彩官方有没有稳赢的组合,结果没有。def sy(a, b): exp = 100 t = a.expincome(exp) w = b.expincome(exp) z = tuple(zip(t, w)) for i in z[0]: for j in z[1]: for p in z[2]: myinput = i + j + p if myinput < exp: print("______稳赢组合______:", i, j, p)def vs_information(num,rjson): h_cn = rjson['data'][num]['h_cn'] a_cn = rjson['data'][num]['a_cn'] date = rjson['data'][num]['date'] time = rjson['data'][num]['time'] print('比赛日期:{} {} {}VS{}'.format(date,time,h_cn,a_cn)) print('胜%s,平%s,负%s' % get_odds(num,rjson))def get_odds(num,rjson): vin = rjson['data'][num]['had']['h'] draw = rjson['data'][num]['had']['d'] loss = rjson['data'][num]['had']['a'] return vin,draw,lossdef result(num,rjson,p=100): vs_information(num,rjson) jingcai = fiFa(get_odds(num,rjson)) jingcai.printf(win=p)if __name__ == '__main__': # 抓取实时赔率 html = requests.get("http://i.sporttery.cn/odds_calculator/get_odds?i_format=json&i_callback=getData&poolcode[]=hhad&poolcode[]=had&_=1529656976684") rjson = json.loads(html.text.lstrip('getData(').rstrip(');')) for id in rjson['data']: if rjson['data'][id]['l_cn'] == "世界杯": result(id,rjson)
结果: