Chande Momentum Oscillator (CMO)

Pure momentum oscillator on a −100 to +100 scale. Less smoothing than RSI — sharper signals, more responsiveness, more whipsaws.

Updated 2026-05-24
7 min read
intermediate

A momentum oscillator that measures net price movement over a lookback period, scaled to a −100 to +100 range. Mathematically similar to RSI but without the smoothing — sharper, more responsive, more noisy.

Placeholder · Video / Clip

CMO(14) on MES 5m — pure momentum cycling

Author hint: MES 5m, dark theme, ~60-bar window. CMO(14) plotted in a sub-panel with horizontal lines at +50 and -50. Show a couple of full cycles where CMO swings between extremes. ≤ 8 seconds, no audio. Save to /public/images/guide/indicators/cmo/chart.mp4.

What it measures

  • Net momentum. Sum of up-day price changes minus sum of down-day price changes, normalized to total absolute movement.
  • Pure (unsmoothed) momentum reading. Where RSI smooths the averages, CMO sums them raw — more responsive, more volatile.
  • Direction certainty. The bundled Direction output (1 or −1) gives a binary momentum-direction flag.

Formula

How AlgoLift computes it
For each bar inside the lookback:
  if Close[i] > Close[i-1]:   UpMove[i] = Close[i] − Close[i-1]
  else:                       UpMove[i] = 0

  if Close[i] < Close[i-1]:   DownMove[i] = Close[i-1] − Close[i]
  else:                       DownMove[i] = 0

SumUp = sum(UpMove) over period
SumDown = sum(DownMove) over period

CMO = 100 × (SumUp − SumDown) / (SumUp + SumDown)

The denominator is the total absolute movement; the numerator is the net directional movement. The result ranges from −100 (all down moves) to +100 (all up moves).

Compare to RSI: RSI uses smoothed averages of up/down moves. CMO uses raw sums. The difference makes CMO more responsive to recent changes and more sensitive to single-bar shocks.

Developed by Tushar Chande in 1995.

Inputs in AlgoLift

SettingDefaultRangeNotes
Period142–200Lookback for the up/down sums.

Recommended periods

  • 5–9 (fast): Short-term scalping.
  • 14 (default): Standard. Works for most intraday strategies.
  • 20–30: Smoother readings for swing setups.

Outputs in AlgoLift

HandleTypePlottedNotes
CMONumericAlwaysThe oscillator (−100 to +100).
SlopeNumericOn selectRate of change of CMO — useful for momentum acceleration detection.
DirectionNumericOn selectBinary: 1 when CMO > 0, −1 when CMO < 0. Convenient as a regime flag.
Placeholder · Screenshot

CMO node — default state with all three outputs

Author hint: The CMO node on a fresh canvas with default Period=14. All three output handles labeled (CMO, Slope, Direction). Dark theme. Tight crop. Save to /public/images/guide/indicators/cmo/node.png.

How to read it

  • CMO > +50: Strong upside momentum — possibly overextended.
  • CMO < −50: Strong downside momentum — possibly overextended.
  • CMO crossing zero: Net momentum flipped direction. The Direction output handles this for you.
  • CMO near zero with low slope: Sideways action, no directional bias.
  • CMO at extreme with flat slope: Momentum has plateaued — possible reversal warning.

The ±50 thresholds are less established than RSI's 70/30 — some traders use ±60 or ±70 for tighter filters.

Key Takeaway

CMO is RSI without the smoothing. Sharper signals, more responsiveness, more whipsaws. Use it when you want momentum readings that react faster than RSI; use RSI when you want smoother readings that survive more noise.

Best in / worst in

Best in instruments with clean trends and clear momentum shifts, on liquid futures and major equity indices during regular trading hours, and as a confirmation indicator alongside slower trend filters.

Worst in sideways chop (whipsaws across zero continuously), low-liquidity windows (the unsmoothed structure amplifies tape noise), and on instruments with frequent gaps that create artificially extreme readings.

Three setups

1. CMO direction as a regime filter

Use the Direction output (1 or −1) as a clean binary trend flag.

  • Long-only mode: Direction = 1 — strategy permitted to take longs only.
  • Short-only mode: Direction = −1 — short entries only.

A simple, no-tuning regime classifier that can sit alongside any other strategy.

Placeholder · Screenshot

CMO Direction as a regime gate

Author hint: Node graph showing CMO Direction output feeding two parallel comparisons (= 1 and = -1) that gate two Entry nodes for long-only and short-only modes. Save to /public/images/guide/indicators/cmo/setup-01.png.

2. Extreme mean-reversion entry

Trade against CMO extremes when conditions support mean reversion.

  • Long: CMO < −50 AND CMO slope > 0 (turning back up) AND KAMA ER < 0.3 (range regime).
  • Short: Symmetric.

The KAMA ER filter is what makes this safe — CMO extremes in trends don't reverse; only in ranges.

3. Zero-line breakout entry

Use CMO crossing zero as a momentum-shift entry trigger.

  • Long: CMO crosses above 0 AND price > EMA(50) AND CMO slope > some threshold (genuine acceleration, not noise drift).
  • Short: Symmetric.

The slope requirement filters out lazy zero-line drifts that don't represent real momentum changes.

Advanced patterns in AlgoLift

CMO Direction in a Cluster. CMO + a fast moving average + ATR-based stops forms a compact short-term momentum kit. Save the combination as a Cluster once, drop it into any new short-horizon strategy.

CMO and RSI agreement. Run both indicators in parallel — only trade when they agree on extreme conditions (CMO > +50 AND RSI > 70 = strong confirmed momentum). The two indicators have different smoothing structures, so requiring agreement filters out noise that either alone would produce.

Direction output as conditional flow trigger. Wire the Direction output into a Conditional Flow node that switches the strategy between long-bias logic (Direction = 1) and short-bias logic (Direction = −1). Eliminates the need for separate strategies — one graph adapts to the current regime.

Common mistakes

  • Treating CMO and RSI as interchangeable. CMO at +60 is not the same as RSI at 70. The scaling is different (CMO is −100 to +100; RSI is 0 to 100) and the underlying smoothing is different. Setting "CMO overbought = 60" requires its own validation.
  • Using CMO alone as a primary signal. The unsmoothed structure makes CMO whip too much for standalone use. Always pair with a trend filter, regime detector, or second oscillator.
  • Ignoring the Slope output. Slope flips precede zero-line crosses. Strategies that only read CMO value miss the early-warning signal.
Common Misconception
Myth
CMO is better than RSI because it's more responsive.
Reality
More responsive = more false signals. CMO and RSI represent different points on the responsiveness-vs-noise curve. For high-frequency strategies that filter aggressively, CMO's sensitivity is useful. For lower-frequency strategies that need stable readings, RSI's smoothing is what you actually want.