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 | from __future__ import annotations from pandas import DataFrame import talib.abstract as ta from freqtrade.strategy import DecimalParameter, IStrategy class BreakoutGammaV1(IStrategy): INTERFACE_VERSION = 3 timeframe = "5m" can_short = False process_only_new_candles = True startup_candle_count = 120 minimal_roi = {"0": 0.05, "120": 0.02, "360": 0.0} stoploss = -0.09 trailing_stop = True trailing_stop_positive = 0.02 trailing_stop_positive_offset = 0.045 trailing_only_offset_is_reached = True volume_mult = DecimalParameter(1.2, 3.0, default=1.6, decimals=1, space="buy") exit_rsi = DecimalParameter(45.0, 65.0, default=52.0, decimals=1, space="sell") def populate_indicators(self, dataframe: DataFrame, metadata: dict) -> DataFrame: dataframe["high_20"] = dataframe["high"].rolling(20).max().shift(1) dataframe["ema_50"] = ta.EMA(dataframe, timeperiod=50) dataframe["rsi"] = ta.RSI(dataframe, timeperiod=14) dataframe["atr"] = ta.ATR(dataframe, timeperiod=14) dataframe["atr_mean_50"] = dataframe["atr"].rolling(50).mean() dataframe["volume_mean_30"] = dataframe["volume"].rolling(30).mean() return dataframe def populate_entry_trend(self, dataframe: DataFrame, metadata: dict) -> DataFrame: dataframe.loc[ ( (dataframe["close"] > dataframe["high_20"]) & (dataframe["close"] > dataframe["ema_50"]) & (dataframe["atr"] > dataframe["atr_mean_50"]) & (dataframe["volume"] > dataframe["volume_mean_30"] * self.volume_mult.value) ), "enter_long", ] = 1 return dataframe def populate_exit_trend(self, dataframe: DataFrame, metadata: dict) -> DataFrame: dataframe.loc[ ( (dataframe["close"] < dataframe["ema_50"]) | (dataframe["rsi"] < self.exit_rsi.value) ), "exit_long", ] = 1 return dataframe |
Strategy League — fixed backtest that feeds the ranking
Export report Freqtrade logsRun finished · took 305.3s
ℹ️ 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=1.00) — hard to tell apart from luck
- only 0% of resampled runs were profitable
- profitable in only 0% of rolling 3-month windows
- did not beat simply holding the market
- very deep drawdown (-91%)
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 |
|---|---|---|---|---|---|---|---|---|---|
| May 2021 | bearish trending high vol | 385 | -10.35 | -0.27 | 128 | 257 | 33.2 | -90.78 | 1h 03m |
| Apr 2021 | bearish choppy high vol | 895 | -12.85 | -0.14 | 299 | 596 | 33.4 | -82.08 | 1h 03m |
| Mar 2021 | bullish choppy high vol | 1079 | -14.55 | -0.13 | 337 | 742 | 31.2 | -70.84 | 1h 07m |
| Feb 2021 | bullish trending high vol | 1388 | -15.35 | -0.11 | 490 | 898 | 35.3 | -56.02 | 1h 03m |
| Jan 2021 | bullish trending high vol | 1905 | -36.98 | -0.19 | 611 | 1294 | 32.1 | -46.5 | 0h 59m |
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 | |
|---|---|---|---|
| 15 | review | startup_candles_too_small | startup_candle_count is 120, but EMA(timeperiod=50) needing 3x warmup needs at least 150 candles -- so the first 30+ 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.