MTM (Momentum Index) - 动量指标
1 公式
MTM = 当日收盘价 - N日前收盘价
MTMMA = 动量指标的M天移动平均值
2 数据准备
我们以科创50指数 000688 为例,指数开始日期为2019-12-31,数据格式如下:
3 计算过程
def calculate_mtm(df: pd.DataFrame, N=12, M=6):
"""
计算市场动量指标 (MTM) 及其移动平均线 (MAMTM)。
参数:
df (pd.DataFrame): 包含至少 'close' 列的 DataFrame,代表每日收盘价。
N (int): 用于计算 MTM 的时间窗口大小,默认为12。
M (int): 用于计算 MAMTM 的时间窗口大小,默认为6。
返回:
pd.DataFrame: 包含 MTM 和 MAMTM 值的 DataFrame。
"""
# 创建一个df的副本以避免修改原始数据
data = df.copy()
# 计算 MTM,即当前收盘价减去 N 个周期前的收盘价
mtm = data['close'] - data['close'].shift(N)
# 计算 MAMTM,即 MTM 的 M 周期移动平均线
mamtm = mtm.rolling(M).mean()
# 将计算出的 MTM 和 MAMTM 添加到 DataFrame
data['mtm'] = mtm
data['mamtm'] = mamtm
# 返回包含所有计算出指标的 DataFrame
return data
4 注意事项
参数N=12,M=6时,计算结果与东方财富软件中一致
雪球无此指标