CMO Pass Node
Chande Momentum Oscillator — Series Input
Overview
The CMO Pass Node computes the Chande Momentum Oscillator on a series input. CMO measures the ratio of the sum of up-moves to the sum of all moves over a period, expressing momentum on a −100 to +100 scale.
Unlike RSI which uses smoothed averages, CMO uses raw momentum data directly. Values near +100 indicate strong bullish momentum; values near −100 indicate strong bearish momentum. The zero line acts as a neutral momentum boundary.
Formula
Parameters
| Parameter | Default | Description |
|---|---|---|
| period | 14 | Lookback period for momentum sums |
Inputs & Outputs
| Slot | Direction | Type | Description |
|---|---|---|---|
| input | Input | { values, timestamps } | Any numeric series |
| values | Output | (number | null)[] | CMO values in [−100, +100]; nulls during warm-up |
| timestamps | Output | number[] | Unix timestamps aligned to input |
Use Cases
Momentum Filtering
Filter long signals when CMO is positive (above zero), short signals when CMO is negative — aligns trade direction with net momentum.
Overbought/Oversold Thresholds
Use ±50 as extreme thresholds. CMO above +50 is strongly overbought; CMO below −50 is strongly oversold — prime mean-reversion zones.
Adaptive RSI Alternative
CMO is mathematically equivalent to RSI rescaled to [−100, +100] but uses raw sums. It reacts faster to momentum shifts than Wilder-smoothed RSI.
Tips & Best Practices
CMO vs RSI
CMO uses unsmoothed sums, making it more reactive to short-term momentum. RSI uses exponential smoothing, making it less noisy. Choose CMO when responsiveness matters more than smoothness.
Flat Market Handling
When all bars in the window are flat (UP = DN = 0), CMO returns null. Add a null-guard downstream if flat markets are possible in your data source.
Series Input Advantage
The Pass variant lets you apply CMO to any indicator output — e.g. apply CMO to a smoothed price, a volume series, or a spread — not just raw close prices.