BB%B scalping strategy - tests & optimizations

Hello everyone, I’ve been trying to do some tests on the BB%B strategy that I wanted to share with you.

1. Context:
For this tests I used the High Sortino Rate strategy from Ares (YouTube) with BTC, ETH and BNB against USDT on Paper Bybit SPOT & Future (Linear) and backtested from 1/2/2023, 12:00:00 AM to 3/25/2024, 12:00:00 AM (448 days)

2. Replacing MAR indicator by Supertrend on Deal Start conditions:
The idea came from Ares last video, he was speaking about Supertrend as a nice trend indicator, so I tried to test it. With the already available parameters for Supertrend, the strategy get a little bit worse than BB%B High Sortino:

  • BB%B High sortino: Net result = 95% / Drawdown = -18.8% / Winrate = 66.2% / Profit factor = 1.546 / Sortino Ratio = 1.052

  • BB%B Supertrend (Not optimized): Net result = 76% / Drawdown = -43.2% / Winrate = 62.7% / Profit factor = 1.225 / Sortino Ratio = 0.523

After optimization of some Supertrend parameters I got this:

  • BB%B Supertrend (Optimized): Net result = 161% / Drawdown = -14.7% / Winrate = 68% / Profit factor = 1.396 / Sortino Ratio = 1.815

You can find this at the following link (Gainium app). The results seem to have improved comparing to what is obtained with the original strategy both in terms of Net result and drawdown.

3. Adding DCA orders to the strategy:
This time I tried the function DCA on the optimized BB%B Supertrend and the results after some changes on the parameters where surprising:

  • BB%B Supertrend + DCA (Optimized): Net result = 179.25% / Drawdown = -7.44% / Winrate = 74.52% / Profit factor = 2.013 / Sortino Ratio = 5.179

You can find this at the following link (Gainium app). What is interesting about the DCA option here, is that not only it improves the net result but also the drawdown and the winrate. What the DCA option allows here is to improve the entry price by buying at several points.

4. Final thoughts:
I tested this strategy with this same parameters on other coins, exchanges and conditions and sometimes it helps on the overall but it also happens that the results get worse. I probably over-optimized this strategy and it fits too good to one specific situation but the results were interesting so I thought that this could be interesting also for you. I also want to share all the optimizations that I’ve been trying and the results of the backtests, as this takes a lot of time, it can be nice if it can help others to not test what has already been tested :wink: (Gainium test.xlsx - Google Таблици)

Comments on everything are welcomed!


This is great info, thanks for sharing!

Here’s an update on this strategy: I have it turned off at the moment. I am very careful with leverage, and when BTC hit the ATH, I thought there was too much risk to trade with leverage. I’m so glad I did because, seeing what happened after, I am guessing there could have been some potential liquidation (isolated anyway).

