Chande Momentum Oscillator (CMO)
Calculate the Chande Momentum Oscillator (CMO) for a given price series.
The Chande Momentum Oscillator is an indicator that measures the momentum of a price series and identifies overbought and oversold conditions.
The formula is as follows:
\[\text{CMO} = ((\text{Sum of Upward Change}) - (\text{Sum of Downward Change})) / ((\text{Sum of Upward Change}) + (\text{Sum of Downward Change}))\]Also known as: CMO, Chande momentum.
Chande Momentum Oscillator (CMO) in Python
get_chande_momentum_oscillator is part of the Technicals module of the open-source Finance Toolkit. Install it with:
pip install financetoolkit -U
Then call get_chande_momentum_oscillator as shown below.
from financetoolkit import Toolkit
toolkit = Toolkit(tickers=["AAPL", "MSFT"])
toolkit.technicals.get_chande_momentum_oscillator()
Which returns:
| Date | AAPL | MSFT | Benchmark |
|---|---|---|---|
| 2026-06-18 | -21.8609 | -62.8906 | -10.2182 |
| 2026-06-22 | -15.625 | -81.4368 | -14.7997 |
| 2026-06-23 | -39.1826 | -66.1723 | -24.6608 |
| 2026-06-24 | -34.6231 | -64.2442 | -20.9163 |
| 2026-06-25 | -54.1904 | -69.4937 | -23.1112 |
| 2026-06-26 | -33.0342 | -37.3504 | -10.1446 |
| 2026-06-29 | -29.3073 | -37.0653 | 1.8792 |
| 2026-06-30 | -1.8539 | -26.9917 | 9.8861 |
| 2026-07-01 | 4.1068 | -11.1036 | 23.1787 |
| 2026-07-02 | 16.5859 | 0.1282 | 9.1933 |
Parameters
get_chande_momentum_oscillator accepts the following parameters:
- period (str, optional): The time period to consider for historical data. Can be “daily”, “weekly”, “quarterly”, or “yearly”. Defaults to “daily”.
- close_column (str, optional): The column in the historical data that represents the closing prices. Defaults to “Adj Close”.
- window (int, optional): The number of periods to consider for the CMO calculation. Defaults to 14.
- rounding (int | None, optional): The number of decimals to round the results to. Defaults to 4.
- growth (bool, optional): Whether to calculate the growth of the indicator values. Defaults to False.
- lag (int | list[int], optional): The lag to use for the growth calculation.
- standardize (bool, optional): Whether to standardize (Z-Score) the result. When combined with growth=True, standardizes the growth values instead of the raw values. Defaults to False. Defaults to 1.