12 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 | import freqtrade.vendor.qtpylib.indicators as qtpylib import numpy as np import talib.abstract as ta from freqtrade.strategy.interface import IStrategy from freqtrade.strategy import merge_informative_pair from datetime import datetime from freqtrade.persistence import Trade from pandas import DataFrame, Series class ClucFiatSlow(IStrategy): INTERFACE_VERSION = 3 # Buy hyperspace params: buy_params = {'bbdelta-close': 0.00642, 'bbdelta-tail': 0.75559, 'close-bblower': 0.01415, 'closedelta-close': 0.00883, 'fisher': -0.97101, 'volume': 18} # Sell hyperspace params: sell_params = {'sell-bbmiddle-close': 0.95153, 'sell-fisher': 0.60924} # ROI table: minimal_roi = {'0': 0.04354, '5': 0.03734, '8': 0.02569, '10': 0.019, '76': 0.01283, '235': 0.007, '415': 0} # Stoploss: stoploss = -0.34299 # Trailing stop: trailing_stop = True trailing_stop_positive = 0.01057 trailing_stop_positive_offset = 0.03668 trailing_only_offset_is_reached = True '\n END HYPEROPT\n ' timeframe = '5m' use_exit_signal = True exit_profit_only = False exit_profit_offset = 0.01 ignore_roi_if_entry_signal = True startup_candle_count: int = 48 def populate_indicators(self, dataframe: DataFrame, metadata: dict) -> DataFrame: # Set Up Bollinger Bands upper_bb1, mid_bb1, lower_bb1 = ta.BBANDS(dataframe['close'], timeperiod=40) upper_bb2, mid_bb2, lower_bb2 = ta.BBANDS(qtpylib.typical_price(dataframe), timeperiod=20) # only putting some bands into dataframe as the others are not used elsewhere in the strategy dataframe['lower-bb1'] = lower_bb1 dataframe['lower-bb2'] = lower_bb2 dataframe['mid-bb2'] = mid_bb2 dataframe['bb1-delta'] = (mid_bb1 - dataframe['lower-bb1']).abs() dataframe['closedelta'] = (dataframe['close'] - dataframe['close'].shift()).abs() dataframe['tail'] = (dataframe['close'] - dataframe['low']).abs() dataframe['ema_fast'] = ta.EMA(dataframe['close'], timeperiod=6) dataframe['ema_slow'] = ta.EMA(dataframe['close'], timeperiod=48) dataframe['volume_mean_slow'] = dataframe['volume'].rolling(window=24).mean() dataframe['rsi'] = ta.RSI(dataframe, timeperiod=9) # # Inverse Fisher transform on RSI: values [-1.0, 1.0] (https://goo.gl/2JGGoy) rsi = 0.1 * (dataframe['rsi'] - 50) dataframe['fisher-rsi'] = (np.exp(2 * rsi) - 1) / (np.exp(2 * rsi) + 1) return dataframe def populate_entry_trend(self, dataframe: DataFrame, metadata: dict) -> DataFrame: params = self.buy_params dataframe.loc[dataframe['fisher-rsi'].lt(params['fisher']) & (dataframe['bb1-delta'].gt(dataframe['close'] * params['bbdelta-close']) & dataframe['closedelta'].gt(dataframe['close'] * params['closedelta-close']) & dataframe['tail'].lt(dataframe['bb1-delta'] * params['bbdelta-tail']) & dataframe['close'].lt(dataframe['lower-bb1'].shift()) & dataframe['close'].le(dataframe['close'].shift()) | (dataframe['close'] < dataframe['ema_slow']) & (dataframe['close'] < params['close-bblower'] * dataframe['lower-bb2']) & (dataframe['volume'] < dataframe['volume_mean_slow'].shift(1) * params['volume'])), 'enter_long'] = 1 return dataframe def populate_exit_trend(self, dataframe: DataFrame, metadata: dict) -> DataFrame: params = self.sell_params dataframe.loc[(dataframe['close'] * params['sell-bbmiddle-close'] > dataframe['mid-bb2']) & dataframe['ema_fast'].gt(dataframe['close']) & dataframe['fisher-rsi'].gt(params['sell-fisher']) & dataframe['volume'].gt(0), 'exit_long'] = 1 return dataframe '\n https://www.freqtrade.io/en/latest/strategy-advanced/\n\n Custom Order Timeouts\n ' def check_entry_timeout(self, pair: str, trade: Trade, order: dict, **kwargs) -> bool: ob = self.dp.orderbook(pair, 1) current_price = ob['bids'][0][0] # Cancel buy order if price is more than 1% above the order. if current_price > order['price'] * 1.01: return True return False def check_exit_timeout(self, pair: str, trade: Trade, order: dict, **kwargs) -> bool: ob = self.dp.orderbook(pair, 1) current_price = ob['asks'][0][0] # Cancel sell order if price is more than 1% below the order. if current_price < order['price'] * 0.99: return True return False |
Strategy League — fixed backtest that feeds the ranking
Export report Freqtrade logsRun finished · took 479.0s
ℹ️ This strategy uses a trailing stop — freqtrade only
re-checks these once per 5m candle by default, not against the price movement within it.
For a more accurate read, re-run this backtest locally with --timeframe-detail 1m. Freqle doesn't do this for every check here: multiplying every
League/sweep backtest by a finer detail timeframe is more compute than the sandbox can sustain
across every indexed strategy. why this matters →
- did not beat simply holding the market
- 100% of resampled runs stayed profitable
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 | 9 | -15.27 | -16.96 | 0 | 9 | 0.0 | -49.49 | 693h 49m |
| Dec 2025 | bearish trending low vol | 59 | -6.46 | -1.09 | 41 | 18 | 69.5 | -45.27 | 58h 04m |
| Nov 2025 | bearish trending high vol | 103 | -10.11 | -0.98 | 82 | 21 | 79.6 | -44.19 | 34h 16m |
| Oct 2025 | bearish trending low vol | 226 | -95.35 | -4.22 | 162 | 64 | 71.7 | -43.43 | 37h 58m |
| Sep 2025 | bullish choppy low vol | 39 | -4.93 | -1.26 | 25 | 14 | 64.1 | -13.35 | 119h 11m |
| Aug 2025 | bullish choppy low vol | 66 | +3.94 | 0.60 | 48 | 18 | 72.7 | -13.02 | 41h 11m |
| Jul 2025 | bullish choppy low vol | 166 | +15.62 | 0.94 | 147 | 19 | 88.6 | -17.49 | 36h 56m |
| Jun 2025 | bearish choppy low vol | 58 | -15.23 | -2.63 | 45 | 13 | 77.6 | -17.84 | 82h 30m |
| May 2025 | bullish trending low vol | 155 | +13.93 | 0.90 | 133 | 22 | 85.8 | -17.12 | 43h 47m |
| Apr 2025 | bullish choppy low vol | 101 | -2.05 | -0.20 | 81 | 20 | 80.2 | -19.26 | 53h 21m |
| Mar 2025 | bearish trending high vol | 74 | -13.92 | -1.88 | 61 | 13 | 82.4 | -16.91 | 50h 02m |
| Feb 2025 | bearish trending low vol | 186 | -18.36 | -0.99 | 156 | 30 | 83.9 | -15.94 | 27h 22m |
| Jan 2025 | bearish choppy low vol | 86 | -10.30 | -1.20 | 65 | 21 | 75.6 | -7.49 | 73h 09m |
| Dec 2024 | bullish trending low vol | 207 | +6.19 | 0.30 | 185 | 22 | 89.4 | -6.16 | 13h 34m |
| Nov 2024 | bullish trending low vol | 323 | +28.72 | 0.89 | 282 | 41 | 87.3 | -15.15 | 28h 58m |
| Oct 2024 | bullish choppy low vol | 82 | +3.80 | 0.46 | 73 | 9 | 89.0 | -15.4 | 38h 24m |
| Sep 2024 | bearish choppy low vol | 67 | +7.00 | 1.04 | 64 | 3 | 95.5 | -17.39 | 55h 53m |
| Aug 2024 | bearish choppy high vol | 142 | -19.31 | -1.36 | 114 | 28 | 80.3 | -20.45 | 43h 08m |
| Jul 2024 | bearish trending low vol | 100 | +1.59 | 0.16 | 88 | 12 | 88.0 | -14.28 | 35h 58m |
| Jun 2024 | bearish choppy low vol | 69 | -13.19 | -1.91 | 48 | 21 | 69.6 | -12.9 | 92h 11m |
| May 2024 | bullish choppy high vol | 81 | +2.19 | 0.27 | 64 | 17 | 79.0 | -10.24 | 56h 55m |
| Apr 2024 | bearish choppy high vol | 94 | -29.61 | -3.15 | 73 | 21 | 77.7 | -9.32 | 55h 56m |
| Mar 2024 | bullish trending high vol | 203 | +18.09 | 0.89 | 183 | 20 | 90.1 | -2.1 | 26h 56m |
| Feb 2024 | bullish trending low vol | 143 | +11.54 | 0.81 | 119 | 24 | 83.2 | -5.56 | 56h 18m |
| Jan 2024 | bearish choppy high vol | 87 | +3.80 | 0.44 | 65 | 22 | 74.7 | -6.64 | 23h 01m |
| Dec 2023 | bullish trending low vol | 257 | +22.60 | 0.88 | 222 | 35 | 86.4 | -13.37 | 21h 00m |
| Nov 2023 | bullish trending low vol | 199 | +18.86 | 0.95 | 171 | 28 | 85.9 | -18.95 | 60h 31m |
| Oct 2023 | bullish trending low vol | 96 | +4.21 | 0.44 | 84 | 12 | 87.5 | -20.83 | 65h 46m |
| Sep 2023 | bearish choppy low vol | 35 | -4.07 | -1.16 | 29 | 6 | 82.9 | -20.9 | 70h 28m |
| Aug 2023 | bearish choppy low vol | 46 | -20.45 | -4.45 | 33 | 13 | 71.7 | -19.19 | 106h 42m |
| Jul 2023 | bullish trending low vol | 100 | +8.32 | 0.83 | 84 | 16 | 84.0 | -15.35 | 24h 10m |
| Jun 2023 | bullish trending low vol | 116 | -12.93 | -1.11 | 90 | 26 | 77.6 | -17.5 | 75h 32m |
| May 2023 | bearish choppy low vol | 40 | -7.47 | -1.87 | 34 | 6 | 85.0 | -12.19 | 63h 25m |
| Apr 2023 | bullish trending low vol | 97 | +6.46 | 0.67 | 73 | 24 | 75.3 | -11.28 | 58h 44m |
| Mar 2023 | bullish trending high vol | 179 | +0.24 | 0.01 | 145 | 34 | 81.0 | -14.97 | 24h 00m |
| Feb 2023 | bullish trending low vol | 169 | +12.88 | 0.76 | 136 | 33 | 80.5 | -15.16 | 17h 35m |
| Jan 2023 | bullish trending low vol | 230 | +21.06 | 0.92 | 200 | 30 | 87.0 | -21.36 | 38h 22m |
| Dec 2022 | bearish trending low vol | 55 | -10.10 | -1.83 | 45 | 10 | 81.8 | -21.57 | 74h 31m |
| Nov 2022 | bearish trending high vol | 128 | -10.51 | -0.82 | 107 | 21 | 83.6 | -19.33 | 43h 51m |
| Oct 2022 | bullish choppy low vol | 111 | -7.59 | -0.68 | 86 | 25 | 77.5 | -17.96 | 80h 48m |
| Sep 2022 | bearish choppy high vol | 90 | +5.16 | 0.57 | 78 | 12 | 86.7 | -14.54 | 24h 30m |
| Aug 2022 | bullish choppy high vol | 186 | +1.91 | 0.10 | 160 | 26 | 86.0 | -15.11 | 16h 06m |
| Jul 2022 | bearish trending high vol | 250 | +25.72 | 1.03 | 210 | 40 | 84.0 | -22.76 | 29h 07m |
| Jun 2022 | bearish trending high vol | 210 | -32.07 | -1.53 | 165 | 45 | 78.6 | -25.52 | 28h 50m |
| May 2022 | bearish trending high vol | 277 | -16.14 | -0.58 | 228 | 49 | 82.3 | -18.55 | 32h 56m |
| Apr 2022 | bearish choppy high vol | 88 | -23.73 | -2.70 | 62 | 26 | 70.5 | -8.49 | 54h 23m |
| Mar 2022 | bullish choppy high vol | 138 | +12.87 | 0.93 | 119 | 19 | 86.2 | -4.91 | 41h 32m |
| Feb 2022 | bearish trending high vol | 126 | +0.68 | 0.05 | 102 | 24 | 81.0 | -5.93 | 34h 06m |
| Jan 2022 | bearish trending high vol | 164 | -10.15 | -0.62 | 130 | 34 | 79.3 | -7.1 | 30h 54m |
| Dec 2021 | bearish trending high vol | 293 | -3.66 | -0.13 | 239 | 54 | 81.6 | -10.01 | 23h 23m |
| Nov 2021 | bullish trending high vol | 153 | +7.84 | 0.51 | 134 | 19 | 87.6 | -3.37 | 37h 03m |
| Oct 2021 | bullish trending high vol | 199 | +17.14 | 0.86 | 174 | 25 | 87.4 | -8.46 | 19h 14m |
| Sep 2021 | bearish trending high vol | 181 | -5.75 | -0.32 | 149 | 32 | 82.3 | -9.49 | 28h 30m |
| Aug 2021 | bullish trending high vol | 344 | +33.05 | 0.96 | 294 | 50 | 85.5 | -16.51 | 10h 11m |
| Jul 2021 | bearish trending high vol | 174 | -1.67 | -0.10 | 148 | 26 | 85.1 | -19.35 | 31h 51m |
| Jun 2021 | bearish trending high vol | 253 | -22.52 | -0.89 | 210 | 43 | 83.0 | -18.39 | 22h 35m |
| May 2021 | bearish trending high vol | 530 | -3.56 | -0.07 | 462 | 68 | 87.2 | -13.68 | 9h 54m |
| Apr 2021 | bearish choppy high vol | 471 | +38.36 | 0.81 | 425 | 46 | 90.2 | -3.46 | 9h 35m |
| Mar 2021 | bullish choppy high vol | 366 | +37.72 | 1.03 | 331 | 35 | 90.4 | -2.64 | 12h 20m |
| Feb 2021 | bullish trending high vol | 565 | +55.48 | 0.98 | 525 | 40 | 92.9 | -3.26 | 6h 46m |
| Jan 2021 | bullish trending high vol | 650 | +77.14 | 1.19 | 591 | 59 | 90.9 | -3.94 | 6h 29m |
Yearly breakdown
| Year | Trades | Profit % | Avg % | Win | Loss | Win % | DD % | Avg dur |
|---|---|---|---|---|---|---|---|---|
| 2026 | 9 | -15.27 | -16.96 | 0 | 9 | 0.0 | -49.49 | 693h 49m |
| 2025 | 1319 | -143.22 | -1.09 | 1046 | 273 | 79.3 | -45.27 | 46h 18m |
| 2024 | 1598 | +20.81 | 0.13 | 1358 | 240 | 85.0 | -20.45 | 37h 53m |
| 2023 | 1564 | +49.71 | 0.32 | 1301 | 263 | 83.2 | -21.36 | 42h 36m |
| 2022 | 1823 | -63.95 | -0.35 | 1492 | 331 | 81.8 | -25.52 | 36h 19m |
| 2021 | 4179 | +229.57 | 0.55 | 3682 | 497 | 88.1 | -19.35 | 14h 01m |
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 | |
|---|---|---|---|
| 31 | review | startup_candles_too_small | startup_candle_count is 48, but EMA(timeperiod=48) needing 3x warmup needs at least 144 candles -- so the first 96+ candles of every backtest use an indicator that hasn't warmed up. Recursive indicators (EMA/RSI/ADX/ATR) want several times their period, not exactly it |
ran by Ron · took s
Lookahead analysis
freqtrade lookahead-analysis: detects strategies peeking at future candles.