金融, 动量

真实强度TSI

True Strength Index

真实强度指数(True Strength Index):揭示趋势转折的动量信号 一、什么是 True Strength Index(TSI)? True Strength Index(简称 TSI),中文可称为 真实强度指数,是一种兼具短期波动识别与中长期趋势捕捉能力的动量类技术指标。由 William Blau 提出,TSI 的设计初衷是解决传统动量指标(如 RSI、MACD)在震荡市场中容易出现“假信号”的问题。 通过双…

真实强度指数(True Strength Index):揭示趋势转折的动量信号


一、什么是 True Strength Index(TSI)?

True Strength Index(简称 TSI),中文可称为 真实强度指数,是一种兼具短期波动识别与中长期趋势捕捉能力的动量类技术指标。由 William Blau 提出,TSI 的设计初衷是解决传统动量指标(如 RSI、MACD)在震荡市场中容易出现“假信号”的问题。

通过双重指数平滑处理,TSI 能更有效识别趋势转向,并结合**过热(overbought)超卖(oversold)**区间判断交易时机。


二、TSI 指标的计算原理

TSI 的核心思想是衡量价格变动速度(即动量)的强弱,并进行两次平滑处理以提高信噪比。其计算过程如下:

  1. 计算动量(Momentum) 价格变化 = 当前收盘价 - 前一日收盘价

  2. 计算绝对动量 用于衡量价格波动强度

  3. 分别对动量和绝对动量进行两次 EMA 平滑

    • 第一次 EMA 使用 fast 参数(默认 13)
    • 第二次 EMA 使用 slow 参数(默认 25)
  4. 构建 TSI 指标本体

    TSI = 100 × (双重平滑后的动量) ÷ (双重平滑后的绝对动量)
  5. 再对 TSI 主线进行一次 EMA 平滑生成信号线(Signal Line) 使用 signal 参数(默认 13)


三、pandas_ta 中的 tsi() 函数使用详解

在 Python 的 pandas_ta 技术分析库中,我们可以使用 tsi() 函数轻松调用 TSI 指标,并将其作为量化策略的重要组成部分。

函数调用方式示例:

import pandas_ta as ta
df[['TSI_13_25_13', 'TSIs_13_25_13']] = ta.tsi(df['Close'], fast=13, slow=25, signal=13)

参数含义:

参数名 类型 描述 默认值
close Series 收盘价序列 必填
fast int 动量第一次平滑期 13
slow int 动量第二次平滑期 25
signal int 信号线平滑期 13
scalar float 缩放因子(百分比系数) 100
mamode str 平滑模式,如 "ema"、"sma" "ema"
drift int 差值周期 1
offset int 偏移周期 0

四、pandas_ta 输出字段解释

调用 tsi() 函数后,返回一个 2 列的 DataFrame:

字段名 中文含义 说明
TSI_13_25_13 TSI 主线 表示价格动量的平滑比值
TSIs_13_25_13 信号线 对 TSI 主线再平滑后的值,用于判断交叉信号

五、如何解读 TSI 信号?

✅ 1. 趋势判断

  • TSI 为正值:上涨趋势占主导
  • TSI 为负值:下跌趋势主导市场
  • TSI 趋势上升:动量增强,可能上涨加速
  • TSI 趋势下降:动量衰减,可能转为下跌

✅ 2. 买卖信号(交叉判断)

  • 金叉:TSI 上穿信号线 → 视为买入信号
  • 死叉:TSI 下穿信号线 → 视为卖出信号

✅ 3. 超买与超卖区域(自定义区间)

  • 超过 +25 时 → 市场可能超买
  • 低于 -25 时 → 市场可能超卖

需要结合其他指标(如布林带、MACD)共同判断信号有效性。


六、TSI 实战案例演示(以比特币为例)

import yfinance as yf
import pandas_ta as ta
import matplotlib.pyplot as plt

# 下载数据
btc = yf.download("BTC-USD", start="2023-01-01", end="2023-12-31")

# 计算 TSI
tsi = ta.tsi(btc['Close'], fast=13, slow=25, signal=13)
btc = btc.join(tsi)

# 可视化
plt.figure(figsize=(14, 6))
plt.plot(btc.index, btc['TSI_13_25_13'], label='TSI 主线', color='blue')
plt.plot(btc.index, btc['TSIs_13_25_13'], label='TSI 信号线', color='orange')
plt.axhline(0, linestyle='--', color='gray', linewidth=1)
plt.title('比特币真实强度指数(TSI)')
plt.legend()
plt.grid(True)
plt.show()

通过图形,可以直观看到交叉点、趋势加速区域和震荡状态。


七、总结:TSI 是趋势交易与震荡识别的“双面刃”

真实强度指数(True Strength Index) 在实际应用中兼具:

  • ✦ 较强的趋势识别能力(尤其适用于中周期交易);
  • ✦ 有效的动量判断(利用平滑避免虚假突破);
  • ✦ 明确的交叉买卖信号;
  • ✦ 可灵活自定义阈值作为超买超卖指标。

无论是在股票、外汇还是加密资产交易中,TSI 都是构建稳健交易系统的利器之一,尤其适合与 RSI、MACD、DMI 等经典指标搭配使用。