
Long while the weekly close sits above both the 20-week SMA and the 21-week EMA, cash below both — no change while the close is inside the band. Defined on weekly candles with 20/21: any other periods or interval are a new trial, not a tuning. Every result reports its week anchor (Binance weeks start Monday UTC, KuCoin-sourced pairs Thursday UTC) and its band width.
The Bull Market Support Band is the space between two weekly lines: the 20-week simple moving average and the 21-week exponential moving average. The rule reads the weekly close relative to that band, not the lines relative to each other.
The third line is the defining feature. It turns two lines into a hysteresis zone: the price has to cross the whole band before the state flips, which is what separates the BMSB from a plain crossover (Golden Cross, EMA Cross) or a single-line regime. Signals are read on the confirmed weekly close and filled at the open of the following week. The band width is reported as a diagnostic: when the two lines almost coincide, the hysteresis is inert and the rule behaves like a one-line filter.
The strategy is defined on weekly candles with periods 20 and 21. Both are exposed as parameters, but any other value is a new trial, not a tuning of the same strategy — and it counts as one in the multiple-testing correction.
| Name | Default | Range | Description |
|---|---|---|---|
| SMA period (weeks) | 20 | 5–100 | Length of the simple moving average on weekly closes. 20 is the definition; any other value is a new trial. |
| EMA period (weeks) | 21 | 5–100 | Length of the exponential moving average on weekly closes, seeded with the SMA of the first 21 values. 21 is the definition. |
The pre-baked mini-backtest is refreshed daily — check back soon or start a live run in the Arena.
Run in Arena →// Long-only, weekly candles, hysteresis band
sma = SMA(close, 20)
ema = EMA(close, 21) // seeded with SMA(21)
upper = max(sma, ema); lower = min(sma, ema)
state = flat // after 21-week warm-up
for each confirmed weekly close:
if close > upper: next = long
elif close < lower: next = flat
else: next = state // inside the band: hold
if next != state: order at NEXT week's open
state = nextThe band is defined on weekly candles. SMA(20) and EMA(21) on daily candles are a different indicator that only shares the name — the run still executes, but the result carries `definition_interval_mismatch` so nobody reads it as the BMSB.
Those rules act when the two lines cross each other. The BMSB ignores the lines' order and reads the close against the band — and it does nothing while the close is between the lines. That hold-inside rule is the whole difference.
Our weekly candles open on Monday 00:00 UTC (reported as `interval_anchor` in every result). A chart with a different week start or exchange feed draws different weekly closes and therefore a different band.
Invested above the 200-day line, cash below. Meb Faber's classic trend filter — roughly Buy & Hold returns at a fraction of the drawdown.
The classic trend-following signal — when the 50-day SMA crosses above the 200-day SMA, the trend has flipped bullish.
The configurable trend-switcher — two exponential moving averages cross, and the trade direction flips. Faster than Golden Cross, simpler than EMA Trend Bias.
Check out our Strategy Insights Reports — pre-baked deep-dives with historical results, comparisons, and market context.