← Back to Documentation

A股动量轮动策略实验策略概述

概述

股市有风险,投资需谨慎

本项目仅供学习使用,不作为投资建议

策略背景

动量轮动(Momentum Rotation)是量化投资领域经典的趋势跟踪策略,核心思想是”追涨杀跌”——即买入近期表现强势的资产,卖出表现弱势的资产。这一策略基于市场非完全有效假说,认为价格趋势在中短期内具有持续性。

在A股市场中,由于投资者结构以散户为主、情绪波动较大,板块和风格轮动特征明显。传统的买入持有策略往往承受较大回撤,而纯粹的动量策略又可能在震荡市中频繁打脸。本策略试图在两者之间取得平衡:通过趋势过滤控制大亏风险,通过动量打分捕捉上涨机会,通过多资产轮动降低单一资产暴露。

策略核心逻辑

本策略采用双层结构设计:

核心规则可概括为:趋势过滤定进退,动量打分定权重,过热风控防追高,回撤控制保本金

策略特点

特点说明
低频交易月度主调仓,不做日内交易,适合上班族跟投
趋势过滤MA200均线+均线斜率双重过滤,避免左侧抄底
动态底仓根据有效广度自动调整短融底仓比例(10%~100%)
分批建仓新增仓位先建50%,满足条件再补满,降低追高风险
自适应风控回撤阈值根据波动率、趋势强度、流动性动态调整
过热约束BIAS20偏离度监控,极端行情下限制追涨

回测表现概要

年度策略收益率策略最大回撤策略夏普510300收益率510300最大回撤510300夏普
20203.15%-3.09%0.8431.11%-18.22%1.19
20212.81%-0.17%7.96-5.24%-18.52%-0.13
2022-3.47%-4.63%-1.38-21.37%-29.53%-1.05
20237.16%-2.04%1.96-10.71%-21.30%-0.72
20249.91%-4.53%1.7120.11%-13.13%0.85
202519.98%-3.90%2.2925.20%-10.62%1.37
2026YTD0.75%-10.88%0.58-4.91%-7.63%-0.78

特别提示:2022年全年亏损是本策略回测期内唯一亏损全年,当年沪深300下跌约21.4%,策略亏损约3.5%,体现了一定的防御性。但需注意,历史回测不代表未来收益,策略仍可能在极端行情中出现较大回撤。另2026年回撤偏大主要受黄金回调影响

适用场景与风险提示

适合的投资者

主要风险

详细策略

1. 策略定位

本策略是一个低频、日频信号、月度主调仓的跨资产轮动策略。组合结构分为两层:

策略目标是以统一规则在权益风格 ETF 与黄金 ETF 之间轮动,并通过动态短融底仓、过热约束、分批建仓和月内回撤风控控制回撤。


2. 资产池

2.1 风险资产

2.2 短融承接资产

511360 统一承担以下角色:


3. 数据与口径

3.1 信号计算口径

信号优先使用各资产的 bench_symbol 序列:

优先顺序如下:

  1. 若配置了 bench_symbol,优先用 bench_symbol + bench_type 计算信号。
  2. 若基准序列不可得,则退回 ETF 自身前复权收盘价序列。
  3. 任一回退都应在报告中记录。

3.2 交易执行口径

3.3 历史不足处理


4. 调仓节奏

4.1 月度主调仓

4.2 月内风控检查

4.3 分批建仓补仓检查


5. 指标定义

对每个资产,基于信号序列计算:

[ MA20_t = mean(P_{t-19:t}) ]

[ MA200_t = mean(P_{t-199:t}) ]

[ MA200_shift_t = MA200_{t-20} ]

[ R3M = \frac{P_t}{P_{t-63}} - 1,\quad R6M = \frac{P_t}{P_{t-126}} - 1,\quad R9M = \frac{P_t}{P_{t-189}} - 1 ]

[ Score_i = 0.5 \times R6M_i + 0.3 \times R3M_i + 0.2 \times R9M_i ]

[ Vol60_i = Std(ret_{1d, t-59:t}) \times \sqrt{252} ]

[ BIAS20_i = \frac{P_t}{MA20_t} - 1 ]


6. 风险资产准入规则

6.1 开仓与持有采用不同阈值

若某资产当前实际权重大于 0,视为持有状态;否则视为新开仓状态。

新开仓阈值

持有阈值

6.2 趋势过滤

无论是新开仓还是持有,均需满足:

[ MA200_t > MA200_shift_t ]

即 200 日均线本身向上。

6.3 准入条件

