⚠️ 免责声明:本章仅为教育与研究方法展示,不构成任何投资建议。 所有回测结果来自历史数据,不代表未来表现。投资有风险,决策需独立判断。
第九课:动量策略——趋势是你的朋友¶
本章代码:
code/lesson9_momentum.py和code/lesson9b_momentum_full.py运行方式:python lesson9b_momentum_full.py
9.0 策略概述¶
这是什么策略¶
PE 策略(第二课)是价值投资者的信仰:"便宜了就买,贵了就卖。"
动量策略是趋势追随者的信仰:"正在涨就买,正在跌就卖。管它便不便宜。"
这两种信仰在金融学术圈打了五十年。本课用 A 股 30 年数据做一次终极对决。
它回答什么问题¶
| 问题 | 方法 |
|---|---|
| 过去 5 天涨了,明天还会涨吗? | 纯动量:5 日收益 > 0 → 持有,< 0 → 空仓 |
| 动量在 A 股有效吗? | 16 指数全量回测 |
| 动量和 PE 策略,谁赢? | 四个指数同时对决 |
| 复杂动量(跳级)比简单动量(>0)更好吗? | 五种变体对比 |
9.1 核心代码:最简动量¶
最简动量只有一条规则——不需要 PE、不需要分位数、不需要标准差:
# 纯动量:过去 5 天涨了 → 明天持有;过去 5 天跌了 → 明天空仓
mom5 = [np.prod(1+daily[max(0,i-5):i])-1 for i in range(5, len(daily))]
signal = [1 if m > 0 else 0 for m in mom5] # 1 = 持有, 0 = 空仓
# 只在持有期间计算收益
returns_with_signal = daily[5:5+len(signal)] * signal
net_value = np.cumprod(1 + returns_with_signal)
这就是全部策略。6 行代码。没有参数可调。
9.2 动量 vs 买入持有:16 指数全景¶
跑 python code/lesson9_momentum.py,1990—2026 全数据、16 个指数同时对决:
| 指数 | 买入持有年化 | 动量年化 | 超额 |
|---|---|---|---|
| 上证指数 | 11.1% | 15.8% | +4.7% |
| 中证500 | 10.3% | 17.8% | +7.5% |
| 深证红利 | 9.9% | 12.5% | +2.6% |
| 沪深300 | 5.4% | 5.8% | +0.4% |
| 上证50 | 4.8% | 2.9% | -1.9% |
| …… | |||
| 16 指数合计 | 12/16 跑赢 |
图 9-1:动量超额收益 16 指数全景。 柱高 = 年化超额。12 个指数为正(绿),4 个为负(红)。注意:动量不是"永远有效"——在上证 50 上它反而跑输。它的价值在于:一条规则,没有参数,在大多数指数上长期有效。

那"强动量"和"弱反转"呢?¶
原始 notebook 还研究了五种变体——强动量(只买动量最猛的)、组合(强+弱信号)、弱反转(抄底)。结论是:纯动量——最简单的规则——综合表现最好;弱反转(抄底)在四个指数上接近垫底。
但本仓库只复现了"纯动量"这一行。为什么?因为这正是本书的训练目的:其余四种变体留给你自己实现——用第 11 课的"跃升等级"框架(code/lesson11_strong_weak.py),把等级切成几档,自己试试"只买最强档"和"越跌越买"哪个更烂。自己跑出来的结论,比书里写的可信一百倍。
9.3 动量和 PE 策略是互补的¶
| PE 策略(第二课) | 动量策略(本课) | |
|---|---|---|
| 适合什么指数 | PE 稳定的价值股 | 趋势性强的全市场指数 |
| 深证红利上 | PE 旧窗口 +44.5%(换个指数就失效) | 动量 +2.6% |
| 上证 50 上 | PE 年化超额 +4.5% | 动量 -1.9% |
| 死穴 | PE 单边上涨时分位数失效 | 横盘震荡时来回打脸 |
这不是"选一个策略"——是"选对指数性格"。 深证红利是价值股指数 → PE 策略天然适配。上证 50 是趋势型指数 → PE 适配,动量反而吃亏。策略没有优劣,只有适配。
9.4 这一课教了你什么¶
- 纯动量(5 日涨了就持有,跌了就空仓)是 11 课里最简单的策略——也是 12/16 个指数上跑赢买入持有的策略。
- 动量不是"永远有效"——上证 50 上它跑输 1.9%。没有策略是万能的。
- 原始 notebook 里的"弱反转(抄底)"在 A 股接近垫底——"跌多了会反弹"这个直觉需要数据检验。
- PE 策略和动量策略是互补的——选对指数性格比选对策略更重要。
- 最简单的策略赢了。——这本身就是对"复杂策略更好"这个信念的否定。
9.5 课堂问答¶
问:纯动量只有一条规则——"5 日涨了就持有"。这么简单的东西,为什么量化基金不用?
他们用了——然后发现拥挤了。当所有人都用同一条规则时,"5 日涨了就买"会立刻推高价格,你买到的已经不是"涨了之后的价格",而是"因为大家都在买所以已经涨过头的价格"。策略的 alpha 在被发现的那一刻就开始衰减。纯动量在 A 股还能用,是因为它还不够拥挤——或者说,比它更复杂的策略吸引了更多资金。
问:动量策略和 PE 策略能一起用吗?
能,而且是最好的用法。PE 分位数说"这个指数便宜"——决定买不买。动量说"这个指数正在涨"——决定什么时候买。PE 负责价值判断,动量负责时机判断。两者不冲突——它们是决策的两步:先判断值不值得买,再判断现在是不是买的时机。
动手练习(第 9 课)¶
- 入门:实现两种变体。基于
lesson11_strong_weak.py的等级框架,实现 "强动量"(只买动量最强的 20% 档)和"弱反转"(越跌越买)。 在 16 个指数上跑一遍——书里说弱反转垫底,是真的吗? - 进阶:改持有周期。把"5 日"改成"10 日"和"20 日",纯动量还跑赢吗? 你会亲眼看到:结论对参数选择有多敏感。
- 挑战:加入交易成本。假设每次换手 0.1% 手续费,纯动量还赢吗? 动量是高频换手策略,成本敏感度远超你的直觉—— 算完你就能回答"为什么散户抄作业总是亏钱"。
下节预告: PE 看价值,动量看趋势。有没有一个指标,能同时衡量"这个指数值不值得买"?夏普比——第十课。