I am nonetheless still keen to run the strategy but with further improvements.

  1. As you mentioned, there could be better filters than combined rating. Supertrend was a nice idea, I thought about it myself but didn’t have time to test it.
  2. I think the risk could be further limited by using an upcoming feature we are currently developing - Stop Loss Risk. Basically, we set one indicator as the stop loss (any indicator that’s on the chart, like a support, a pivot low, even a QFL base. Then the position size is calculated in relation to that SL, so that you always risk the same amount of money or account % if the SL is hit.

I was waiting to develop this strategy further when the SL Risk is done, which I think would be by next week. In any case, we can use this thread to document our discoveries.

Keep up the good work.


You welcome!

Indeed, what could be great is to set up a strategy that doesn’t need too much managing, I mean even if the market conditions are not great (after BTC hitting ATH for example), the bot should be “ready” to handle this kind of situations. For this purpose, the Stop Loss Risk could be a great implementation as if you always risk the same amount, you don’t need to worry too much about specific situations. But in that particular strategy (BB%B) I don’t know if it’s recommendable as it has been created to don’t have a proper SL, only a TP option that can be hitted even if the price is under the entry price. I imagine situations where these new SL Risk will be hitted but the positions could have been selled at a better price just by letting the strategy work by itself as it is supposed to sell when BB%B 10th percentile is achieved, so after a “push”. For example if a QFL base is set as a SL, position will be closed when is supposed to go up.

I think that the size of the position have probably to be set depending on % of free USDT and here each one has to set a % that is ready to risk (of course leverage has to be taken into account here).

I am thinking while I am writing but maybe what could be interesting is to add the market structure indicator that you are implementing with Maksim. In that case a pivot low, if the price go there, can be a good BOS indicator (Break Of Structure) and the SL Risk could work nicely.

When the SL Risk option is ready I will test it anyway as I may be wrong or find a SL indicator that fits quite well with the strategy.

Thanks for replying, I will keep you update with the findings!


I also made some adjustments to the BB%B bot from the YT video.
The biggest changes:

  • Only BTC Perpetual
  • Increased the leverage, no liquidations in 4 years :slight_smile:
  • Made small adjustments to the BB length and the MAR value

The results are to good to be true, so I take it with a (big!) grain of salt, but I’ve been trying to decrease the amount of trades that resulted in losses.

I also started 4 BTC Perp paperbots with the Ares BB%B settings to see If there would be differences between the exchanges, and the first results are in. On Kucoin the deal was closed alot earlier than on the other exchanges.


That’s interesting, someone also mentioned the different behaviour of the deals depending on the exchange. I expect exchanges to have variations but is my understanding that they shiuldnt be too big, else arbitrage would be a big success. Have you looked into those trades? Are the indicators having different values per exchange? It’s worth looking if there is an issue with the paper system or it’s really the price data that different between the exchanges.

There is a small difference in indicator values.

New insights into this strategy. I wanted to try to change the trend indicator again, so to recapitulate, we had the MAR indicator at the beginning, then I switched to Supertrend and now I tested the recently added Market Structure (bullish market structure) indicator. I kept the best settings from my last post (Gainium app ) and only tweaked the new market structure indicator (best settings for 30min interval).

Results :

  • BB%B Supertrend (Optimized): Net result = 161% / Drawdown = -14.7% / Winrate = 68% / Profit factor = 1.396 / Sortino Ratio = 1.815

  • BB%B Market structure (Optimized): Net result = 669% / Drawdown = -8.98% / Winrate = 74.7% / Profit factor = 5.097 / Sortino Ratio = 12.871

So this seems like a no brainer, this new trend indicator gave nice results improving everything (net result + drawdown + winrate + sortino ratio). Some could say that this was tested on a bull period and that on a different situation it would be different and you are right. I tested this on a bear period (hello great memories from 11/11/2021 to 13/07/2022) and it would have hold quite well with only -10% drawdown.

Here the Gainium link to the strat : Gainium app

I also updated the Drive link to the Excel with the parameters tested (Gainium test.xlsx - Google Таблици ). If some of you want access to modify the Excel file because you are testing new parameters, don’t hesitate to ask me.

As always comments are welcomed!


I just noticed that your total/deal is not properly configured. This bot is set to use % free USDT, which is very tricky on a bot that runs multiple concurrent deals. Better use a fixed USDT amount in all backtests to avoid unrealistic results.

1 Like

I can understand why is it like this when you are backtesting. But if I start a bot with real funds, I really want to use this “% free USDT” parameter better than the “fixed amount of USDT” parameter as this second one does not take into account compounding. I know that when you use “% free USDT” the results can be unrealistic, mostly because it does not take into consideration how your trades will affect the market because it’s a backtest. But as long as you have a little portfolio, you will not affect the structure of the market and a compounding strategy would have been relatively realistic. Nevertheless, I will try to change this backtesting parameter and see how it goes. Thank you Ares for the reply !

Hi there, amazing how you improved the strategy. I am glad you touched this subject because I was getting confused. When I copied the strategy the bot said I needed 630k usdt and when I backtested over the last 3 years it gave me millions of returns. I selected fixed amount 100 usdt) and dca also 100 usdt. Result average daily return 0,17% and required capital 9k. Maybe I am doing something wrong… Are you running this strategy live?

