如何解决使用scipy最大化目标通过kelly criterium
我有以下两个熊猫数据框:新的&结果
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 举报,一经查实,本站将立刻删除。