Pauan / SaltyBetBot

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

How does this bot perform compared to SaltBot by synkarius? #1

Closed Leurus closed 5 years ago

Leurus commented 6 years ago

Hi, I'm interested in trying your bot on my account which has 30mil salt. How does your bot perform? How much does it gain on average per day, etc.? Any data on this at all would be very appreciated! :)

Pauan commented 6 years ago

It generally performs a lot better (the algorithm it uses is far superior), but on the other hand it's missing a lot of data, so it's not really ready for public use yet. Maybe in a few months it'll be ready.

Leurus commented 6 years ago

If you need help with data, I have pretty much every match recorded going back 3-4 years. Can your bot read records from SaltBot?

Pauan commented 6 years ago

Unfortunately, it can't, because SaltBot is missing important information, the way it collects data is wrong.

Pauan commented 6 years ago

I've fixed up enough stuff that it's now ready for public use (plus it has a lot more data now).

You can follow the directions on the README to install it and set it up.

Let me know how well it works for you (I accept no responsibility if it causes you to lose salt).

Pauan commented 6 years ago

By the way, to answer your question directly: according to my simulations, with a starting amount of $10,000,000, it gained $8,975,316 profit over the past 21 days. That's an average gain of $427,396 per day.

But of course that varies a lot: I've noticed that there are periods of 1-2 weeks where it will gain a lot, and then periods of 1-2 weeks where it will lose a lot.

I've analyzed the bad weeks with a lot of different algorithms and parameters, and as far as I can tell all of the algorithms did poorly, so it's probably due to either bad luck or inadequate data, and not a flaw in the algorithms.

Of course I'll keep analyzing it and tweaking it to improve it as much as I can, but the current algorithms are already really solid, so it's hard to find things to improve.

Leurus commented 6 years ago

It's great to hear that you're still working on this. I've also noticed good weeks and bad weeks with SaltBot regardless of whether I update the chromosomes or leave them the same, I'm curious if there's some setting behind the scenes that changes the outcome of matches, some unknown algorithm (or manual manipulation) of SaltyBet itself. What do you think?

I'm going to install your bot now and I'll report back once I've tested it. Thanks for updating this issue and the continued effort!

Leurus commented 6 years ago

A few issues I've noticed right away:

  1. It opens https://www.twitch.tv/embed/saltybet/chat?darkpopout which is just a blank page on my end, when it should open https://www.twitch.tv/popout/saltybet/chat?darkpopout
  2. No ability to search within records, this is a critical feature imo.
  3. It disables the video by default with no way to re-enable it as far as I can tell. This is inconvenient if you want to watch the games while it's betting. Even placing the video behind the text would work fine as long as you can toggle the visibility of the text/video. Just an idea.

I'll watch it over the next few weeks and see how it does with actually winning bets/generating salt and report back.

Pauan commented 6 years ago

@Leurus Thanks for the feedback!

I'm curious if there's some setting behind the scenes that changes the outcome of matches, some unknown algorithm (or manual manipulation) of SaltyBet itself. What do you think?

I very highly doubt that. I think it's just because 1) the matches themself are very random, even with the exact same fighters 2) people's betting habits are also rather random.

It opens https://www.twitch.tv/embed/saltybet/chat?darkpopout which is just a blank page on my end, when it should open https://www.twitch.tv/popout/saltybet/chat?darkpopout

Yes, it intentionally hides the chat, so that way I don't get distracted by it.

But perhaps it is too confusing, so I can easily change it to keep the chat visible.

When importing records (I used Static>SaltyBet Records.json I get no confirmation that it successfully (or unsuccessfully) imported

I'll think about how to add in a confirmation.

Though with the recent version it's not needed to import anymore (it will automatically import the default match records).

when clicking the "open records page" button all I see is a blank tab, not sure why this is.

Yes, this is very annoying, but as far as I can tell it's a bug in Chrome, so there's not much I can do about it.

You just need to refresh the page and then it will show up.

No ability to search within records, this is a critical feature imo.

Oh, I hadn't thought of that, that's a good idea! I can add that in.

It disables the video by default with no way to re-enable it as far as I can tell. This is inconvenient if you want to watch the games while it's betting.

Yeah, I know SaltBot lets you toggle the video. It shouldn't be hard for me to add in that feature, I just never had a need for it (since I don't like getting distracted by the video).

I'll watch it over the next few weeks and see how it does with actually winning bets/generating salt and report back.

Thanks!

Keep in mind that I do update it regularly, and I often make changes/improvements to the betting algorithm, so you should follow the upgrade steps once in a while (e.g. once a week) to ensure that you are using the best possible algorithm.

Pauan commented 6 years ago

@Leurus The latest version (which I pushed just now) has the following changes:

Leurus commented 6 years ago

Nice one, you work really quickly! I'll update shortly. Overall I really like the bot so far. I can tell it's been coded extremely well simply because of how easy/convenient it was to install and looking at the update instructions it seems very convenient to update as well. Really impressive!

