Stochastic Momentum Index Indicator

What is it?

The Stochastic Momentum Index (SMI) represents an improved iteration of the standard stochastic oscillator, aimed at providing a more dependable indicator that reduces false signals by gauging the distance between the current closing price and the midpoint of the high/low price range. It was created by William Blau in 1993.

SMI oscillates within the range of -100% to 100% and is interpreted much like the Stochastics Oscillator. Crossing the 40% threshold on the SMI is typically viewed as a sign of overbought conditions, while dropping below -40% indicates oversold conditions.


To perform this calculation, we begin by determining the highest and lowest values within a specific window, which is defined by the K Period parameter in the indicator settings. Subsequently, we calculate the relativeRange by subtracting the average of these highest and lowest values from the current closing price:

relativeRange = close - (highestHigh + lowestLow) / 2

After this we calculated double exponential moving average using D period parameter:

ds = EMA(EMA(relativeRange, D);

And double exponential moving average of the difference between highest and lowest values in the selected period:

dhl = EMA(EMA((highestHigh - lowestLow), D))

And finally we calculate SMI value:

smi = 200 * (ds / dhl)

Signal line is calculated applying EMA on the calculated smi value, using EMA period from settings:

signal = EMA(smi, EMA period);

amCharts implementation

amCharts 5: Stock Chart has a built-in support for Stochastic Momentum Index Indicator since version 5.5.3.

It can be added via Indicator Control dropdown (docs) in Stock Chart’s toolbar.

It can also added via chart API code.

stockChart.indicators.push(, {
  stockChart: stockChart,
  stockSeries: valueSeries


See the Pen
Stock Chart with Stochastic Momentum Index Indicator
by amCharts team (@amcharts)
on CodePen.0

Related docs