Basics
mode: spot
timeframe: 5m
interface version: 3
Settings
stoploss: -0.3
has minimal roi
hyperopt
hyperopt params: 4
Indicators
Bollinger_Bands
CCI
MACD
talib
5 related strategies (⧉ identical code, ≈ similar name)
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51 52 53 54 55 56 57 58 59 60 61 62 63 64 65 66 67 68 69 70 71 72 73 74 75 76 77 78 79 80 81 82 83 84 85 86 87 88 89 90 91 92 93 94 95 96 97 | # --- Do not remove these libs --- from freqtrade.strategy import IStrategy from freqtrade.strategy import CategoricalParameter, DecimalParameter, IntParameter from pandas import DataFrame # -------------------------------- import talib.abstract as ta import freqtrade.vendor.qtpylib.indicators as qtpylib class ComboV3(IStrategy): """ author@: me_dium """ INTERFACE_VERSION: int = 3 # Minimal ROI designed for the strategy. # This attribute will be overridden if the config file contains "minimal_roi" minimal_roi = { "60": 0.01, "30": 0.03, "20": 0.04, "0": 0.05 } # Optimal stoploss designed for the strategy # This attribute will be overridden if the config file contains "stoploss" stoploss = -0.3 # Optimal timeframe for the strategy timeframe = '5m' buy_cci = IntParameter(low=-700, high=0, default=-50, space='buy', optimize=True) sell_cci = IntParameter(low=0, high=700, default=100, space='sell', optimize=True) # Buy hyperspace params: buy_params = { "buy_cci": -48, "buy_bbdelta": 7, "buy_closedelta": 17, "buy_tail": 25, } # Sell hyperspace params: sell_params = { "sell_cci": 687, } buy_closedelta = IntParameter(low=15, high=20, default=30, space='buy', optimize=True) buy_tail = IntParameter(low=20, high=30, default=30, space='buy', optimize=True) def populate_indicators(self, dataframe: DataFrame, metadata: dict) -> DataFrame: macd = ta.MACD(dataframe) dataframe['macd'] = macd['macd'] dataframe['macdsignal'] = macd['macdsignal'] dataframe['macdhist'] = macd['macdhist'] dataframe['cci'] = ta.CCI(dataframe) bollinger = qtpylib.bollinger_bands(dataframe['close'], window=40, stds=2) dataframe['mid'] = bollinger['mid'] dataframe['lower'] = bollinger['lower'] dataframe['closedelta'] = (dataframe['close'] - dataframe['close'].shift()).abs() dataframe['bbdelta'] = (dataframe['mid'] - dataframe['lower']).abs() dataframe['tail'] = (dataframe['close'] - dataframe['low']).abs() bollinger2 = qtpylib.bollinger_bands(dataframe['close'], window=20, stds=2) dataframe['bb_lowerband'] = bollinger2['lower'] return dataframe def populate_entry_trend(self, dataframe: DataFrame, metadata: dict) -> DataFrame: """ Based on TA indicators, populates the buy signal for the given dataframe :param dataframe: DataFrame :return: DataFrame with buy column """ dataframe.loc[ ( (dataframe['cci'] <= self.buy_cci.value) & dataframe['closedelta'].gt(dataframe['close'] * self.buy_closedelta.value / 1000) & dataframe['tail'].lt(dataframe['bbdelta'] * self.buy_tail.value / 1000) & dataframe['close'].le(dataframe['close'].shift()) ), 'enter_long'] = 1 return dataframe def populate_exit_trend(self, dataframe: DataFrame, metadata: dict) -> DataFrame: """ Based on TA indicators, populates the sell signal for the given dataframe :param dataframe: DataFrame :return: DataFrame with buy column """ return dataframe |
Strategy League — fixed backtest that feeds the ranking
Export report Freqtrade logsRun finished · took 314.6s
pairs 33 pairs
timerange 20210101-20260101
mode spot
timeframe 5m
stake 100 USDT
wallet 1000 USDT
max open trades 10
fee exchange lowest tier
total profit+313.81%
final wallet4138 USDT
win rate96.9%
max drawdown-13.37%
market change+451.55%
vs market-137.74%
timeframe5m
profit factor2.06
expectancy ratio0.033
sharpe5.805
sortino19.233
CAGR+32.8%
calmar23.86
avg MFE+3.40%
avg MAE-4.82%
avg profit/trade0.97%
avg duration15h 18m
best trade+5.07%
worst trade-30.14%
positive months50/60
consistent (3-mo)86.2%
worst 3-mo-18.48%
trades3220
revision1
likely annual return+33%
range (5th–95th)+28% … +39%
chance of profit100.0%
worst-5% outcome+26%
significance (p)0.0
risk of ruin0.0%
- did not beat simply holding the market
- statistically significant edge (p=0.00)
- 100% of resampled runs stayed profitable
- profitable across 86% of rolling 3-month windows
Resampling the trade sequence 2,000× shows the spread of results this edge could plausibly produce — separating a dependable strategy from one that got lucky once.
Loading charts…
Monthly breakdown
| Month | Regime | Trades | Profit % | Avg % | Win | Loss | Win % | DD % | Avg dur |
|---|---|---|---|---|---|---|---|---|---|
| Jan 2026 | bullish trending low vol | 1 | -1.30 | -13.05 | 0 | 1 | 0.0 | -1.12 | 242h 10m |
| Dec 2025 | bearish trending low vol | 12 | +1.60 | 1.33 | 12 | 0 | 100.0 | -1.12 | 14h 09m |
| Nov 2025 | bearish trending high vol | 36 | +6.00 | 1.67 | 35 | 1 | 97.2 | -2.55 | 4h 40m |
| Oct 2025 | bearish trending low vol | 46 | -10.06 | -2.18 | 39 | 7 | 84.8 | -4.32 | 1h 07m |
| Sep 2025 | bullish choppy low vol | 9 | +1.29 | 1.43 | 9 | 0 | 100.0 | 0.0 | 1h 24m |
| Aug 2025 | bullish choppy low vol | 7 | +1.80 | 2.57 | 7 | 0 | 100.0 | 0.0 | 0h 44m |
| Jul 2025 | bullish choppy low vol | 13 | +2.71 | 2.08 | 13 | 0 | 100.0 | -0.5 | 64h 52m |
| Jun 2025 | bearish choppy low vol | 10 | -2.08 | -2.08 | 9 | 1 | 90.0 | -0.73 | 91h 33m |
| May 2025 | bullish trending low vol | 7 | +0.80 | 1.15 | 7 | 0 | 100.0 | 0.0 | 4h 07m |
| Apr 2025 | bullish choppy low vol | 7 | +0.79 | 1.12 | 7 | 0 | 100.0 | 0.0 | 75h 49m |
| Mar 2025 | bearish trending high vol | 25 | +3.69 | 1.48 | 25 | 0 | 100.0 | 0.0 | 25h 38m |
| Feb 2025 | bearish trending low vol | 34 | +6.01 | 1.77 | 34 | 0 | 100.0 | 0.0 | 5h 16m |
| Jan 2025 | bearish choppy low vol | 29 | +0.73 | 0.25 | 28 | 1 | 96.6 | -0.75 | 79h 07m |
| Dec 2024 | bullish trending low vol | 84 | +17.62 | 2.10 | 83 | 1 | 98.8 | -0.77 | 3h 17m |
| Nov 2024 | bullish trending low vol | 79 | +13.73 | 1.74 | 79 | 0 | 100.0 | 0.0 | 8h 07m |
| Oct 2024 | bullish choppy low vol | 12 | +1.72 | 1.43 | 12 | 0 | 100.0 | 0.0 | 43h 25m |
| Sep 2024 | bearish choppy low vol | 3 | +0.50 | 1.67 | 3 | 0 | 100.0 | 0.0 | 1h 02m |
| Aug 2024 | bearish choppy high vol | 23 | +4.20 | 1.83 | 23 | 0 | 100.0 | -0.63 | 2h 22m |
| Jul 2024 | bearish trending low vol | 22 | +2.74 | 1.24 | 22 | 0 | 100.0 | -1.46 | 4h 29m |
| Jun 2024 | bearish choppy low vol | 18 | +1.29 | 0.72 | 17 | 1 | 94.4 | -1.71 | 14h 31m |
| Apr 2024 | bearish choppy high vol | 31 | -3.73 | -1.20 | 28 | 3 | 90.3 | -2.25 | 16h 21m |
| Mar 2024 | bullish trending high vol | 35 | +4.51 | 1.29 | 34 | 1 | 97.1 | -0.82 | 15h 53m |
| Feb 2024 | bullish trending low vol | 8 | +1.13 | 1.41 | 8 | 0 | 100.0 | 0.0 | 2h 34m |
| Jan 2024 | bearish choppy high vol | 32 | +7.05 | 2.20 | 32 | 0 | 100.0 | 0.0 | 5h 38m |
| Dec 2023 | bullish trending low vol | 14 | +2.61 | 1.86 | 14 | 0 | 100.0 | 0.0 | 3h 15m |
| Nov 2023 | bullish trending low vol | 10 | +1.86 | 1.85 | 10 | 0 | 100.0 | 0.0 | 7h 18m |
| Oct 2023 | bullish trending low vol | 22 | +2.67 | 1.21 | 22 | 0 | 100.0 | 0.0 | 38h 47m |
| Sep 2023 | bearish choppy low vol | 6 | +0.61 | 1.02 | 6 | 0 | 100.0 | 0.0 | 2h 38m |
| Aug 2023 | bearish choppy low vol | 20 | +3.51 | 1.75 | 19 | 1 | 95.0 | -0.89 | 2h 48m |
| Jul 2023 | bullish trending low vol | 10 | +1.40 | 1.40 | 10 | 0 | 100.0 | 0.0 | 4h 33m |
| Jun 2023 | bullish trending low vol | 30 | +6.09 | 2.03 | 30 | 0 | 100.0 | -0.4 | 8h 56m |
| May 2023 | bearish choppy low vol | 19 | +2.37 | 1.25 | 19 | 0 | 100.0 | -1.14 | 51h 07m |
| Apr 2023 | bullish trending low vol | 3 | +0.30 | 0.99 | 3 | 0 | 100.0 | -1.29 | 279h 40m |
| Mar 2023 | bullish trending high vol | 27 | +3.53 | 1.31 | 27 | 0 | 100.0 | -2.34 | 14h 05m |
| Feb 2023 | bullish trending low vol | 31 | +4.99 | 1.61 | 31 | 0 | 100.0 | -3.84 | 4h 46m |
| Jan 2023 | bullish trending low vol | 61 | +8.14 | 1.33 | 61 | 0 | 100.0 | -6.28 | 21h 32m |
| Dec 2022 | bearish trending low vol | 8 | -5.39 | -6.73 | 6 | 2 | 75.0 | -6.46 | 240h 21m |
| Nov 2022 | bearish trending high vol | 73 | -13.00 | -1.78 | 65 | 8 | 89.0 | -5.41 | 36h 45m |
| Oct 2022 | bullish choppy low vol | 14 | -0.09 | -0.06 | 13 | 1 | 92.9 | -1.37 | 109h 34m |
| Sep 2022 | bearish choppy high vol | 18 | -0.95 | -0.53 | 17 | 1 | 94.4 | -1.12 | 218h 49m |
| Aug 2022 | bullish choppy high vol | 14 | +2.02 | 1.44 | 14 | 0 | 100.0 | -1.0 | 28h 22m |
| Jul 2022 | bearish trending high vol | 49 | +6.90 | 1.41 | 49 | 0 | 100.0 | -3.12 | 38h 24m |
| Jun 2022 | bearish trending high vol | 105 | -4.34 | -0.41 | 98 | 7 | 93.3 | -4.53 | 25h 49m |
| May 2022 | bearish trending high vol | 128 | +0.05 | 0.00 | 120 | 8 | 93.8 | -4.54 | 6h 06m |
| Apr 2022 | bearish choppy high vol | 26 | +0.77 | 0.29 | 25 | 1 | 96.2 | -0.91 | 9h 09m |
| Mar 2022 | bullish choppy high vol | 27 | +4.82 | 1.79 | 27 | 0 | 100.0 | -0.96 | 6h 34m |
| Feb 2022 | bearish trending high vol | 33 | -0.93 | -0.28 | 31 | 2 | 93.9 | -1.73 | 41h 02m |
| Jan 2022 | bearish trending high vol | 54 | +5.43 | 1.01 | 52 | 2 | 96.3 | -0.94 | 27h 13m |
| Dec 2021 | bearish trending high vol | 37 | +1.49 | 0.40 | 35 | 2 | 94.6 | -1.89 | 31h 13m |
| Nov 2021 | bullish trending high vol | 39 | +6.09 | 1.56 | 38 | 1 | 97.4 | -0.96 | 29h 11m |
| Oct 2021 | bullish trending high vol | 42 | +7.45 | 1.78 | 42 | 0 | 100.0 | 0.0 | 40h 37m |
| Sep 2021 | bearish trending high vol | 109 | +19.30 | 1.77 | 107 | 2 | 98.2 | -1.05 | 7h 29m |
| Aug 2021 | bullish trending high vol | 56 | +9.06 | 1.62 | 56 | 0 | 100.0 | 0.0 | 3h 32m |
| Jul 2021 | bearish trending high vol | 35 | +4.10 | 1.17 | 35 | 0 | 100.0 | 0.0 | 29h 02m |
| Jun 2021 | bearish trending high vol | 92 | +8.91 | 0.97 | 90 | 2 | 97.8 | -2.1 | 15h 40m |
| May 2021 | bearish trending high vol | 514 | +32.27 | 0.63 | 490 | 24 | 95.3 | -13.37 | 4h 14m |
| Apr 2021 | bearish choppy high vol | 234 | +19.38 | 0.83 | 224 | 10 | 95.7 | -6.48 | 6h 45m |
| Mar 2021 | bullish choppy high vol | 90 | +9.84 | 1.09 | 88 | 2 | 97.8 | -2.83 | 27h 57m |
| Feb 2021 | bullish trending high vol | 275 | +43.83 | 1.59 | 271 | 4 | 98.5 | -3.21 | 3h 31m |
| Jan 2021 | bullish trending high vol | 312 | +56.00 | 1.79 | 310 | 2 | 99.4 | -2.4 | 3h 58m |
Yearly breakdown
| Year | Trades | Profit % | Avg % | Win | Loss | Win % | DD % | Avg dur |
|---|---|---|---|---|---|---|---|---|
| 2026 | 1 | -1.30 | -13.05 | 0 | 1 | 0.0 | -1.12 | 242h 10m |
| 2025 | 235 | +13.28 | 0.57 | 225 | 10 | 95.7 | -4.32 | 24h 51m |
| 2024 | 347 | +50.76 | 1.46 | 341 | 6 | 98.3 | -2.25 | 8h 59m |
| 2023 | 253 | +38.08 | 1.50 | 252 | 1 | 99.6 | -6.28 | 19h 48m |
| 2022 | 549 | -4.71 | -0.09 | 517 | 32 | 94.2 | -6.46 | 34h 46m |
| 2021 | 1835 | +217.72 | 1.19 | 1786 | 49 | 97.3 | -13.37 | 8h 41m |
Trade charts — best 2 and worst 2 performing pairs (full OHLC candles are expensive to render for every pair)
Backtests — over a market period
Backtest this strategy over a chosen crypto-cycle period. These don't affect the League ranking, and need that period's candle data downloaded.
Log in or sign up to run backtests.
| Period | Range | Total % | Win % | Max DD | Trades | |
|---|---|---|---|---|---|---|
| 2020 · DeFi Summer & Pre-Halving Rally | 20200101-20210101 | not run | ||||
| 2021 · Institutional Bull Market | 20210101-20220101 | not run | ||||
| 2022 · Post-Bull Crash & Macro Tightening | 20220101-20230101 | not run | ||||
| 2023–2024 · Recovery & ETF Anticipation | 20230101-20250101 | not run | ||||
| 2025–2026 · Current Cycle | 20250101-20260101 | not run | ||||
Walk forward
Out-of-sample backtest on recent data · 33 pairs · 20260101-20260701.
Backtest trust check
no lookahead patterns · 1 thing(s) worth reviewing before trusting the numbers
| Line | Pattern | Detail | |
|---|---|---|---|
| 11 | review | missing_startup_candles | uses recursive indicators (MACD) but startup_candle_count is not set (default 0). Their value at a bar depends on all bars before it, so freqtrade trims no warmup and the backtest opens with unwarmed values that can't occur live. The longest lookback visible here is bollinger_bands(window=40), so it needs at least that many. Set it to a few times the longest period and confirm with `freqtrade recursive-analysis` |
ran by Ron · took s
Lookahead analysis
freqtrade lookahead-analysis: detects strategies peeking at future candles.