Systemicalpha

True Strength Index

systemic:core-tsiIndicatorsfunction1 cr

Inputs

NameTypeDescription
Slow Windowinteger- **Description**; The period over which the long-term double exponential moving average (DEMA) is calculated.
Fast Windowinteger- **Description**; The period over which the short-term double exponential moving average (DEMA) is calculated.
Pricefloatarray- **Description**; The closing price of the asset for each trading period.

Outputs

NameTypeDescription
TSIfloatarray- The TSI is an oscillating indicator that ranges around a zero line, with values typically oscillating above and below zero.

The True Strength Index is a momentum oscillator that shows both the direction and strength of a trend. It applies double smoothing to price changes to filter noise while remaining responsive.

TSI=100×EMAs(EMAl(ΔPrice))EMAs(EMAl(∣ΔPrice∣))TSI = 100 \times \frac{EMA_{s}(EMA_{l}(\Delta Price))}{EMA_{s}(EMA_{l}(|\Delta Price|))}

Where:

  • ΔPrice\Delta Price = Current price - Previous price
  • EMAlEMA_l = Long EMA (typically 25)
  • EMAsEMA_s = Short EMA (typically 13)

How It Works

flowchart TD
    subgraph Input["Price Changes"]
        PC["ΔPrice = Close - Previous Close"]
        APC["|ΔPrice| = Absolute value"]
    end
    
    subgraph Smoothing["Double EMA Smoothing"]
        N1["Long EMA of ΔPrice"]
        N2["Short EMA of result"]
        D1["Long EMA of |ΔPrice|"]
        D2["Short EMA of result"]
    end
    
    subgraph Calculation["TSI Calculation"]
        DIV["Numerator ÷ Denominator"]
        MULT["× 100"]
    end
    
    PC --> N1 --> N2 --> DIV
    APC --> D1 --> D2 --> DIV
    DIV --> MULT

Interpreting TSI

TSI RangeInterpretation
+25 to +100Overbought territory
0 to +25Moderate bullish momentum
-25 to 0Moderate bearish momentum
-100 to -25Oversold territory
flowchart LR
    subgraph Zones["TSI Zones"]
        OB["+25 to +100<br/>Overbought"]
        MB["0 to +25<br/>Bullish"]
        MBR["-25 to 0<br/>Bearish"]
        OS["-100 to -25<br/>Oversold"]
    end
    
    OB --> MB --> MBR --> OS

Trading Strategies

1. Zero Line Crossover

EventSignal
TSI crosses above 0Bullish momentum emerging
TSI crosses below 0Bearish momentum emerging

2. Signal Line Crossover

The signal line (typically 7-period EMA of TSI) provides additional signals:

EventSignal
TSI crosses above signalShort-term bullish
TSI crosses below signalShort-term bearish

3. Divergence Analysis

PatternPriceTSIImplication
BullishLower lowsHigher lowsPotential reversal up
BearishHigher highsLower highsPotential reversal down

TSI vs RSI

AspectTSIRSI
SmoothingDouble EMASingle EMA
Range-100 to +1000 to 100
Zero line✓ Has center line✗ No true center
NoiseVery smoothModerate
ResponsivenessBalancedMore reactive

Common Parameters

ParameterDefaultDescription
Long EMA25Initial smoothing period
Short EMA13Secondary smoothing
Signal Line7EMA of TSI for crossovers

Advantages

  • Dual information — Shows both direction (±) and strength (magnitude)
  • Smooth output — Double smoothing reduces whipsaws
  • Clear center line — Zero provides natural trend boundary
  • Divergence friendly — Excellent for spotting divergences

Disadvantages

  • Lagging — Double smoothing introduces delay
  • Complex — More calculations than simple oscillators
  • Range variations — Unlike RSI, rarely hits extremes
  • Best in trends — Less effective in ranging markets

Missing Data

Gaps in the price series (closed-market weekends/holidays, missing prints) are None — never a sentinel, never a stale-carried TSI value:

ScenarioOutput
Closed-market gapNone at that slot; the double-EMA cascade runs over observed bars only, so close.diff() bridges Friday→Monday as an adjacent observed change (a real step, not a discarded weekend delta)
Warm-up (fewer than window_slow + window_fast observed bars seen)None — never the retired partial-window seed
All bars missingEvery slot None, no crash
Live tick on a gap slot[None] — correct and non-starving, not the retired stale-carry value

Further Reading


Indicator Assessment

The following chart positions TSI based on its complexity (ease of understanding and implementation) versus reliability (consistency of signals across market conditions). Points closer to the top indicate higher reliability; points to the left indicate lower complexity.

quadrantChart
    title TSI Indicator Assessment
    x-axis Low Complexity --> High Complexity
    y-axis Low Reliability --> High Reliability
    quadrant-1 Complex & Reliable
    quadrant-2 Simple & Reliable
    quadrant-3 Simple & Unreliable
    quadrant-4 Complex & Unreliable
    Stocks: [0.55, 0.70]
    Crypto: [0.55, 0.60]

Assessment Breakdown

DimensionStocksCryptoNotes
Popularity6/105/10Well-regarded among momentum traders; less mainstream than RSI or MACD
Reliability7/106/10Double smoothing provides cleaner signals; crypto volatility increases false signals
Complexity5.5/105.5/10Dual EMA concept is moderately complex; formula straightforward but multi-step
Versatility6/106/10Works across timeframes; best suited for trend-following strategies
Recent Interest5/105/10Steady adoption; growing interest as traders seek smoother alternatives to RSI
Rendering diagrams...
© 2026 WanoLabs. All rights reservedAlpha build v0.1.5