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.18, "34": 0.078, "94": 0.014, "210": 0} # minimal_roi = {"0": 1} # Stoploss: stoploss = -0.334 # Trailing stop: trailing_stop = True trailing_stop_positive = 0.226 trailing_stop_positive_offset = 0.316 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 643.8s
ℹ️ 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 →
- profit isn't statistically significant (p=0.90) — hard to tell apart from luck
- only 2% of resampled runs were profitable
- did not beat simply holding the market
- very deep drawdown (-85%)
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 | 3 | -7.04 | -23.47 | 0 | 3 | 0.0 | -85.07 | 1073h 40m |
| Nov 2025 | bearish trending high vol | 54 | -10.72 | -1.99 | 40 | 14 | 74.1 | -82.01 | 65h 38m |
| Oct 2025 | bearish trending low vol | 91 | -7.22 | -0.79 | 67 | 24 | 73.6 | -79.04 | 54h 02m |
| Sep 2025 | bullish choppy low vol | 33 | -2.43 | -0.74 | 21 | 12 | 63.6 | -73.7 | 70h 51m |
| Aug 2025 | bullish choppy low vol | 35 | +1.27 | 0.36 | 27 | 8 | 77.1 | -73.0 | 60h 50m |
| Jul 2025 | bullish choppy low vol | 176 | +9.56 | 0.54 | 123 | 53 | 69.9 | -77.42 | 24h 56m |
| Jun 2025 | bearish choppy low vol | 26 | -5.14 | -1.98 | 18 | 8 | 69.2 | -77.95 | 168h 28m |
| May 2025 | bullish trending low vol | 80 | +4.85 | 0.61 | 60 | 20 | 75.0 | -77.28 | 49h 38m |
| Apr 2025 | bullish choppy low vol | 85 | +2.94 | 0.35 | 67 | 18 | 78.8 | -80.11 | 27h 18m |
| Mar 2025 | bearish trending high vol | 37 | -5.35 | -1.45 | 26 | 11 | 70.3 | -79.14 | 58h 10m |
| Feb 2025 | bearish trending low vol | 76 | -11.70 | -1.54 | 50 | 26 | 65.8 | -78.4 | 63h 17m |
| Jan 2025 | bearish choppy low vol | 57 | -0.66 | -0.12 | 42 | 15 | 73.7 | -71.45 | 55h 24m |
| Dec 2024 | bullish trending low vol | 150 | -12.79 | -0.85 | 101 | 49 | 67.3 | -71.86 | 23h 10m |
| Nov 2024 | bullish trending low vol | 278 | +23.08 | 0.83 | 211 | 67 | 75.9 | -75.22 | 17h 09m |
| Oct 2024 | bullish choppy low vol | 74 | +2.55 | 0.34 | 39 | 35 | 52.7 | -76.39 | 102h 31m |
| Sep 2024 | bearish choppy low vol | 62 | -0.84 | -0.14 | 52 | 10 | 83.9 | -77.53 | 46h 08m |
| Aug 2024 | bearish choppy high vol | 122 | -3.27 | -0.27 | 89 | 33 | 73.0 | -79.01 | 82h 10m |
| Jul 2024 | bearish trending low vol | 3 | +0.31 | 1.03 | 2 | 1 | 66.7 | -74.64 | 309h 02m |
| Jun 2024 | bearish choppy low vol | 22 | -12.70 | -5.77 | 11 | 11 | 50.0 | -74.82 | 123h 15m |
| May 2024 | bullish choppy high vol | 39 | +2.09 | 0.54 | 28 | 11 | 71.8 | -69.74 | 39h 00m |
| Apr 2024 | bearish choppy high vol | 40 | -18.12 | -4.53 | 27 | 13 | 67.5 | -70.21 | 82h 56m |
| Mar 2024 | bullish trending high vol | 153 | +8.35 | 0.55 | 114 | 39 | 74.5 | -65.23 | 26h 29m |
| Feb 2024 | bullish trending low vol | 130 | +4.97 | 0.38 | 84 | 46 | 64.6 | -67.53 | 53h 05m |
| Jan 2024 | bearish choppy high vol | 62 | -3.38 | -0.55 | 43 | 19 | 69.4 | -67.58 | 39h 09m |
| Dec 2023 | bullish trending low vol | 209 | +11.10 | 0.53 | 149 | 60 | 71.3 | -71.09 | 24h 34m |
| Nov 2023 | bullish trending low vol | 124 | +7.06 | 0.57 | 87 | 37 | 70.2 | -74.35 | 71h 35m |
| Oct 2023 | bullish trending low vol | 43 | +4.12 | 0.96 | 30 | 13 | 69.8 | -76.25 | 116h 10m |
| Sep 2023 | bearish choppy low vol | 7 | +0.05 | 0.07 | 2 | 5 | 28.6 | -76.27 | 106h 09m |
| Aug 2023 | bearish choppy low vol | 31 | -8.33 | -2.69 | 21 | 10 | 67.7 | -76.74 | 98h 34m |
| Jul 2023 | bullish trending low vol | 45 | +1.70 | 0.38 | 34 | 11 | 75.6 | -73.21 | 26h 57m |
| Jun 2023 | bullish trending low vol | 52 | -6.53 | -1.25 | 39 | 13 | 75.0 | -74.35 | 159h 48m |
| May 2023 | bearish choppy low vol | 9 | -9.75 | -10.84 | 4 | 5 | 44.4 | -70.3 | 368h 09m |
| Apr 2023 | bullish trending low vol | 90 | +3.29 | 0.37 | 56 | 34 | 62.2 | -67.22 | 33h 48m |
| Mar 2023 | bullish trending high vol | 59 | -1.50 | -0.25 | 43 | 16 | 72.9 | -69.49 | 55h 28m |
| Feb 2023 | bullish trending low vol | 93 | +3.90 | 0.42 | 58 | 35 | 62.4 | -68.33 | 70h 48m |
| Jan 2023 | bullish trending low vol | 157 | +9.23 | 0.59 | 113 | 44 | 72.0 | -72.59 | 24h 01m |
| Dec 2022 | bearish trending low vol | 40 | -2.19 | -0.55 | 27 | 13 | 67.5 | -72.59 | 50h 20m |
| Nov 2022 | bearish trending high vol | 156 | -5.10 | -0.33 | 102 | 54 | 65.4 | -74.82 | 41h 57m |
| Oct 2022 | bullish choppy low vol | 53 | -1.03 | -0.19 | 33 | 20 | 62.3 | -70.28 | 84h 35m |
| Sep 2022 | bearish choppy high vol | 74 | -8.62 | -1.17 | 51 | 23 | 68.9 | -69.4 | 38h 08m |
| Aug 2022 | bullish choppy high vol | 186 | -10.27 | -0.55 | 131 | 55 | 70.4 | -64.77 | 23h 26m |
| Jul 2022 | bearish trending high vol | 179 | +6.54 | 0.37 | 116 | 63 | 64.8 | -64.54 | 36h 11m |
| Jun 2022 | bearish trending high vol | 136 | -17.76 | -1.31 | 88 | 48 | 64.7 | -68.32 | 49h 56m |
| May 2022 | bearish trending high vol | 194 | -43.27 | -2.23 | 133 | 61 | 68.6 | -58.24 | 49h 41m |
| Apr 2022 | bearish choppy high vol | 116 | -9.23 | -0.80 | 86 | 30 | 74.1 | -34.94 | 30h 38m |
| Mar 2022 | bullish choppy high vol | 300 | +17.09 | 0.57 | 197 | 103 | 65.7 | -38.27 | 22h 39m |
| Feb 2022 | bearish trending high vol | 301 | -3.49 | -0.12 | 228 | 73 | 75.7 | -41.9 | 24h 15m |
| Jan 2022 | bearish trending high vol | 114 | -32.84 | -2.88 | 71 | 43 | 62.3 | -38.6 | 81h 17m |
| Dec 2021 | bearish trending high vol | 277 | -10.13 | -0.37 | 192 | 85 | 69.3 | -25.69 | 22h 14m |
| Nov 2021 | bullish trending high vol | 188 | -7.52 | -0.40 | 132 | 56 | 70.2 | -18.05 | 39h 11m |
| Oct 2021 | bullish trending high vol | 202 | +5.18 | 0.26 | 146 | 56 | 72.3 | -16.2 | 39h 39m |
| Sep 2021 | bearish trending high vol | 245 | -8.29 | -0.34 | 185 | 60 | 75.5 | -18.03 | 23h 46m |
| Aug 2021 | bullish trending high vol | 426 | +30.80 | 0.72 | 334 | 92 | 78.4 | -26.27 | 16h 39m |
| Jul 2021 | bearish trending high vol | 262 | +5.35 | 0.20 | 200 | 62 | 76.3 | -33.35 | 24h 31m |
| Jun 2021 | bearish trending high vol | 311 | -24.49 | -0.79 | 237 | 74 | 76.2 | -39.26 | 24h 49m |
| May 2021 | bearish trending high vol | 484 | -31.14 | -0.65 | 374 | 110 | 77.3 | -32.55 | 14h 57m |
| Apr 2021 | bearish choppy high vol | 421 | +21.33 | 0.51 | 336 | 85 | 79.8 | -8.17 | 18h 55m |
| Mar 2021 | bullish choppy high vol | 245 | +17.06 | 0.70 | 187 | 58 | 76.3 | -10.67 | 27h 47m |
| Feb 2021 | bullish trending high vol | 502 | +16.30 | 0.32 | 391 | 111 | 77.9 | -13.96 | 13h 57m |
| Jan 2021 | bullish trending high vol | 541 | +55.10 | 1.02 | 427 | 114 | 78.9 | -4.65 | 10h 43m |
Yearly breakdown
| Year | Trades | Profit % | Avg % | Win | Loss | Win % | DD % | Avg dur |
|---|---|---|---|---|---|---|---|---|
| 2026 | 3 | -7.04 | -23.47 | 0 | 3 | 0.0 | -85.07 | 1073h 40m |
| 2025 | 750 | -24.60 | -0.33 | 541 | 209 | 72.1 | -82.01 | 50h 49m |
| 2024 | 1135 | -9.75 | -0.09 | 801 | 334 | 70.6 | -79.01 | 44h 33m |
| 2023 | 919 | +14.34 | 0.16 | 636 | 283 | 69.2 | -76.74 | 56h 55m |
| 2022 | 1849 | -110.17 | -0.60 | 1263 | 586 | 68.3 | -74.82 | 37h 53m |
| 2021 | 4104 | +69.55 | 0.17 | 3141 | 963 | 76.5 | -39.26 | 20h 19m |
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.