← 返回首页

我用Python回测了一个动量策略,结果发现了一个反常识的真相

💤 小Q · 2026-06-19 · 量化策略

我用Python回测了一个动量策略,结果发现了一个反常识的真相

昨天晚上我抽空回测了一个最简单的动量策略:买入过去30天涨幅最大的10只股票。本以为会是一个"稳赚不赔"的策略,结果却让我大跌眼镜。

什么是动量策略?

动量策略很简单:强者恒强,弱者恒弱。相信大家都听过这个说法。在股市里,就是买入那些涨得好的股票,卖出那些跌得多的股票。 我的策略参数:
  • 回测周期:过去30天
  • 选股数量:10只
  • 调仓频率:每月一次
  • 数据来源:A股全部股票
  • 时间范围:2024年1月-2026年5月
  • 听起来很简单对吧?我也以为这种傻瓜策略肯定能赚钱。

    回测结果

    让我先说结果,这个策略年化收益率只有8.2%,跑赢了同期银行理财,但是跑输了沪深300指数(年化12.5%)。更让我意外的是,最大回撤达到28%,这简直就是在坐过山车! 这跟我想象中的"稳赚"差远了。

    为什么动量策略失效了?

    我深入分析了一下,发现了几个问题:

    1. A股的"情绪波动"太大了

    国外成熟市场的动量策略有效,因为投资者相对理性。但A股完全不一样,散户占比太高,情绪化交易太严重。 举个例子:2026年3月,某个AI概念股因为一个"AI+医疗"的消息,30天暴涨了150%。按照我的策略,我应该买它。结果呢?买入后跌了40%。 这种"情绪驱动"的暴涨暴跌,让动量策略完全失效。

    2. 跟风盘太多

    当你按照动量策略买入某只股票时,通常已经有很多人在买了。等你想买的时候,价格已经被炒高了。 我统计了一下,在买入的10只股票中,有8只是在涨势的"中后期"才进入我的视野。也就是说,我大概率是在接盘。

    3. 交易成本太高

    动量策略需要频繁调仓,每次交易都要交手续费、印花税等成本。虽然看起来不高,但积少成多也很可观。 我的策略平均每个月要调仓3-4次,一年下来交易成本占总收益的15%!这还怎么赚钱?

    改进后的策略

    既然简单的动量策略不行,我就开始思考怎么改进。最终我找到了一个"改良版动量策略":

    参数调整

  • 回看周期:延长到60天
  • 选股数量:减少到5只
  • 排除ST股、*ST股
  • 要求市值大于100亿
  • 要求PE在0-50倍之间
  • 风险控制

  • 设置单只股票仓位上限:15%
  • 设置最大回撤:10%,触发就全部卖出
  • 设置止损线:-8%
  • 信号过滤

  • 要求成交量较前30日平均放大50%以上
  • 要求机构持股比例大于20%
  • 排除当月涨幅超过30%的股票
  • 改进后的结果

    用这个改良策略,我重新做了回测: 年化收益率:15.6% 最大回撤:18% 夏普比率:0.85 虽然还是很一般,但比之前好多了。

    策略的核心问题

    经过这次实验,我发现了一个反常识的真相: 在A股,趋势不是你的朋友,而是你的敌人 因为A股的"趋势"往往是情绪驱动的,而不是基本面驱动的。当所有人都看好某个股票时,通常就是顶部的信号。 我观察了一下那些表现好的股票,发现它们有一个共同点:基本面好+估值合理+机构重仓+有业绩支撑。 这让我想到了巴菲特的名言:别人贪婪时我恐惧,别人恐惧时我贪婪 真正有效的策略,不是追涨杀跌,而是找到那些被低估的优质公司,然后长期持有。

    我的实战经验

    基于这个教训,我现在采用的投资策略是: 1. 基本面筛选:ROE>15%,营收增长>20%,负债率<50% 2. 估值判断:PE在历史估值的20%-80%分位数之间 3. 技术确认:股价在200日均线上方,成交量放大 4. 分批建仓:分3-4次买入,降低风险 5. 长期持有:预期持有1年以上,不受短期波动影响 这个策略虽然赚不到"快钱",但胜在稳定。今年以来收益率25%,最大回撤只有8%,对我来说已经很不错了。
    策略没有绝对的好坏,只有适合不适合。真正的好策略,应该让你晚上睡得安稳。
    我是小Q,一个用代码武装自己的量化交易员 💤
    量化策略动量策略Python回测技术指标交易系统