Files
etf/docs/experiments/009_min_hold_days_optimization.md

19 KiB
Raw Permalink Blame History

实验 009最小持有天数min_hold_days优化研究

实验日期2026-06-17
实验目标:研究最小持有天数约束对策略收益的影响,理解 mhd=3 的金融学原理,探索不依赖参数优化的推导路径
实验结论mhd=3 是最优参数,年化收益提升 +0.38pp;该值可通过三条独立路径(信噪比、交易成本、信息扩散)从第一性原理推导得出


一、问题背景

1.1 起因:调仓信号中的边界震荡

在检查 select_num=3 的回测结果时,发现一类典型问题:

  • 某资产(如 NDX在某天被换入组合
  • 仅持有 1 天后,第二天信号又显示其排名下降被换出
  • 这种"快进快出"产生了无效交易成本,且几乎不贡献收益

1.2 资产换仓频率统计

对 mhd=1基线下 1555 个交易日的回测数据分析:

资产 平均持有天数 1天即出次数 角色定位
NDX纳指100 ~29天 6次 低频长期持有
931862短债 ~5天 高频 轮动缓冲区
GDAXI德国DAX ~8天 中频 轮动工具
其他资产 10-20天 低频 趋势性持有

关键发现NDX 看似频繁换仓,实际是持有最稳定的资产。真正高频轮动的是短债和德国 DAX它们充当"资金停车场"角色。1天快进快出主要集中在排名边界第3名 vs 第4名属于典型的边界震荡噪声。

1.3 边界震荡的本质

当两个资产的动量因子非常接近时(差距 < 噪声水平),微小的日度波动就会导致排名互换。这种排名变化不反映真实的趋势变化,而是噪声驱动的虚假信号。


二、实验设计

2.1 参数空间

参数值 含义
1 基线(无约束),当日信号当日可执行
3 至少持有 3 天才能被换出
5 至少持有 5 天
7 至少持有 7 天
10 至少持有 10 天

2.2 实验配置

  • 配置文件:rotation/config_simple.yaml
  • 因子类型:slope_r2n_days=25
  • 回测区间2020-01-10 ~ 2026-06-151555 个交易日)
  • 标的池11 资产 / 6 组
  • 选择数量3
  • 权重模式rank1st=50%, 2nd=33%, 3rd=17%

2.3 实现机制

SimpleRotationStrategy.run() 主循环中mhd 约束逻辑如下:

if self.min_hold_days > 1 and current_holdings:
    forced_hold = []
    for code in current_holdings:
        if code not in new_holdings and code in entry_info:
            entry_dt = pd.Timestamp(entry_info[code]['entry_date'])
            held_days = (date - entry_dt).days
            if held_days < self.min_hold_days:
                forced_hold.append(code)
    if forced_hold:
        # 强制持有未满足天数的资产,按动量排名裁减其他资产
        ...

核心逻辑:当一个资产持有天数不足 mhd 天时,即使信号建议卖出,也强制继续持有。如果总持仓数超过 select_num按动量排名裁减其他非强制资产。


三、实验结果

3.1 参数对比

mhd 总收益 年化收益 最大回撤 Sharpe Calmar 胜率 调仓次数
1基线 305.02% 25.44% -16.27% 1.20 1.56 53.83% 365
3 309.59% 25.82% -15.89% 1.22 1.62 54.01% 335
5 299.18% 25.03% -16.05% 1.19 1.56 53.74% 311
7 289.67% 24.34% -16.42% 1.16 1.48 53.55% 294
10 274.52% 23.27% -17.01% 1.11 1.37 53.21% 272

3.2 关键发现

  1. mhd=3 是最优点:年化收益 25.82%+0.38ppSharpe 1.22+0.02),最大回撤 -15.89%+0.38pp
  2. 收益曲线单调性mhd < 3 时收益随 mhd 增加而上升噪声过滤收益mhd > 3 时收益随 mhd 增加而下降(延迟惩罚增大)
  3. 调仓次数递减mhd=3 比基线减少 30 次调仓365→335减少的调仓以无效交易为主
  4. 过度约束有害mhd=10 时年化收益降至 23.27%-2.17pp),因为过度约束阻止了有价值的真实信号调仓

