Momentum Indicators

CMO (Chande Momentum): Momentum Oscillator | AlfaTactix

📖 6 min read

📝 1,099 words

🏷️ Momentum Indicators

In this page: what CMO is, how it works, when to use it, a practical example with code, and a bonus tip.

Use CMO in a real strategy—no code required

Create a free account to save your progress and build strategies with this indicator and 80+ others in minutes. Backtest, then export to MQL5.


CMO on a price chart: illustration of the indicator and how it is used in technical analysis
CMO – chart illustration

CMO (Chande Momentum Oscillator) Indicator Explanation

The Chande Momentum Oscillator (CMO) is a momentum indicator that measures the strength of momentum by comparing the sum of price increases to the sum of price decreases over a specified period. Developed by Tushar Chande in 1994 and introduced in his book "The New Technical Trader," CMO differs from RSI by using both up and down price movements in its calculation, making it more responsive to momentum changes. The indicator oscillates between -100 and +100, with values above +50 typically indicating overbought conditions and values below -50 typically indicating oversold conditions. CMO is particularly effective for identifying momentum shifts, divergences, and overbought/oversold conditions through balanced momentum analysis.

How CMO Works: CMO is calculated by summing price increases (up moves) and price decreases (down moves) over a specified period (typically 14 periods). Up Sum = Sum of (Close - Previous Close) for all periods where Close > Previous Close, and Down Sum = Sum of |Close - Previous Close| for all periods where Close < Previous Close. The CMO formula is: CMO = 100 × (Up Sum - Down Sum) / (Up Sum + Down Sum). The result oscillates between -100 and +100, with positive values indicating upward momentum and negative values indicating downward momentum. Unlike RSI, which uses smoothed values, CMO uses raw sums, making it more responsive to recent price changes and less smoothed.

When to Use CMO:

  • Momentum Shift Identification: CMO is highly effective at identifying momentum shifts when it crosses the zero line, providing clear entry and exit signals. A CMO crossing above zero indicates potential upward momentum, while a CMO crossing below zero indicates potential downward momentum. The zero line acts as a trend separator.
  • Overbought/Oversold Identification: CMO values above +50 indicate overbought conditions (strong upward momentum that may be exhausted), while values below -50 indicate oversold conditions (strong downward momentum that may be exhausted). However, CMO can remain in extreme territory during strong trends.
  • Divergence Analysis: CMO divergence occurs when price makes new highs or lows while CMO fails to confirm, often signaling potential trend reversals. Bullish divergence (price makes lower low, CMO makes higher low) suggests upward momentum building, while bearish divergence (price makes higher high, CMO makes lower high) suggests downward momentum building.

Advantages:

  • Provides clear, objective momentum signals through balanced calculation that includes both up and down movements, making it more responsive than RSI. The raw sum calculation makes CMO less smoothed and more sensitive to recent price changes.
  • Works effectively across multiple timeframes and asset classes, including stocks, forex, commodities, and cryptocurrencies. The indicator adapts well to different market conditions and volatility levels.
  • Helps identify momentum shifts early through zero line crossovers and divergence analysis, providing clear signals for entry and exit points. The balanced calculation ensures reliability.

Limitations:

  • CMO can be more sensitive to price noise than smoothed indicators like RSI, potentially producing more false signals during volatile or ranging markets. The raw sum calculation makes it more responsive but also more prone to noise.
  • The indicator may produce whipsaws in ranging markets when momentum oscillates around zero without clear directional movement. CMO works best in trending markets where momentum is more clearly defined.
  • CMO does not provide information about trend direction on its own, only momentum strength and direction. Traders should combine it with trend indicators for more comprehensive analysis.

In summary, CMO is a valuable momentum oscillator that provides balanced momentum analysis through both up and down price movements, making it ideal for identifying momentum shifts and potential trend reversals with greater responsiveness than RSI. For comprehensive understanding, refer to Chande's original work "The New Technical Trader" (1994), Investopedia's CMO guide, TradingView's CMO documentation, and academic research on momentum oscillators in technical analysis published in journals such as the Journal of Financial Markets and the Review of Financial Studies.

Practical Example: Using the CMO Indicator in a Trading Strategy

The Chande Momentum Oscillator (CMO) is a momentum oscillator used to identify momentum shifts and overbought/oversold conditions through balanced momentum analysis. In a trading strategy, the CMO indicator helps traders make entry and exit decisions based on momentum direction and zero line crossovers.

Scenario: You're creating a momentum-based strategy for Bitcoin (BTC/USDT) on a 1-hour chart. You want to buy when CMO crosses above zero and moves above +50 (indicating strong upward momentum), and sell when it crosses below zero or falls below -50 (indicating strong downward momentum).

Strategy Logic:

  • Calculate the CMO(14) using a 14-period calculation. The CMO oscillates between -100 and +100, with values above +50 indicating overbought conditions and values below -50 indicating oversold conditions. The zero line acts as a trend separator.
  • Buy signal: When CMO crosses above zero and continues to rise above +50, indicating strong upward momentum beginning with momentum acceleration.
  • Sell signal: When CMO crosses below zero or falls below -50, indicating strong downward momentum beginning or upward momentum weakening.

Backtrader Example:

import backtrader as bt

class CMOMomentumStrategy(bt.Strategy):
    params = dict(
        cmo_period=14,
        overbought_level=50,
        oversold_level=-50
    )
    
    def __init__(self):
        # Calculate CMO: 100 * (Up Sum - Down Sum) / (Up Sum + Down Sum)
        # Simplified - in practice, calculate full CMO with up/down sums
        price_change = self.data.close - bt.ind.Delay(self.data.close, period=1)
        up_sum = bt.ind.SumIf(price_change, price_change > 0, period=self.p.cmo_period)
        down_sum = bt.ind.SumIf(-price_change, price_change < 0, period=self.p.cmo_period)
        self.cmo = 100 * (up_sum - down_sum) / (up_sum + down_sum)
        
    def next(self):
        if not self.position:
            # Buy when CMO crosses above zero and rises above +50
            if (self.cmo[0] > 0 and self.cmo[0] > self.p.overbought_level and 
                self.cmo[-1] <= 0):
                self.buy()
        else:
            # Sell when CMO crosses below zero or falls below -50
            if (self.cmo[0] < 0 or self.cmo[0] < self.p.oversold_level):
                self.sell()

# Usage
cerebro = bt.Cerebro()
cerebro.addstrategy(CMOMomentumStrategy)

Expected Outcome: By using the CMO indicator, your strategy identifies momentum shifts through zero line crossovers and extreme momentum readings, helping you enter trades when momentum is strong and exit when momentum weakens or reverses. This approach leads to better momentum-based entries, improved momentum strength identification, and enhanced consistency by trading only when momentum is clearly defined.

💡 Bonus Tip

Consider using CMO in combination with moving averages for trend confirmation. When CMO is above zero and price is above a moving average, it suggests strong upward momentum in an uptrend with higher probability of continuation. This technique, documented in Chande's original methodology, can significantly improve the reliability of CMO-based trading strategies.

Using the CMO indicator ensures your strategy captures momentum shifts effectively with balanced momentum analysis, improving entry and exit timing based on responsive momentum measurements.

Use CMO in a real strategy—no code required

Create a free account to save your progress and build strategies with this indicator and 80+ others in minutes. Backtest, then export to MQL5.

Try Strategy Builder

Use this indicator in Strategy Builder — free

Create free account