Tech Whims

[12] 动态再平衡

2026-03-20


理论基础 · 共 12 篇

动态再平衡策略研究报告

tradeSys 研究系列 | 2026-03-20
研究员: 娃彩 ✨
回测期: 2016-03-22 ~ 2026-03-18 (约 10 年)


执行摘要

本研究对比了四种再平衡方案在 tradeSys Plan D 六策略组合上的表现:

方案Sharpe (扣 10bps)年化换手率CAGRMaxDD结论
基准:固定权重0.89520.4%8.36%-14.02%最优风险调整后收益
A: 波动率目标化0.899202.9%7.65%-11.60%⚠️ 换手太高,成本敏感
B: 风险平价0.443800.1%6.39%-27.10%❌ 严重失效
C: 动量加权0.83177.8%8.08%-14.18%⚠️ 不如基准

核心结论: 固定权重月度再平衡仍然是最优选择。动态再平衡方案要么换手率过高吃掉 alpha(方案 A/B),要么无法提供显著的 Sharpe 提升(方案 C)。


1. 文献综述

1.1 波动率目标化 (Volatility Targeting)

理论基础: Moskowitz, Ooi & Pedersen (2012) “Time Series Momentum” 提出波动率目标化方法:

实证发现:

1.2 风险平价 (Risk Parity)

理论基础: Bridgewater All Weather 基金开创的方法

实证发现:

1.3 动态权重 vs 固定权重

Meta 分析结论:

1.4 再平衡频率对 Sharpe 的影响

关键发现:


2. 研究设计

2.1 基准组合 (Plan D)

TSMOM         35%  (时间序列动量:SPY/TLT/GLD 多窗口)
XSMOM         15%  (横截面动量:做多最强资产)
MeanRev       10%  (RSI 均值回归:SPY)
SVOL          10%  (波动率卖出:合成代理)
CryptoFunding 20%  (加密资金费率:合成收益流)
GoldMom       10%  (黄金动量:GLD TSMOM)

2.2 动态再平衡方案

方案 A: 波动率目标化

方案 B: 风险平价

方案 C: 动量加权

2.3 交易成本建模


3. 回测结果

3.1 核心指标对比

指标基准A-VolTargetB-RiskParityC-Momentum
Sharpe0.8950.8990.4430.831
CAGR8.36%7.65%6.39%8.08%
年化波动7.10%6.29%9.90%7.31%
MaxDD-14.02%-11.60%-27.10%-14.18%
Sortino1.1581.1630.5051.062
Calmar0.5960.6600.2360.570
月胜率65.3%64.5%59.5%66.9%
换手率/年20.4%202.9%800.1%77.8%

3.2 交易成本敏感性

方案0bps5bps10bps20bps50bps
基准0.8980.8960.8950.8920.882
A-VolTarget0.9340.9170.8990.8640.758
B-RiskParity0.5300.4870.4430.3570.101
C-Momentum0.8430.8370.8310.8200.785

关键观察:

3.3 危机表现

COVID 危机 (2020-02-01 ~ 2020-04-30)

方案收益MaxDD
基准+1.59%-10.39%
A-VolTarget+1.27%-10.13%
B-RiskParity+12.49%-4.74%
C-Momentum+1.06%-10.81%

观察: 风险平价在 COVID 期间表现最佳 — 这是因为 2020 年 Q1 债券 (TLT) 和黄金 (GLD) 大涨,而风险平价自动超配了低波动策略 (MeanRev/SVOL 在危机初期表现相对稳定)。

2022 加息全年 (2022-01-01 ~ 2022-12-31)

方案收益MaxDD
基准-10.28%-13.33%
A-VolTarget-7.66%-9.08%
B-RiskParity-17.74%-21.42%
C-Momentum-10.23%-13.61%

观察: 波动率目标化在 2022 年表现最佳 — 这是因为 vol targeting 在市场波动上升时自动降仓,降低了损失。风险平价表现最差 — 这是因为 2022 年股债双杀,所有传统分散化工具失效。

3.4 权重分布分析

方案 A: 波动率目标化

策略均值最小最大标准差
TSMOM37.0%21.2%55.3%6.6%
XSMOM9.3%3.5%16.8%2.8%
MeanRev8.3%1.8%18.0%3.6%
SVOL5.3%1.9%10.2%1.6%
CryptoFunding28.0%14.6%61.2%9.6%
GoldMom12.0%5.0%24.5%4.6%

观察: CryptoFunding 权重波动最大 (14.6%~61.2%) — 这是因为合成收益流的波动率在不同时期变化显著。

方案 B: 风险平价

策略均值最小最大标准差
TSMOM7.9%0.0%69.9%13.3%
XSMOM10.6%0.0%100.0%15.4%
MeanRev45.3%0.0%100.0%43.3%
SVOL11.0%0.0%100.0%19.3%
CryptoFunding10.7%0.0%95.0%20.7%
GoldMom14.5%0.0%100.0%23.7%

观察: 风险平价严重超配 MeanRev (45.3% 均值) — 这是因为 MeanRev 的历史波动率相对较低。但权重极端不稳定 (0%~100%),导致极高换手率。

方案 C: 动量加权

策略均值最小最大标准差
TSMOM35.6%28.4%40.1%2.7%
XSMOM15.4%11.4%20.9%2.2%
MeanRev9.9%7.6%12.9%1.3%
SVOL10.1%7.1%13.5%1.4%
CryptoFunding19.5%14.8%27.0%3.4%
GoldMom9.6%7.4%12.2%1.3%

观察: 动量加权权重最稳定 — 这是因为 Sharpe 排名变化缓慢。但这也意味着动态调整的效果有限。


