DUCKQUANT / THE QUANT & AI DIRECTORY
Freqtrade BB/RSI — signal adapter
Public rule reference · Public source variant
Published variant · Freqtrade · source checked 2026-10-25
Strategy research profile
Strategy overview
This rule buys a joint lower-Bollinger-band and low-RSI condition and waits for a high-RSI exit. It is a recovery hypothesis, with potentially prolonged exposure if the oversold condition develops into a downtrend.
- Strategy style
- Mean reversion
- Rule family
- Public source variant
- Source platform
- Freqtrade
- Source attribution
- Gert Wohlgemuth
- Source example / declared timeframe
- 1h
- Benchmark timeframe
- 1D · completed bars
- Primary tested assets
- Bitcoin · GLD gold ETF · QQQ Nasdaq-100 ETF
- Supplementary asset
- Ethereum · Binance spot
- Direction / sizing
- Long / cash · all available cash at entry
- Evaluation window
- 2024-01-01 → 2025-12-31
- Indicator warm-up
- Crypto 2022–2023; ETFs Jun 2021–2023
- Execution
- Next daily open · fractional units
- Initial capital
- 10,000 quote units · USD or USDT
Theoretical basis
A stretched price or oscillator is interpreted as a candidate for recovery toward a local reference. A rolling average is a measurement device, not a known fair value.
Market-regime hypothesis
Recoveries after temporary stretches, provided a persistent adverse trend does not develop.
DuckQuant editorial interpretation of the rule. These mechanisms and regime expectations are hypotheses, not independently established explanations of the measured returns.
Risks and failure modes
A falling market can remain oversold. Averaging reference levels move, and missing or delayed exits can turn a short-recovery idea into long exposure.
- A retrospective two-year window and ETF proxy choices do not establish general robustness.
- Daily-open fills omit order-book depth, lot constraints, taxes and intrabar stop behavior.
- Related rules and identical execution paths are not independent evidence.
Exact rule
RSI14<30 and close below typical-price Bollinger20 lower band enters; RSI14>70 exits.
Indicators and rule tokens
All thresholds, lookbacks and timing conventions are specified in the exact rule above and the downloadable adapter. Source platform settings do not override this frozen benchmark rule.
Original source
Reviewed source SHA256: 65718e8d0c14094b67be82b66238ea60a4af4bbf6fd9a6e1879dad5c48125547
Reading and theoretical references
- Reviewed strategy / indicator source ↗
Published rule or indicator reference; adaptation is described separately. - StockCharts ChartSchool: RSI mechanics ↗
Indicator mechanics, not validation of this implementation or its returns. - StockCharts ChartSchool: Bollinger Bands ↗
Volatility-envelope definition; the trading interpretation is version-specific.
Adaptation and interpretation
Entry/exit indicator rules only. Daily long/cash with common sizing and next-open execution; source ROI schedules, stoploss, trailing, protections and original timeframe are replaced by the stated common protocol. EMA initialization is first-observation seeded, not a TA-Lib replica. Not original Freqtrade strategy performance.
These are normalized daily long/cash rule tests. They do not reproduce every original platform order, risk control or indicator initialization. Indicator-rule references are explicit interpretations of teaching documentation, rather than complete original published systems.
Standardized backtest results
2024-01-01 → 2025-12-31 · crypto 2022–2023 / ETF Jun 2021–2023 warm-up · 10,000 quote units initial capital · 10 bps fee + 5 bps adverse slippage per side · completed-bar signals, next-open execution.

