用 11 个流动性最好的 ETF(股票 / 利率 / 黄金 / 商品 / 外汇 / 房地产)检验 12 个月时序动量。信号本身有预测力,但做空那条腿在长牛资产上持续付钱; 它真正提供的是坏日子的保护——标普最差 10% 的交易日里,日均跌幅只有 60/40 的 8 分之一。
sign(12 个月动量) 对未来 21 日方向的命中率约
53%,30 组参数全部为正——不是过拟合。左上是三条净值曲线:趋势(红)在 2008 与 2022 明显占优, 但在 2010 年代的 QE 长牛里持续跑输 60/40。左下是风险调整后的排序——多空版本垫底, 只做多显著改善,但仍是 60/40 最好。右下解释了为什么机构仍然会配它: 在最坏的交易日里,它的跌幅比 60/40 小一个数量级。
来源:本文回测。所有图表由 python run.py 一次生成。
信号只用截至当日收盘的数据,权重在次日收盘成交,
再下一个交易日才开始承担收益。这个两天的滞后是刻意的:
tests/test_core.py 用力导数据证明未来信息不会被用到。
来源:本仓库实现,全部参数见 config/base.yml。
灰色区间是三次危机。趋势在 2008 与 2022 明显跑赢, 但把方向反过来(做空)在 2009、2020 的反弹里被反复打——这正是「做空需要会跌的资产」 这句话在数据里的样子。
来源:本文回测(ETF 复权价,月度调仓,次日成交)。
把逐日的 w × r 按资产类别汇总后取年化:
股票与利率腿贡献了绝大部分,外汇与商品几乎没有贡献。这也解释了容量问题——
真正需要换手的资产,恰好是流动性最差的那几个。
来源:本文计算(毛口径)。
滚动 12 个月相关性不是稳定的负数,而是会在正负之间摆动。 对配置团队来说,这意味着它能提供的分散化价值是条件性的——在真正的压力期更可靠, 在平静期反而是拖累。
来源:本文回测,日频收益,滚动 252 个交易日。
把成本假设放大十倍,净年化仍然是正的(基准 3.49%, 十倍成本下约 0.8%)。样本内没有出现「成本吃光策略」的情形, 说明问题从来不在交易费用,而在信号在这个宇宙里的原始期望值。 归零成本倍数:未出现。
来源:本文回测,按资产类别 2–5 bps 单边 × 倍数。
30 组参数(6 个回看窗口 × 5 个目标波动率)全部为正, 区间 0.22–0.62。这是稳健性的最低要求,但它同时也提醒: 这次扫描本身就要计入多重检验,正式对外报告必须声明尝试过多少组。
来源:本文回测,每组都是完整回测。
标普最差 10% 的交易日里,趋势日均 -15.4 bps, 60/40 是 -122.1 bps——差 8 倍; 2022 年趋势 +13.9%,60/40 −16.6%。但最好的日子里它几乎不参与。 买它不是为了多赚,是为了在 60/40 失效的月份不跟着一起掉。
来源:本文回测;条件收益用日均 bps,不用年化。
趋势最深处 -24.5%,60/40 是 -32.2%;但回撤的**形状**不同: 60/40 在 2008 与 2022 各挖一次深坑,趋势的坑更浅、更分散。
来源:本文回测。
按「单资产成交不超过其 ADV 的 5%、ADV 取 20% 分位」估计, ETF 形式的容量只有约 0.5 百万美元, 约束来自 FXY(日元 ETF)。要真正上规模,必须换到期货市场—— 这也是 v2 的核心工作。
来源:本文计算,ADV 为美元成交额。
| 组合 | 年化 | 波动 | Sharpe | 最大回撤 | 两向换手/年 |
|---|---|---|---|---|---|
| 趋势 · 多空 | 3.49% | 9.24% | 0.38 | -24.5% | 3.65× |
| 趋势 · 只做多 | 6.15% | 10.54% | 0.58 | -23.6% | 2.78× |
| 60/40(月度再平衡) | 8.26% | 11.01% | 0.75 | -32.2% | 0.12× |
| 11 资产等权 | 4.77% | 8.92% | 0.53 | -27.8% | 0.18× |
净口径,含成本;样本 2007-03 → 2026-10,策略自 2008-04 起(信号需 252 日预热)。
ETF 不能做空(多空账簿假设由期货实现,无借券成本与保证金约束); 样本不含 1970–2000 的商品与外汇大周期;成本是固定 bps,没有市场冲击模型; 30 组参数未做正式的多重检验调整。
15+ 个市场(ES/NQ、ZN/ZB、GC/SI/HG、CL/NG、ZC、6E/6J/6B/6A), 2001 年起约 25 年,加入真实合约乘数与保证金,明确披露 roll 影响, 并用 ETF 层做对照——直接检验「做空需要会跌的资产」这个假设。