Stochastic Momentum Index (SMI)

Created by William Blau, the Stochastic Momentum Index (SMI) oscillator is a double-smoothed variant of the Stochastic Oscillator, depicted on a scale from -100 to 100. [Discuss] 💬

chart for Stochastic Momentum Index (SMI)

// usage (standard)
IEnumerable<SmiResult> results =
  quotes.GetSmi(lookbackPeriods, firstSmoothPeriods,
                 secondSmoothPeriods, signalPeriods);


lookbackPeriods int - Lookback period (N) for the stochastic. Must be greater than 0. Default is 13.

firstSmoothPeriods int - First smoothing factor lookback. Must be greater than 0. Default is 25.

secondSmoothPeriods int - Second smoothing factor lookback. Must be greater than 0. Default is 2.

signalPeriods int - EMA of SMI lookback periods. Must be greater than 0. Default is 3.

Historical quotes requirements

You must have at least N+100 periods of quotes to cover the convergence periods.

quotes is a collection of generic TQuote historical price quotes. It should have a consistent frequency (day, hour, minute, etc). See the Guide for more information.



Convergence warning: The first N+100 periods will have decreasing magnitude, convergence-related precision errors that can be as high as ~5% deviation in indicator values for earlier periods.


Date DateTime - Date from evaluated TQuote

Smi double - Stochastic Momentum Index (SMI)

Signal double - Signal line: an Exponential Moving Average (EMA) of SMI


See Utilities and helpers for more information.


Results can be further processed on Smi with additional chain-enabled indicators.

// example
var results = quotes

This indicator must be generated from quotes and cannot be generated from results of another chain-enabled indicator or method.