Leurus commented 6 years ago

Update was flawless. I especially love the video toggle feature!

I have a few questions/comments at this point:

  1. Have you considered adding some sort of learning (or chromosome) feature to the bot so that users can play around with the algorithm and test different strategies? This was one of my favorite things about SaltBot, and I know many other people feel the same way in regards to updating chromosomes and watching them evolve in the Chrome console being one of the most fun parts of SaltBot.
  2. I feel like a betting multiplier is pretty critical. As it stands, your bot actually bets very well in regards to how it chooses the amount to bet, but to take advantage of win streaks and supplement losing streaks, I feel it's a good idea to have a betting multiplier you can turn up/down to take advantage of these winning/losing streaks that happen like you mentioned earlier
  3. Do you need a graphic designer? I'm highly experienced and I'd love to support you by helping with any graphics you may want to implement, plus it would be a fun project for me on the side. (I currently work full time doing graphic design) I wouldn't charge you, of course. Just let me know. :)
Pauan commented 6 years ago

Have you considered adding some sort of learning (or chromosome) feature to the bot so that users can play around with the algorithm and test different strategies? This was one of my favorite things about SaltBot, and I know many other people feel the same way in regards to updating chromosomes and watching them evolve in the Chrome console being one of the most fun parts of SaltBot.

Actually, several months ago I went much further than that: I was creating entire algorithms and neural networks using genetic evolution. It was much much deeper than SaltBot.

One of the motivations I had for making SaltyBetBot in the first place was that I figured I could make a much better evolutionary algorithm than SaltBot.

I was right, my algorithms were much better, but unfortunately it turns out that genetic algorithms are actually inferior to carefully hand-crafted algorithms. So I scrapped that idea.

In the Charts page you can find the "Genetic" option, which uses the neural network. It doesn't do very well though (currently at $4,307,103 gain).

For comparison, the current hand-crafted algorithm gets $12,018,055 gain.

I feel like a betting multiplier is pretty critical. As it stands, your bot actually bets very well in regards to how it chooses the amount to bet, but to take advantage of win streaks and supplement losing streaks, I feel it's a good idea to have a betting multiplier you can turn up/down to take advantage of these winning/losing streaks that happen like you mentioned earlier

Could you explain more about how you want a betting multiplier to work?

If you mean that it should bet a percentage, I already tried that. In the Charts page you can select "Percentage" in the dropdown list, and it will simulate betting with percentages.

In general "Percentage" does really badly (often losing money), because yes it can make more on winning streaks, but it also loses more on losing streaks.

And the best betting algorithms have ~35% winrate (so they can take advantage of upsets), so betting a percentage causes you to lose more than you gain.

In the Charts page I've implemented 19 different betting algorithms, and 7 different money algorithms. I've used that page a lot to fine-tune the algorithms and test out new algorithms.

Chances are, if you have an idea, I've already implemented it. But of course I welcome any suggestions: I want it to be the best that it can be.

Do you need a graphic designer?

That's a very nice offer! I don't need any graphics for SaltyBetBot (unless you see something you think should be improved?), but I'm actually planning on making a game soon, if you want you can help out with that.

Leurus commented 6 years ago

I was right, my algorithms were much better, but unfortunately it turns out that genetic algorithms are actually inferior to carefully hand-crafted algorithms. So I scrapped that idea.

Makes sense. Seems like you've already fully explored that idea.

Could you explain more about how you want a betting multiplier to work?

Sure, what I mean by this is an option that simply multiples the normal betting amount. So you could set the multiplier to a number between 0.0 to 10.0 (decimals are important for full control of betting amounts), so for example - let's say the user sets the multiplier to 2.5. This means if the bot would have bet 10k, it instead bets 25k.

In the Charts page I've implemented 19 different betting algorithms, and 7 different money algorithms. I've used that page a lot to fine-tune the algorithms and test out new algorithms.

I haven't taken a deep look at the "chart page" mostly because on the surface it was very confusing to understand, but I'll take a more indepth look at it later and report back.

That's a very nice offer! I don't need any graphics for SaltyBetBot (unless you see something you think should be improved?), but I'm actually planning on making a game soon, if you want you can help out with that.

Nothing critical, my only idea was that we could add some design elements to the interface (the box that appears when you click the square S icon), because it's a bit plain right now, but that's honestly not even that big of a deal, was just throwing the idea out there in case you had any design goals that you needed help with.

I may be able to help with art for a game, it really depends on how extensive a project it is, and if I can find an interest in it.

Pauan commented 6 years ago

Sure, what I mean by this is an option that simply multiples the normal betting amount. So you could set the multiplier to a number between 0.0 to 10.0 (decimals are important for full control of betting amounts), so for example - let's say the user sets the multiplier to 2.5. This means if the bot would have bet 10k, it instead bets 25k.

Oh, I see, you mean something that the user can change on the fly.

