第一期:动量轮动跑得赢 QQQ 吗?
本文仅用于教育与研究,不构成投资建议。文中收益、回撤、Sharpe 等数据均来自特定样本期回测,不代表未来可复现结果。
读前须知几个常用指标:
CAGR(年化复合收益率):假设每年以相同比例复利增长,折算到持有期末恰好得到相同总收益时的那个年增长率,方便不同时间长度的策略横向比较。与简单的算术平均年化不同,CAGR 会因为波动而低于算术均值——波动越大,两者差距越明显。Sharpe 比率:超出无风险利率的收益除以组合波动率,衡量每单位风险对应的超额收益,数值越高越好。本文回测里 QQQ 的 Sharpe 为 0.73,可作为这期实验的参考基线。最大回撤:历史上从账户最高点到最低点的最大跌幅,衡量的是策略最坏情况下你的账户会缩水多少。
这期实验用三个标签标注每条路线的结论:
- 样本内达标:在 2018/01–2026/04 这个样本窗口内,CAGR、Sharpe、最大回撤三项指标同时优于 QQQ 基线,标签含义仅限于此,不代表策略已被验证为可采用方案
- rejected:指标落后,或结构分析发现这条方向本身无效,不值得继续
- inconclusive:部分指标有改善但未全部超越 QQQ,改善幅度不足以形成明确结论;或作为后续变体的对照基准版本,尚未形成独立的最终判断
下文的长窗口回看和收益归因,不是与这三项并列的主评判标准,而是对已得结论做进一步压力测试:先看样本内是否达标,再看它为什么赢、换个历史阶段后是否还站得住。
QQQ(纳斯达克100 ETF,持有以科技股为主的美国大型成长公司)年化 18%,Sharpe 0.73。这是美股里最不好对付的那种简单选项。这期实验从这里出发,用 9 条动量轮动变体来回答一个具体的问题:有没有一条路线真正值得比它更复杂?
动量轮动的核心逻辑是:在多个备选资产里,持续持有近期涨幅最强的那一个,每隔一段时间重新排名并切换。这期实验在这个基础逻辑上试验了不同的资产池、调仓频率和防御机制,覆盖两条研究路线。先看汇总结果,后文逐条拆开讲:
| # | 策略 | 样本窗口 | CAGR | Sharpe | 最大回撤 | 结论 |
|---|---|---|---|---|---|---|
| B1 | QQQ 持有基线 | 2018/01–2026/04 | 18.44% | 0.73 | −35.09% | 基线 |
| B2 | QQQ 持有基线(长窗口) | 2010/01–2026/04 | 18.18% | 0.90 | −35.12% | 基线 |
| M1 | 多资产动量·日频 | 2018/01–2026/04 | 16.17% | 0.85 | −28.45% | inconclusive |
| M2 | 多资产动量·月频 | 2018/01–2026/04 | 10.80% | 0.60 | −36.34% | rejected |
| M3 | 多资产动量·周频 | 2018/01–2026/04 | 12.15% | 0.60 | −37.25% | inconclusive |
| M4 | 多资产动量·周频+相对防御触发 | 2018/01–2026/04 | 12.15% | 0.60 | −37.25% | rejected |
| M5 | 多资产动量·周频+绝对防御触发 | 2018/01–2026/04 | 13.28% | 0.68 | −31.84% | inconclusive |
| S1 | 行业双动量·月频 | 2018/01–2026/04 | 16.28% | 0.75 | −30.08% | inconclusive |
| S2 | 行业双动量·周频 | 2018/01–2026/04 | 21.48% | 1.18 | −30.46% | 样本内达标 |
| S3 | 行业双动量·周频(无 XLK) | 2018/01–2026/04 | 15.11% | 0.79 | −31.60% | rejected |
| S4 | 行业双动量·周频(长窗口) | 2010/01–2026/04 | 12.31% | 0.70 | −30.46% | rejected |
M3 和 M4 的数字完全相同——这本身是这次实验的一个关键发现,下文会解释为什么加了一条规则却什么都没改变。
下图展示短窗口主要实验的 CAGR(不含基线、长窗口结果及与 M3 数字相同的 M4),蓝色虚线是 QQQ 基线。只有一条策略越过了这条线:
回测设定说明:价格数据使用复权价(含分红和拆股调整)。每笔交易按成交金额的 0.05% 计入佣金,滑点不建模。信号在调仓日收盘后计算,次一交易日开盘执行。周频策略在每周首个交易日(通常为周一)收盘后计算信号;月频策略在每月首个交易日收盘后计算信号。Sharpe 比率使用 backtrader 引擎默认计算,无风险利率取 1% 年化。252 日动量窗口在 2018–2026 这段数据上观察选定,未经独立的样本外优化。
先立基线:QQQ 不是对手,是裁判
很多动量研究喜欢用 SPY(标普500 ETF,代表美股整体大盘)当对照,因为宽基更温和,更容易让复杂策略看起来"值"。这期实验选择用 QQQ 当基线,正是为了避免这个问题。
2018-01 到 2026-04,QQQ 持有的结果是:
| 策略 | CAGR | Sharpe | 最大回撤 | 波动率 |
|---|---|---|---|---|
QQQ 持有 | 18.44% | 0.73 | −35.09% | 23.86% |
把窗口拉长到 2010-01,数字基本稳住:CAGR 18.18%,Sharpe 0.90,最大回撤 −35.12%。
它不是懒惰的选择,它是一个足够强的真实机会成本。以后再看到任何一条复杂的美股成长策略,最先该问的不是"它聪不聪明",而是:它相对于 QQQ,到底多给了什么?
第一条路:跨资产分散
想法
只在股票里做轮动,和大盘的相关性还是太高。如果引入真正低相关的资产——黄金、商品、短债——能否在不明显牺牲收益的情况下,换来更稳定的持仓体验?
资产池:SPY(标普500 ETF)、QQQ(纳斯达克100 ETF)、GLD(黄金 ETF)、PDBC(多元商品 ETF)、BIL(短期国债 ETF,用作防御仓)。初版逻辑是把这五类资产全部放进同一个轮动池,用过去 126 个交易日(约半个交易年,为跨资产路线的初始设定;与行业路线的 252 日一样,未经独立样本外优化)的相对涨幅排名,每次持有排名最高的那一个。
日频版(M1):换手太高
日频版的结果是 CAGR 16.17%,Sharpe 0.85,最大回撤 −28.45%。Sharpe 和回撤优于 QQQ,但 CAGR 落后约 2.3 个百分点。持仓分布也不均衡:QQQ 持有了 757 天,GLD 持有了 690 天,BIL 只有 93 天。更大的问题是每年约 23 笔交易,换手偏高,不符合"低频易执行"的初衷。
月频版(M2):降低换手,代价过大
于是把调仓频率改为每月一次。交易次数从约 189 笔降到 58 笔,看起来更接近"低频"的初衷。但结果全面恶化:CAGR 跌到 10.80%,最大回撤反而扩大到 −36.34%。光凭指标来看,这条方向就已经没有继续的必要了——收益更低,风险还更大。更尴尬的是,做归因(也就是把总收益拆开,看主要是哪些资产、哪些持仓阶段贡献出来的)之后发现收益更集中了:黄金(GLD)一项贡献了绝大部分,策略变得像一个迟钝的黄金偏置版本,而不是真正的多资产分散。降低频率本身不是免费的,这条方向被否定(M2,rejected)。
发现了一个架构陷阱(M3/M4)
周频版在日频和月频之间取了折中,换手降了下来,收益质量有所恢复。随后在周频版上加了一条相对防御触发规则:只有当风险资产的动量高于 BIL 时才持仓,否则退到防御仓。听起来是合理改进——如果连短债都跑不赢,就别冒险。
结果:加了这条规则之前和之后,回测数字完全一样。CAGR、Sharpe、最大回撤、交易次数——一模一样。这就是为什么表格里 M3 和 M4 数字相同,但结论不同:M3 是尚未确认方向的中间态,M4 是"加了规则但什么都没变"这件事被确认后,这条防御逻辑本身被否定的版本。
这是一个架构问题。当 BIL 已经作为候选资产参与同一个轮动池的相对排名时,"必须跑赢 BIL 才能持仓"在逻辑上等价于相对排名本身。策略退到 BIL 是因为它暂时排名靠前,而不是因为"当前市场不适合持有风险资产"——这两件事看起来相似,但含义完全不同。只要防御资产和风险资产混在同一个排名池里,就无法清晰表达"主动规避风险"这件事。
把两层逻辑分开(M5)
改进方案是把策略拆成两个独立层:先在风险资产里选涨幅最强者,再用绝对动量(只看这个资产自己过去一段时间的涨幅是否为正,不与其他资产比较)决定是否值得持有——不满足时才退到 BIL。这种"绝对防御触发"和前面的"相对防御触发"结构上是两件不同的事。
这个改动带来了真实的改善,并且完全没有增加换手:
| 调整前(M3) | 调整后(M5) | |
|---|---|---|
| CAGR | 12.15% | 13.28% |
| Sharpe | 0.60 | 0.68 |
| 最大回撤 | −37.25% | −31.84% |
| 交易次数 | 不变 | 不变 |
改善不是靠更高换手"撞"出来的,是靠结构更清晰。这是这条路线真正的研究价值。
但放回机会成本视角,问题依然清晰:和 QQQ 相比,CAGR 差了 5 个百分点,最大回撤只改善了 3 个百分点。结构改善是真实的,但以这个代价换来的收益缺口,还没有小到可以忽略——这不足以形成"值得替代纳指长期持有"的投资结论。这条路线留下的是一个结构认知,而不是一个成品方案。
第二条路:行业轮动
换一个角度
与其引入黄金和商品来降低相关性,不如在美股内部做行业相对强弱切换。
资产池是标准的 S&P 500 行业 ETF:XLK(科技)、XLY(可选消费)、XLI(工业)、XLF(金融)、XLV(医疗健康)、XLP(必选消费)、XLU(公用事业)、XLE(能源)、XLB(原材料),加上防御仓 BIL。基本逻辑:用过去 252 个交易日(约 1 个交易年;也是本文在这段样本上观察后采用、未做独立样本外优化)的涨幅选最强行业(这是"相对动量",行业之间互相比较),但如果这个行业的绝对涨幅自己转负了,就退到 BIL(这是"绝对动量",只看自身涨跌)——两层逻辑叠在一起,所以叫"双动量"。先测月频,再测周频。
月频版结果:CAGR 16.28%,Sharpe 0.75,最大回撤 −30.08%。Sharpe 和回撤已经优于 QQQ,但 CAGR 还是落后。主要问题是重新入场的节奏太慢——2023 到 2025 的行情修复阶段,月频节奏跟不上行业切换速度,错过了不少涨幅。
于是只改一个变量:月频 → 周频。
周频版(S2):数据上第一次同时打赢了 QQQ
| 策略 | CAGR | Sharpe | 最大回撤 | 波动率 |
|---|---|---|---|---|
QQQ 持有 | 18.44% | 0.73 | −35.09% | 23.86% |
| 行业双动量(月频,S1) | 16.28% | 0.75 | −30.08% | 23.32% |
| 行业双动量(周频,S2) | 21.48% | 1.18 | −30.46% | 22.64% |
CAGR、Sharpe、最大回撤三项指标全部优于 QQQ。在 2018–2026 这个样本窗口内,S2 是这次实验里唯一一条同时打赢三项的路线。
但拿到这个结果之后,没有停下来,而是问了一个更重要的问题。
它是靠什么赢的?
回测把每笔持仓的归因明细都保留了。结果是:
XLK(科技):持仓天数占 41%,持有期间累计涨幅 194%XLE(能源):持仓天数占 25%,持有期间累计涨幅 123%BIL(短债防御仓):实际只持有了 5 个交易日
这里的"持有期间累计涨幅"是把策略持有该资产的所有区间首尾拼接后计算的复合收益率,不是分段涨幅简单相加,也不是组合权重。194% 意味着在 2018–2026 年间,每次策略切换持有 XLK 的阶段加总起来,这些区间内 XLK 的复合涨幅接近翻两倍。
5 个交易日。在 8 年的回测里,这条"双动量防御策略"几乎从来没有真正用过防御仓。
这还引出了一个具体问题:2022 年加息急跌,科技板块当年跌幅超过 30%,策略那一年明显跑赢了 QQQ。但它不是靠躲进 BIL 规避的,而是从 XLK 切换到了 XLE(能源),2022 年能源板块逆势大涨。
这说明这条策略的真实风格是进攻型轮动,而不是防御型轮动。BIL 是紧急出口,不是策略核心。
如果去掉 XLK?
一个自然的追问随之而来:这条策略赢的方式,是真正的广谱行业趋势轮动,还是本质上仍然在吃科技股的高弹性,只是多了一个"科技不行了就出去"的离场机制?
把 XLK 从资产池里去掉,保持其他所有设置不变,重新跑一遍:
| 策略 | CAGR | Sharpe | 最大回撤 | 交易次数 |
|---|---|---|---|---|
行业双动量(周频,含 XLK) | 21.48% | 1.18 | −30.46% | 97 |
行业双动量(周频,不含 XLK) | 15.11% | 0.79 | −31.60% | 121 |
CAGR 从 21.48% 跌回 15.11%,交易次数从 97 上升到 121——没了科技板块,策略在剩余行业之间更频繁地切换,换来了更差的复利。
结论很清晰:这条策略的超额收益高度依赖科技板块参与。它不是一条均匀分散的行业趋势策略,更准确的描述是:允许科技板块以最强行业的身份主导持仓,并在科技失势时切换出去。这个机制是真实有效的,但它的超额回报来源更接近"带战术离场机制的纳指暴露",而不是一个与科技板块涨跌无关的独立超额来源。
长窗口:近年的赢家在 2010-2018 跑不过 QQQ
到这里,还有关键的一步没有做:把时间拉长,看这条逻辑是否稳健。
需要说明的是,252 日这个动量窗口参数是在 2018–2026 的数据上观察选定的。把同一套参数延伸到 2010–2026 是一个合理的健壮性检验,但这段更长的历史并不是完全独立的样本外测试,结果需要带着这个前提来读。
不改任何参数,只把回测起点从 2018-01 改到 2010-01:
| 策略 | 样本窗口 | CAGR | Sharpe | 最大回撤 |
|---|---|---|---|---|
QQQ 持有 | 2010/01–2026/04 | 18.18% | 0.90 | −35.12% |
| 行业双动量(周频) | 2010/01–2026/04 | 12.31% | 0.70 | −30.46% |
短窗口里三项全赢,长窗口里 CAGR 差了将近 6 个百分点,Sharpe 也输了,只剩下轻微的回撤优势。
为什么?2010 到 2018 年,美股行业格局和之后有明显差异。能源和金融板块在前期占据了相当长时间的相对强势位置,科技板块直到 2016-2017 年前后才开始系统性领跑。在那段时间里,用 252 日动量做行业轮动,很可能在持有能源或金融的过程中,错过了科技真正起飞的早期阶段,积累了复利损耗。
这说明这条策略有一个适用边界:在"某个行业长期保持相对强势"的市场结构里更有效;在行业分化更碎片化的历史阶段,表现会明显下降。
这期实验真正留下来的
这期研究共跑了 9 条实验路线(另外 2 条是 QQQ 基线),最后在研究记录里留下了三类结论:
样本内达标(1 条):S2,行业双动量周频版,在 2018/01–2026/04 样本窗口里同时打赢了 QQQ 的 CAGR、Sharpe、最大回撤三项指标。这个"样本内达标"标签的含义只是"在此窗口三项全部满足条件",不等于"这条策略已被证明可以采用"——它有明确前提:主要依赖科技板块在这个窗口内的主导地位,且在更长窗口(2010/01–2026/04)里优势消失。它是一条在特定市场结构下有效的路线,而不是一条跨市场环境普遍成立的策略。
rejected(4 条):M2(月频多资产,降低换手的代价是 CAGR 大幅退化、归因更集中)、M4(周频+相对防御触发,与 M3 结果完全相同,证明这种防御逻辑在结构上是多余的)、S3(去掉科技板块后超额收益消失)、S4(长窗口验证失效)。
inconclusive(4 条):M1(日频多资产,Sharpe 和回撤有改善,但 CAGR 落后且换手偏高)、M3(周频多资产,行为折中,但防御角色仍不清晰)、M5(周频+绝对防御触发,结构方向成立,但 CAGR 仍落后于 QQQ)、S1(行业月频,Sharpe 和回撤优于 QQQ,但 CAGR 落后)。
rejected 的案例告诉我们哪些方向不值得继续投入。inconclusive 的案例说明结构改进是真实的,但边界在哪里。样本内达标的案例也附带了必须说清楚的局限——它的超额回报来源比标题看起来更集中。这三类结果同样重要。
一句话总结这期实验的答案:在 2018/01–2026/04 这个窗口,行业双动量周频版(S2)能够同时跑赢 QQQ 的收益、Sharpe 和回撤——但它依赖科技板块主导,换一个市场结构就不成立了。
这期之后,下一步该问什么
这期实验的结论指向了一个有点让人不舒服的地方:用主动动量轮动打赢 QQQ,比想象中难得多——唯一达标的路线还有明显的结构性依赖。
这会引出一个自然的追问:既然 QQQ 这么难对付,直接定投 QQQ 岂不就是答案了?
这个想法听起来合理,但值得认真检验一遍。定投(DCA,Dollar-Cost Averaging)的核心逻辑是用时间摊平成本、消除择时风险——在教科书里几乎是散户投资的标准答案。但有几个问题这份教科书没有认真回答:不同入场时机对最终结果的影响到底有多大?连续大幅回撤期间的行为成本是否被算进去了?定投 QQQ 和定投更分散的宽基指数,长期实际差距是多少?
下一期想从数据出发,认真核查这些问题,而不是把定投当成理所当然的最优答案。
如果您想继续围观后续实验:
重要提醒:本文所有内容仅为学习研究用途,不构成投资建议。用户应独立做出投资决策并承担相应风险。