K8 是我自研的窄基 ETF 动量轮动策略(283 只窄基池 + 双闸门择时 + mom120 选股 + MA60 止损)。这两天把它从数据源头、逐笔成交一路验证到 768 组参数的 walk-forward 滚动检验,结论有好有坏:策略结构是有效的,但我们过去引用的收益率高估了将近一倍。 把最终方案和踩过的坑一次汇总在这里。😅
一、最终方案:K8 v2 + 空仓期防御
CODE
+----------------+------------------------------------------------------+
| 模块 | 规则 |
+----------------+------------------------------------------------------+
| 标的池 | 窄基 ETF 283 只(剔除 61 只宽基、80 只跨境) |
+----------------+------------------------------------------------------+
| 择时(双闸门) | 每 10 交易日检查:闸门A=池内 mom120 中位数>0;闸门B |
| | =mom120 前 20 名的 mom20 中位数>0;两者都成立才允许 |
| | 持仓 |
+----------------+------------------------------------------------------+
| 选股 | mom120 降序取 Top4,每个主题最多 1 只;买入需收盘价 |
| | > MA40 |
+----------------+------------------------------------------------------+
| 权重 | vol20 倒数加权,单只上限 40% |
+----------------+------------------------------------------------------+
| 止损 | 收盘跌破 MA60 清仓(唯一止损) |
+----------------+------------------------------------------------------+
| 调仓 | 每 10 交易日,偏离超过 25% 才动手 |
+----------------+------------------------------------------------------+
| 空仓期 | 债券 60% + 黄金 20%(收盘>MA120 才配)+ 超跌阶梯 20% |
+----------------+------------------------------------------------------+
| 急变信号 | 空仓时沪深300 单日涨幅 ≥3% → 当日收盘立即满仓 |
+----------------+------------------------------------------------------+
| 成交与成本 | 次日开盘成交,2.5bp/边 |
+----------------+------------------------------------------------------+二、核心结论:同一个策略,口径不同差 9 个点
先说最重要的发现。K8 每 10 个交易日调仓一次,但「从哪天开始数」是任意设定的:把调仓日平移 0~9 天,年化就在 +6.55% ~ +19.53% 之间摆动,均值只有 +10.28%。我们过去引用的 19.5%,恰好是 10 个相位里最好的那一个。
CODE
+----------------------+------------------------+------------------------+
| 配置 | 单条路径(历史口径) | 相位均值(诚实口径) |
+----------------------+------------------------+------------------------+
| 纯 K8 | +19.53% / 回撤 −18.9% | +10.28% / 回撤 −24.2% |
+----------------------+------------------------+------------------------+
| +急变信号 | +20.52% / −17.6% | +11.57% / −22.2% |
+----------------------+------------------------+------------------------+
| +急变+空仓期防御 | +22.37% / −15.3% | +12.10% / −23.4% |
+----------------------+------------------------+------------------------+
| +5 份错峰调仓 | +14.35% / −15.9% | +12.69% / −16.4% |
+----------------------+------------------------+------------------------+实盘里你无法挑选相位(上线日期是随机的),所以必须按相位平均来预期收益。而「5 份错峰调仓」(资金分 5 份、调仓日错开 2 天)能把相位不确定性从标准差 3.83 点压到 1.30 点,收益水平不变——这是目前唯一既稳健又可执行的解法。💡
三、踩过的坑(按杀伤力排序)
CODE
+----+------------------+--------------------------------------------------+
| # | 坑 | 实测结论 |
+----+------------------+--------------------------------------------------+
| 1 | 调仓日历相位 | 调仓日平移 0~9 天,年化在 6.6%~19.5% 摆动,均值 |
| | | 只有 10.3%。我们过去引用的 19.5% 恰好是最好的那 |
| | | 个相位 → 用 5 份错峰调仓解决(标准差 3.83 点 → 1 |
| | | .30 点) |
+----+------------------+--------------------------------------------------+
| 2 | 参数寻优 | 768 组参数滚动检验:训练集 Sharpe 与测试集 Sharp |
| | | e 相关系数 ≈ 0;全样本最优参数样本外反而最差(+2 |
| | | .85%)→ 不要再调参 |
+----+------------------+--------------------------------------------------+
| 3 | 存活偏差 | 池子取自当前在售名单,已清盘 ETF 缺失 → 系统性高 |
| | | 估,估计 1~3 点 |
+----+------------------+--------------------------------------------------+
| 4 | 数据不复权 | 新浪日线是不复权价,17 处份额折算被当成暴跌;修 |
| | | 正后只差 0.10 点,但必须知情 |
+----+------------------+--------------------------------------------------+
| 5 | 组合级移动止损 | 净值回撤就清仓+冷却 → 年化直接打到 +2.9%,8.7 年 |
| | | 只成交 40 笔,灾难 |
+----+------------------+--------------------------------------------------+
| 6 | 『空仓期太长』 | 63% 的空仓是在躲 2018 与 2022 的下跌;放宽闸门全 |
| | | 是负贡献(−1.1 ~ −6.5 点) |
+----+------------------+--------------------------------------------------+
| 7 | 防御池动量轮动 | 在债券/黄金/红利/QDII 之间做轮动 → 回撤 −47%~−52 |
| | | %,防御标签 ≠ 低风险,只有债券真保护 |
+----+------------------+--------------------------------------------------+
| 8 | 并入 LOF | 年化 −6.5 点;指数型 LOF 场内日成交额中位仅 8.9 |
| | | 万元,ETF 窄基是 0.6 亿,差 700 倍 |
+----+------------------+--------------------------------------------------+
| 9 | 扩展商品 | 原油/白银标的全是 LOF → 年化 −0.8 点,回撤还多 2 |
| | | 点 |
+----+------------------+--------------------------------------------------+
| 10 | 每主题 2 只 | Calmar 看着更好,其实是相位运气;相位平均后 −1.4 |
| | | 9 点,已撤回 |
+----+------------------+--------------------------------------------------+
| 11 | 中证500 成分股移 | ETF 选行业+行业内选市值最大 2 只 → −4.03%,比直 |
| | 植 | 接选动量 Top4 差 24 点;龙头溢价在 A 股不成立 |
+----+------------------+--------------------------------------------------+
| 12 | 数据接口 | 东财全域名被拦;腾讯前复权是加减法,会让历史价穿 |
| | | 越 0(19 只失真);新浪行业分类只覆盖 60% |
+----+------------------+--------------------------------------------------+
| 13 | 前视偏差 | 信号与成交同用当日收盘。修掉引擎现金透支 bug 后 |
| | | ,次日开盘 19.53% vs 当日 19.22%,差异≈0,不是主 |
| | | 要偏差 |
+----+------------------+--------------------------------------------------+
| 14 | 实盘口径差异 | 回测偏离阈值 25%、实盘 3% → 实盘换手更高,收益要 |
| | | 再打折 |
+----+------------------+--------------------------------------------------+四、实盘预期与落地
- 诚实预期:年化 8%~11%,最大回撤 −25%~−35%(相位均值 12.10%,再扣掉存活偏差 1~3 点、实盘高换手 0.3~1 点)。
- 落地形态:K8 + 急变信号 + 空仓期防御 + 5 份错峰。QMT 侧合并后最多约 20 个持仓(同名 ETF 权重相加),每 2 个交易日有一份在调仓。
- 别再做的事:调参、换日历锚点、加 LOF 或商品、用组合级止损。

💬 评论 (1)