某风险资产在当期进入风险资产桶,当且仅当同时满足:

  1. 满足对应状态下的价格相对 MA200 条件
  2. 满足 MA200_t > MA200_shift_t
  3. Score 高于对应状态阈值
  4. Vol60 可计算且有效

形式化地:

[ EligibleAssets = {i \mid trend_pass_i = true,\ Score_i > threshold_i,\ Vol60_i\ 有效} ]

EligibleAssets 为空,则:


7. 风险资产桶与动态短融底仓

7.1 风险资产原始强度

对每个通过准入的风险资产:

[ Strength_i = \max(Score_i - threshold_i, 0)^{1.5} ]

[ RawWeight_i = \frac{Strength_i}{Vol60_i} ]

其中 threshold_i 为该资产当期实际使用的开仓阈值或持有阈值。

7.2 有效广度

本策略启用有效广度,且启用动态相关性聚类。

参数如下:

静态父簇定义为:

有效广度的计算原则:

7.3 动态短融底仓

先按有效广度设定基础短融底仓:

有效广度短融底仓
0100%
150%
230%
325%
410%
5及以上10%

然后计算合格风险资产的平均超额分数:

[ AvgExcessScore = mean(Score_i - threshold_i),\ i \in EligibleAssets ]

若:

[ AvgExcessScore \le 0.03 ]

则短融底仓额外加 10%

最终:

[ RiskBucketWeight = 1 - ShortBondFloorWeight ]

7.4 组合状态收缩

本策略启用组合状态过滤,仅对 equity 父簇生效。

若以下任一条件满足,则风险资产桶总权重再乘以 0.85

  1. equity 簇广度占比低于 40%
  2. equity 簇当前平均 Vol60 相对其历史基线中位数均值高于 1.20

即:

[ RiskBucketWeight \leftarrow RiskBucketWeight \times 0.85 ]

被收缩掉的仓位回到 511360


8. 风险资产分配规则

8.1 分配模式

当前分配模式为 cluster_risk_budget

分配顺序如下:

  1. 先按 RawWeight 汇总到父簇
  2. 对父簇预算施加簇上限
  3. 再在簇内按 RawWeight 比例分配到单资产

8.2 父簇上限

父簇上限如下:

这里的上限是对整个风险资产桶预算的约束,而不是对全组合总权重的约束。

8.3 单资产默认上限

每个风险资产的默认总组合权重上限为:

[ 40% ]

若某资产超过该上限,则:

  1. 先截断至上限
  2. 超出部分按未封顶资产的 RawWeight 再分配
  3. 若其余风险资产均已封顶或无可分配对象,则剩余仓位转入 511360

9. 过热约束

9.1 过热指标

过热指标使用 BIAS20

历史阈值采用扩展样本,并且只允许使用 t-1 及以前的数据:

样本不足时,当期不启用过热约束。

9.2 一级过热

若某资产当期为一级过热,且目标权重大于当前实际权重,则:

9.3 二级过热

若某资产当期为二级过热,且目标权重大于当前实际权重,则:

9.4 存量仓位处理

当前配置启用了过热存量降温。实际结果上:


10. 月度主调仓执行顺序

月度主调仓按以下顺序生成目标仓位:

  1. 计算全部风险资产的趋势过滤结果
  2. 计算全部风险资产的动量分数
  3. 按开仓/持有两套阈值判定准入
  4. 计算 StrengthRawWeight
  5. 计算有效广度、动态短融底仓和风险资产桶总权重
  6. 应用组合状态收缩
  7. 按父簇预算和簇上限分配风险资产权重
  8. 应用过热约束
  9. 应用单资产上限
  10. 得到最终目标权重

最终目标权重必须满足:


11. 分批建仓与冷却期

11.1 分批建仓适用范围

当前配置启用分批建仓,适用于以下两类新增风险仓位:

“大幅加仓”定义为满足以下任一条件:

11.2 首段建仓

当月度主调仓触发分批建仓时:

11.3 补仓条件

首段建仓完成后,至少等待 3 个交易日,再检查补仓确认条件。

满足以下条件时,于下一交易日开盘补至完整目标权重:

  1. 收盘价高于 MA20
  2. R3M > 0

若任一条件不满足,则继续等待后续交易日再次检查;未补足仓位持续保留在 511360,直到满足条件或被下一次月调仓覆盖。

11.4 冷却期

若某资产因月内风控触发全退出,则该资产进入冷却期。

当前冷却期为 15 个交易日。冷却期内:

