问题描述
我有以下两个熊猫数据框:新的&结果
new = pd.DataFrame([[5,5,1.6],[0.22,0.22,0.56]]).T
new.index = ['Visitor','Draw','Home']
new.columns = ['Decimal odds','Win prob']
new['Bet amount'] = np.zeros((len(new),1))
有输出:
Decimal odds Win prob Bet amount
Visitor 5.0 0.22 0.0
Draw 5.0 0.22 0.0
Home 1.6 0.56 0.0
数据框“结果”
outcome = pd.DataFrame([[0.22,0.56],[100,100,100]]).T
outcome.index = ['Visitor win','Home win']
outcome.columns = ['Prob.','Starting bankroll']
outcome['Wins'] = ((new['Decimal odds'] - 1) * new['Bet amount']).values
outcome['Losses'] = [sum(new['Bet amount'][[1,2]]),sum(new['Bet amount'][[0,1]])]
outcome['Ending bankroll'] = outcome['Starting bankroll'] + outcome['Wins'] - outcome['Losses']
outcome['Logarithm'] = np.log(outcome['Ending bankroll'])
有输出:
Prob. Starting bankroll Wins Losses Ending bankroll Logarithm
Visitor win 0.22 100.0 0.0 0.0 100.0 4.60517
Draw 0.22 100.0 0.0 0.0 100.0 4.60517
Home win 0.56 100.0 0.0 0.0 100.0 4.60517
此处objective
由以下公式计算:
objective = sum(outcome['Prob.'] * outcome['Logarithm'])
现在,我想通过“ new ['投注金额”]列中包含的值来最大化objective
。约束条件是a,b和c的边界在0到100之间。a,b和c的总和也必须低于100。原因是a,b,c类似于您用于存款的资金比率体育博彩。
想使用scipy
库来实现这一目标。到目前为止,我的代码如下:
from scipy.optimize import minimize
prob = new['Win prob']
decimal = new['Decimal odds']
bank = outcome['Starting bankroll'][0]
def constraint1(bet):
a,b,c = bet
return 100 - a + b + c
con1 = {'type': 'ineq','fun': constraint1}
cons = [con1]
b0,b1,b2 = (0,100),(0,100)
bnds = (b0,b2)
def f(bet,sign = -1):
global prob,decimal,bank
p0,p1,p2 = prob
d0,d1,d2 = decimal
a,c = bet
wins0 = a * (d0-1)
wins1 = b * (d1-1)
wins2 = c * (d2-1)
loss0 = b + c
loss1 = a + c
loss2 = a + b
log0 = np.log(bank + wins0 - loss0)
log1 = np.log(bank + wins1 - loss1)
log2 = np.log(bank + wins2 - loss2)
objective = (log0 * p0 + log1 * p1 + log2 * p2)
return sign * objective
bet = [5,8,7]
result = minimize(f,bet,method = 'SLSQP',bounds = bnds,constraints = cons)
但是,这不会产生所需的结果。所需的结果将是:
a = 3.33
b = 3.33
c = 0
我的问题还在于如何设置method
和initial
的值?通过为下注分配不同的方法和初始值,结果似乎相差很大。
任何帮助将不胜感激!
(这是在品尼高网站上发布的示例:https://www.pinnacle.com/en/betting-articles/Betting-Strategy/the-real-kelly-criterion/HZKJTFCB3KNYN9CJ)
解决方法
暂无找到可以解决该程序问题的有效方法,小编努力寻找整理中!
如果你已经找到好的解决方法,欢迎将解决方案带上本链接一起发送给小编。
小编邮箱:dio#foxmail.com (将#修改为@)