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.
Share