Pauan / SaltyBetBot

Bot which automatically bets on saltybet.com
39 stars 12 forks source link

Tournament Betting Mode #3

Closed Leurus closed 5 years ago

Leurus commented 5 years ago

Hey again! Before I get into my suggestion I wanted to say thank you so much for making this bot and releasing it to the public. You've seriously done a great job on it and I admire your work.

As for my suggestion: I know this bot bets for upsets, but for tournaments this is an extremely inefficient way to bet since every bet is an all-in and the goal is to win the tournament while risking the least amount of salt (so you can retain your chances to win the tournament)

I'm sure mathematically you could find a good formula for winning tournaments, but here are a few suggestions:

  1. Disable the bot betting 1 salt if you're already in the tournament salt mines, also disable it if salt is less than 10k (or maybe even 25k or 50k)
  2. Tournament bets are aimed to win as many bets as possible, not to win upsets. Bot should bet based on predicted results, not on predicted salt gain.
  3. If possible, only bet as much as the highest ranked (or next highest ranked) tournament bettor has, this ensures no salt is wasted if a loss occurs, for example, if you have 500k salt and the next highest tournament bettor has 100k, there's no reason to bet more than 100k because you risk missing out on the 250k bonus for no reason, plus you're affecting the odds too much on top of it
  4. If #3 isn't possible, then the bot should never bet more than 50-70k per bet. Otherwise the odds start to become affected and you lower your chances to win the tournament if a loss occurs since you need to start over at 4k, the goal should always be to stay in the running to win the tournament to get the 250k bonus

These are just my suggestions for a better betting system for winning tournaments and how I personally go about winning tournaments. You may be able to come up with something better, but the idea is to make sure the bot changes its betting style for tournaments and doesn't waste bets by only betting 1 salt, even if it's unsure of the outcome.

Pauan commented 5 years ago

Thanks for the feedback!

As for my suggestion: I know this bot bets for upsets, but for tournaments this is an extremely inefficient way to bet since every bet is an all-in and the goal is to win the tournament while risking the least amount of salt (so you can retain your chances to win the tournament)

For tournaments it already bets based on winrate, not upsets.

In fact it uses a completely different algorithm for tournament mode.

Disable the bot betting 1 salt if you're already in the tournament salt mines

It already does that (it also does that in normal matchmaking too).

If it's not doing that, then that's a bug, and you should report it.

also disable it if salt is less than 10k (or maybe even 25k or 50k)

That might be a good idea, I'll think about it.

However, the only time it bets $1 is when the winrate between the two fighters is really close (<10%).

In other words, it only bets $1 when it's not really sure who's going to win.

Tournament bets are aimed to win as many bets as possible, not to win upsets. Bot should bet based on predicted results, not on predicted salt gain.

Indeed, it already bets solely based on winrate during tournaments.

If possible, only bet as much as the highest ranked (or next highest ranked) tournament bettor has, this ensures no salt is wasted if a loss occurs, for example, if you have 500k salt and the next highest tournament bettor has 100k, there's no reason to bet more than 100k because you risk missing out on the 250k bonus for no reason, plus you're affecting the odds too much on top of it

I'm not sure if it's programmatically possible to detect who the current tournament winner is (or who the 2nd place is, etc.)

Putting a cap to prevent skewing the odds might be a good idea though.

doesn't waste bets by only betting 1 salt, even if it's unsure of the outcome.

If both fighters are close in winrate, I don't consider it to be a "wasted bet" to not bet.

The risk of losing salt is much too high, so I think it is better to not bet in that situation.

Maybe if it has a lot of extra salt, then it can bet a partial amount of its salt, so that way it lowers the risk.

Leurus commented 5 years ago

It already does that (it also does that in normal matchmaking too).

It actually does bet $1 when you're in the salt mines, it happens very often with me. I'm Salty Illuminati though so maybe that's why?

Also, it doesn't matter if it's unsure of who's going to win if you're already at low salt. It's better to risk losing the bet if you're below 25k since you'll get 1-4k back from losing, and even more if you win vs nothing if you win and nothing if you lose. The goal is to stay ahead of other bettors, so you can't afford to waste bets in tournaments, especially if your salt is low.

Betting a partial amount if your salt is above 25k is also better than betting 1 salt, so there's not really a scenario where betting 1 salt is advisable. I won many tournaments before using your bot (I averaged 1 tournament win every 1 to 2 weeks) and in the almost 3 months that I've been using your bot I haven't won any, so I'm just speaking from my own experience here coming from a place where I was able to win more tournaments both on my own and with a different bot.

The question is what's the reason for that? I believe it's definitely partially due to the $1 bets, but if it's also betting based on winrate, I wonder if that could have something to do with it. Does it bet based on the character win % stat, or the recorded win rates? Also, does it take into account the type of characters that are fighting? I believe it's possible to create profiles for each character based on who they beat and who they lose to and how quickly they win and lose and to categorize characters into segments so you can predict which type of character is more likely to lose/win to another type and so on. If I'm not mistaken this is what SaltBot by synkarius does.

Pauan commented 5 years ago

It actually does bet $1 when you're in the salt mines, it happens very often with me. I'm Salty Illuminati though so maybe that's why?

Yes, illuminati mode isn't handled correctly (since I don't have illuminati). It will be fixed.

Also, it doesn't matter if it's unsure of who's going to win if you're already at low salt. It's better to risk losing the bet if you're below 25k since you'll get 1-4k back from losing, and even more if you win vs nothing if you win and nothing if you lose.

In practice if you're betting based on winrate the odds will be very heavily skewed, so you'll get very little money even if you do win. So you have a 50% chance to get very little money, or a 50% chance to lose all your money.

Remember, the bot isn't like a human, it doesn't know matchups or fighter types or traps or anything like that, it only knows the winrates. So if the winrates are even then it really doesn't make mathematical sense to bet.

Does it bet based on the character win % stat, or the recorded win rates?

I don't really understand this question.

The bot keeps track of all the past matches (while it was running), and it knows for each match which character won or lost, so it can easily calculate the % of matches that a character won.

So if a character showed up in 10 matches and won 3 of them, then that's a 30% winrate. There is only one way to calculate winrate.

Also, does it take into account the type of characters that are fighting?

Of course not. That would require very advanced AI, which would be a huge undertaking.

Keep in mind that the bot cannot actually watch the match. It can't watch the video. It does not know whether a character is a "grappler" or a "zoner" or anything like that.

I believe it's possible to create profiles for each character based on who they beat and who they lose to and how quickly they win and lose and to categorize characters into segments so you can predict which type of character is more likely to lose/win to another type and so on.

I had considered that before, but as said above, it would be a huge undertaking, requiring the latest bleeding edge technologies in AI.

It's not trivial at all, and would probably require a huge amount more data to even begin to do it.

If I'm not mistaken this is what SaltBot by synkarius does.

I would be incredibly surprised if it does. I haven't looked at their code too deeply, but I have glanced at it, and I believe they just use a simple winrate percentage, nothing complicated.