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} = 100 \cdot ((\text{Sum of Upward Change}) - (\text{Sum of Downward Change})) / ((\text{Sum of Upward Change}) + (\text{Sum of Downward Change})),\;\; \text{bounded between -100 and 100}\]

Also known as: CMO, Chande momentum.

Chande Momentum Oscillator (CMO) in Python or via the MCP

Install the Finance Toolkit with:

pip install financetoolkit -U

Then call get_chande_momentum_oscillator as shown below.

from financetoolkit import Toolkit

toolkit = Toolkit(
    tickers=["SIUSD"],
    api_key="FINANCIAL_MODELING_PREP_KEY",
    start_date="2021-01-01",
    end_date="2025-12-31",
)

toolkit.technicals.get_chande_momentum_oscillator().tail(5)

Or, after setting up the Finance Toolkit MCP, ask:

How did the momentum of silver swing from 26 to 31 December 2025, measured by the Chande Momentum Oscillator?

Which returns:

Date SIUSD Benchmark
2025-12-26 59.7782 11.8161
2025-12-28 57.6324 4.8651
2025-12-29 26.3815 23.9571
2025-12-30 38.9752 22.7863
2025-12-31 15.4986 8.2769

Parameters

get_chande_momentum_oscillator accepts the following parameters.

ParameterTypeDescriptionExample
periodstrThe time period to consider for historical data. Can be “intraday”, “daily”, “weekly”, “monthly”, “quarterly” or “yearly”. Defaults to “daily”."weekly"
close_columnstrThe column in the historical data that represents the closing prices. Defaults to “Adj Close”."Close"
windowintThe number of periods to consider for the CMO calculation. Defaults to 14.20
roundingint | NoneThe number of decimals to round the results to. Defaults to None, which uses the rounding of the Toolkit (4 unless set otherwise).2
growthboolWhether to calculate the growth of the indicator values. Defaults to False.True
lagint | list[int]The lag to use for the growth calculation. Defaults to 1.4
standardizeboolWhether to standardize (Z-Score) the result. When combined with growth=True, standardizes the growth values instead of the raw values. Defaults to False.True
Share