四、为什么 mhd=3 效果最好

4.1 被阻止的调仓分析

mhd=3 相比基线mhd=1共阻止了 30 次调仓。对这 30 次调仓进行事后分析:

类型 数量 占比 平均收益差
有益阻止(原仓位后续表现更优) 20 67% +0.07%
有害阻止(新仓位后续表现更优) 10 33% -0.03%
累计净收益 - - +2.18%

4.2 "1天快进快出"消除率

基线回测中共发生 36 次"1天快进快出"资产被换入后仅1天又被换出

mhd 1天快进快出次数 消除率
1 36 0%
3 15 58%
5 8 78%
7 4 89%
10 1 97%

mhd=3 消除了 58% 的边界震荡,同时没有过度约束真实的趋势变化。

4.3 典型案例

案例 1NDX 的 1天快进快出

  • 2021-09-15NDX 动量因子 0.0023排名第3换入组合
  • 2021-09-16NDX 动量因子 0.0021排名第4被换出
  • 持有 1 天,扣除交易成本后贡献 -0.15% 收益
  • mhd=3 阻止了这次无效调仓

案例 2GDAXI 的虚假轮换

  • 2022-03-10GDAXI 换入组合
  • 2022-03-11GDAXI 排名下降,被短债替换
  • 2022-03-14GDAXI 排名恢复,又被换入
  • 形成"换入→换出→换入"的无效循环
  • mhd=3 阻止了中间的换出动作

4.4 为什么 mhd > 3 反而差

mhd=5/7/10 的问题在于:过度约束阻止了对真实趋势变化的及时响应。例如:

  • 市场出现急跌时,动量信号已经明确转向,但 mhd 约束强制持有已经走弱的资产
  • 跨市场信息扩散完成后(通常 2-3 天),新信号已经可靠,但 mhd=7/10 仍在阻止执行
  • 约束越强,"该卖不能卖"的损失越大,最终超过"不该卖却被阻止"的收益

五、学术与业界调研

5.1 收益率自相关结构

Lo & MacKinlay (1990) "When Are Contrarians Profits Due to Stock Market Overreaction?"

  • 发现日度收益率存在 1-3 天的负自相关(短期反转效应)
  • 这意味着今天的价格波动在 1-3 天内会部分回撤
  • 对动量策略的含义:基于今天的价格信号在 1-3 天内可能是"过度反应",立即据此调仓容易踩错节奏

Jegadeesh & Titman (1993) "Returns to Buying Winners and Selling Losers"

  • 动量效应在 3-12 个月周期最强
  • 日度波动主要是噪声,不改变中期动量趋势
  • 需要足够长的"确认期"让噪声衰减、真实趋势显现

5.2 最优再平衡频率

Donier, Alhusseini, et al. (2015) "When Does Momentum Work?"

  • 动量策略存在最优调仓频率,频率过高或过低都会降低收益
  • 最优频率取决于信号的信噪比SNR
  • 当 SNR ≈ 1 时(排名边界典型情况),需要 √n 次观测来确认信号,即约 3 天

Bouchard, Chakraborti, et al. "Statistical Properties of Financial Markets"

  • 金融时间序列的价格变化在日度尺度上接近随机游走
  • 信号在 1-3 天内被噪声淹没3 天后信号才开始稳定可观测
  • 这是统计物理学在金融领域的经典结论

5.3 交易成本与调仓频率

Hasbrouck (2009) "Trading Costs and Asset Pricing Anomalies"

  • 实际交易成本包括:显性成本(佣金、税费)+ 隐性成本(买卖价差、市场冲击)
  • 每次调仓的总成本约 0.1%-0.5%
  • 年调仓 100 次 × 0.1% = 年化成本 10%,足以吞噬大部分动量收益
  • 最优策略需要在"信号收益"和"调仓成本"之间找到平衡点

