DUCKQUANT / THE QUANT & AI DIRECTORY
Moving Momentum — daily reference
Public rule reference · Trend pullback
Documented strategy reference · Classic rule documentation · source checked 2026-10-25
Strategy research profile
Strategy overview
The setup separates trend, correction and confirmation. Moving averages establish the bias, stochastic arms a pullback state and a MACD-histogram change confirms the next action.
- Strategy style
- Trend pullback
- Rule family
- Trend pullback
- Source platform
- Classic rule documentation
- Source attribution
- Not recorded in reviewed source
- Source example / declared timeframe
- Not recorded in reviewed source
- 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 higher-level trend or regime supplies context while a shorter correction supplies timing. Separating bias from trigger can delay entry and can exclude many apparent rebounds.
Market-regime hypothesis
Corrections inside an established trend rather than persistent trend failure.
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 pullback can become a reversal. Multi-stage conditions introduce timing sensitivity and can retain stale state.
- 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
SMA20>SMA150 and slow Stochastic14<20 arms; MACD histogram12/26/9 crossing zero enters. Bear bias and Stochastic>80 arms a negative-histogram exit.
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: 458e5cd86320ec55c3431d3c739ed348bec65fbe4633301ab65fea297a4e076b
Reading and theoretical references
- Reviewed strategy / indicator source ↗
Published rule or indicator reference; adaptation is described separately. - StockCharts ChartSchool: Moving Momentum ↗
Trend, correction and confirmation framework; not an attribution of this strategy to the article.
Adaptation and interpretation
Daily closed-bar signals, next-open all-in long/cash, fixed fees/slippage. Short entries become cash. Source risk sizing, intraday orders, ROI, TP/SL, trailing stops, pyramiding, sessions and protections are NOT native replicas unless explicitly implemented in the stated rule. Source conflict signals resolve to cash. Common indicators are not certified TA-Lib/Pine identical. This teaching source supports the named strategy or indicator. The exact finite entry/exit convention in this record is the DuckQuant reference interpretation, not certification of a full original trading system. For indicator-only sources no claim of a complete published strategy is made.
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 | 31 | 73.76% | 31.77% | -32.55% | 0.88 | 6 | 115.14% | -19.48% | 72.20% |
| GLD | 4 | 106.40% | 43.59% | -10.13% | 2.16 | 2 | 26.10% | 61.79% | 105.78% |
| QQQ | 54 | 20.85% | 9.92% | -19.43% | 0.64 | 4 | 26.29% | -5.25% | 20.13% |
| ETHUSDT | 58 | 8.56% | 4.19% | -46.05% | 0.34 | 6 | 36.45% | -20.68% | 7.59% |
BTCUSDT: low activity, fewer than ten orders in the evaluation period.
GLD: low activity, fewer than ten orders in the evaluation period.
GLD executed targets match these versions during this period:
- buy-hold
- sma-50-200
- fmz-keltner
- fmz-triple-macd
- community-fmz-roc-rsi
- community-fmz-triple-ema-pullback
- community-fmz-matrix-series
- community-freq-strategy001
- community-freq-swing
- community-freq-macd-state
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 | 40.90% | 1.34 | 0.98 | -32.91 | 1.56 | 344 |
| GLD | 17.60% | 3.20 | 4.30 | 0.00 | 0.62 | 91 |
| QQQ | 17.19% | 0.86 | 0.51 | -31.45 | 0.72 | 315 |
| ETHUSDT | 52.02% | 0.50 | 0.09 | -21.28 | 0.97 | 518 |
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: classic-moving-momentum