Upstream archive
03 / 04ResearchJune 10, 2026 · 5 min read

Four Ways to Read the Market

All four strategies share the same interface: receive a DataFrame of OHLCV bars, return a Series of position signals — 1 (long), -1 (short), 0 (flat). They are pure functions. The backtester treats them identically. Each one bets on a different market regime. The AutoResearch optimizer will tell you which one is working right now.

MACD — Momentum

Golden cross / death cross on the MACD histogram. When the fast EMA crosses above the slow, go long. Below, go short. Simple directional momentum: bet that the trend continues.

  • Fast period: 12 bars
  • Slow period: 26 bars
  • Signal smoothing: 9 bars
  • Works best in: trending markets

RSI — Mean Reversion

Oversold (RSI < 30) means long. Overbought (RSI > 70) means short. The mean-reversion thesis: price extremes revert. The opposite bet from MACD — when RSI says the market has gone too far, you fade it.

  • Period: 14 bars
  • Thresholds: 30 / 70 (configurable)
  • Works best in: ranging, sideways markets

Bollinger Bands — Volatility

Price crossing below the lower band triggers long. Above the upper band triggers short. A volatility-aware variant of RSI: the bands expand during trending moves, so you only enter on deviations that are extreme relative to recent volatility, not just absolute price level.

  • Period: 20 bars
  • Width: 2 standard deviations (configurable)
  • Works best in: mean-reverting markets with variable volatility

Dual Thrust — Breakout

Sets a range at the start of each period using the previous N bars high/low range, scaled by a K factor. Break above the upper rail means long. Break below the lower rail means short. Originally designed for futures by Michael Chalek. It handles trending markets where RSI and Bollinger produce whipsaws.

  • Range bars: 4
  • K factor: 0.5 (configurable)
  • Works best in: breakout and trending regimes

How the optimizer chooses

The AutoResearch engine sweeps a param grid across all four strategies, selects the best config by in-sample Sharpe (train set), and reports out-of-sample metrics. A config is robust only if both IS and OOS Sharpe exceed 0.5. One regime, one winner — the rest are marked overfit or weak.

On 1h BTC data, RSI is the consistent robust winner with OOS Sharpe around 6.5. On 4h, everything is overfit. The market tells you which regime it is in — the optimizer surfaces it.