15 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 | from functools import reduce from pandas import DataFrame from freqtrade.strategy import IStrategy import talib.abstract as ta from freqtrade.strategy.interface import IStrategy class TrendFollowingStrategy(IStrategy): INTERFACE_VERSION: int = 3 # ROI table: minimal_roi = {"0": 0.15, "30": 0.1, "60": 0.05} # minimal_roi = {"0": 1} # Stoploss: stoploss = -0.265 # Trailing stop: trailing_stop = True trailing_stop_positive = 0.05 trailing_stop_positive_offset = 0.1 trailing_only_offset_is_reached = False timeframe = "5m" def populate_indicators(self, dataframe: DataFrame, metadata: dict) -> DataFrame: # Calculate OBV dataframe['obv'] = ta.OBV(dataframe['close'], dataframe['volume']) # Add your trend following indicators here dataframe['trend'] = dataframe['close'].ewm(span=20, adjust=False).mean() return dataframe def populate_entry_trend(self, dataframe: DataFrame, metadata: dict) -> DataFrame: # Add your trend following buy signals here dataframe.loc[ (dataframe['close'] > dataframe['trend']) & (dataframe['close'].shift(1) <= dataframe['trend'].shift(1)) & (dataframe['obv'] > dataframe['obv'].shift(1)), 'enter_long'] = 1 # Add your trend following sell signals here dataframe.loc[ (dataframe['close'] < dataframe['trend']) & (dataframe['close'].shift(1) >= dataframe['trend'].shift(1)) & (dataframe['obv'] < dataframe['obv'].shift(1)), 'enter_short'] = -1 return dataframe def populate_exit_trend(self, dataframe: DataFrame, metadata: dict) -> DataFrame: # Add your trend following exit signals for long positions here dataframe.loc[ (dataframe['close'] < dataframe['trend']) & (dataframe['close'].shift(1) >= dataframe['trend'].shift(1)) & (dataframe['obv'] > dataframe['obv'].shift(1)), 'exit_long'] = 1 # Add your trend following exit signals for short positions here dataframe.loc[ (dataframe['close'] > dataframe['trend']) & (dataframe['close'].shift(1) <= dataframe['trend'].shift(1)) & (dataframe['obv'] < dataframe['obv'].shift(1)), 'exit_short'] = 1 return dataframe |
Strategy League — fixed backtest that feeds the ranking
Export report Freqtrade logsRun finished · took 636.5s
ℹ️ 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
- statistically significant edge (p=0.00)
- 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 | 10 | -13.90 | -13.90 | 0 | 10 | 0.0 | -21.74 | 907h 08m |
| Dec 2025 | bearish trending low vol | 11 | -3.69 | -3.35 | 8 | 3 | 72.7 | -18.41 | 220h 52m |
| Nov 2025 | bearish trending high vol | 36 | -17.47 | -4.86 | 24 | 12 | 66.7 | -17.92 | 214h 37m |
| Oct 2025 | bearish trending low vol | 36 | -17.75 | -4.93 | 23 | 13 | 63.9 | -14.78 | 297h 10m |
| Sep 2025 | bullish choppy low vol | 12 | -3.03 | -2.52 | 9 | 3 | 75.0 | -6.31 | 289h 12m |
| Aug 2025 | bullish choppy low vol | 26 | +1.14 | 0.44 | 22 | 4 | 84.6 | -7.91 | 222h 01m |
| Jul 2025 | bullish choppy low vol | 55 | +27.50 | 5.00 | 55 | 0 | 100.0 | -13.65 | 207h 18m |
| Jun 2025 | bearish choppy low vol | 26 | -2.19 | -0.84 | 21 | 5 | 80.8 | -15.11 | 237h 21m |
| May 2025 | bullish trending low vol | 36 | +15.17 | 4.21 | 35 | 1 | 97.2 | -17.44 | 190h 45m |
| Apr 2025 | bullish choppy low vol | 39 | -1.36 | -0.35 | 32 | 7 | 82.1 | -22.12 | 172h 48m |
| Mar 2025 | bearish trending high vol | 53 | -6.00 | -1.13 | 42 | 11 | 79.2 | -19.53 | 99h 13m |
| Feb 2025 | bearish trending low vol | 58 | -34.52 | -5.96 | 37 | 21 | 63.8 | -15.7 | 155h 27m |
| Jan 2025 | bearish choppy low vol | 39 | -0.98 | -0.25 | 32 | 7 | 82.1 | -5.93 | 154h 26m |
| Dec 2024 | bullish trending low vol | 76 | +2.50 | 0.33 | 64 | 12 | 84.2 | -5.91 | 70h 06m |
| Nov 2024 | bullish trending low vol | 96 | +45.53 | 4.74 | 95 | 1 | 99.0 | -8.41 | 139h 53m |
| Oct 2024 | bullish choppy low vol | 15 | +1.62 | 1.09 | 13 | 2 | 86.7 | -8.94 | 338h 16m |
| Sep 2024 | bearish choppy low vol | 14 | +0.96 | 0.69 | 12 | 2 | 85.7 | -10.13 | 337h 25m |
| Aug 2024 | bearish choppy high vol | 51 | -4.42 | -0.87 | 41 | 10 | 80.4 | -15.3 | 222h 11m |
| Jul 2024 | bearish trending low vol | 51 | +1.92 | 0.37 | 43 | 8 | 84.3 | -14.15 | 258h 20m |
| Jun 2024 | bearish choppy low vol | 9 | -4.77 | -5.32 | 6 | 3 | 66.7 | -7.94 | 457h 14m |
| May 2024 | bullish choppy high vol | 18 | -0.39 | -0.21 | 15 | 3 | 83.3 | -7.69 | 205h 18m |
| Apr 2024 | bearish choppy high vol | 35 | -17.64 | -5.04 | 23 | 12 | 65.7 | -9.29 | 154h 39m |
| Mar 2024 | bullish trending high vol | 61 | +15.81 | 2.59 | 56 | 5 | 91.8 | -3.45 | 138h 21m |
| Feb 2024 | bullish trending low vol | 28 | +14.00 | 5.00 | 28 | 0 | 100.0 | -5.61 | 357h 15m |
| Jan 2024 | bearish choppy high vol | 23 | +2.92 | 1.26 | 20 | 3 | 87.0 | -8.3 | 234h 45m |
| Dec 2023 | bullish trending low vol | 58 | +29.50 | 5.08 | 58 | 0 | 100.0 | -16.94 | 152h 49m |
| Nov 2023 | bullish trending low vol | 34 | +17.02 | 5.00 | 34 | 0 | 100.0 | -22.88 | 272h 19m |
| Oct 2023 | bullish trending low vol | 18 | +9.01 | 5.01 | 18 | 0 | 100.0 | -26.03 | 642h 40m |
| Sep 2023 | bearish choppy low vol | 5 | -3.51 | -7.02 | 3 | 2 | 60.0 | -26.55 | 449h 09m |
| Aug 2023 | bearish choppy low vol | 12 | -20.89 | -17.40 | 3 | 9 | 25.0 | -24.98 | 689h 20m |
| Jul 2023 | bullish trending low vol | 20 | +10.20 | 5.10 | 20 | 0 | 100.0 | -21.07 | 141h 52m |
| Jun 2023 | bullish trending low vol | 44 | -2.42 | -0.55 | 36 | 8 | 81.8 | -27.19 | 214h 35m |
| May 2023 | bearish choppy low vol | 11 | -12.39 | -11.25 | 5 | 6 | 45.5 | -20.74 | 625h 56m |
| Apr 2023 | bullish trending low vol | 22 | +8.13 | 3.69 | 21 | 1 | 95.5 | -18.74 | 232h 12m |
| Mar 2023 | bullish trending high vol | 37 | +0.70 | 0.19 | 31 | 6 | 83.8 | -23.47 | 197h 43m |
| Feb 2023 | bullish trending low vol | 20 | +7.18 | 3.59 | 19 | 1 | 95.0 | -21.49 | 205h 24m |
| Jan 2023 | bullish trending low vol | 72 | +33.02 | 4.58 | 71 | 1 | 98.6 | -33.92 | 159h 52m |
| Dec 2022 | bearish trending low vol | 14 | -7.87 | -5.62 | 9 | 5 | 64.3 | -33.37 | 327h 37m |
| Nov 2022 | bearish trending high vol | 62 | -14.41 | -2.32 | 46 | 16 | 74.2 | -33.19 | 201h 40m |
| Oct 2022 | bullish choppy low vol | 17 | -0.53 | -0.32 | 14 | 3 | 82.4 | -27.34 | 236h 13m |
| Sep 2022 | bearish choppy high vol | 41 | +5.65 | 1.38 | 36 | 5 | 87.8 | -27.94 | 161h 34m |
| Aug 2022 | bullish choppy high vol | 29 | -3.67 | -1.27 | 23 | 6 | 79.3 | -27.2 | 207h 08m |
| Jul 2022 | bearish trending high vol | 53 | +20.52 | 3.87 | 51 | 2 | 96.2 | -33.81 | 123h 10m |
| Jun 2022 | bearish trending high vol | 85 | -22.57 | -2.65 | 63 | 22 | 74.1 | -37.92 | 98h 30m |
| May 2022 | bearish trending high vol | 108 | -25.74 | -2.39 | 80 | 28 | 74.1 | -33.83 | 67h 06m |
| Apr 2022 | bearish choppy high vol | 19 | -16.56 | -8.72 | 10 | 9 | 52.6 | -16.21 | 265h 31m |
| Mar 2022 | bullish choppy high vol | 44 | +22.00 | 5.00 | 44 | 0 | 100.0 | -17.94 | 184h 45m |
| Feb 2022 | bearish trending high vol | 67 | +1.82 | 0.27 | 56 | 11 | 83.6 | -20.78 | 107h 28m |
| Jan 2022 | bearish trending high vol | 50 | -34.84 | -6.98 | 30 | 20 | 60.0 | -20.14 | 222h 02m |
| Dec 2021 | bearish trending high vol | 46 | -7.10 | -1.54 | 36 | 10 | 78.3 | -11.67 | 98h 45m |
| Nov 2021 | bullish trending high vol | 44 | +1.28 | 0.29 | 37 | 7 | 84.1 | -4.62 | 148h 04m |
| Oct 2021 | bullish trending high vol | 54 | +21.56 | 4.00 | 52 | 2 | 96.3 | -10.22 | 151h 08m |
| Sep 2021 | bearish trending high vol | 67 | -10.75 | -1.61 | 52 | 15 | 77.6 | -12.03 | 102h 34m |
| Aug 2021 | bullish trending high vol | 80 | +37.46 | 4.68 | 79 | 1 | 98.8 | -19.73 | 71h 19m |
| Jul 2021 | bearish trending high vol | 68 | +6.69 | 0.98 | 59 | 9 | 86.8 | -29.17 | 102h 26m |
| Jun 2021 | bearish trending high vol | 112 | -24.64 | -2.20 | 85 | 27 | 75.9 | -28.8 | 70h 03m |
| May 2021 | bearish trending high vol | 238 | -23.34 | -0.98 | 188 | 50 | 79.0 | -22.9 | 30h 03m |
| Apr 2021 | bearish choppy high vol | 168 | +39.12 | 2.33 | 152 | 16 | 90.5 | -8.65 | 52h 05m |
| Mar 2021 | bullish choppy high vol | 52 | +20.54 | 3.95 | 50 | 2 | 96.2 | -6.32 | 113h 45m |
| Feb 2021 | bullish trending high vol | 207 | +46.86 | 2.26 | 187 | 20 | 90.3 | -10.9 | 35h 02m |
| Jan 2021 | bullish trending high vol | 182 | +59.75 | 3.28 | 171 | 11 | 94.0 | -9.5 | 32h 40m |
Yearly breakdown
| Year | Trades | Profit % | Avg % | Win | Loss | Win % | DD % | Avg dur |
|---|---|---|---|---|---|---|---|---|
| 2026 | 10 | -13.90 | -13.90 | 0 | 10 | 0.0 | -21.74 | 907h 08m |
| 2025 | 427 | -43.18 | -1.01 | 340 | 87 | 79.6 | -22.12 | 191h 02m |
| 2024 | 477 | +58.04 | 1.21 | 416 | 61 | 87.2 | -15.3 | 188h 57m |
| 2023 | 353 | +75.55 | 2.14 | 319 | 34 | 90.4 | -33.92 | 247h 38m |
| 2022 | 589 | -76.20 | -1.30 | 462 | 127 | 78.4 | -37.92 | 148h 19m |
| 2021 | 1318 | +167.43 | 1.27 | 1148 | 170 | 87.1 | -29.17 | 61h 56m |
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 · 2 thing(s) worth reviewing before trusting the numbers
| Line | Pattern | Detail | |
|---|---|---|---|
| 29 | review | unbounded_recursive_indicator | uses OBV, which accumulates over the WHOLE series with no decay floor -- raising startup_candle_count doesn't converge it, so `freqtrade recursive-analysis` will keep flagging it no matter how large the warmup is. That's inherent to the indicator, not a misconfiguration; judge it on whether the strategy only ever compares it to itself (a running total drifting is fine) rather than to a fixed threshold (which it will eventually cross by drift alone) |
| 45 | review | short_without_can_short | writes enter_short, exit_short but can_short isn't True, so freqtrade never opens a short (it also requires futures/margin mode). Worse, freqtrade only takes a long when `not any([exit_long, enter_short])`, so every row you mark enter_short SUPPRESSES that candle's long entry and opens nothing in its place. |
ran by Ron · took s
Lookahead analysis
freqtrade lookahead-analysis: detects strategies peeking at future candles.