本系统是一套宏观驱动 + 动量选股的 ETF 量化轮动策略,核心思路是: 先判断市场处于牛市还是熊市,再决定进攻或防守。 牛市期主动轮动进攻性 ETF 追求超额收益,熊市期切换至防守资产降低回撤。 所有信号均基于前一日收盘数据生成(无前视偏差),周末换仓,次日开盘执行。
系统每周末根据沪深300 ETF(sh.510300)的价格状态判断当前市场所处环境,决定下周是进攻还是防守。
收盘/MA260 − 1 > gap_in(3%) AND 60日年化波动率 > vol_in(16%) AND 收盘 > MA20(entry_ma 入场质检)
三重确认:年线发散 + 波动率扩张 + 站上短期均线,防回调途中误入
收盘/MA260 − 1 < gap_out(1.5%) OR 60日年化波动率 < vol_out(14%) AND 收盘 < MA120(price_ma 价格确认)
price_ma=120 防止牛市 vol 压缩假出场(实测 +1pp/Sh+0.07)
为什么用沪深300?沪深300是ETF池的宏观锚点,其年线(MA260)代表市场长期趋势中枢; gap 指价格偏离年线的幅度,vol60 反映市场活跃度。两者组合经 WF 4/4 验证。
切换滞后保护(gap_in/gap_out 不对称):进牛要求年线偏差>3%,退熊只需<1.5%, 设计上"进攻慢、撤退快";price_ma=120 额外防止牛市 vol 收窄时的假出场。
牛市期对全部候选池 ETF 逐一做选股,每周末确定下周持仓。
Step 1:入场筛选(双均线)close[t] > MA60[t] — 收盘价高于60日均线(大趋势向上) MA10[t] > MA60[t] — 快线上穿慢线(动量确认)
所有指标取月末最后交易日数据;同日生成信号,次月第一个交易日开盘执行。
Step 2:动量评分排序通过筛选的 ETF 按以下方式评分,取前 top_k = 3 只。当前使用 —:
| 方法 | 公式 | 验证状态 |
|---|---|---|
| ma_ratio MA比值 ★当前 |
MA10[t] / MA60[t] − 1快线超出慢线幅度;与入场条件同源,换手率低,Sharpe 各时段最优 |
★ 当前选用 Sharpe 最优 |
| ret_60d | close[t] / close[t−60] − 1过去60日涨幅,直觉易懂;年化更高但 Sharpe 低于 ma_ratio |
年化略高 Sharpe 次之 |
| multi_period | ret_20d×0.25 + ret_60d×0.35 + ret_120d×0.40多周期加权;日频下历史最优,周频下各项均不如 ma_ratio |
日频备选 |
选出 top_k 只 ETF 后,按相对 ATR 倒数分配权重——波动越大仓位越小,每只 ETF 贡献相同的风险暴露:
相对ATR = ATR14 / close — 每元价格承担的波动(消除高价偏差) 权重_i = (1/相对ATR_i) / Σ(1/相对ATR_j) — 各 ETF 归一化
vs 绝对ATR:高价ETF的绝对波幅大,但并不代表更高风险;相对ATR消除价格偏差,是更严谨的风险平价。
熊市期不持有高波动的进攻性 ETF,转而持有通过同样双均线筛选的低风险资产。 池子中天然具有防守属性的品种会在熊市期自动浮出:
实际防守仓位由当时双均线筛选决定,不固定为以上四种;熊市期 vol_target 不限制(满仓防守资产)。
根据组合近期波动率自动缩放总仓位,在高波动环境中主动降仓:
滚动波动率 = std(日收益, 20天) × √252 — 年化 仓位系数 = min(1.0, vol_target / 滚动波动率) 实际持仓 = 总资产 × 仓位系数 × ETF权重
vol_target = 20%;当市场波动率 < 20% 时满仓,>20% 时按比例降仓,最多降至约 50%。 这就是"持仓率"显示值可能低于 100% 的原因。
跟踪止损(Trail Stop)某只 ETF 从持仓期间最高价回撤超过 18%,触发清仓信号,次日开盘卖出。 止损只出不入,需重新满足入场条件才会再纳入。月频策略下此功能很少触发,主要作为极端行情安全阀。
整股对齐买入数量取整至 100 股整数倍(A股手),不足 100 股的差量不操作,避免碎股。 再平衡阈值内(默认 3%)的权重微调同样跳过,减少无谓交易。
参数从活跃配置实时读取,若已切换策略则自动更新。
① 牛熊判断参数(Regime)| 参数 | 当前值 | 含义 |
|---|---|---|
| 加载中… | ||
| 参数 | 当前值 | 含义 |
|---|---|---|
| 加载中… | ||
| 参数 | 当前值 | 含义 |
|---|---|---|
| 加载中… | ||
ETF 无印花税,仅收佣金:max(成交额 × 费率, 最低佣金)
覆盖 A 股全板块 + 港股 + 跨境 ETF,牛市期从中动量轮动;熊市期防守资产同样来自此池。 国债 ETF 常驻防守腿,黄金/美股/港股在熊市期也可能被选入。
⚠️ 跨境ETF在情绪高涨时场内溢价可能达3~10%,实盘系统会实时显示溢价警告(>2%建议等待)
| 术语 | 解释 |
|---|---|
| 均线 MA(N) | 过去 N 个交易日收盘价的算术平均值,用于衡量趋势方向。MA10 = 2 周趋势,MA60 = 季度趋势。 |
| ATR | Average True Range,14日平均真实波幅,衡量近期价格波动的绝对幅度(单位:元/股)。 |
| 相对ATR | ATR ÷ 收盘价,消除价格高低的影响,代表"每投入1元钱平均承担多少波动",用于公平比较不同价位ETF的风险。 |
| 风险平价 | 每只持仓 ETF 对组合风险的贡献量相同,波动大的少配、波动小的多配。目标是分散化风险而非分散化金额。 |
| 波动率目标 | 当组合实际波动率超过目标值(20%)时,按比例缩减总仓位,市场越动荡持仓越少,降低极端行情下的回撤。 |
| 持仓率 | 当前各 ETF 权重之和,即总资产中投入市场的比例。波动率目标生效时可能低于 100%,剩余为现金。 |
| 跟踪止损 | 从持仓期内最高价回撤超过阈值(18%)即触发卖出。"跟踪"指止损线随价格上涨而上移,锁定浮盈。 |
| 月频换仓 | 每月最后一个交易日收盘后计算信号,下月第一个交易日开盘执行。减少过度交易,降低手续费和换手。 |
| 前视偏差 | 回测中"提前知道未来数据"的错误。本系统所有指标只使用信号日前一日(或月末当日)数据,无前视偏差。 |
| 年化收益 | 将策略总收益折算成"每年复合增长率",便于跨期对比。公式:(1+总收益)^(365/天数)−1。 |
| 最大回撤(MaxDD) | 历史上从某个净值高点到随后低点的最大跌幅百分比,衡量策略最坏情况下能亏多少。 |
| 夏普比率 | 超额收益(收益−无风险利率)除以收益的标准差,衡量"每承受1单位风险获得多少收益"。>1 为良好,>2 优秀。 |
| 卡玛比率(Calmar) | 年化收益 ÷ 最大回撤绝对值,衡量"每承受1单位最大亏损获得多少年化收益",越高越好。 |
| Walk-Forward(WF) | 将历史数据按时间顺序分割为多个"训练期+测试期"窗口滚动验证,4/4 表示4个窗口全部盈利,防止过拟合。 |
| T+1 执行 | 信号在 T 日收盘后生成,T+1 日(下一个交易日)开盘执行买卖。系统显示的"执行日"即为 T+1。 |