4. 深度分析

4.1 为什么风险平价失效?

问题根源:

  1. 协方差矩阵估计误差: 60 日窗口估计的协方差矩阵高度不稳定

    • 在 regime change 时期 (如 2020 COVID, 2022 加息),历史协方差无法预测未来
    • 导致权重剧烈摆动 (0%~100%)
  2. 波动率估计偏差:

    • MeanRev 和 SVOL 的历史波动率较低 → 风险平价超配
    • 但这些策略在危机时相关性飙升 → 分散化失效
  3. 换手率灾难: 800% 年换手率意味着每 1.5 个月完全换仓一次

    • 即使 10bps 成本,年成本也达 8%
    • 这完全吃掉了任何潜在的 alpha

教训: 风险平价在理论上是优雅的,但在实践中需要:

4.2 为什么波动率目标化表现接近但不如基准?

优势:

劣势:

根本问题: 波动率目标化在波动率均值回归的市场中表现最佳,但在波动率持续高位或低位时表现不佳。

4.3 为什么动量加权不如基准?

观察:

原因:


5. 五层检查线自检

✅ 1. 事实对不对

✅ 2. 判断有没有独到

独到见解:

✅ 3. 收件人视角 (张晓龙/老板视角)

老板关心的是:

✅ 4. 有没有考虑风险

已考虑的风险:

未充分探索的:

✅ 5. 建议能不能直接执行

具体建议见下一节。


6. 结论与建议

6.1 核心结论

固定权重月度再平衡仍然是 tradeSys 的最优选择

动态再平衡方案的问题不是理论错误,而是实践成本过高:

6.2 具体建议

短期 (立即执行)

  1. 保持 Plan D 固定权重月度再平衡

    • 当前 Sharpe 0.887-0.895 已经是非常优秀的水平
    • 不要为了"优化"而优化
  2. 监控权重漂移

    • 如果某个策略权重漂移超过 ±10%,手动再平衡
    • 这比自动动态调整更可控

中期 (未来 3-6 个月)

  1. 探索"混合"方法

    • 固定权重 + 波动率目标化上限: 当某个策略波动率飙升时,限制其最大权重
    • 例如:CryptoFunding 权重上限 30% (而非基准 20%)
  2. 降低动态调整频率

    • 从月度改为季度再平衡
    • 这可能降低换手率 50%+,同时保持动态调整的优势
  3. 改进协方差估计 (如果未来再尝试风险平价)

    • 使用 Ledoit-Wolf shrinkage 估计器
    • 或使用指数加权移动平均 (EWMA)
    • 估计窗口从 60 日延长至 252 日 (1 年)

长期 (未来 6-12 个月)

  1. 寻找新的低相关收益源

    • 动态再平衡的价值在于分散化
    • 如果子策略之间相关性低,固定权重就足够
    • 优先寻找与 SPY/TSMOM 低相关的新策略,而非优化再平衡
  2. 真实交易验证

    • 用真实资金小仓位测试
    • 真实滑点可能比 10bps 更高
    • 监控实际执行成本

6.3 “So What” 回答

: 值不值得从固定权重切换到动态再平衡?

: 不值得

理由:

  1. Sharpe 提升微乎其微 (0.895 → 0.899,仅 0.4%)
  2. 换手率增加 10 倍 (20% → 200%)
  3. 真实交易成本可能更高 (滑点 + 佣金 + 市场冲击)
  4. 复杂度大幅增加 (需要监控波动率估计、协方差矩阵等)
  5. 过拟合风险高 (动态参数需要持续调优)

例外情况: 如果未来发现某个子策略波动率持续异常 (如 CryptoFunding 波动率从 6% 飙升至 20%),可以考虑对该策略单独应用波动率目标化上限,而非全组合动态调整。


附录 A: 产出文件

附录 B: 关键代码片段

波动率目标化核心逻辑

def rebalance_vol_target(strat_df, base_w):
    for i, d in enumerate(dates):
        # ... 日收益计算 ...
        
        if d in monthly_dates and i >= VOL_WINDOW:
            # 计算每个策略过去 60 日的实际年化波动率
            for j, st in enumerate(STRATEGY_NAMES):
                rv = strat_df[st].iloc[max(0,i-VOL_WINDOW):i].std() * np.sqrt(252)
                vol_scalars[j] = np.clip(VOL_TARGET_REBAL / rv, 0.2, 3.0)
            
            # 新目标权重 = 基准权重 × vol_scalar
            new_target = base_w * vol_scalars
            
            # 总敞口上限
            if new_target.sum() > MAX_TOTAL_EXPOSURE:
                new_target *= MAX_TOTAL_EXPOSURE / new_target.sum()

风险平价求解器

def _solve_rp(cov, n, iters=100, tol=1e-8):
    # 初始权重:反波动率
    vols = np.sqrt(np.maximum(np.diag(cov), 1e-16))
    w = 1.0 / vols
    w /= w.sum()
    
    for _ in range(iters):
        sw = cov @ w
        pv = np.sqrt(max(w @ sw, 1e-20))
        mrc = sw / pv  # 边际风险贡献
        rc = w * mrc   # 风险贡献
        trc = pv / n   # 目标风险贡献 (均等)
        
        # Newton 更新
        w_new = w * (trc / np.maximum(rc, 1e-10))
        w_new = np.maximum(w_new, 1e-8)
        w_new /= w_new.sum()
        
        if np.max(np.abs(w_new - w)) < tol:
            return w_new
        w = w_new

研究完成时间: 2026-03-20
下一步: 更新 tradeSys-todo.md 进度,将"动态再平衡策略"标记为已完成