This strategy enters once price action beraks through the range of the last 20 candles, while accompanied with elevated trading volume. It exits once price closes below an SMA(20). The idea is to follow trends, riding momentum confirmed by volume.
Backtest covers 5.7 years of SPY β’ 1 Hour (SPDR S&P 500) data, from November 8, 2019 to July 25, 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 Range breakout on 5.7 years of SPY β’ 1 Hour candles.Β This backtest resulted in 183 positions, with the average win rate of 40% and reward-risk ratio of 1.96.Β If you assume that 1.96 reward-to-risk ratio holds, you need a minimum win rate of 33.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 36% time-in-market, you get 26.17% of the asset upside potential, and 49.57% of the asset downside potential.
All of the following: # Papa 60min Chart(high) > 60min Range (20, 0), High (1 candles ago) All of the following: (within 5 candles) 60min Relative Volume (20, SMA, 1) > 1.5
All of the following: # Delta 60min Chart(close) < 60min Range (20, 0), Middle
The backtest results show some interesting patterns, but I am not completely convinced about the strategy. The win rate of 40% with a risk/reward ratio of 1.96 is mathematically viable - this reflects in the positive expectancy of 0.2. However, the strategy significantly underperforms buy & hold (28% vs 107%), which makes me skeptical about its real-world application.
What concerns me most is the high maximum drawdown of 17.4% relative to the total profit. This suggests the strategy might be too risky for its returns. The Sharpe ratio of 0.28 is quite low - I would normally want to see at least 0.5 for a strategy to be considered. The volatility metrics show that while the strategy reduces overall volatility compared to the underlying asset (7.79% vs 17.55%), it doesn't compensate enough in terms of returns.
The one positive aspect I see is the healthy win rate leeway of 39.66% above the minimal required win rate. This suggests the strategy has some robustness against deteriorating market conditions. But with a maximum losing streak of 8 trades, one needs significant psychological strength and capital to survive such periods. I would recommend to either adjust the exit conditions to reduce the maximum drawdown or look for additional filters to improve the entry precision.
Total Trades | 183 | Net Profit | 28.0% | Buy & Hold Profit | 107.0% |
Win Rate | 40% | Reward/Risk Ratio | 1.96 | Max Drawdown | -17.4% |
Asset Max Drawdown | -35.1% | Exposure | 36.3% | Avg Candles in Position | 18.8 |
Sharpe Ratio | 0.28 | Sortino Ratio | 0.47 | Realized Volatility | 7.79% |
Max Winning Streak | 3 | Avg Winning Streak | 1.4 | Max Losing Streak | 8 |
Avg Losing Streak | 2.1 | Avg Trades per Month | 5.3 | Avg Trades per Day | 0.2 |
Return Std Dev | 1.4 | Loss Std Dev | 0.6 | Win Std Dev | 1.3 |
Expectancy | 0.2 | Beta | 0.18 |
backtest | exposure | peformance vs asset | drawdown vs asset | win% | reward/risk |
---|---|---|---|---|---|
BTCUSDT β’ 1 Minute | 26% | (0.4%/-0.5%) -0.80x | (-2.3%/-4.5%) 0.51x | 46 | 1.3 |
EURUSD β’ 1 Minute | 22% | (-0.5%/0.9%) -0.56x | (-0.6%/-0.7%) 0.86x | 22 | 2.8 |
GLD β’ 1 Minute | 32% | (0.6%/-1.4%) -0.43x | (-1.9%/-4.1%) 0.46x | 38 | 1.8 |
NVDA β’ 1 Minute | 25% | (7.8%/20.4%) 0.38x | (-3.7%/-5.3%) 0.70x | 34 | 3.0 |
PLTR β’ 1 Minute | 28% | (1.3%/15.0%) 0.09x | (-5.4%/-12.9%) 0.42x | 36 | 1.9 |
SPY β’ 1 Minute | 32% | (1.6%/6.6%) 0.24x | (-1.1%/-1.5%) 0.73x | 35 | 2.4 |
TSLA β’ 1 Minute | 26% | (0.7%/-0.2%) -3.50x | (-12.8%/-19.2%) 0.67x | 35 | 1.9 |
WMT β’ 1 Minute | 31% | (-0.5%/3.3%) -0.15x | (-3.2%/-5.1%) 0.63x | 32 | 2.0 |
BTCUSDT β’ 10 Minutes | 33% | (10.5%/14.3%) 0.73x | (-4.9%/-12.1%) 0.40x | 36 | 2.4 |
EURUSD β’ 10 Minutes | 23% | (1.1%/1.8%) 0.61x | (-1.2%/-4.3%) 0.28x | 39 | 1.8 |
GLD β’ 10 Minutes | 38% | (9.4%/35.8%) 0.26x | (-5.4%/-8.3%) 0.65x | 37 | 2.2 |
NVDA β’ 10 Minutes | 30% | (19.8%/37.4%) 0.53x | (-28.5%/-42.8%) 0.67x | 46 | 1.4 |
PLTR β’ 10 Minutes | 31% | (43.5%/467.7%) 0.09x | (-32.3%/-46.5%) 0.69x | 40 | 1.9 |
SPY β’ 10 Minutes | 33% | (5.1%/13.1%) 0.39x | (-9.7%/-20.7%) 0.47x | 39 | 1.8 |
TSLA β’ 10 Minutes | 28% | (30.7%/25.4%) 1.21x | (-21.4%/-55.3%) 0.39x | 40 | 1.9 |
WMT β’ 10 Minutes | 32% | (23.2%/39.5%) 0.59x | (-5.3%/-23.8%) 0.22x | 41 | 2.1 |
BTCUSDT β’ 1 Hour | 34% | (0.5%/70.3%) 0.01x | (-18.7%/-30.6%) 0.61x | 34 | 2.0 |
EURUSD β’ 1 Hour | 30% | (1.6%/7.1%) 0.23x | (-6.8%/-9.0%) 0.76x | 34 | 2.1 |
GLD β’ 1 Hour | 38% | (39.3%/122.5%) 0.32x | (-19.5%/-22.2%) 0.88x | 39 | 2.2 |
NVDA β’ 1 Hour | 44% | (555.6%/3243.4%) 0.17x | (-52.5%/-68.0%) 0.77x | 46 | 2.1 |
PLTR β’ 1 Hour | 38% | (449.7%/1466.7%) 0.31x | (-56.3%/-86.6%) 0.65x | 43 | 2.4 |
SPY β’ 1 Hour | 36% | (28.0%/107.0%) 0.26x | (-17.4%/-35.1%) 0.50x | 40 | 2.0 |
TSLA β’ 1 Hour | 39% | (1353.0%/1305.7%) 1.04x | (-40.8%/-75.1%) 0.54x | 39 | 3.1 |
WMT β’ 1 Hour | 33% | (60.9%/145.2%) 0.42x | (-15.7%/-26.9%) 0.58x | 39 | 2.4 |
BTCUSDT β’ Daily | 35% | (549.0%/1346.8%) 0.41x | (-54.7%/-76.6%) 0.71x | 47 | 3.3 |
GLD β’ Daily | 32% | (83.3%/592.8%) 0.14x | (-21.7%/-45.3%) 0.48x | 48 | 1.8 |
NVDA β’ Daily | 32% | (6469.1%/396269.9%) 0.02x | (-55.8%/-90.0%) 0.62x | 50 | 2.7 |
SPY β’ Daily | 22% | (90.1%/1344.4%) 0.07x | (-15.9%/-56.7%) 0.28x | 49 | 2.3 |
TSLA β’ Daily | 30% | (2791.1%/24273.6%) 0.11x | (-42.7%/-75.0%) 0.57x | 42 | 4.8 |
WMT β’ Daily | 30% | (30.4%/10116.3%) 0.00x | (-67.6%/-50.6%) 1.34x | 39 | 1.8 |