4. 动量类轮动信号实战
动量轮动的基本假设是“强者恒强”:过去一段时间涨幅居前的行业,在未来一段时间内仍有较大概率继续跑赢。要把这个直觉变成可回测、可执行的策略,需要明确三件事——动量怎么算、窗口取多长、每期持有几个行业。本节围绕这三点展开,用一套可复现的示例流程,把行业动量信号从计算到组合构建再到参数敏感性分析完整走一遍。
一、动量指标的定义与计算口径
行业动量最常用的定义是区间累计收益率,即对行业指数(或行业ETF净值)计算过去 N 个交易日的收益率:
mom(N) = P_t / P_{t-N} - 1
其中 P_t 为当期收盘价或复权净值,N 为回看窗口。这里必须强调两个口径问题。第一,必须使用复权价格,否则分红除权会造成虚假下跌,尤其对高股息行业(银行、公用事业)影响显著。第二,信号与持仓之间要留出隔离期:若在 t 日收盘后用 t 日数据计算信号,最早只能在 t+1 日开盘或收盘建仓,回测中若直接用 t 日收益与 t 日信号对齐,会产生前视偏差,虚增收益。
除简单收益率外,实践中还常用两种稳健化处理:一是动量除以波动率(风险调整动量),避免高波动行业仅因波动大而排名靠前;二是剔除最近一个月的“12-1动量”,规避短期反转效应。本节示例先采用最基础的区间收益率,便于观察参数本身的敏感性。
二、多窗口动量的信号构建流程
下面这张图展示了一个完整的多窗口动量轮动信号链:从行情数据出发,并行计算多个窗口的动量得分,经排序选出Top-N,再映射为等权或风险预算权重,最后进入持有期与调仓环节。
图中左侧的“信号隔离期”是回测正确性的关键。示例中约定:每个调仓日 t 收盘后,用截至 t 日的复权净值计算各行业动量,排序后确定目标持仓,在 t+1 日以收盘价完成调仓。所有窗口、排序、权重、持有期都围绕这一时间约定展开,全文保持一致。
三、Top-N 组合的构建与示例参数
假设我们以 28 个申万一级行业为标的池,采用 60 日动量、每期持有 5 个行业、等权配置、每 10 个交易日调仓一次。以某调仓日为例,计算得到的动量排名前五为:有色金属(+18.2%)、煤炭(+15.6%)、电力设备(+12.4%)、汽车(+10.1%)、机械设备(+8.7%),则组合各配 20% 权重。若下一调仓日排名变化,例如煤炭跌出前五、通信进入前五,则卖出煤炭、买入通信,其余权重微调至等权。
这里有两个容易被忽略的细节。其一,Top-N 的 N 决定了组合的集中度与换手率:N 越小,组合越集中,动量暴露越强,但单行业风险与换手成本也越高;N 越大,越接近行业等权基准,超额收益被稀释。其二,调仓频率与持有期要匹配:若持有期为 10 日,则每年约调仓 24 次,双边换手率可能达到数倍,必须把交易成本(佣金、冲击成本、ETF 折溢价)纳入回测,否则高换手策略的收益会被显著高估。
四、动量信号的表现观察与参数敏感性
评估动量轮动策略,不能只看年化收益,而应同时观察四个维度:收益(年化、超额)、风险(最大回撤、波动率)、风险调整后收益(夏普、卡玛)、交易特征(换手率、持仓集中度、行业切换频率)。更重要的是做参数敏感性扫描:固定其他条件,分别改变动量窗口 N(20/60/120/250)、持仓数 Top-N(3/5/8/10)、持有期 H(5/10/20 日),观察指标如何变化。
根据A股行业动量的普遍经验(此处为合理假设的示例结论,非实测数据),通常可以观察到以下规律:短窗口(20日)动量对近期趋势敏感,但在震荡市中容易频繁切换、换手率高、胜率偏低;中窗口(60~120日)在趋势行情中表现较稳,是常用的折中区间;长窗口(250日)动量更接近年度强弱排序,换手低但反应滞后,在风格快速切换时回撤较大。Top-N 从 3 增加到 10,年化超额往往先升后降,因为过度集中会放大个别行业的噪声,过度分散则失去轮动意义。
五、一个可直接套用的参数扫描记录表
为了让参数敏感性分析可复现、可比较,建议按下表记录每一组参数的回测结果。表中“基准”列填写同期行业等权组合的对应指标,便于计算超额。
| 动量窗口 N | Top-N | 持有期 H(日) | 年化收益 | 最大回撤 | 夏普比率 | 年化换手率 | 相对等权基准超额 |
|---|---|---|---|---|---|---|---|
| 20 | 5 | 10 | 示例值 | 示例值 | 示例值 | 高 | 示例值 |
| 60 | 5 | 10 | 示例值 | 示例值 | 示例值 | 中 | 示例值 |
| 120 | 5 | 10 | 示例值 | 示例值 | 示例值 | 中低 | 示例值 |
| 250 | 5 | 10 | 示例值 | 示例值 | 示例值 | 低 | 示例值 |
| 60 | 3 | 10 | 示例值 | 示例值 | 示例值 | 高 | 示例值 |
| 60 | 8 | 10 | 示例值 | 示例值 | 示例值 | 中 | 示例值 |
| 60 | 5 | 5 | 示例值 | 示例值 | 示例值 | 很高 | 示例值 |
| 60 | 5 | 20 | 示例值 | 示例值 | 示例值 | 低 | 示例值 |
填写时注意统一回测区间、基准与成本假设,否则不同参数之间不可比。完成扫描后,优先关注那些在相邻参数下指标不出现断崖式恶化的组合,再结合策略容量、交易成本与自身风险承受能力做最终取舍。动量轮动不是寻找唯一最优参数,而是找到一个在合理参数邻域内都能稳定跑赢基准的信号结构。