I'm not sure how useful that would be (since I don't think it's easy to predict whether a win streak/loss streak will continue or not), but I'll think about adding in something like that.

I haven't taken a deep look at the "chart page" mostly because on the surface it was very confusing to understand, but I'll take a more indepth look at it later and report back.

It certainly has a lot going on!

The chart goes from left to right, with older data to the left and newer data to the right.

The white/blue lines are the amount of money that it has at that point in time (so having the white lines go up is good, having them go down is bad).

The pure white line is the exact amount of money it has at that point in time (so it's very jagged). The bluer lines are the same as the white line but averaged (so they are smoother). The bluer lines are generally a better indication of long-term performance.

The vertical black lines are the number of match data it has for the characters (it's the "Number of past matches (in general)" statistic).

The vertical green lines are how much money it gained on that particular match (bigger is better), and the red vertical lines are how much money it lost on that particular match (bigger is worse).

The red dots on top of the green lines are how much money it would have gained if the odds were exactly 1:1. This lets you know whether the bet was an upset or not (if the green line is higher than the red dot, that means it was an upset, otherwise it was favored).

In general you only really need to care about the white/blue lines, since they indicate how much money it makes.

As for the controls:

Then after changing the settings, you click the "Run simulation" button, and it will show the results on the chart.

As for the text in the upper-left corner, they're all interesting (and pretty self-explanatory), but the most important one is "Total gains", since it tells you how much money it made over that time period (which defaults to 21 days).

Nothing critical, my only idea was that we could add some design elements to the interface (the box that appears when you click the square S icon), because it's a bit plain right now, but that's honestly not even that big of a deal, was just throwing the idea out there in case you had any design goals that you needed help with.

If you feel like creating a mockup, that would be great, but as you said it's not a big deal, so that's up to you.

I think the biggest thing is actually having a logo to replace the "S" square icon. Ideally in SVG, so it can scale.

I may be able to help with art for a game, it really depends on how extensive a project it is, and if I can find an interest in it.

Do you have some way that we can communicate? E-mail, Skype, Steam, etc.?

Leurus commented 6 years ago

I'm not sure how useful that would be (since I don't think it's easy to predict whether a win streak/loss streak will continue or not), but I'll think about adding in something like that.

The way I see it, if it's making some money at 1.0, then it will make MORE money at 2.0. Definitely seems like an important feature to me if for nothing else but having some control over things since there's no chromosome feature. Otherwise it's just the bot doing everything with no interaction from the user, which isn't that interesting.

Thanks for the explanation for the chart page, that definitely helps a lot!

I think the biggest thing is actually having a logo to replace the "S" square icon. Ideally in SVG, so it can scale.

I'll keep this in mind. I may mess around with some logo ideas after I've tested the bot more.

Do you have some way that we can communicate? E-mail, Skype, Steam, etc.?

Do you have discord? If not, email works fine.

Pauan commented 6 years ago

The way I see it, if it's making some money at 1.0, then it will make MORE money at 2.0.

Although that's a very intuitive way of thinking, it's not actually correct. In fact it's quite the opposite: betting less money causes it to make more profit.

The reason is because of the way that the odds work: the more that you bet on a character, the more favored that character is, which means you get a smaller percentage of profit.

Betting is very counter-intuitive, such as the fact that the best algorithms have only a ~35% winrate, and that they intentionally bet on bad characters (characters with low winrates, characters that nobody else is betting on, etc.)

Betting in the "obvious" way (betting on characters with high winrates) causes you to gain basically no money in the long run. So my bot doesn't do that.

If you want to see it for yourself, select "Wins" in the Charts page, that causes the simulation to bet on the character with the higher winrate. It achieves ~67% winrate, which is quite good (betting randomly gives a 50% winrate), but it loses money.

With "Simulate extra data" it achieves an even higher winrate of ~73%, and now it's actually making some money, but it's making far less money than some other algorithms (such as "ExpectedBet").

Otherwise it's just the bot doing everything with no interaction from the user, which isn't that interesting.

Well, yes, that's the idea behind an automated betting program.

Still, I understand some people will want more control (even if it's basically a placebo that doesn't make more money, and may actually lose money), so I'll think about it.

Do you have discord? If not, email works fine.

Yeah, it's Pauan#6666

Leurus commented 6 years ago

The reason is because of the way that the odds work: the more that you bet on a character, the more favored that character is, which means you get a smaller percentage of profit.

I fully understand this and I agree with everything else you said besides this, because even changing a bet from 40k to 80k isn't going to affect the odds the way that you're talking about, I've noticed the effect that you're talking about after you start betting 150k or more per bet. Anything less doesn't affect the odds in a negative enough way for it to not be worth it if you're already making a profit.

I also understand the upset strategy that you're talking about, I always attempted to make SaltBot bet upset but it wasn't very good at it. Catching upsets is definitely the #1 way to make salt.

I'm adding you on Discord now. :)