A double-smoothed momentum oscillator that filters more noise than RSI or Stochastic. The two-pass EMA smoothing produces a cleaner line, fewer false crossovers, and more lag — a deliberate trade-off in favor of reliability over speed.
TSI (25, 13, 7) on MES 5m — smoothed momentum cycles
What it measures
- Smoothed momentum direction. Positive TSI = recent price changes have been net-positive after smoothing; negative = net-negative.
- Trend strength. Larger absolute values mean stronger directional momentum.
- Filtered crossover signals. Two-pass smoothing means TSI and its signal line cross far less often than equivalent oscillators — and each crossover means more when it happens.
Formula
How AlgoLift computes it
Momentum[t] = price[t] − price[t-1]
EMA1 = EMA(Momentum, long_period)
EMA2 = EMA(EMA1, short_period) (double-smoothed momentum)
AbsEMA1 = EMA(|Momentum|, long_period)
AbsEMA2 = EMA(AbsEMA1, short_period) (double-smoothed absolute momentum)
TSI = 100 × (EMA2 / AbsEMA2)
Signal = EMA(TSI, signal_period)
Histogram = TSI − Signal
Two passes of EMA smoothing on both the signed and unsigned momentum. The ratio of smoothed-signed to smoothed-unsigned produces a normalized −100 to +100 oscillator that responds to net momentum rather than bar-by-bar price ticks.
Developed by William Blau in the early 1990s.
Inputs in AlgoLift
| Setting | Default | Range | Notes |
|---|---|---|---|
| Long Period | 25 | 2–200 | First smoothing period — applied to raw momentum. |
| Short Period | 13 | 1–100 | Second smoothing period — applied to the first smoothed value. |
| Signal Period | 7 | 1–100 | Period for the signal line. |
Recommended settings
- (25, 13, 7) — default: Blau's original. Works for swing setups on hourly to daily bars.
- (13, 8, 5): Faster — for short-timeframe trading. More signals, slightly more false positives.
- (40, 20, 10): Slower — for very-long-horizon trend confirmation.
Outputs in AlgoLift
| Handle | Type | Plotted | Notes |
|---|---|---|---|
| TSI Line | Numeric | Always | The main oscillator (−100 to +100). |
| Signal Line | Numeric | Always | EMA of the TSI line — the lagging reference. |
| Histogram | Numeric | On select | TSI − Signal. Tracks momentum acceleration. |
| Slope | Numeric | On select | Rate of change of TSI. |
TSI node — default state
Reading the components together
TSI's three lines map to three time horizons:
- TSI Line is the smoothed momentum reading itself — already filtered against noise.
- Signal Line lags TSI by
signal_periodbars — provides the crossover reference. - Histogram leads both — flips sign first when momentum begins to change.
Because of the double smoothing, even the histogram is less twitchy than equivalent indicators. A histogram sign change in TSI typically means more than a histogram sign change in MACD.
TSI's value is filter quality. Crossovers happen rarely but mean more. Use it when "too many signals" is your problem and you'd rather have 3 strong setups per month than 30 noisy ones.
Best in / worst in
Best in trending markets and on instruments where you want a high signal-to-noise ratio. TSI's smoothing means it lags entries but rarely fires false ones.
Worst in very-short-timeframe execution (the smoothing creates too much lag) and in markets that reverse sharply (TSI takes too long to catch up). Not a scalping tool.
Three setups
1. Signal-line crossover with zero-line filter
Standard TSI entry — line crosses signal in the direction of the zero-line bias.
- Long: TSI Line crosses above Signal Line AND TSI > 0.
- Short: TSI Line crosses below Signal Line AND TSI < 0.
The TSI-vs-zero check eliminates countertrend crossovers, which are the lowest-quality TSI signals.
TSI signal-line crossover with zero-line filter
2. Histogram-led early entry
Use the histogram for early detection, signal-line crossover for confirmation.
- Long: Histogram crosses above 0 (TSI just crossed above Signal) AND TSI slope > 0 AND price > SMA(200).
- Short: Symmetric.
The slope requirement ensures momentum is genuinely accelerating, not just briefly flipping.
3. Zero-line as a trend filter
Use TSI's zero-line cross as a slow regime classifier for other strategies.
- Long-only mode: TSI > 0 — strategy permitted to take longs.
- Short-only mode: TSI < 0.
- Flat: TSI between −5 and +5.
A cleaner regime filter than zero-line MA crossovers because TSI's smoothing prevents whipsaws across zero.
Advanced patterns in AlgoLift
TSI for trailing exits in trend strategies. Take entries from any other system; exit when TSI Histogram crosses against your position direction. Because TSI rarely flips noisily, this trail-exit holds winners through normal pullbacks but cuts losers when momentum genuinely turns. Wire Set Exit Condition.
TSI divergence for counter-trend setups. Apply BarsAgo Modifier on the TSI Line — compare current TSI against TSI 10 bars ago, alongside price 10 bars ago. When they diverge directionally (price higher, TSI lower or vice versa), the trend is losing momentum. Use as a high-conviction counter-trend entry, especially in range regimes.
TSI cross-instrument confirmation. TSI's normalized scale (−100 to +100) means it's comparable across instruments. Use TSI on a correlated instrument as a filter — for example, only allow long ES entries when TSI on YM is also positive. The correlation check eliminates trades where the broader index complex disagrees. See strategy correlation.
Common mistakes
- Using TSI on very-short timeframes. The smoothing creates significant lag. TSI on 1m bars is essentially measuring lookbacks of 25+13+7 = ~45 bars (45 minutes) — usually too slow for 1m strategy logic.
- Treating TSI like RSI. TSI's range is −100 to +100, not 0 to 100. Setting "overbought at 70" thresholds doesn't translate. The actionable extremes for TSI are typically ±25 or ±35.
- Optimizing the three periods independently. Three interacting parameters — fitting all three is a classic overfitting trap.