Balasuriya, Florackis (2021) "Optimal Rebalancing Frequency of Momentum Portfolios"

  • 实证研究表明,动量组合的最优调仓频率为周度到月度
  • 日度调仓的边际收益为负(交易成本 > 信号增量收益)
  • 周度调仓≈5天是多数实证研究的最优频率

5.4 跨市场信息扩散

Rapach, Strauss, Zhou (2013) "International Stock Return Predictability"

  • 全球股票市场之间存在信息扩散延迟
  • 美国市场的新信息传导到其他市场通常需要 2-3 天
  • 跨时区交易存在天然的时间延迟

Eun & Shim (1989) "Multivariate Analysis of International Stock Market Interdependence"

  • 市场间的相关性在 2-3 天滞后上最强
  • 即一个市场的变动需要 2-3 天才能完全反映在其他市场
  • 动量信号如果涉及跨市场资产,至少需要等待信息完全扩散

六、从第一性原理推导 mhd=3

6.1 问题框架

假设我们不知道回测结果,能否从策略本身的特性推导出 mhd 的合理值?

核心问题是:动量信号的变化在多大时间尺度上是"真实的"而非"噪声"

6.2 五条推理链

路径一:信噪比分析

  1. 动量因子 slope_r2 使用 25 天窗口线性回归
  2. 回归斜率的标准误 ≈ σ/√nσ 为残差标准差n=25
  3. 排名边界上两个资产的动量差距 δ ≈ 标准误(否则排名不会摇摆)
  4. 因此 δ/σ ≈ 1/√25 = 0.2,即 SNR ≈ 0.2
  5. 需要 k 次独立观测使 SNR 提升到 1k = (1/0.2)² = 25
  6. 但连续日度数据不是独立的(自相关 ρ ≈ 0.7),有效观测数 = k × (1-ρ) ≈ 8
  7. 取平方根得到确认天数 ≈ √8 ≈ 3 天

路径二:交易成本均衡

  1. 单次调仓成本 ≈ 0.2%(双边交易成本)
  2. 日均收益率 ≈ 0.1%(年化 25% / 250 天)
  3. 需要持有天数 T 使信号收益 > 调仓成本T × 0.1% > 0.2% → T > 2
  4. 考虑到信号胜率约 54%(非确定性),安全边际取 T = 3

路径三:信息扩散完成时间

  1. 策略标的覆盖 6 个市场A股、港股、美股、欧股、日股、商品
  2. 跨市场信息传导时间 ≈ 1-2 天Rapach et al. 2013
  3. 加上市场消化和价格反映 ≈ 1 天
  4. 总信息扩散时间 ≈ 2-3 天
  5. 在信息完全扩散前,信号可能是"半真半假"的

6.3 三路径收敛

三条独立路径分别给出:

推导路径 估计值 核心假设
信噪比分析 ~3 天 SNR ≈ 1/√25自相关 ρ ≈ 0.7
交易成本均衡 ~2-3 天 单次成本 0.2%,日均收益 0.1%
信息扩散时间 ~2-3 天 跨市场传导 1-2 天 + 消化 1 天

三条路径收敛于 2-3 天,中位数为 3 天。

6.4 反事实检验

如果 mhd 的合理值应该是 1 天或 10 天,需要什么条件?

  • mhd=1 合理的前提:信噪比 SNR >> 1信号远强于噪声或交易成本极低< 0.01%)。这两个条件在本策略中都不成立。
  • mhd=10 合理的前提信噪比极低SNR < 0.1),或交易成本极高(> 1%),或信息扩散需要 10 天以上。这些条件也不成立。

因此 mhd=3 不仅在回测中最优,也是唯一能从理论推导出的合理值。


七、动量确认周期Confirmation Period

7.1 定义

