3 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 98 99 100 101 102 103 104 105 | from freqtrade.strategy import IntParameter, IStrategy from pandas import DataFrame import talib.abstract as ta from functools import reduce class AutoQuantRobustV3(IStrategy): INTERFACE_VERSION: int = 3 # ROI Table - based on MultiMa success minimal_roi = { "0": 0.08, "240": 0.04, "720": 0.02, "1440": 0, } # Stoploss - wider to allow room for volatility stoploss = -0.15 # Timeframe - 4h like MultiMa timeframe = "4h" # Trailing stop trailing_stop = True trailing_stop_positive = 0.02 trailing_stop_positive_offset = 0.04 trailing_only_offset_is_reached = True # Process only new candles process_only_new_candles = True startup_candle_count = 200 # ── Tunable Parameters for Optimizer ── # TEMA parameters buy_ma_count = IntParameter(2, 8, default=3, space="buy", optimize=True) buy_ma_gap = IntParameter(5, 20, default=10, space="buy", optimize=True) sell_ma_count = IntParameter(2, 8, default=4, space="sell", optimize=True) sell_ma_gap = IntParameter(10, 30, default=20, space="sell", optimize=True) def populate_indicators(self, dataframe: DataFrame, metadata: dict) -> DataFrame: # Compute only needed TEMA periods to save memory needed_periods = set() # Buy side periods for ma_count in range(self.buy_ma_count.value + 1): needed_periods.add(ma_count * self.buy_ma_gap.value) # Sell side periods for ma_count in range(self.sell_ma_count.value + 1): needed_periods.add(ma_count * self.sell_ma_gap.value) # Compute TEMA indicators for period in needed_periods: if period > 1: dataframe[f"tema_{int(period)}"] = ta.TEMA(dataframe, timeperiod=int(period)) return dataframe def populate_entry_trend(self, dataframe: DataFrame, metadata: dict) -> DataFrame: """ Entry based on TEMA alignment (multiple MAs pointing down) """ conditions = [] for ma_count in range(self.buy_ma_count.value): key = ma_count * self.buy_ma_gap.value past_key = (ma_count - 1) * self.buy_ma_gap.value if past_key > 1: tema_current = f"tema_{int(key)}" tema_past = f"tema_{int(past_key)}" if tema_current in dataframe.columns and tema_past in dataframe.columns: # Price below shorter TEMA, shorter TEMA below longer TEMA conditions.append( (dataframe["close"] < dataframe[tema_current]) & (dataframe[tema_current] < dataframe[tema_past]) ) if conditions: dataframe.loc[reduce(lambda x, y: x & y, conditions), "enter_long"] = 1 return dataframe def populate_exit_trend(self, dataframe: DataFrame, metadata: dict) -> DataFrame: """ Exit based on TEMA reversal (shorter TEMA crosses above longer TEMA) """ conditions = [] for ma_count in range(self.sell_ma_count.value): key = ma_count * self.sell_ma_gap.value past_key = (ma_count - 1) * self.sell_ma_gap.value if past_key > 1: tema_current = f"tema_{int(key)}" tema_past = f"tema_{int(past_key)}" if tema_current in dataframe.columns and tema_past in dataframe.columns: # Shorter TEMA crosses above longer TEMA conditions.append(dataframe[tema_current] > dataframe[tema_past]) if conditions: dataframe.loc[reduce(lambda x, y: x | y, conditions), "exit_long"] = 1 return dataframe |
Strategy League — fixed backtest that feeds the ranking
Export report Freqtrade logsRun finished · took 26.0s
ℹ️ This strategy uses a trailing stop — freqtrade only
re-checks these once per 4h candle by default, not against the price movement within it.
For a more accurate read, re-run this backtest locally with --timeframe-detail 1m
(or 5m — freqtrade's own docs use 5m detail for an hourly strategy as a lighter
alternative). 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.13) — hard to tell apart from luck
- did not beat simply holding the market
- 89% 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 |
|---|---|---|---|---|---|---|---|---|---|
| Dec 2025 | bearish trending low vol | 116 | -0.65 | -0.06 | 63 | 53 | 54.3 | -18.05 | 20h 56m |
| Nov 2025 | bearish trending high vol | 95 | +2.98 | 0.31 | 63 | 32 | 66.3 | -20.39 | 17h 16m |
| Oct 2025 | bearish trending low vol | 91 | -7.60 | -0.83 | 55 | 36 | 60.4 | -19.08 | 20h 55m |
| Sep 2025 | bullish choppy low vol | 143 | +8.07 | 0.56 | 98 | 45 | 68.5 | -17.91 | 18h 34m |
| Aug 2025 | bullish choppy low vol | 107 | +2.90 | 0.27 | 64 | 43 | 59.8 | -19.34 | 17h 54m |
| Jul 2025 | bullish choppy low vol | 130 | -0.45 | -0.03 | 63 | 67 | 48.5 | -22.95 | 14h 52m |
| Jun 2025 | bearish choppy low vol | 104 | -8.49 | -0.82 | 55 | 49 | 52.9 | -20.35 | 20h 53m |
| May 2025 | bullish trending low vol | 90 | -0.43 | -0.05 | 56 | 34 | 62.2 | -13.77 | 14h 27m |
| Apr 2025 | bullish choppy low vol | 133 | +5.96 | 0.45 | 93 | 40 | 69.9 | -22.61 | 15h 28m |
| Mar 2025 | bearish trending high vol | 149 | -14.52 | -0.98 | 83 | 66 | 55.7 | -20.0 | 17h 04m |
| Feb 2025 | bearish trending low vol | 111 | -8.46 | -0.76 | 55 | 56 | 49.5 | -8.44 | 19h 08m |
| Jan 2025 | bearish choppy low vol | 120 | +7.79 | 0.65 | 90 | 30 | 75.0 | -7.86 | 14h 46m |
| Dec 2024 | bullish trending low vol | 143 | +1.58 | 0.11 | 90 | 53 | 62.9 | -7.69 | 14h 29m |
| Nov 2024 | bullish trending low vol | 149 | +10.07 | 0.68 | 110 | 39 | 73.8 | -13.88 | 12h 31m |
| Oct 2024 | bullish choppy low vol | 94 | -11.08 | -1.18 | 38 | 56 | 40.4 | -13.21 | 26h 13m |
| Sep 2024 | bearish choppy low vol | 167 | +9.62 | 0.58 | 106 | 61 | 63.5 | -13.65 | 16h 52m |
| Aug 2024 | bearish choppy high vol | 128 | +11.27 | 0.88 | 92 | 36 | 71.9 | -19.76 | 15h 54m |
| Jul 2024 | bearish trending low vol | 130 | +14.29 | 1.10 | 95 | 35 | 73.1 | -29.66 | 15h 10m |
| Jun 2024 | bearish choppy low vol | 112 | -16.49 | -1.47 | 52 | 60 | 46.4 | -28.1 | 27h 54m |
| May 2024 | bullish choppy high vol | 106 | +5.39 | 0.51 | 66 | 40 | 62.3 | -21.11 | 17h 10m |
| Apr 2024 | bearish choppy high vol | 126 | +10.88 | 0.86 | 96 | 30 | 76.2 | -30.14 | 11h 26m |
| Mar 2024 | bullish trending high vol | 156 | -3.35 | -0.22 | 90 | 66 | 57.7 | -29.05 | 16h 22m |
| Feb 2024 | bullish trending low vol | 145 | +17.57 | 1.21 | 101 | 44 | 69.7 | -38.02 | 14h 01m |
| Jan 2024 | bearish choppy high vol | 139 | -20.32 | -1.46 | 68 | 71 | 48.9 | -37.99 | 17h 19m |
| Dec 2023 | bullish trending low vol | 207 | +17.85 | 0.86 | 153 | 54 | 73.9 | -35.22 | 13h 52m |
| Nov 2023 | bullish trending low vol | 150 | -2.78 | -0.19 | 89 | 61 | 59.3 | -36.9 | 15h 36m |
| Oct 2023 | bullish trending low vol | 120 | +7.42 | 0.62 | 81 | 39 | 67.5 | -40.01 | 16h 32m |
| Sep 2023 | bearish choppy low vol | 120 | +4.31 | 0.36 | 74 | 46 | 61.7 | -40.95 | 20h 44m |
| Aug 2023 | bearish choppy low vol | 133 | -7.63 | -0.57 | 53 | 80 | 39.8 | -40.75 | 27h 00m |
| Jul 2023 | bullish trending low vol | 120 | -5.93 | -0.49 | 73 | 47 | 60.8 | -36.05 | 19h 46m |
| Jun 2023 | bullish trending low vol | 106 | +1.29 | 0.12 | 62 | 44 | 58.5 | -35.7 | 20h 07m |
| May 2023 | bearish choppy low vol | 137 | -3.46 | -0.25 | 77 | 60 | 56.2 | -35.39 | 19h 55m |
| Apr 2023 | bullish trending low vol | 135 | +7.14 | 0.53 | 85 | 50 | 63.0 | -36.71 | 17h 25m |
| Mar 2023 | bullish trending high vol | 125 | +3.13 | 0.25 | 74 | 51 | 59.2 | -42.16 | 15h 41m |
| Feb 2023 | bullish trending low vol | 96 | -1.88 | -0.20 | 59 | 37 | 61.5 | -38.69 | 17h 48m |
| Jan 2023 | bullish trending low vol | 133 | +10.56 | 0.79 | 89 | 44 | 66.9 | -42.6 | 16h 04m |
| Dec 2022 | bearish trending low vol | 88 | -7.91 | -0.90 | 37 | 51 | 42.0 | -42.73 | 24h 46m |
| Nov 2022 | bearish trending high vol | 81 | -5.25 | -0.65 | 43 | 38 | 53.1 | -37.95 | 25h 14m |
| Oct 2022 | bullish choppy low vol | 131 | -2.44 | -0.19 | 63 | 68 | 48.1 | -35.77 | 19h 51m |
| Sep 2022 | bearish choppy high vol | 132 | -7.67 | -0.58 | 68 | 64 | 51.5 | -33.55 | 17h 45m |
| Aug 2022 | bullish choppy high vol | 124 | -4.86 | -0.39 | 75 | 49 | 60.5 | -30.31 | 17h 06m |
| Jul 2022 | bearish trending high vol | 145 | +18.21 | 1.25 | 106 | 39 | 73.1 | -36.47 | 12h 25m |
| Jun 2022 | bearish trending high vol | 110 | -3.16 | -0.29 | 66 | 44 | 60.0 | -41.1 | 15h 49m |
| May 2022 | bearish trending high vol | 106 | +4.90 | 0.46 | 75 | 31 | 70.8 | -41.72 | 12h 05m |
| Apr 2022 | bearish choppy high vol | 74 | -9.46 | -1.28 | 39 | 35 | 52.7 | -37.72 | 21h 41m |
| Mar 2022 | bullish choppy high vol | 160 | +5.60 | 0.35 | 94 | 66 | 58.8 | -38.43 | 15h 32m |
| Feb 2022 | bearish trending high vol | 84 | -9.58 | -1.14 | 46 | 38 | 54.8 | -36.88 | 16h 03m |
| Jan 2022 | bearish trending high vol | 87 | -5.71 | -0.66 | 53 | 34 | 60.9 | -29.36 | 24h 14m |
| Dec 2021 | bearish trending high vol | 150 | -17.51 | -1.17 | 75 | 75 | 50.0 | -28.33 | 18h 05m |
| Nov 2021 | bullish trending high vol | 149 | -2.89 | -0.19 | 95 | 54 | 63.8 | -16.72 | 15h 37m |
| Oct 2021 | bullish trending high vol | 132 | -5.31 | -0.40 | 73 | 59 | 55.3 | -14.63 | 17h 13m |
| Sep 2021 | bearish trending high vol | 150 | -6.19 | -0.41 | 98 | 52 | 65.3 | -11.99 | 15h 36m |
| Aug 2021 | bullish trending high vol | 151 | +6.80 | 0.45 | 102 | 49 | 67.5 | -10.5 | 12h 06m |
| Jul 2021 | bearish trending high vol | 96 | -11.04 | -1.15 | 46 | 50 | 47.9 | -10.93 | 15h 00m |
| Jun 2021 | bearish trending high vol | 112 | +4.41 | 0.39 | 80 | 32 | 71.4 | -8.98 | 16h 58m |
| May 2021 | bearish trending high vol | 170 | +17.76 | 1.04 | 129 | 41 | 75.9 | -11.65 | 6h 34m |
| Apr 2021 | bearish choppy high vol | 167 | -8.25 | -0.50 | 105 | 62 | 62.9 | -11.72 | 11h 04m |
| Mar 2021 | bullish choppy high vol | 187 | +13.07 | 0.70 | 138 | 49 | 73.8 | -7.97 | 14h 01m |
| Feb 2021 | bullish trending high vol | 155 | +5.59 | 0.36 | 112 | 43 | 72.3 | -8.54 | 9h 24m |
| Jan 2021 | bullish trending high vol | 184 | +23.56 | 1.28 | 146 | 38 | 79.3 | -3.82 | 8h 37m |
Yearly breakdown
| Year | Trades | Profit % | Avg % | Win | Loss | Win % | DD % | Avg dur |
|---|---|---|---|---|---|---|---|---|
| 2025 | 1389 | -12.90 | -0.09 | 838 | 551 | 60.3 | -22.95 | 17h 36m |
| 2024 | 1595 | +29.43 | 0.18 | 1004 | 591 | 62.9 | -38.02 | 16h 41m |
| 2023 | 1582 | +30.02 | 0.19 | 969 | 613 | 61.3 | -42.6 | 18h 07m |
| 2022 | 1322 | -27.33 | -0.21 | 765 | 557 | 57.9 | -42.73 | 17h 54m |
| 2021 | 1803 | +20.00 | 0.11 | 1199 | 604 | 66.5 | -28.33 | 13h 00m |
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-bias patterns detected
ran by Ron · took s
Lookahead analysis
freqtrade lookahead-analysis: detects strategies peeking at future candles.