2026-03-06高频因子之价格动量

我继续用和 TIR、DBI 完全一致的直白风格,把价格动量(Price Momentum) 讲透,精准对应你异步策略里的计算逻辑,包括公式、代码、实战含义。
一、价格动量核心公式(你代码里的真实计算)
价格动量 = 计算窗口内最后一笔成交价格 − 窗口内第一笔成交价格
也就是:
plaintext
动量 = df_trade["price"].iloc[-1] - df_trade["price"].iloc[0]
二、每一项是什么?(高频专属)
计算窗口:你策略里是 1 秒(CALC_WINDOW=1),也就是 “最近 1 秒内的成交价格变化”;
df_trade["price"].iloc[-1]:窗口内最后一笔成交的价格(最新价);
df_trade["price"].iloc[0]:窗口内第一笔成交的价格(窗口起始价);
结果含义:正数 = 价格上涨(多头动量),负数 = 价格下跌(空头动量),0 = 价格没动。
补充:你策略里的动量是「绝对动量」(直接算价格差),而非「相对动量」(涨跌幅),因为高频 1 秒内涨跌幅极小,绝对差更直观。
三、一步一步计算(你异步代码里的逻辑)
python
运行

1. 判断窗口内有成交数据(至少2笔才计算动量)

if len(df_trade) > 1:
# 2. 最后一笔价格 - 第一笔价格 = 价格动量
momentum = df_trade["price"].iloc[-1] - df_trade["price"].iloc[0]
else:
# 无足够数据时动量为0
momentum = 0.0

最终存入因子字典

factors["momentum"] = momentum
四、价格动量的数值含义(实战核心)
和 TIR、DBI 不同,动量是绝对数值(不是 0~1 的比例),数值大小直接反映 1 秒内的价格波动幅度:
表格
动量值(BTCUSDT) 含义 实战解读

50 1 秒内涨超 50 USDT 极强多头动量,趋势启动
10 ~ 50 1 秒内涨 10~50 USDT 中等多头动量,趋势延续
0 ~ 10 1 秒内微涨 / 几乎没动 动量微弱,无明确趋势
-10 ~ 0 1 秒内微跌 / 几乎没动 动量微弱,无明确趋势
-50 ~ -10 1 秒内跌 10~50 USDT 中等空头动量,趋势延续
< -50 1 秒内跌超 50 USDT 极强空头动量,趋势启动
你策略里的阈值(核心条件)
动量 > 0 → 多单信号条件(只要涨就符合,配合 TIR/DBI 过滤假涨);
动量 < 0 → 空单信号条件(只要跌就符合,配合 TIR/DBI 过滤假跌)。
关键:价格动量是「趋势的直接体现」,但单独用容易被 “假突破” 骗,必须和 TIR(主动资金)、DBI(盘口支撑)配合 —— 比如动量涨了但 TIR 为负,就是 “被动拉涨”,大概率是假突破。
五、举个例子(立刻懂)
假设 1 秒窗口内的成交价格序列:
50000 → 50010 → 50025 → 50030
计算:
最后一笔价格:50030
第一笔价格:50000
价格动量 = 50030 - 50000 = 30
→ 中等多头动量,配合 TIR=0.2、DBI=0.15,就是完美多单信号。
再比如:
窗口内价格:50000 → 49980 → 49970 → 49960
动量 = 49960 - 50000 = -40
→ 中等空头动量,配合 TIR=-0.2、DBI=-0.15,就是完美空单信号。
六、你策略里的 “标准化动量” 补充(进阶)
你代码里还计算了「标准化动量」,是对基础动量的优化:
plaintext
标准化动量 = 价格动量 / 窗口内价格标准差
作用:把动量 “归一化”,消除不同波动环境的影响 —— 比如牛市 1 秒涨 50 是正常,熊市 1 秒涨 20 就是强动量,标准化后能统一判断。
七、一句话记住
价格动量是 “计算窗口内的价格净变化”,直接反映短时间内价格的涨跌力度,是趋势的最直观指标。

最后编辑于
©著作权归作者所有,转载或内容合作请联系作者
【社区内容提示】社区部分内容疑似由AI辅助生成,浏览时请结合常识与多方信息审慎甄别。
平台声明:文章内容(如有图片或视频亦包括在内)由作者上传并发布,文章内容仅代表作者本人观点,简书系信息发布平台,仅提供信息存储服务。

相关阅读更多精彩内容

友情链接更多精彩内容