返回列表 发布新帖

动量研究-1斜率动量策略为什么涨得稳比涨得快更重要?

20 0

今天在浏览量化文章,发现动量策略基本都是一样的底层算法,其他复杂策略比如五福,七星等策略都是在这个算法基础加入其他条件演变而来,万变不离其宗,常见的动量大概就几种,斜率,涨跌幅,均线相对位置,本质就是比较某一个因子值的大小排序,在交易分析,我整理了几个常见的很慢详细介绍

f2e408a7378016e2e302d7120933dd71.png

这个是计算的公式,仔细看看原理

def calculate_momentum_score(self, df):
        """
        计算动量分数
        使用加权线性回归计算对数收益率的斜率,并结合R²加权
        """
        if len(df) < self.mom_daily:
            return 0
        df_sub = df.tail(self.mom_daily).copy()
        if len(df_sub) < 10:
            return 0
        y = np.log(df_sub['close'].values)
        n = len(y)
        weights = np.linspace(1, 2, n)
        x = np.arange(n)
        slope, intercept = np.polyfit(x, y, 1, w=weights)
        annualized_returns = math.pow(math.exp(slope), 250) - 1
        residuals = y - (slope * x + intercept)
        weighted_residuals = weights * residuals**2
        y_mean = np.mean(y)
        r_squared = 1 - (np.sum(weighted_residuals) / np.sum(weights * (y - y_mean)**2))
        score = annualized_returns * r_squared
        return score

c1e876f0d495bf04d9b958f2353772e0.png

加权,靠近最近的数据权重大

14d34fa32e515a62050c016339fde5ed.png

d8abb58ac1b4fc1933751ae61aa4858e.png

用 R² 乘以年化收益率,可以惩罚那些虽然斜率大但波动剧烈的"假趋势"

5518bdc0a8695287c8be24e662342ad6.png

82796b1031fdeab9a16e7c22f685bf9f.png

该函数把"过去 N 天对数价格"拟合成一条加权直线:斜率给出年化收益率(赚多少),R² 给出趋势可信度(有多稳),二者相乘得到兼顾收益与稳健性的动量分数。

5feb72db06eb25e37fdb5c92e6138263.png

下面就是利用这个因子进行回测看看结果,第一步选择我们需要回测的标的,一般是相关性低的标的,一般建立是全球大类,让组合策略的风格均衡

50086aa4234e203aa62fa903601a303f.png

第二步是否开启大盘选择交易,比如指数的现在价格大于N日均线开启交易,否则不交易,一般不开启

e57cb82bbaf35224fbacddbff3da83fe.png

第三步选择动量的模型,比如第一个斜率动量算法,设置动量的周期,交易的参数等,自定义

1fe2a97472d08b609c75aefe4da55777.png

开启动量区间的选择,比如动量大于N小于M买入,不符合就卖出,换其他符合的标的,全部标的不风格就清仓

89370d8318a43736c110fc70b871d082.png

设置开仓的条件一般不开启,

0978d2b6657baacc1bef62777e8f991c.png

持股做T止盈止损模块的设置

b904fce06132f8728f40fdb8c4f330d0.png

点击回测看看效果怎么样,全部的参数,模块都是自定义的,整理需要特别注意就是,标的的选择,etf有很多一样的标的,有的上市时间早,有的晚,一般选择上市时间长的标的回测,比如创业板etf就有很多个,选择上市时间长的标的回测

3a4d7b2c6270767150b7455a6f4c1a2b.png

这个波动还是很大的,收益和收益有关系,条件严格,收益一般会下降

ffa173c3719222c77c53f62a28c808f0.png

401c6721402509e13c2bccf2eb9a5518.png

回撤分析分析,最大回撤发送在今年的7月份,应该是和半导体有关系

573bf478ccf500fd620553f51573ef2e.png

加入题材策略的收益,波动会上来,稳健的话一般采用宽基就可以回撤交易记录

ece3e6ab1a752dba49296604e753a31a.png

收益统计分析

9f8fd59047f898421bc9e50784685744.png

综合来看,动量策略是有超额的,但需要注意动量策略的波动比较大,标的选择需要低相关性,不让容易追涨杀跌,

分数为正 → 处于上升趋势,数值越大,涨得越快越稳。分数为负 → 处于下降趋势,绝对值越大,跌得越快越稳。分数接近零 → 没有明确趋势,处于震荡或横盘。

  1. 横截面选股(最核心的用法)

所谓横截面,就是在同一个时间点,把全市场所有股票都用这个函数打分,然后排序。买分数最高的那一批 → 买"跑得最快、趋势最稳"的强势股。卖(或做空)分数最低的那一批 → 卖"跌得最狠"的弱势股。

这是最经典、最成熟的动量用法。它的逻辑是"强者恒强"——过去一段时间趋势最强的股票,未来一段时间往往继续强。R² 加权的好处在于,它会把那些虽然涨幅大、但走势剧烈震荡的"妖股"自动降分,从而避免追高被套。

  1. 动量轮动

轮动指的是在多个标的之间来回切换,永远持有当下动量最强的那几个。常见的轮动对象包括:行业轮动:在几十个行业指数里选最强的行业。大小盘轮动:在沪深300和中证500之间切换。股债轮动:在股票和债券之间切换。跨境/资产轮动:在 A 股、美股、黄金、商品之间切换。做法是每隔一段时间(比如每月)重新给所有候选标的打分,只留正分且分数最高的几个,等权持有。这个用法非常稳健,因为它天然会回避掉下跌的资产。

这个动量算法最核心的运用就是两件事:横截面上选强者(买分数最高的品种),时序上做择时(用分数大小调仓位、转负就离场)。围绕这两点,它能扩展到选股、轮动、多因子、趋势跟踪、风控等多个方向,配合多周期组合和止损,就能构成一套完整、可落地的趋势策略

不懂的问我就可以加我备注入群可以加入量化研究群

8edb3f3ff343e0a63081a3b701f2883d.jpg

加我备注开户,有专业的量化支持服务,快速响应

8821a232b2f15ed42627711ce376d38d.png

核心的计算代码

def calculate_momentum_score(self, df):
        """
        计算动量分数
        使用加权线性回归计算对数收益率的斜率,并结合R²加权
        """
        if len(df) < self.mom_daily:
            return 0
        df_sub = df.tail(self.mom_daily).copy()
        if len(df_sub) < 10:
            return 0
        y = np.log(df_sub['close'].values)
        n = len(y)
        weights = np.linspace(1, 2, n)
        x = np.arange(n)
        slope, intercept = np.polyfit(x, y, 1, w=weights)
        annualized_returns = math.pow(math.exp(slope), 250) - 1
        residuals = y - (slope * x + intercept)
        weighted_residuals = weights * residuals**2
        y_mean = np.mean(y)
        r_squared = 1 - (np.sum(weighted_residuals) / np.sum(weights * (y - y_mean)**2))
        score = annualized_returns * r_squared
        return score

回复

您需要登录后才可以回帖 登录 | 立即注册

客服专线

400-080-8112

用思考的速度交易,用真诚的态度合作,我们是认真的!
  • 关注公众号
  • 添加微信客服
Copyright © 2001-2026 迅投QMT社区 版权所有 All Rights Reserved. 京ICP备2025122616号-3
关灯 快速发帖
扫一扫添加微信客服
QQ客服返回顶部
快速回复 返回顶部 返回列表