1 Like

Hi @visa2inv! Thank you for trying the strategy :grin:
Few things here. First is that there is a difference between compounding (% free USDT) and fixed amount (100 USDT). If you have a winning strategy and you are compounding, you will earn more and more. This is right until a certain point where your trades are too big and they affect the orderbook, so the millions in backtest are wrong because yoy are taking a past period and not taking into account how your trades would affect the market (which is impossible to simulate). So when backtesting, you should not look with % free USDT you should not look at the very high numbers of net profit but preferably at drawdown or winrate. I’m starting to think that backtesting with fixed amount, can give you more information about how well the strategy is going.

Second, yes I started this strategy on paper about 12 days ago with 11 winning trades and no losing trades and on small real account 5 days ago with no trades at all. So I would say that you are not doing anything wrong because I’m running this same strategy but before investing you should explore more deeply if the stats of this strategy fit your trading style (not only the unrealistic net profits) but also, why not, try to modify the strategy in order to give you more confidence on your bot :+1::grin:

Thanks again and see you around!

Regarding the 12 vs 0 deals, do you use the same exchange on paper as on your real account?

I was just checking your backtests/url’s, but maybe I’m overlooking something, but you’re using isolated leverage with DCA. On paper, the cross margin option is not available, so then it makes sense to go for isolated on paper. But are you aware that on real it’s not going to work? If you use isolated on your real account with DCA, then it will take a separate position per DCA instead of with cross margin where it keeps adding/adjusting 1 position.

Hello @remy1111 , sorry for the delay in my answer, there was an error that didn’t let me reply to you.

Yes, I always try to use the same exchange on paper and on real account. I just checked and if I backtest the same period I obtain 24 trades. Looking more into the details, I’ve seen that the bot has only opened trades for BNB coin but for the backtest it has opened trades for BTC and ETH also. This is the main reason why I don’t have 12 trades. The reason for this I think is that I have alphabetical pair prioritization, but it doesn’t explain why it doesn’t open trades on BTC and ETH.

You are probably right, I didn’t thought about the isolated leverage/DCA problem, so do you think that by changing “isolated” by “cross margin”, the problem would be solved? Then I don’t know if by changing the conditions, everything else will stay more or less the same, I’m afraid that with cross margin it’s more easy to get liquidated as all your positions are linked.

Thank you for your patience!

No problem :slight_smile:
Hmm I can’t really explain why it didn’t open the deals for BTC and/or ETH, maybe @aressanch knows?

Well that’s a bit of a tricky one, with isolated a liquidation ‘doesn’t matter that much’.
But ‘simply’ switching from isolated to cross is not smart, because you have not been able to test whether you would be liquidated or not with the settings.
You could do is check your exchange to see if they have calculators that show how much your deal has to drop before you will be liquidated, and if you use the total deal value (including all DCA) for that in combination with your available funds, I think you can see your liquidation price which is reasonably consistent with a fully filled DCA deal.
If you know that, you can calculate what percentage the deal has to drop before you liquidate, and you can apply that percentage as Stoploss in your paper test.

But this is all very theoretical and no idea how reliable this is…

1 Like

I understand completely what you mean. I will indeed play around with it. Thanks for explaining

I did some further backtesting/adjustment and found a nice addition (market structure) to this setup, but unfortunately it is taking a lot of losses this year just at the times when BTC is doing well, anyone any tips to improve this?

1 Like

And crazy enough, I take huge losses when I increase leverage, and it’s not because I get liquidated.
It seems that when I increase leverage my losses get higher (which makes sense), but my profits should also get higher which should balance out the losses, right?

for a smaller drawdown and a more constant growth