I have created a bot that bets on a fake betting web site called SaltyBet.com. Now if you find anything immoral about that, just know that it is fake betting with fake money and I find so much joy in seeing computers and math make things more efficient. Especially if it is something I created :).

Now this bot has met with some great success. It is currently hovering at #63 in the world out of a total of 44,522,600 other users and I could not be any more proud of it's progress. But, over the course of a month, it has become stuck. My totals have gone only as high as 12 million and as low as 9 million. It does not go any higher or lower despite an 65% accuracy. This baffles me.

The only hypothesis I can come up with is that the algorithms I use have hit their limit and can no longer provide consistent growth. Given the 1v1 nature of the web site, I currently employ an ELO rating system that is used to calculate possible outcomes and then plug that into the Kelly formula to get the final amount the bot should bet. I have outlined the entire process below in more detail:

  1. Get the outcome of the fight based on ELO. The player with the highest percentage chance (HighestChancePlayer) will be bet on. Formula below:

    (1 / (1 + (Math.Pow(10, (player2Elo - player1Elo) / 400))))

  2. Determine if the players have fought before. If they have, we just simply create a different probability based on the previous fights.

  3. Because the Kelly formula is really aggressive, I only bet 1-2% of what it recommends I bet. This is controlled by the number of fights each player has done which creates more confidence in my bet. The more confidence, the more money that is bet on that match. I have found that a 1-2% 'Kelly Safety Number' is conservative enough to obtain gains while remaining conservative. This could possibly be a major weak point due to it's non-flexibility. I have altered this value nothing conclusive that this is the problem.

  4. I then calculate the percentage of my current total that I am going to bet.

    betPercentage = ([HighestChancePlayerPercentage] * (1 + 1) - 1) / 1

  5. Then we take the total amount of money and take out both the bet percentage then the Kelly Safety Percentage. All of this is rounded to the nearest whole number.

    FinalBetAmount = (balanceBefore * betPercentage) * kellySafetyNumber

Now because this is a bot, I am already expecting to get heckled and downvoted for this fact. But this bot is my baby and I want to reach at least #10 on the leaderboard before I call this a success. Please let me know if you need any clarification. Upon request, and for the code savvy, I can put the code online or output the data currently stored in my database.

I am missing something super simple and just though I would turn here to you geniuses. And just to reiterate, the best clue that I have followed so far was, it gets to about 10 millions and then refuses to go much higher. If you know of a better system, I'm all ears.


If the bookies are doing their jobs correctly, then they should be setting the odds (payout) such that they net a slim profit on the match. That is, make the odds long enough to make it worthwhile for people to bet on the person that will lose the match.

The fact that you're correctly picking the winner 65% of the time but, over time, you're not accumulating money says to me that you're betting more money when you pick a loser than you are when you pick a winner, or you're betting the same amount on winners and losers, but the payout on winners is lower than the payout on the losers. The latter is expected because that is the bookie's job.

Do you save statistics on your previous bets? What is the algorithm when there was a previous fight?

Most importantly, how do your odds compare to the house odds? If you are very confident you will win, but the house is too, the payout is probably nearly 1:1 which would explain your lack of profit. You may want to consider boosting your bet amount if your odds coincides with house odds.

  • $\begingroup$ I do have around 74,000 fights recorded. I have put around 2000 of them into a spreadsheet. Here is the link: Spreadsheet The algorithm for previous fights is (player 1 fight wins / player 2 fight wins). If they have fought, it gets the outcome from the dominate player. If player 1 won 2/3 fights against player 2, player 1 has a 66.6 chance of winning. The odds are calculated at the end of betting. You cannot see house odds before the fight. You have to memorize the fighters $\endgroup$ – Neggly May 16 '15 at 2:37
  • $\begingroup$ Based on your comment I looked into how much I bet for wins and losses. I limited the results for the last 500 and got the average. Wins = 13728.2384 Losses = 7935.6373 $\endgroup$ – Neggly May 16 '15 at 2:41
  • $\begingroup$ So am I correct in understanding that you do not know what the payout is going to be before the match starts? The total you bet for wins and losses doesn't really matter; what matters is what you bet for wins and losses and what the payout odds were. $\endgroup$ – Chuck May 17 '15 at 22:45
  • $\begingroup$ Correct, you will only find out the odds once all bets are placed. I have put a picture of the information you get below. This information is only available once all bets are locked. LINK $\endgroup$ – Neggly May 18 '15 at 11:08
  • $\begingroup$ Well, it looks like they're just making the odds based on what the bets actually were, not what they thought they were going to be. In this case I would suggest trying to develop an algorithm to determine the "crowd favorite". Betting a lot of money when the odds are close to 1:1 doesn't net you much at all, and when the odds are very much in your favor is even worse. Bet a lot when you're sure the underdog will win. This requires (1) determining the underdog and (2) determining if the underdog will win. You seem to have moderate success at picking the winner, so just find the crowd favorite. $\endgroup$ – Chuck May 18 '15 at 13:46

Your Answer

By clicking “Post Your Answer”, you agree to our terms of service, privacy policy and cookie policy

Not the answer you're looking for? Browse other questions tagged or ask your own question.