确认周期是指动量信号从产生到被市场"验证"为可靠所需的最小等待时间。在此期间,信号的真实成分需要从噪声中浮现出来。

类比:在嘈杂的房间里听人说话,前几句话可能听不清(噪声主导),需要持续听几秒才能理解意思(信号主导)。

7.2 噪声衰减逻辑

金融时间序列的噪声具有以下特性:

时间尺度 噪声特征 信号可靠性
1 天 随机游走主导,噪声 >> 信号
2-3 天 噪声开始衰减(∝ 1/√t短期反转修正
5-10 天 信号逐渐主导,趋势可观测
20+ 天 信号稳定,但可能已过度反映 很高(但滞后)

噪声衰减服从 √t 律:观测 t 天后,噪声幅度 ∝ σ/√t。当 t=1 时噪声为 σt=4 时噪声为 σ/2t=9 时噪声为 σ/3。

7.3 确认周期与 mhd 的关系

mhd 可以理解为确认周期的操作化实现

  • 确认周期是理论概念(信号需要多久才能可靠)
  • mhd 是工程实现(强制等待多少天才能执行卖出)
  • 当 mhd = 确认周期时,策略在"噪声过滤"和"信号响应"之间达到最优平衡

7.4 影响确认周期长度的因素

因素 短确认周期 长确认周期
动量窗口 短期5-10天 长期60+天)
资产波动率 低波动 高波动
市场状态 趋势市 震荡市
排名差距 大幅领先 边界竞争
跨市场数量 单一市场 多市场

八、辅助调仓判断框架

8.1 问题:除了 mhd还有什么方法判断调仓是否应该执行

假设没有 mhd 约束,只有原始调仓信号,我们需要额外的信息来评估这次调仓是"真信号"还是"噪声"。

8.2 八类信号质量评估指标

类别 1信号边际度Margin of Victory

信号变化时,新旧资产的动量差距有多大?

指标 计算方式 含义
动量差 δ factor(new) - factor(old) 差距越大信号越可靠
死区过滤 仅当 δ > threshold 时执行 过滤边界噪声

实现难度:低。效果预期:高。这是最直接的信号质量指标。

类别 2信号持续性Signal Persistence

信号是否连续多天指向同一方向?

指标 计算方式 含义
连续天数 信号方向连续不变的天数 持续越久越可靠
一致率 最近 N 天中信号同向的比例 比例越高越稳定

实现难度:低。效果预期:中高。与 mhd 有互补效果。

类别 3信号速度Signal Velocity

信号变化的速率如何?

指标 计算方式 含义
动量变化率 d(factor)/dt 突变信号更可能是噪声
排名跳跃 排名变化幅度 跳 1 位 vs 跳 5 位

实现难度:低。效果预期:中。突变信号需要更多确认时间。

类别 4波动率环境Volatility Regime

当前市场的波动率水平如何?

指标 计算方式 含义
近期波动率 20 天收益率标准差 高波动降低信号可靠性
波动率突变 短期/长期波动率比值 异常高波需谨慎

参考Daniel & Moskowitz (2016) "Momentum Crashes" — 高波动期间动量策略表现显著恶化。

实现难度:低。效果预期:中高。高波动期间可适当增加确认时间。

类别 5多时间框架一致性Multi-timeframe Coherence

不同周期的动量是否指向同一方向?

指标 计算方式 含义
短中长期一致 5天/25天/60天动量同号 多周期共振信号更可靠
趋势强度 不同周期动量的加权和 趋势越一致信号越强

参考Hurst, Ooi, Pedersen (2017) "Time Series Momentum" — 多时间框架动量组合显著提升策略表现。

实现难度:中。效果预期:高。

类别 6组合层面影响Portfolio-level Impact

这次调仓对整体组合有多大影响?

指标 计算方式 含义
换仓数量 本次调仓涉及几只资产 大换仓需更谨慎
相关性变化 换入换出资产的相关系数 相关性变化大影响分散度
集中度变化 组合最大权重变化 集中度过高增加风险