| Asset | Rank / 100 | Net return | CAGR | Max drawdown | Sharpe | Orders | 2024 restarted return | 2025 restarted return | Double-cost return |
|---|---|---|---|---|---|---|---|---|---|
| BTCUSDT | 73 | 17.83% | 8.54% | -20.93% | 0.43 | 6 | 14.15% | 3.22% | 16.77% |
| GLD | Unranked | 0.00% | 0.00% | 0.00% | N/A | 0 | 0.00% | 0.00% | 0.00% |
| QQQ | 50 | 18.80% | 8.98% | -15.66% | 0.71 | 4 | 8.82% | 9.17% | 18.09% |
| ETHUSDT | 72 | -9.69% | -4.96% | -41.96% | 0.10 | 6 | 1.87% | -11.35% | -10.50% |
BTCUSDT: low activity, fewer than ten orders in the evaluation period.
GLD: unranked because there are no completed trades or Sharpe is undefined. No artificial score is assigned.
GLD: low activity, fewer than ten orders in the evaluation period.
GLD executed targets match these versions during this period:
- freq-macdcci
- classic-wilder-rsi
- classic-ultimate
- community-fmz-keltner-bounce
- community-fmz-stoch-rsi-double
- community-fmz-dual-stoch
- community-freq-strategy003
- community-freq-strategy004
- community-freq-strategy005
- community-freq-cluc
- community-freq-quickie
- community-freq-smooth-scalp
Matching paths are not independent performance evidence and need not imply identical rules outside this sample.
QQQ: low activity, fewer than ten orders in the evaluation period.
ETHUSDT: low activity, fewer than ten orders in the evaluation period.
Additional measured diagnostics
| Asset | Annualized volatility | Sortino | Calmar | vs buy & hold (pp) | Double-cost drag (pp) | Longest underwater (days) |
|---|---|---|---|---|---|---|
| BTCUSDT | 28.66% | 0.65 | 0.41 | -88.84 | 1.06 | 199 |
| GLD | 0.00% | N/A | N/A | -106.40 | 0.00 | 0 |
| QQQ | 13.31% | 1.19 | 0.57 | -33.50 | 0.71 | 289 |
| ETHUSDT | 44.36% | 0.16 | -0.12 | -39.53 | 0.81 | 528 |
Metric definitions and unavailable statistics
- annualized volatility
- Sample standard deviation of daily equity returns, including initial cash, multiplied by sqrt(365) for crypto or sqrt(252) for ETFs.
- sortino
- Mean daily return / sqrt(mean(min(return,0)^2)) × sqrt(asset annualization sessions); minimum acceptable daily return 0; N/A without downside.
- calmar
- Evaluation CAGR / absolute evaluation maximum drawdown; N/A with zero drawdown.
- relative return pp
- Strategy total net return minus same-asset buy-and-hold total net return, in percentage points; not factor-adjusted alpha.
- cost drag pp
- Base net return minus doubled-cost net return, in percentage points.
- longest underwater days
- Longest observed calendar duration from a daily equity peak until a later below-peak close, including initial cash. Unrecovered runs are censored at sample end; closed-market days between observations count as calendar time.
- monthly returns
- Continuous account month-end equity change from preceding month-end (initial cash for first month); differs from yearly cash-restart subtests.
Orders are entry/exit operations. Round-trip win rate, profit factor and trade-level holding periods are not available in the stored run and are not estimated.
Primary coverage: BTCUSDT, GLD gold ETF and QQQ Nasdaq-100 ETF; ETH is supplementary. ETF prices are raw traded USD OHLCV. Dividend entitlements accrue for prior-close holders and settle on official payment dates; paid dividends remain cash until a later entry, with no automatic reinvestment. Sharpe uses 252 ETF sessions or 365 crypto days. CAGR uses 731 calendar days. Gold spot and the Nasdaq-100 index are represented by traded proxies; USD and USDT are not FX-normalized.
Retrospective historical comparison; no sealed out-of-sample validation or future return claim. Read the complete evaluation protocol.
Data and reproduction
GLD gold ETF results · QQQ Nasdaq-100 ETF results · Asset definitions and data conventions
BTC daily equity JSON · ETH daily equity JSON · Source registry · Download engine, data and tests
Strategy identifier: freq-bbrsi