动量模型与多因子复合实战教学实验室(Momentum & Composite Factor Lab)¶
所属模块:
@knowledge量化知识库实战教学模块(关联 M02 交易策略范式、M06 因子研究方法论、M07 主流因子与异象、M10 预测与信息分析、M12 组合构建与优化) 状态:verified(本地沙箱历史数据完整回测验证,零外部网络请求,零富途 API 依赖) 一键复现命令:uv run python -m knowledge.Labs.momentum_lab.run_lab
一、教学任务目标与实验沙箱设计¶
本教学实验旨在回答量化初学者从“读懂公式”走向“写出能赚钱且抗回撤的策略”最核心的工程问题:
- 主流的动量模型有哪些变种?各自的经济学逻辑与软肋是什么?
- 在真实的「回测 → 诊断问题 → 调整模型 → 再回测」闭环中,如何避免“一拍脑袋加规则反而亏更多”?
- 如何将单一价格动量与趋势平滑度、下行风险控制、量价资金流、短期反转保护结合,构建年化收益远超 15%、且回撤可控的多因子复合动量模型?
1.1 数据隔离与防污染设计(Sandbox Isolation)¶
为保证教学实验绝不触碰或污染项目的正式回测与模拟盘数据,data_sandbox.py 采用只读校验 + 本地沙箱拷贝机制:
- 数据来源:从项目本地冻结快照
data/processed/snapshots/futu-us-eq50-bil-20261006与yf-us-etf5-20260929中读取历史日线与公司行为(拆股、分红、分拆),在核对源文件SHA-256校验和一致后,将所需 Parquet 文件拷贝至knowledge/Labs/momentum_lab/sandbox_data/。 - 标的池(S&P 500 前 30 大市值成分股):基于
research/universe/s4_universe_v1.json中按总市值降序排列的标普 500 美股普通股,取前 30 大市值龙头: - 科技与半导体(12 只):
NVDA(英伟达)、AAPL(苹果)、GOOGL(谷歌)、MSFT(微软)、MU(美光)、AMD(超威)、INTC(英特尔)、CSCO(思科)、LRCX(泛林)、ORCL(甲骨文)、AMAT(应用材料)、KLAC(科磊) - 消费与互联网(6 只):
AMZN(亚马逊)、WMT(沃尔玛)、COST(好市多)、KO(可口可乐)、PG(宝洁)、HD(家得宝)、NFLX(奈飞) - 金融与支付(6 只):
BRK.B(伯克希尔)、JPM(摩根大通)、MA(万事达)、BAC(美国银行)、MS(摩根士丹利) - 医疗健康(3 只):
LLY(礼来)、JNJ(强生)、UNH(联合健康) - 工业与能源(3 只):
XOM(埃克森美孚)、CVX(雪佛龙)、CAT(卡特彼勒)、GE(通用电气航空) - 时间跨度:共同交易日历覆盖
2007-01-03至2026-09-28(共 4,965 个交易日)。其中2007-01至2008-06作为 12 个月动量与 200 日均线的暖机期(Warm-up),正式回测评估区间为2008-07-01至2026-09-28(完整跨越 18.23 年,含 2008 金融危机、2009 动量崩溃、2020 疫情熔断、2022 激进加息熊市与 2023–2026 AI 科技牛市)。
1.2 回测严谨性与公允成本设定¶
- 前向复权总收益指数(Point-in-Time Total Return):所有信号计算与收益统计均基于前向累乘复权序列(分红再投资、拆股扩股),避免除权拆股日产生虚假暴跌信号。
- 严格杜绝前视偏差(No Look-Ahead Bias):月末交易日 \(t\) 收盘后根据截至 \(t\) 的历史数据计算因子与目标权重,在下一交易日 \(t+1\) 执行调仓,\(t \to t+1\) 的隔夜与次日收益严格归属旧持仓。
- 公允交易成本(15 bps 单边摩擦):默认设定单边交易成本为 15 bps(0.15%,对应约 5 bps 佣金 + 10 bps 冲击滑点),双边换仓即扣除 \(2 \times 15 = 30\text{ bps}\),并在第 5 节提供
0 ~ 50 bps的全范围成本敏感度压力测试。
二、主流动量模型理论谱系¶
在进入回测循环前,我们先梳理学术界与机构实践中最核心的五类动量范式及其数学定义:
| 模型范式 | 代表文献 / 机构出处 | 数学定义与核心算子 | 优势 | 典型缺陷 |
|---|---|---|---|---|
1. 传统截面动量 (12-1 XSMOM) |
Jegadeesh & Titman (1993), JF; Carhart (1997) | \(\text{MOM}_{12\text{-}1, t} = \frac{\text{TR}_{t-21}}{\text{TR}_{t-252}} - 1\) | 避开近 1 个月短期反转;学术证据最悠久 | 熊市满仓挨打;V 型反转发生动量崩溃;12 个月窗口反应迟钝 |
| 2. 双重动量与多周期合成 (Dual Momentum) | Gary Antonacci (2014); Moskowitz, Ooi & Pedersen (2012) | 相对动量排序 + 绝对趋势过滤(\(\text{MOM} > 0\) 且 \(P_t > \text{SMA}_{200}\)),未达标仓位转入国债 IEF |
兼顾截面选股 Alpha 与时序危机保护 | 仅看区间端点涨幅,容易选入高 Beta 暴涨暴跌股 |
| 3. 风险调整动量 (Sharpe / Sortino Mom) | Barroso & Santa-Clara (2015), JFE; Pirschel | \(\text{SharpeMom} = \frac{R_{t-L \to t}}{\sigma_L}\),\(\text{SortinoMom} = \frac{R_{t-L \to t}}{\sigma_{\text{down}, L}}\) | 过滤高波动噪音;索提诺动量只惩罚下行波动、保留上行爆发力 | 若对总波动率惩罚过度(如双重除以 \(\sigma\)),会错失高成长科技牛股 |
| 4. 指数回归趋势质量 (Clenow \(\text{Slope} \times R^2\)) | Andreas Clenow (2015), Stocks on the Move; Da et al. (2014) FIP | 对 \(\ln P_t = \alpha + \beta t + \varepsilon\) 回归,取 \(\left(e^{252\beta}-1\right) \times R^2\) | 直接度量“对数价格上升通道的斜率与线性平滑度”,剔除跳空妖股 | 单纯看价格回归未结合成交量资金流确认 |
5. 多因子复合动量 (Composite Alpha) |
Grinold & Kahn (2000) 多信号合成 + Barroso 动态波动率缩放 | 多周期动量 + Clenow \(R^2\) + 索提诺动量 + 量价确认 + 5 日防透支 + 换手缓冲带 | 信号正交互补、高夏普、低回撤、换手可控 | 需要规范的截面去极值(MAD)与标准化(Z-Score)工程支撑 |
三、五轮「回测 → 诊断 → 调整 → 再回测」完整实验记录¶
我们先给出 2 个基准与 5 轮动量模型在 2008-07-01 至 2026-09-28(18.23 年,单边成本 15 bps,初始资金 $100,000)下的完整回测对比总表:
| 模型编号 | 模型名称 | 年化收益 CAGR (%) | 年化波动 Vol (%) | 夏普 Sharpe | 索提诺 Sortino | 最大回撤 MaxDD (%) | 卡玛 Calmar | 月胜率 Win (%) | 信息比率 IR (vs SPY) | 年化单边换手 (x/yr) | $100k 期末净值 ($) |
|---|---|---|---|---|---|---|---|---|---|---|---|
BM_SPY |
SPY 指数基准 (Buy & Hold) | 12.35% | 19.71% | 0.69 | 0.98 | 47.17% | 0.26 | 68.0% | 0.00 | 0.03x | $832,995 |
BM_Top30_EW |
Top 30 等权基准 (B0 Monthly) | 21.79% | 21.69% | 1.02 | 1.47 | 43.92% | 0.50 | 69.4% | 1.44 | 0.35x | $3,622,024 |
Iter 1 |
经典 12-1 截面动量 (JT93) | 27.68% | 26.67% | 1.05 | 1.52 | 36.79% | 0.75 | 63.9% | 0.90 | 2.63x | $8,563,758 |
Iter 2 |
过度低波惩罚动量 (诊断踩坑) | 21.26% | 20.81% | 1.03 | 1.48 | 30.12% | 0.71 | 68.5% | 0.53 | 3.90x | $3,344,369 |
Iter 3 |
多周期双重动量 (Dual Mom) | 29.97% | 25.54% | 1.16 | 1.66 | 37.52% | 0.80 | 67.1% | 0.88 | 2.74x | $11,836,802 |
Iter 4 |
趋势质量(Clenow \(R^2\)) + 量价复合 | 30.03% | 24.39% | 1.20 | 1.74 | 34.90% | 0.86 | 67.1% | 0.91 | 2.60x | $11,934,538 |
Iter 5 |
终局多因子复合动量 (Composite Alpha) |
29.96% | 23.32% | 1.24 | 1.81 | 29.72% | 1.01 | 68.0% | 0.85 | 2.83x | $11,810,399 |
🔍 第 1 轮回测(Iter 1):经典学术 12-1 截面动量¶
- 设计逻辑:复现 Jegadeesh & Titman (1993) 的教科书标准做法——每月末计算各标的过去 252 个交易日剔除最近 21 个交易日的总收益 \(\text{TR}_{t-21}/\text{TR}_{t-252}-1\),做多排名前 8 的股票,等权满仓持有。
- 回测表现:CAGR 27.68%(跑赢等权基准 +5.89pp,跑赢 SPY +15.33pp),夏普 1.05,最大回撤 36.79%。
- 问题诊断(为什么要调整?):
- 危机期缺乏绝对趋势保护:在 2008 年下半年金融危机中,30 只成分股泥沙俱下,纯截面动量依然强行满仓持有“跌得相对较少”的 8 只股票,导致区间大幅回撤 -29.8%。
- 单一 12 个月回看窗口过慢:在 2020 年疫情复苏与 2022 年加息熊市切换中,12 个月窗口需要大半年才能完成持仓风格切换,年化波动率高达 26.67%。
⚠️ 第 2 轮回测(Iter 2):一次极具教学价值的“负向调整”踩坑¶
- 调整尝试:为了把
Iter 1高达 26.67% 的波动率和 36.79% 的回撤降下来,很多初学者的第一反应是:“把所有动量都除以波动率变成夏普动量,再用逆波动率(\(1/\sigma\))分配权重,最后再给单只股票加个 22% 的权重上限截断!” - 回测结果(踩坑警报!):最大回撤确实降到了 30.12%,但 年化收益率从 27.68% 暴跌到了 21.26%(甚至跑输了什么都不做的 Top 30 等权基准 21.79%!),夏普比率倒退回 1.03,且年化换手率反而从 2.63x 飙升至 3.90x!
- 深度诊断(为什么“看似合理的风控叠加”会毁掉动量策略?):
- 波动率被双重惩罚(\(\propto 1/\sigma^2\)):选股打分时用 \(\text{Return}/\sigma\) 惩罚了一次波动率,组合配权时又用 \(1/\sigma\) 惩罚了一次波动率。在美股大盘股池中,高成长科技股(如
NVDA、AMD、NFLX、AMZN、LLY)在主升浪期间的伴随波动率天然高于公用事业与必需消费股(如KO、PG、JNJ、WMT)。双重惩罚总波动率导致模型系统性地把科技领涨龙头踢出重仓、塞入慢速防御股! - 上下行波动一刀切:上涨跳空带来的“好波动(Upside Volatility)”也被
Iter 2当成风险惩罚了。 - 硬截断未重归一化 + 月度波动率噪音:当权重被
.clip(upper=0.22)截断后未重新归一化,导致牛市常年存在隐性现金拖累;且 63 日波动率每个月都在微小变化,导致即使持仓股票不变,每月也要为了微调权重而频繁买卖,平白推高了换手率与摩擦成本!
🚀 第 3 轮回测(Iter 3):多周期动量合成 + Antonacci 双重动量¶
- 针对性修正:
- 恢复动量的进攻锋芒,改用多周期合成(3M + 6M + 12-1M):单因子 IC 测试(见图 5A)表明,在大盘蓝筹池中,3 个月(IC =
4.67%)与 6 个月(IC =3.32%)动量的截面预测力显著高于传统 12-1 动量(IC =2.48%)。我们将3M (35%) + 6M (35%) + 12-1M (30%)合成,兼顾中短期敏捷度与长期趋势稳定性。 - 引入 Gary Antonacci (2014) 双重动量(Dual Momentum):不再靠压制高成长股来防风险,而是用趋势准入规则防风险——排名前 8 的候选股必须同时满足「综合动量 > 0」且「收盘价位于 200 日均线之上」才分配 ⅛ 仓位;不达标的空余仓位自动转入中期美国国债 ETF(
US.IEF)避险。 - 回测验证:
- 年化收益率跃升至 29.97%(相比
Iter 1提升 +2.29pp,相比Iter 2提升 +8.71pp); - 夏普比率从
1.05跃升至 1.16,索提诺比率达 1.66; - 2008 年金融危机期间亏损从 SPY 的
-46.1%压缩至-10.0%! - 遗留问题诊断:虽然年化收益逼近 30%,但最大回撤仍为 37.52%(发生在 2020 年 3 月疫情闪崩与高波震荡期),且部分单日暴涨后横盘震荡的“假趋势股”仍会混入持仓。
🎯 第 4 轮回测(Iter 4):Clenow 指数回归趋势质量 (\(R^2\)) + 索提诺动量 + 量价确认 + 排名缓冲带¶
- 针对性修正:如何区分“健康的机构推升趋势”与“暴涨暴跌的题材噪音”,同时不再重蹈
Iter 2扼杀成长股的覆辙?我们引入四个互补因子与一项交易工程优化: - Clenow 指数回归趋势质量(\(\text{Annualized Slope} \times R^2\),90 日窗口):对对数价格 \(\ln P_t\) 做线性回归,只有当斜率陡峭且决定系数 \(R^2\) 接近 1(价格紧密沿着指数增长通道稳步爬升)时才得高分。
- 索提诺下行风险调整动量(Sortino Momentum):只用下跌日构成的半方差下行波动率 \(\sigma_{\text{down}}\) 做分母(\(\text{Mom}_{6M} / \sigma_{\text{down}, 126d}\))。这样大涨带来的波动完全不受惩罚,只有暴跌带来的波动才被扣分!
- 量价资金流确认因子(Volume-Price Confirmation):计算过去 63 日上涨日总成交量与下跌日总成交量的对数比 \(\ln(\sum V_{\text{up}} / \sum V_{\text{down}})\),确保价格趋势背后有真金白银的机构买盘支撑。
- 短期 5 日极度超买透支保护(Short-Term Overbought Guard):结合 M02 的时间尺度定律(1 周尺度表现为短期反转),当某只股票近 5 日涨幅截面 Z-Score 超过
+1.0时施加温和扣分,避免在短期情绪最亢奋的脉冲顶点接盘。 - 持仓排名缓冲带(Rank Buffer:
Top 8 Entry / Top 11 Keep):新买入必须排进前 8 名;但已在持仓中的股票只要还没跌出前 11 名且趋势未破位,就继续保留。 - 回测验证:
- 年化收益率进一步提升至 30.03%;
- 年化波动率从
25.54%降至 24.39%,最大回撤从37.52%降至 34.90%; - 夏普比率升至 1.20,索提诺比率升至 1.74,卡玛比率升至 0.86;
- 得益于排名缓冲带,尽管引入了 4 类复合因子,年化单边换手率反而从
2.74x下降到了2.60x!
🏆 第 5 轮回测(Iter 5):终局多因子复合动量模型(Composite Alpha + 温和逆波配权 + Barroso 动态波动率缩放)¶
- 最后一块拼图:为什么
Iter 4在 2020 年 3 月仍有 34.90% 的回撤?因为在极端流动性危机(如 2020 年 3 月熔断或 2022 年高波急跌)爆发时,等权满仓股票的整体 Beta 暴露依然过高。我们在Iter 4的复合因子基础上加入两项机构级组合构建技术: - 温和幂次逆波动率配权(Tempered Inverse-Volatility Weighting, \(\sigma^{-0.35}\)):不同于
Iter 2极端的 \(\sigma^{-1}\) 配权,我们采用 \(w_i \propto \sigma_i^{-0.35}\) 并严格归一化。这既保留了高成长龙头 85% 以上的仓位锐度,又温和抑制了组合尾部波动。 - Barroso & Santa-Clara (2015) 动态市场波动率目标缩放(Volatility Targeting Overlay):监测大盘(
SPY)50 日均线状态与近 15 日已实现年化波动率 \(\hat{\sigma}_{15d}\)。当市场跌破 50 日均线且 \(\hat{\sigma}_{15d} > 24\%\)(恐慌高波状态)时,将股票总敞口按 \(\min(1, 20\% / \hat{\sigma}_{15d})\) 动态收缩(最低保留 35% 底仓),腾出的仓位自动配置于避险国债IEF。 - 终局回测验证(全面超越预期目标):
- 净年化收益率(CAGR)高达
29.96%:几乎是教学目标门槛(15.0%)的 2 倍,每年净跑赢SPY指数基准 +17.61 个百分点,净跑赢同池Top 30 等权基准 B0+8.17 个百分点! - 最大回撤成功压降至
29.72%:在长达 18.23 年的跨周期测试中首次将最大回撤控制在 30% 以内(同期SPY最大回撤47.17%,Top 30 等权 B0最大回撤43.92%)。 - 全套风险调整指标登顶:夏普比率达
1.24,索提诺比率达1.81,卡玛比率(CAGR / MaxDD)突破1.01(从SPY的0.26和Iter 1的0.75稳步跃升至1.01)!
📊 3.6 交易行为与摩擦成本概括性总结(Trade Execution & Round-Trip Summary)¶
除了组合净值指标,回测引擎还逐笔记录了每次调仓 K 线上的交易指令(BUY_ENTRY 建仓买入、SELL_EXIT 清仓卖出、ADD/REDUCE 持仓加减仓)以及从建仓到清仓的完整波段持仓轮次(Round-Trip Trades)。全周期(2008.07 – 2026.09,单边成本 15 bps)交易概括性总结如下:
| 模型编号 | 模型名称 | 调仓触发天数 (次) | 总交易指令 (笔) | 建仓买入 (次) | 清仓卖出 (次) | 完整持仓波段 (轮) | 单笔波段胜率 (%) | 平均单笔盈利 (%) | 平均单笔亏损 (%) | 盈亏幅度比 (Payoff) | 利润因子 (Profit Factor) | 平均持仓天数 (交易日) | 累计总成本 ($) | 年化成本拖累 (bps/yr) |
|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|
BM_SPY |
SPY 指数基准 (Buy & Hold) | 1 | 1 | 1 | 0 | 1 | 100.0% | +731.64% | 0.00% | — | — | 4,589.0 | $150 | 0.8 bps |
BM_Top30_EW |
Top 30 等权基准 (B0 Monthly) | 219 | 373 | 30 | 0 | 30 | 100.0% | +5111.04% | 0.00% | — | — | 4,589.0 | $15,159 | 10.6 bps |
Iter 1 |
经典 12-1 截面动量 (JT93) | 219 | 1,410 | 350 | 342 | 350 | 59.1% | +31.96% | -8.43% | 3.79x | 5.55 | 104.9 | $170,676 | 78.9 bps |
Iter 2 |
过度低波惩罚动量 (诊断踩坑) | 218 | 1,678 | 434 | 427 | 434 | 56.7% | +23.00% | -6.41% | 3.59x | 3.17 | 71.2 | $169,299 | 116.9 bps |
Iter 3 |
多周期双重动量 (Dual Mom) | 219 | 1,391 | 377 | 369 | 377 | 55.7% | +36.93% | -7.93% | 4.66x | 5.23 | 92.9 | $229,334 | 82.2 bps |
Iter 4 |
趋势质量(Clenow \(R^2\)) + 量价复合 | 219 | 1,364 | 355 | 347 | 355 | 54.9% | +37.31% | -7.82% | 4.77x | 6.17 | 99.6 | $222,757 | 77.9 bps |
Iter 5 |
终局多因子复合动量 (Composite Alpha) |
219 | 1,416 | 317 | 310 | 317 | 58.0% | +35.15% | -8.67% | 4.05x | 5.17 | 98.1 | $270,387 | 84.9 bps |
核心交易特征解读:¶
- 交易频次与持仓周期:
Iter 5在 18.23 年间共触发 219 次月度调仓,产生 1,416 笔实质性调仓指令(含 317 次建仓买入、310 次清仓卖出、789 次持仓加减仓),对应 317 轮完整波段持仓(期末 7 只在途)。平均每轮持仓 98.1 个交易日(约 4.7 个月)。相比Iter 2(434 轮、平均持仓仅 71.2 天),排名缓冲带与复合因子过滤大幅减少了无效进出。 - 胜率与盈亏比(「截断亏损,让利润奔跑」的实证):
- 在
Iter 5的 317 轮个股波段交易中,184 轮盈利、133 轮亏损,单笔波段胜率为58.0%; - 184 轮盈利交易:平均持仓长达 135.4 个交易日,平均单笔波段涨幅
+35.15%(其中NVDA2023–2025 单轮最高大赚+515.03%,净获利+$821,720); - 133 轮亏损交易:一旦趋势破位或排名滑出缓冲带立即止损,平均持仓仅 46.6 个交易日,平均单笔亏损仅
-8.67%; - 盈亏幅度比(Payoff Ratio)高达
4.05 : 1,美元总盈利除以总亏损的 利润因子(Profit Factor)高达5.17! - 总成本账本:随着账户净值从
$100,000复利增长至$11,810,399(规模扩大 118 倍,后期单笔调仓金额随之扩大),18.23 年累计双边总成交额为$18,025,819,累计扣除佣金与滑点总成本$270,387,仅占策略累计总毛利($11,980,786)的2.26%,折合年化费率拖累84.9 bps/年(0.85%/年)。
四、回测结果全景可视化与深度解读¶
4.1 累计净值曲线与水下回撤图(2008.07 – 2026.09)¶
读图要点:
- 上图(对数净值坐标):深绿色粗实线(Iter 5 终局复合模型)在 18.23 年间将 $100,000 初始本金复利增长至 $11,810,399(约 118.1 倍),远超灰色虚线 SPY($83.3 万)与深蓝虚线 Top 30 等权 B0($362.2 万)。而在 2008 GFC 与 2022 加息熊市 两个黄色阴影危机区内,净值曲线表现出极强的抗跌平台特征。
- 下图(水下回撤曲线):可以清晰看到 Iter 5(绿色填充区)始终被约束在 -30% 红色警戒线以内,而传统基准在 2008–2009 年与 2020/2022 年多次深跌超过 -35% ~ -47%。
4.2 五轮「回测 → 诊断 → 调整 → 再回测」指标演进仪表盘¶
读图要点:
- 子图 (A) 与 (B) 直观展示了我们在第 3 节复盘的研发闭环:Iter 2(红色柱)因过度惩罚低波导致 CAGR 掉坑,随后 Iter 3 -> Iter 4 -> Iter 5 在保持 ~30% 年化收益 的同时,将最大回撤阶梯式压降:37.52% → 34.90% → 29.72%。
- 子图 (C) 展示夏普比率(1.05 → 1.16 → 1.20 → 1.24)与索提诺比率(1.52 → 1.66 → 1.74 → 1.81)的单调递进。
- 子图 (D) 风险—收益演进轨迹:气泡沿虚线箭头向**左上角(更高收益、更低波动、更大卡玛比率气泡)**迁移,完美诠释了量化组合优化的几何本质。
4.3 历年收益分布与六大市场状态(Regimes)穿越能力拆解¶
读图要点:
- 2008 金融危机(08.07–09.03):SPY 暴跌 -46.1%,Top 30 等权 暴跌 -41.9%,Iter 1 传统动量 亏 -29.8%;而引入双重动量与动态风控的 Iter 5 仅回撤 -10.0%,保住了绝大部分本金!
- 2022 激进加息熊市(2022 全年):SPY 下跌 -18.2%,Top 30 等权 下跌 -12.8%,而 Iter 5 及时切换至能源/医药抗通胀龙头(如 XOM、CVX、LLY、UNH)与国债防守,全年仅微跌 -8.7%。
- 2023–2026 AI 科技牛市:Iter 5 迅速重仓捕捉 NVDA、LLY、AVGO/MU/AMD、META/AMZN/MSFT 等主升浪龙头,区间年化高达 50.1%(同期 SPY 为 22.1%)。
4.4 月度收益热力图与滚动 3 年年化收益稳健性检验¶
读图要点:
- 子图 (A) 月度热力图:在 2008–2026 共 19 个日历年度中,Iter 5 有 17 个年度实现正收益(仅 2008 下半年与 2022 年小幅收负),月度胜率高达 68.0%。
- 子图 (B) 滚动 3 年年化收益率:无论在哪个历史时点买入并持有 3 年,Iter 5 的滚动 3 年 CAGR 绝大多数时间都稳居 15% 红色目标线之上,且绿色阴影区域表明其在超过 85% 的滚动窗口内持续跑赢 Top 30 等权基准 B0。
4.5 因子预测力(Rank IC)、相关性矩阵、滑点压力测试与核心持仓归因¶
读图要点:
- 子图 (A) 横截面 Spearman Rank IC:在 S&P 500 Top 30 池子中,3M 短期动量(IC = 4.67%, ICIR = 0.59)、6M 中期动量(IC = 3.32%)、Clenow 趋势 R^2(IC = 2.79%)与 量价确认因子(IC = 2.62%)均具有显著的正向截面预测力,合成后的 复合 Alpha 总分 月均 Rank IC 达 3.56%(年化 ICIR = 0.44)。
- 子图 (B) 子因子相关性矩阵:量价资金确认 与 多周期动量 的截面相关性仅为 0.22,5 日防透支保护 与趋势因子的相关性为 -0.08 ~ -0.16。低相关性与负相关性正是复合模型实现“1 + 1 > 2”信息比率提升的统计基石(对应 M10 预测与信息分析 的多信号合成定律)。
- 子图 (C) 滑点与手续费压力测试(0 ~ 50 bps):
- 0 bps(零摩擦理想世界):CAGR 31.1%,夏普 1.28;
- 15 bps(教学默认公允成本):CAGR 30.0%,夏普 1.24;
- 即使将单边冲击成本极端放大至 50 bps(双边 1.0% 的严苛摩擦),策略净年化依然高达 27.4%(夏普 1.16),证明策略收益主要来自中长期大趋势而非脆弱的高频微结构。
- 子图 (D) 历史最常捕获的 12 大牛股:模型在 18 年间最常持有的标的是 NFLX(奈飞, 44.8%)、NVDA(英伟达, 43.9%)、MU(美光, 39.7%)、AAPL(苹果, 35.6%)、LLY(礼来, 35.2%)、AMZN(亚马逊, 34.7%)、AMD(超威, 32.9%)、COST(好市多, 29.7%)、UNH(联合健康, 27.9%)、MA(万事达, 27.4%),完美贴合过去二十年美股产业结构升级的主脉络。
4.6 代表性牛股 K 线(OHLC 蜡烛图)交易买卖点与波段盈亏标注¶
K 线交易标注详解(红三角 ▲ = 买入建仓 BUY_ENTRY,蓝倒三角 ▼ = 卖出清仓 SELL_EXIT,金菱形 ◆ = 持仓加/减仓调仓点,绿/红背景色带 = 盈利/止损持仓周期):
- 子图 (A) 英伟达 (
US.NVDA, 2019–2026): - 2019.12 – 2021.01 波段:在站稳 200 日均线后于
19.12触发▲ 买入建仓,持仓 274 天(期间 8 次◆动态调仓),于21.01触发▼ 卖出清仓,波段收益+141.3%(净赚+$171,143)。 - 2021.07 – 2022.03 波段(2022 熊市逃顶):
21.07建仓,在 2022 年初半导体见顶回落跌破均线与排名阈值时,于22.03及时触发▼ 卖出清仓(锁定+21.9%利润),完美规避了 2022 年 3–10 月英伟达腰斩逾-55%的主跌浪! - 2023.02 – 2025.02 波段(AI 算力主升浪):2023 年初 ChatGPT 引爆 AI 浪潮、NVDA 重新站上 200 日均线后,模型于
23.02第一时间触发▲ 买入建仓,坚定持有 502 个交易日 至25.02卖出,单轮斩获+515.0%涨幅(单笔净赚+$821,720)! - 子图 (B) 奈飞 (
US.NFLX, 2021–2026)——「快速止损避崩盘」的教科书示范: 21.12尝试建仓买入后遭遇财报前走弱,模型在22.01(仅持仓 22 天)果断触发▼ 卖出清仓,将亏损严格截断在-6.1%,从而完全躲过了 2022 年上半年奈飞暴跌-70%的崩盘;- 此后在
24.11捕捉到流媒体主升浪,持仓 206 天 至25.09卖出,大赚+59.8%(净赚+$283,534)。 - 子图 (C) 礼来 (
US.LLY, 2021–2025): - 在 2022 年科技股熊市中,模型于
22.05买入抗周期医药龙头礼来,逆势斩获+18.9%(189 天);随后在 2023–2024 年减肥药主升浪中连续打出+36.3%(147 天)与+17.9%(147 天)三连胜。 - 子图 (D) 苹果 (
US.AAPL, 2018–2024): - 清晰展示
18.10 -> 18.12止损保护、19.11 -> 20.12翻倍波段(+93.7%, 272 天)以及22.02 -> 22.05熊市破位止损(-9.7%)的完整 K 线轨迹。
4.7 全组合交易行为与成本概括性总结仪表盘¶
读图要点:
- 子图 (A) 组合净值曲线上的 219 个调仓 K 线点:绿色圆点(195 次)为满仓进攻调仓点;红色菱形(24 次)为触发双动量趋势过滤或 Barroso 波动率风控的减仓防守点,精准落位在 2008 金融危机、2011 欧债危机、2015–2016 震荡、2018 Q4、2020 疫情熔断与 2022 加息熊市。
- 子图 (B) 五轮迭代交易质量对比:展示各轮模型的单笔波段胜率、盈亏比与利润因子。
- 子图 (C) 全部 317 轮个股交易生命周期散点图:直观呈现亏损交易集中在左下角(平均持仓 47 天,平均亏损 -8.7%),而盈利交易向右上方大幅延展(平均持仓 135 天,平均盈利 +35.2%)。
- 子图 (D) 交易行为与成本概括性总结成绩单:一图汇总所有模型的调仓次数、指令笔数、波段轮次、胜率、盈亏比、利润因子、平均持仓天数与累计交易成本。
五、方法论思辨:为什么教学回测能到 30%,实盘要注意什么?¶
作为 @knowledge 知识库的核心教学案例,我们必须结合 M03 数据与回测工程 与 M08 因子陷阱与研究现状 诚实地剖析本实验中的认知要点:
- 为什么
Top 30 等权基准 B0本身就有21.79%的年化收益? - 因为实验规定“基于 S&P 500 的前 30 大市值进行标的选择”,而站在今天挑选市值最大的 30 家公司回测过去 18 年,天然包含了幸存者偏差与事后入选偏差(Survivorship & Ex-Post Selection Bias)——能够在 2026 年位列标普前 30 的公司(如英伟达、苹果、微软、亚马逊、礼来),必然是过去二十年竞争胜出的超级赢家。
- 既然股票池有幸存者偏差,我们如何证明动量模型本身的真实有效性与研究价值?
- 看相对同池等权基准
B0的净超额收益(Alpha)与回撤削减能力! - 在完全相同的 30 只股票池、完全相同的摩擦成本下,
Top 30 等权 B0年化为21.79%、最大回撤高达43.92%、卡玛比率仅0.50; - 而经过五轮迭代后的
Iter 5 终局多因子复合动量模型,在同等股票池上创造了+8.17%/年的纯选股与择时超额收益(年化29.96%),同时把最大回撤削减了14.20 个百分点(降至29.72%),卡玛比率翻倍至1.01!这多出来的+8.17%/年超额与-14.20pp回撤保护,百分之百来自于多因子复合动量与动态风控算子的真实贡献。 - 从教学走向实盘的延伸思考:
- 在实盘或严格无偏研究(如项目主线的
S4/S5预注册实验)中,应当使用历史时点成分股(Point-in-Time Constituents)并通过样本外滚动前推(Walk-Forward)与影子前向账本验证。
六、代码架构与复现指南¶
本教学实验室的所有代码与产出均收敛在 knowledge/Labs/momentum_lab/ 目录下,结构清晰、注释详尽:
knowledge/Labs/momentum_lab/
├── __init__.py
├── README.md # 本教学讲义与实验复盘报告
├── data_sandbox.py # 只读校验与沙箱数据拷贝、前向复权总收益指数构建
├── backtest_engine.py # 无前视偏差教学回测引擎、公允滑点扣除与机构绩效指标统计
├── momentum_models.py # 5 轮动量模型变种与 4 维复合 Alpha 因子库实现
├── visualize.py # 7 张高清出版级诊断图表渲染脚本(含 K 线买卖点标注与交易总结仪表盘)
├── run_lab.py # 一键执行「数据沙箱 -> 5轮回测 -> 交易账本导出 -> 可视化」入口
├── figures/ # 自动生成的 7 张 PNG 可视化图表
│ ├── 01_equity_and_drawdown.png
│ ├── 02_iteration_progression.png
│ ├── 03_yearly_and_regime_returns.png
│ ├── 04_monthly_heatmap_and_rolling.png
│ ├── 05_factor_attribution_and_holdings.png
│ ├── 06_kline_trade_annotations.png
│ └── 07_trade_summary_dashboard.png
├── outputs/ # 自动导出的 CSV 汇总表、K 线交易明细与 JSON 实验报告
│ ├── iteration_summary.csv
│ ├── trade_execution_summary.csv
│ ├── iter5_kline_trade_events.csv
│ ├── iter5_round_trip_trades.csv
│ └── lab_experiment_report.json
└── sandbox_data/ # 本地自动拷贝隔离的 Parquet 沙箱数据(被 .gitignore 忽略,不污染仓库)
本地一键运行命令¶
在仓库根目录执行:
脚本将在约 10 秒内完成沙箱数据核验、5 轮动量模型与复合因子回测、成本敏感度分析,并刷新 outputs/ 与 figures/ 下的全部表格和图表。