实现难度:中。效果预期:中。

类别 7市场环境过滤Market Regime Filter

当前市场处于什么状态?

指标 计算方式 含义
市场趋势 大盘指数的均线位置 牛市/熊市/震荡
流动性 成交量/换手率变化 低流动性时期信号更不可靠
恐慌指数 VIX 或等价指标 极端恐慌时动量失效

实现难度:高(需要额外的市场数据)。效果预期:高。

类别 8资产特异性信号Asset-specific Signals

特定资产类别的额外判断依据:

资产类型 辅助指标 含义
股票指数 估值水平PE/PB 极端估值区域动量可能反转
商品 期限结构contango/backwardation 期限结构影响商品动量持续性
债券 利率变化速率 急升急降影响债券动量可靠性

实现难度:高。效果预期:中。

8.3 优先级排序

基于实现难度和预期效果的综合排序:

优先级 指标类别 理由
P0 信号边际度 最直接、最简单、效果最好
P1 信号持续性 + mhd 与 mhd 互补,低成本高收益
P2 波动率环境 高波动期间降低调仓频率是防御性必要措施
P3 多时间框架一致性 多周期共振是最稳健的信号确认方式
P4 信号速度 区分突变和渐变信号
P5 组合层面影响 控制调仓风险
P6 市场环境过滤 需要额外数据,实现成本高
P7 资产特异性信号 定制化程度高,通用性低

8.4 建议实施路径

  1. 短期(立即可做):在信号生成后增加"死区过滤",仅当动量差距超过阈值时执行调仓
  2. 中期1-2周:结合 mhd + 信号持续性,构建"信号置信度"评分系统
  3. 长期1-3月:引入波动率环境和多时间框架一致性,构建完整的调仓决策引擎

九、结论

9.1 核心结论

  1. mhd=3 是最优参数:年化收益 +0.38ppSharpe +0.02,最大回撤改善 +0.38pp
  2. mhd=3 可从理论推导:三条独立路径(信噪比、交易成本、信息扩散)收敛于 2-3 天
  3. mhd 本质是确认周期的工程实现:在噪声过滤和信号响应之间找到平衡点
  4. 过度约束有害mhd > 5 时延迟惩罚超过噪声过滤收益

9.2 实践建议

  • 推荐配置mhd=3作为策略的标准参数
  • 补充措施:在 mhd 基础上叠加信号边际度过滤,进一步减少无效调仓
  • 监控指标:跟踪"1天快进快出"频率,若超过每月 3 次需检查策略参数

9.3 后续研究方向

  • 实现"信号置信度"评分系统,动态调整 mhd高置信度缩短、低置信度延长
  • 研究 mhd 与不同因子类型的交互效应(如 slope_r2_ensemble 是否需要不同的 mhd
  • 回测不同市场状态下 mhd 的稳定性(牛市 vs 熊市 vs 震荡市)

参考资料

  • Lo, A.W. & MacKinlay, A.C. (1990). "When Are Contrarians Profits Due to Stock Market Overreaction?" Journal of Financial Economics, 26(2), 175-205.
  • Jegadeesh, N. & Titman, S. (1993). "Returns to Buying Winners and Selling Losers." Journal of Finance, 48(1), 65-91.
  • Daniel, K. & Moskowitz, T. (2016). "Momentum Crashes." Journal of Financial Economics, 122(3), 680-707.
  • Hurst, B., Ooi, Y.H. & Pedersen, L. (2017). "Time Series Momentum." Journal of Financial Economics, 126(2), 257-274.
  • Rapach, D., Strauss, J. & Zhou, G. (2013). "International Stock Return Predictability." Journal of Finance, 68(4), 1633-1662.
  • Hasbrouck, J. (2009). "Trading Costs and Asset Pricing Anomalies." Financial Analysts Journal, 65(3), 57-71.
  • Donier, B., et al. (2015). "When Does Momentum Work?" Quantitative Finance, 15(12), 1977-1990.