# Chande Momentum Oscillator

A Momentum & Oscillators concept (Rate-of-change cluster) in the LuxAlgo Library, with 1 indicator implementation.

## What is the Chande Momentum Oscillator?

The Chande Momentum Oscillator (CMO) is a bounded momentum oscillator introduced by Tushar Chande. Over a lookback window it sums the gains on up closes (Su) and the absolute losses on down closes (Sd), then computes 100 times (Su minus Sd) divided by (Su plus Sd). The result swings between +100 and -100, reaching an extreme only when every bar in the window closed in the same direction, and sitting at zero when gains and losses balance.

The construction is deliberately close to [RSI](https://www.luxalgo.com/library/concept/rsi/) with two differences: the sums are raw rather than smoothed, and the scale is symmetric around zero rather than 0 to 100. With the same window and simple averaging, CMO is a linear rescale of RSI (two times RSI minus 100); in practice the values differ because standard RSI uses Wilder's smoothing. The unsmoothed sums make CMO snappier, and noisier, than RSI at the same length.

Chande introduced the CMO in The New Technical Trader (1994), co-written with Stanley Kroll, as part of a set of tools meant to modernize classic designs; the same book presented VIDYA, his variable-index moving average. The stated aim was a purer momentum reading: Wilder's smoothing inside RSI stabilizes the line but blurs exactly the short bursts a momentum trader may want to see. By summing raw gains and losses, the CMO reports the window's one-sidedness as it stands, and by centering the scale on zero it makes the neutral point explicit rather than burying it at 50.

The symmetric scale is more than cosmetic. Zero marks genuine balance between up and down movement, so the sign is a compact regime read, and thresholds mirror cleanly for long and short analysis. The absolute value doubles as a trendiness gauge: |CMO| near 100 means recent closes moved almost entirely one way, values near zero mean churn, and that property is what Chande reused as the volatility index inside VIDYA. Its relatives frame the tradeoffs: [ROC](https://www.luxalgo.com/library/concept/roc/) is unbounded and referenced to a single old bar, and raw [momentum](https://www.luxalgo.com/library/concept/momentum/) is an unnormalized point difference, while the CMO normalizes by total movement so readings stay comparable across quiet and volatile stretches.

## How to identify Chande Momentum Oscillator signals on a chart

The CMO plots in its own panel between +100 and -100, with the zero line and the +50/-50 extremes as reference levels.

1. Read the sign first: above zero, up closes have outweighed down closes over the window; below zero, the reverse.
2. Mark visits to +50 and -50, the conventional extreme thresholds, and note how this market has recently resolved them, by reversing or by trending onward.
3. Expect a jagged line: with raw sums, the level the CMO holds for several bars matters more than any single-bar spike.
4. Compare swing extremes against price: a new price high with a lower CMO high shows the window's one-sidedness fading, the standard [regular divergence](https://www.luxalgo.com/library/concept/regular-bullish-bearish-divergence/) template.
5. If a smoothed copy is overlaid, watch crossings of the CMO and its signal line for earlier, noisier triggers.

## How it's calculated

Bounded momentum oscillator comparing the sum of up-closes to the sum of down-closes over the lookback, scaled to -100..+100.

```
up_t = max(C_t - C_(t-1), 0)
down_t = max(C_(t-1) - C_t, 0)
S_up_t = Σ over i = 0..n-1 of up_(t-i)
S_down_t = Σ over i = 0..n-1 of down_(t-i)
CMO_t = 100 × (S_up_t - S_down_t) / (S_up_t + S_down_t)

  C_t: close of bar t
  C_(t-1): close of the prior bar
  up_t: gain of bar t (0 when the close fell)
  down_t: loss of bar t as a positive number (0 when the close rose)
  up_(t-i): gain i bars before t
  down_(t-i): loss i bars before t
  S_up_t: sum of gains over the last n bars
  S_down_t: sum of losses over the last n bars
  n: lookback length (commonly 9 or 14)
  CMO_t: Chande Momentum Oscillator at bar t, between -100 and +100
  i: bar offset within the window
  t: bar index
```

Published by Tushar Chande (1994); unlike RSI the sums are unsmoothed, so CMO reacts faster and is symmetric around zero.

Common overbought/oversold thresholds are +50 and -50.

CMO_t = 2 × RSI_t - 100 when RSI is computed with simple sums instead of Wilder smoothing.

## How traders use it

- As an [overbought/oversold](https://www.luxalgo.com/library/concept/overbought-oversold/) gauge: +50 and -50 are the conventional extreme thresholds, with the usual caveat that readings can stay pinned during strong trends.
- As a zero-line regime read: the sign of CMO tells whether recent closes have netted up or down, a simple directional filter.
- As a trendiness input: the absolute value of CMO measures how one-sided recent movement is, which is how it drives the adaptive smoothing inside VIDYA.
- As a divergence tool: because the sums are unsmoothed, CMO swing extremes register sharply, making both regular and [hidden divergence](https://www.luxalgo.com/library/concept/hidden-divergence/) legible, at the cost of more candidate swings to filter.

## CMO vs adjacent momentum oscillators

- **RSI** (https://www.luxalgo.com/library/concept/rsi/): The nearest relative: the same gain-versus-loss comparison, but RSI applies Wilder's smoothing and maps to 0-100 while the CMO uses raw sums on a symmetric scale. In practice the CMO turns faster and noisier, and its zero line makes the regime midpoint explicit where RSI puts it at 50.
- **ROC** (https://www.luxalgo.com/library/concept/roc/): ROC measures the percentage change from a single close n bars ago: unbounded, and sensitive to the reference bar dropping out of the window. The CMO uses every bar and bounds the result, so extreme readings stay comparable across instruments and volatility regimes.
- **Stochastic Oscillator** (https://www.luxalgo.com/library/concept/stochastic-oscillator/): The stochastic locates the close within the recent high-low range, a position measure that can read extreme after a slow drift to the range edge. The CMO measures net close-to-close movement, so it captures directional force rather than location within the range.

## FAQ

### How is the CMO different from RSI?

Both compare up moves against down moves over a window, but CMO uses raw sums where standard RSI applies Wilder's smoothing, and CMO is scaled -100 to +100 around zero where RSI runs 0 to 100 around 50. With simple averaging the two are linear rescales of each other; the smoothing difference is what makes their real-world traces diverge.

### What settings and thresholds are typical for the CMO?

Common lookbacks are 9, 14, and 20 periods, with +50 and -50 as the usual overbought and oversold lines. Shorter windows reach the extremes far more often; longer ones rarely do. As with any bounded oscillator, extreme readings mark stretched conditions rather than reversal signals, and they can persist while a trend keeps running.

### Who created the Chande Momentum Oscillator?

Tushar Chande, a quantitative analyst and author, introduced it in The New Technical Trader (1994), written with Stanley Kroll. The same body of work produced VIDYA, whose adaptive smoothing is driven by the absolute CMO value, along with the Aroon system and the Chande Forecast Oscillator.

### What does a CMO reading of zero mean?

Gains and losses over the lookback are exactly balanced. Sustained hovering near zero marks a market in churn, and Chande used the same property in reverse: the further the absolute CMO sits from zero, the more one-sided and trend-like recent movement has been.

### Can the CMO be smoothed?

Yes, and it is common: a short moving average of the CMO acts as a signal line, and some public versions filter the oscillator with heavier smoothers before plotting. Every layer walks the indicator back toward RSI-like behavior, worth remembering since escaping smoothing was the design's point.

### Is the CMO better than RSI?

Neither dominates; they trade speed against stability. The CMO reacts sooner at swing turns and gives a cleaner zero-line regime read, while RSI's smoothing suppresses one-bar noise and its 0-100 conventions are the ones most published playbooks and variants like [Stochastic RSI](https://www.luxalgo.com/library/concept/stochastic-rsi/) assume. Test both at your length and timeframe; the differences are systematic but not large.

## Implementations in the Library

- Chande Momentum Oscillator (LuxAlgo, the standard build of the classic formula): https://www.luxalgo.com/library/indicator/chande-momentum-oscillator/

## Related concepts

- Momentum: https://www.luxalgo.com/library/concept/momentum/
- Disparity Index: https://www.luxalgo.com/library/concept/disparity-index/
- ROC: https://www.luxalgo.com/library/concept/roc/
- ROC-of-ROC: https://www.luxalgo.com/library/concept/roc-of-roc/
- Know Sure Thing: https://www.luxalgo.com/library/concept/know-sure-thing/
- Coppock Curve: https://www.luxalgo.com/library/concept/coppock-curve/
- Detrended Price Oscillator: https://www.luxalgo.com/library/concept/detrended-price-oscillator/
- TRIX: https://www.luxalgo.com/library/concept/trix/
- Psychological Line: https://www.luxalgo.com/library/concept/psychological-line/
- Special K: https://www.luxalgo.com/library/concept/special-k/

---

Source: https://www.luxalgo.com/library/concept/chande-momentum-oscillator/ (LuxAlgo Library, the encyclopedia of trading & technical analysis). Free to use with attribution: https://www.luxalgo.com/library/license/