True Strength Index (TSI)

get_tsi(quotes, lookback_periods=25,smooth_periods=13, signal_periods=7)


name type notes
quotes Iterable[Quote] Iterable of the Quote class or its sub-class.
See here for usage with pandas.DataFrame
lookback_periods int, default 25 Number of periods (N) for the first EMA. Must be greater than 0.
smooth_periods int, default 13 Number of periods (M) for the second smoothing. Must be greater than 0.
signal_periods int, default 7 Number of periods (S) in the TSI moving average. Must be greater than or equal to 0.

Historical quotes requirements

You must have at least N+M+100 periods of quotes to cover the convergence periods. Since this uses a two EMA smoothing techniques, we recommend you use at least N+M+250 data points prior to the intended usage date for better precision.

quotes is an Iterable[Quote] collection of historical price quotes. It should have a consistent frequency (day, hour, minute, etc). See the Guide for more information.



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


name type notes
date datetime Date
tsi float, Optional True Strength Index
signal float, Optional Signal line (EMA of TSI)


See Utilities and Helpers for more information.


from stock_indicators import indicators

# This method is NOT a part of the library.
quotes = get_historical_quotes("SPY")

# Calculate 20-period TSI
results = indicators.get_tsi(quotes, 25, 13, 7)

About True Strength Index (TSI)

Created by William Blau, the True Strength Index is a momentum oscillator that depicts trends in price changes. [Discuss] 💬