Direct answer
TSI (True Strength Index) is calculated by starting with a momentum series, applying two levels of exponential smoothing to both the momentum and its absolute value, and then forming a ratio. Because the result depends on the chosen smoothing periods and on the exact price input series, you can only verify a TSI value by using the same formula, parameters, and data.
Mechanism: definition, inputs, and the core formula
TSI converts price movement into an index that is scaled relative to how large the recent momentum has been. The calculation typically uses these building blocks:
-
Choose a price series Pick the input series that the indicator uses (commonly a close price series). Use one consistent frequency (for example, daily bars or hourly bars). The indicator value you compute will differ if you change the underlying data frequency or price field.
-
Compute momentum A common momentum definition for TSI starts from the one-period price change:
- Let (P_t) be the chosen price at time (t).
- Define momentum (m_t = P_t - P_{t-1}).
- Double exponential smoothing TSI applies exponential moving averages (EMAs) twice:
- First, smooth the momentum series with a fast EMA length (N_1).
- Then, smooth the result again with a slow EMA length (N_2). The same two-step smoothing is done for the absolute momentum (|m_t|), because TSI scales the signed momentum by the magnitude of recent momentum.
A standard way to express the components is:
- (s_t = EMA_{N_1}(m_t))
- (s’t = EMA{N_2}(s_t))
- (a_t = EMA_{N_1}(|m_t|))
- (a’t = EMA{N_2}(a_t))
- Form the index as a scaled ratio Finally, TSI is typically defined as a percentage of the double-smoothed momentum divided by the double-smoothed absolute momentum:
- (TSI_t = 100 \times \frac{s’_t}{a’_t})
Meaning of the ratio
- The numerator tracks direction (because (m_t) can be positive or negative).
- The denominator scales the value by recent momentum magnitude (because it uses (|m_t|), which is non-negative).
- Multiplying by 100 is a scaling choice; some implementations may output values near that scale, others may not.
Parameters you must specify
To compute TSI, you need at least:
- (N_1): the fast EMA period for both momentum and absolute momentum
- (N_2): the slow EMA period for the second smoothing
Evidence or example: how to independently reproduce one TSI value
To verify the calculation yourself, pick a small time window and compute step-by-step using the same inputs and parameters you plan to use.
A concrete verification workflow:
- Fix your data: choose (P_t) values for a defined date range at one frequency.
- Choose (N_1) and (N_2).
- Compute momentum (m_t = P_t - P_{t-1}).
- Compute (|m_t|).
- Compute (EMA_{N_1}(m_t)) and (EMA_{N_1}(|m_t|)).
- Compute (EMA_{N_2}) of each of those intermediate series.
- Compute (TSI_t = 100 \times s’_t / a’_t) at the specific time index you want to check.
Important assumptions for reproducibility
Different charting software may vary in implementation details, so include these assumptions when you reproduce results:
- EMA initialization: EMAs require a starting value; implementations may start with the first data point, with an SMA seed, or with other conventions.
- Handling early periods: before enough data points exist, some outputs may be undefined, delayed, or computed with less reliable initialization.
- Exact momentum definition: some definitions use price change directly; others use variations, but the double-smoothed momentum/absolute-momentum structure is the key idea.
Limitations and failure modes: what can go wrong
-
Division by a small denominator Because TSI uses a ratio with a denominator based on (EMA) of (|m_t|), the denominator can become very small when momentum is near zero over a period. That can make the index unstable or produce values that react strongly to tiny changes.
-
Parameter sensitivity Changing (N_1) and (N_2) changes the effective responsiveness. A slower (larger) (N_2) typically makes the indicator smooth out more and respond more slowly. This affects any comparison you make between TSI values computed under different settings.
-
Data-field and frequency mismatch TSI computed from one price field (for example close versus another available field) or one time frequency will not match TSI computed from a different field or frequency.
-
EMA initialization differences Even if the formula looks identical, different ways of initializing EMAs can cause different early-series values. If you compare your computed TSI to a platform value, align initialization behavior or compare only after enough periods have passed.
-
Non-predictive nature of transformations TSI is a transformed representation of momentum. A computed index value does not guarantee any future relationship with returns; historical relationships can change with market regime, costs, execution, and data conditions.
Verification: what to check next
If your goal is to accurately explain and independently verify TSI calculation, confirm these items in your own setup:
- Which price series (P_t) is used (and at what frequency).
- The exact momentum definition used to form (m_t).
- The EMA lengths (N_1) and (N_2).
- The EMA initialization convention (how early values are seeded).
- How the indicator handles early periods or cases where the denominator is very small.
If you share the specific parameter values and the data source you are using (for example the price field and timeframe), you can replicate the steps precisely and compare your computed value against the reference output.