This strategy buys whenever Bollinger Bands is squeezed into Kelther Channel. This normally indicates that the market is going sideways. This strategy then sells whenever price goes below the Bollinger Bands middle line. The idea is to buy during the obviously sideways market, hoping for it to burst.
Backtest covers 38 days of GLD • 1 Minute (SPDR Gold Trust) data, from June 3, 2025 to July 11, 2025.
Equity curve is the strategy's performance over time. You should compare it to the asset's Buy & Hold performance. In general, you want the blue area to be well above the gray area.
Drawdown is how much losses (realized or unrealized) the strategy has had if compared to the highest equity peak. Compare this to the asset's drawdown to see whether your strategy does a decent job of isolating you from downside volatility. In general, the red area must be well within the gray area.
So, we have backtested Bollinger/Keltner squeeze on 38 days of GLD • 1 Minute candles. This backtest resulted in 115 positions, with the average win rate of 35% and reward-risk ratio of 4.04. If you assume that 4.04 reward-to-risk ratio holds, you need a minimum win rate of 19.8 to be profitable. So you're looking good so far. The key metrics are as follows:
With that exposure in mind, you can tell that for 18% time-in-market, you get Infinity% of the asset upside potential, and 18.18% of the asset downside potential.
All of the following: # Whiskey 1min Chart(close) (2 candles ago) < 1min Bollinger Bands ® (20, 2, 2, 0, close), Up (2 candles ago) 1min Chart(close) (1 candles ago) > 1min Bollinger Bands ® (20, 2, 2, 0, close), Up (1 candles ago) 1min Bollinger Bands ® (20, 2, 2, 0, close), Up (1 candles ago) < 1min Keltner Channel (20, SMA, 10, 2, 0, close), Up (1 candles ago) 1min BB (20, 2, 2, 0, close) (1 candles ago) > 1min Keltner (20, SMA, 10, 2, 0, close) (1 candles ago)
Any of the following: # Papa 1min Chart(close) < 1min Bollinger Bands ® (20, 2, 2, 0, close), Middle
The backtest shows some interesting characteristics from a mathematical perspective. The strategy performs quite good in terms of risk management, which I find fascinating. With a Win Rate of 35% and a Risk/Reward of 4.04, the strategy has a healthy expectancy of 0.8 - this is actually quite solid.
What catches my eye is the high Win Rate Leeway of 3480% above minimal required win rate. This means the strategy has a lot of room for deterioration before it becomes unprofitable, which is very good from risk management perspective. The max drawdown of only -1.0% is also remarkable, especially when compared to the asset's drawdown of -5.5%. However, I am bit concerned about the max losing streak of 10 trades - this could be psychologically challenging for many traders.
The trading frequency with 6.1 trades per day seems reasonable for a 1-minute timeframe strategy. But I would suggest to check if the strategy performs equally well on different market conditions - the NaN values in some risk metrics make it difficult to fully evaluate the robustness. Also, I would recommend to test this over a longer period to ensure these metrics are stable over time.
Total Trades | 115 | Net Profit | 3.6% | Buy & Hold Profit | 0.0% |
Win Rate | 35% | Reward/Risk Ratio | 4.04 | Max Drawdown | -1.0% |
Asset Max Drawdown | -5.5% | Exposure | 18.1% | Avg Candles in Position | 14.7 |
Sharpe Ratio | Sortino Ratio | Realized Volatility | — | ||
Max Winning Streak | 4 | Avg Winning Streak | 1.5 | Max Losing Streak | 10 |
Avg Losing Streak | 2.9 | Avg Trades per Month | 181.6 | Avg Trades per Day | 6.1 |
Return Std Dev | 0.2 | Loss Std Dev | 0.0 | Win Std Dev | 0.3 |
Expectancy | 0.8 | Beta | 0.23 |
backtest | exposure | peformance vs asset | drawdown vs asset | win% | reward/risk |
---|---|---|---|---|---|
BTCUSD • 1 Minute | 13% | (0.2%/9.8%) 0.02x | (-0.4%/-1.6%) 0.25x | 49 | 1.2 |
EURUSD • 1 Minute | 17% | (-0.1%/-0.9%) 0.11x | (-0.5%/-1.2%) 0.42x | 28 | 2.4 |
GLD • 1 Minute | 18% | (3.6%/0.0%) Infinityx | (-1.0%/-5.5%) 0.18x | 35 | 4.0 |
NVDA • 1 Minute | 24% | (8.1%/16.7%) 0.49x | (-1.8%/-4.4%) 0.41x | 43 | 2.4 |
SPY • 1 Minute | 23% | (1.0%/4.6%) 0.22x | (-1.6%/-2.1%) 0.76x | 33 | 2.4 |
TSLA • 1 Minute | 23% | (-14.5%/-10.3%) 1.41x | (-15.5%/-21.4%) 0.72x | 28 | 1.3 |
WMT • 1 Minute | 18% | (-3.8%/-5.4%) 0.70x | (-3.9%/-6.4%) 0.61x | 31 | 1.4 |
BTCUSD • 10 Minutes | 19% | (1.0%/27.2%) 0.04x | (-6.3%/-12.1%) 0.52x | 35 | 1.9 |
EURUSD • 10 Minutes | 24% | (-0.3%/6.5%) -0.05x | (-4.3%/-4.3%) 1.00x | 30 | 2.3 |
GLD • 10 Minutes | 19% | (-4.0%/43.7%) -0.09x | (-8.0%/-8.3%) 0.96x | 37 | 1.4 |
NVDA • 10 Minutes | 25% | (-12.1%/32.9%) -0.37x | (-24.9%/-42.8%) 0.58x | 36 | 1.6 |
SPY • 10 Minutes | 26% | (-0.3%/14.3%) -0.02x | (-5.6%/-20.7%) 0.27x | 38 | 1.6 |
TSLA • 10 Minutes | 24% | (4.7%/59.0%) 0.08x | (-32.8%/-55.3%) 0.59x | 40 | 1.6 |
WMT • 10 Minutes | 27% | (17.3%/40.1%) 0.43x | (-6.2%/-23.8%) 0.26x | 44 | 1.9 |
BTCUSD • 1 Hour | 25% | (19.1%/71.4%) 0.27x | (-21.5%/-31.0%) 0.69x | 42 | 1.7 |
EURUSD • 1 Hour | 26% | (4.9%/8.2%) 0.60x | (-2.8%/-9.0%) 0.31x | 41 | 1.9 |
GLD • 1 Hour | 16% | (6.2%/117.6%) 0.05x | (-18.6%/-22.2%) 0.84x | 42 | 1.6 |
NVDA • 1 Hour | 26% | (364.4%/3126.3%) 0.12x | (-34.2%/-68.0%) 0.50x | 49 | 2.5 |
SPY • 1 Hour | 22% | (8.9%/106.7%) 0.08x | (-12.4%/-35.1%) 0.35x | 41 | 1.7 |
TSLA • 1 Hour | 21% | (505.6%/1395.5%) 0.36x | (-34.5%/-75.1%) 0.46x | 43 | 3.1 |
WMT • 1 Hour | 25% | (25.8%/138.2%) 0.19x | (-9.3%/-26.9%) 0.35x | 46 | 1.6 |
BTCUSD • Daily | 28% | (2515.4%/67440.2%) 0.04x | (-51.5%/-83.8%) 0.61x | 45 | 4.2 |
EURUSD • Daily | 25% | (5.2%/10.8%) 0.48x | (-9.1%/-23.3%) 0.39x | 39 | 1.9 |
GLD • Daily | 17% | (13.2%/595.1%) 0.02x | (-21.1%/-45.3%) 0.47x | 39 | 1.9 |
NVDA • Daily | 26% | (577.6%/373678.5%) 0.00x | (-51.4%/-90.0%) 0.57x | 43 | 2.5 |
SPY • Daily | 22% | (14.1%/1316.3%) 0.01x | (-39.4%/-56.7%) 0.69x | 39 | 1.9 |
TSLA • Daily | 24% | (1451.6%/24185.2%) 0.06x | (-38.8%/-75.0%) 0.52x | 47 | 3.9 |
WMT • Daily | 26% | (-44.0%/9978.0%) -0.00x | (-74.7%/-50.6%) 1.48x | 36 | 1.6 |