冷却期结束后,下一次月度主调仓才可重新启动建仓流程。


12. 月内回撤风控

12.1 适用范围

月内回撤风控仅作用于风险资产:

511360 不参与月内回撤风控。

12.2 持仓周期锚定

每个风险资产独立维护持仓周期。

规则如下:

12.3 回撤定义

对每个持仓中的风险资产,维护:

[ HighSinceEntry_i = 本轮持仓周期内最高收盘价 ]

[ Drawdown_i = \frac{HighSinceEntry_i - Close_i}{HighSinceEntry_i} ]

12.4 基础阈值

资产DD1_baseDD2_base
15960610%15%
5623208%12%
5630208%12%
1592098%12%
5186606%10%

12.5 自适应阈值引擎

当前启用自适应回撤阈值。

风险分数特征:

  1. vol_rank:过去 504 个交易日内 Vol60 的历史分位
  2. trend_weakclip(-R3M / 0.15, 0, 1)
  3. liq_rank:过去 252 个交易日内,20 日成交量中位数的历史分位

风险分数:

[ RiskScore_i = 0.50 \times vol_rank_i + 0.35 \times trend_weak_i + 0.15 \times (1 - liq_rank_i) ]

若部分特征不可得,则按可用特征权重归一化。

阈值乘数:

[ Multiplier_i = clip(1.15 - 0.45 \times RiskScore_i,\ 0.75,\ 1.15) ]

动态阈值:

[ DD1_{dyn,i} = clip(DD1_{base,i} \times Multiplier_i,\ 0.8 \times DD1_{base,i},\ 1.2 \times DD1_{base,i}) ]

[ DD2_{dyn,i} = clip(DD2_{base,i} \times Multiplier_i,\ 0.8 \times DD2_{base,i},\ 1.25 \times DD2_{base,i}) ]

并强制:

[ DD2_{dyn,i} \ge DD1_{dyn,i} + 0.02 ]

数据分层:

实际生效阈值定义为:

12.6 风控动作梯级

当前退出梯级为:

[ [0.67,\ 0.34,\ 0.00] ]

对应三段触发边界:

  1. 第 1 档:Drawdown > DD1_act
  2. 第 2 档:Drawdown > DD_mid,其中

[ DD_mid = DD1_{act} + \frac{DD2_{act} - DD1_{act}}{2} ]

  1. 第 3 档:Drawdown > DD2_act

动作含义:

12.7 早期减仓确认条件

当前配置要求前两档减仓必须至少满足以下任一确认条件:

  1. 收盘价低于 MA20
  2. R3M < 0

若确认条件不满足,则前两档减仓暂不执行;最终退出档不要求该确认条件。

12.8 风控后的资金去向

月内风控卖出释放的仓位统一转入 511360

月内风控只做降档,不做月内自动补回。是否恢复仓位,只能在后续月度主调仓时重新评估。


13. 同日优先级

若同一执行日同时存在:

则月度主调仓优先,原待执行风控动作取消,并在当日收盘后基于新持仓重新进入风控监控。


14. 交易执行口径

14.1 成交价格

14.2 交易成本

买入按:

[ BuyPrice_{effective} = OpenPrice \times (1 + 0.0002) ]

卖出按:

[ SellPrice_{effective} = OpenPrice \times (1 - 0.0002) ]

14.3 整手与尾差

14.4 月度免调仓阈值

月度主调仓对单资产启用免调仓阈值:

[ |TargetWeight - CurrentWeight| < 0.5% ]

满足时该资产当次月调仓不下单。该规则只适用于月度主调仓,不适用于月内风控卖出。

14.5 不可交易处理

若执行日出现无有效开盘价、停牌、涨跌停无法成交或其他不可交易情形,则:


15. 当前正式参数摘要

项目当前值
新开仓分数阈值0.03
持有分数阈值0.015
新开仓趋势缓冲1%
持有趋势缓冲0%
分数幂次1.5
波动率窗口60
动量窗口63 / 126 / 189
风险资产默认单资产上限40%
过热后单资产上限25%
父簇上限equity 55% / gold 45%
组合状态收缩乘数0.85
广度弱阈值附加底仓AvgExcessScore <= 0.03+10%
过热分位阈值90% / 97.5%
过热最少样本252
分批建仓首段比例50%
大幅加仓阈值单资产 +8%风险桶 +12%
补仓等待期3 个交易日
全退后冷却期15 个交易日
月度免调仓阈值0.5%
单边佣金0.03%
单边滑点0.02%
最小交易单位100
← Back to Documentation