diff --git a/docs/experiments/国债配置实证分析报告.md b/docs/experiments/国债配置实证分析报告.md new file mode 100644 index 0000000..6b7534d --- /dev/null +++ b/docs/experiments/国债配置实证分析报告.md @@ -0,0 +1,416 @@ +# 国债配置实证分析报告 + +## 一、研究背景 + +### 1.1 问题提出 + +ETF轮动策略在2001年熊市中遭遇-41.1%的大幅回撤,核心原因分析发现: +1. **短期动量陷阱**:25天动量窗口无法识别长期趋势,被短期反弹欺骗 +2. **债券数据缺失**:2001年债券指数数据未覆盖,无法实现股债分散 + +### 1.2 研究目标 + +评估不同国债配置方案对策略分散效果的影响: +- **方案A**:仅配置10年国债(稳健防御) +- **方案B**:仅配置30年国债(收益弹性) +- **方案C**:10年+30年国债组合(久期分散) + +### 1.3 国债指数特性对比 + +| 指数 | 代码 | ETF | 数据起始 | 久期 | 波动性 | +|------|------|-----|---------|------|--------| +| 中证10年国债 | 931862.CSI | 512890.SH | 2007-12-31 | 8年 | 3-5% | +| 中证30年国债 | H30269.CSI | 511090.SH | 2005-12-30 | 20年 | 10-15% | + +--- + +## 二、配置方案对比 + +### 2.1 总体指标对比 + +| 配置 | 最终净值 | 累计收益 | 最大回撤 | 年均调仓 | +|------|---------|---------|---------|---------| +| 方案A (10年国债) | 82.51 | 8151% | -61.05% | 72次 | +| 方案B (30年国债) | 146.80 | 14580% | -61.05% | 71次 | +| **方案C (双国债)** | **173.83** | **17283%** | -61.05% | 75次 | + +### 2.2 年度收益详细对比 + +| 年份 | 方案A | 方案B | 方案C | 最优配置 | +|------|-------|-------|-------|----------| +| 2001 | -41.08% | -41.08% | -41.08% | 相同(债券无数据) | +| 2002 | +2.99% | +2.99% | +2.99% | 相同 | +| 2003 | +33.30% | +33.30% | +33.30% | 相同 | +| 2004 | +45.85% | +45.85% | +45.85% | 相同 | +| 2005 | +12.77% | +12.77% | +12.77% | 相同 | +| 2006 | +4.30% | +29.94% | +29.94% | B/C | +| 2007 | +52.50% | +132.84% | **+133.30%** | **C** | +| 2008 | **-18.28%** | -22.51% | -20.85% | **A** | +| 2009 | +57.83% | +70.33% | **+79.78%** | **C** | +| 2010 | +17.55% | +12.26% | **+17.97%** | **C** | +| 2011 | **+18.93%** | +18.27% | +18.69% | **A** | +| 2012 | +21.99% | **+27.34%** | +20.77% | **B** | +| 2013 | **+75.06%** | +46.59% | +70.33% | **A** | +| 2014 | +2.76% | **+15.82%** | +15.12% | **B** | +| 2015 | +12.32% | +5.86% | **+19.95%** | **C** | +| 2016 | **+13.23%** | +5.73% | +7.54% | **A** | +| 2017 | **+10.22%** | +6.23% | +7.67% | **A** | +| 2018 | -6.76% | **-6.65%** | -10.98% | **B** | +| 2019 | **+47.30%** | +38.85% | +45.55% | **A** | +| 2020 | +22.57% | **+27.61%** | +18.08% | **B** | +| 2021 | +19.52% | +20.39% | **+27.25%** | **C** | +| 2022 | +24.32% | **+27.65%** | +16.82% | **B** | +| 2023 | +4.75% | **+9.83%** | +4.91% | **B** | +| 2024 | +81.47% | +82.09% | **+83.72%** | **C** | +| 2025 | +27.17% | **+35.52%** | +26.71% | **B** | +| 2026 | **+20.31%** | +18.07% | +19.46% | **A** | + +### 2.3 各方案最优年份统计 + +| 配置 | 最优年份数 | 典型年份 | +|------|-----------|---------| +| 方案A (10年国债) | 8年 | 2008熊市、2013、2016-17、2019 | +| 方案B (30年国债) | 8年 | 2006-07牛市、2012、2014、2018、2022-23 | +| 方案C (双国债) | 7年 | 2007大牛市、2009-10、2015、2021、2024 | + +--- + +## 三、动态久期选择机制分析 + +### 3.1 策略机制说明 + +分组选股(diversified=true)模式下: +- 每个大类选动量最强的Top1冠军 +- BOND大类包含10年国债和30年国债两个标的 +- 策略自动选择动量得分更高的国债 + +**选择逻辑**: +- 30年国债动量 > 10年国债动量 → 选30年国债(获取弹性) +- 10年国债动量 > 30年国债动量 → 选10年国债(增强防御) + +### 3.2 债券选择统计 + +| 指标 | 数值 | 占比 | +|------|------|------| +| 10年国债(931862)出现次数 | 1510次 | 18.6% | +| 30年国债(H30269)出现次数 | 2051次 | 25.3% | +| 无债券持仓 | 4548次 | 56.1% | +| **债券总持仓** | **3561次** | **43.9%** | + +### 3.3 各年债券选择分布 + +| 年份 | 10年国债天数 | 30年国债天数 | 总债券天数 | 债券占比 | 主导类型 | +|------|-------------|-------------|-----------|---------|---------| +| 2006 | 0 | 171 | 171 | 54.3% | 30年 ✓ | +| 2007 | 0 | 185 | 185 | 59.7% | 30年 ✓ | +| 2008 | 172 | 78 | 250 | 79.4% | 10年 ✓ | +| 2009 | 44 | 110 | 154 | 48.9% | 30年 | +| 2010 | 91 | 87 | 178 | 56.9% | 平衡 | +| 2011 | 148 | 48 | 196 | 62.7% | 10年 ✓ | +| 2012 | 105 | 46 | 151 | 48.1% | 10年 ✓ | +| 2013 | 45 | 138 | 183 | 58.5% | 30年 ✓ | +| 2014 | 54 | 128 | 182 | 57.9% | 30年 ✓ | +| 2015 | 91 | 121 | 212 | 67.5% | 30年 | +| 2016 | 72 | 106 | 178 | 56.9% | 平衡 | +| 2017 | 0 | 106 | 106 | 33.9% | 30年 ✓ | +| 2018 | 122 | 108 | 230 | 73.1% | 平衡 | +| 2019 | 107 | 74 | 181 | 57.7% | 10年 ✓ | +| 2020 | 60 | 48 | 108 | 34.5% | 平衡 | +| 2021 | 43 | 131 | 174 | 55.9% | 30年 ✓ | +| 2022 | 126 | 94 | 220 | 70.5% | 10年 ✓ | +| 2023 | 79 | 90 | 169 | 54.3% | 平衡 | +| 2024 | 89 | 92 | 181 | 57.9% | 平衡 | +| 2025 | 45 | 55 | 100 | 32.0% | 平衡 | +| 2026 | 17 | 35 | 52 | 45.0% | 平衡 | + +--- + +## 四、关键年份深度分析 + +### 4.1 2007年大牛市(最优表现) + +**方案C收益:+133.30%** + +| 配置 | 债券选择 | 年度收益 | 分析 | +|------|---------|---------|------| +| 方案C | 100%选30年国债 | +133.30% | 久期弹性最大化 | +| 方案B | 100%选30年国债 | +132.84% | 同样选择30年 | +| 方案A | 10年国债 | +52.50% | 弹性不足 | + +**结论**:牛市时30年国债久期长,利率下降时涨幅更大,方案C动态选择正确。 + +### 4.2 2008年熊市(防御效果) + +**方案C收益:-20.85%** + +| 配置 | 债券选择 | 年度收益 | 分析 | +|------|---------|---------|------| +| 方案A | 10年国债(67%) | -18.28% | 防御最优 ✓ | +| 方案C | 10年国债(55%) + 30年国债(25%) | -20.85% | 部分防御 | +| 方案B | 30年国债 | -22.51% | 弹性劣势 | + +**债券持仓组合**: +- 10年国债Top组合:CL=F,931862.CSI (17天)、GC=F,931862.CSI (13天) +- 30年国债Top组合:H30269.CSI,GC=F (10天) + +**结论**:熊市时10年国债波动小,防御效果更好。方案C动态选择部分正确,但仍有25%选30年国债导致回撤。 + +### 4.3 2018年熊市(意外表现) + +**方案C收益:-10.98%(最差)** + +| 配置 | 债券选择 | 年度收益 | 分析 | +|------|---------|---------|------| +| 方案B | 30年国债 | -6.65% | 最优 ✓ | +| 方案A | 10年国债 | -6.76% | 次优 | +| 方案C | 10年国债(39%) + 30年国债(35%) | -10.98% | 最差 | + +**分析**: +- 2018年市场环境复杂,中美贸易摩擦+利率上升 +- 动量信号不稳定,债券选择频繁切换 +- 方案C债券占比73%过高,但分散化约束强制持有股票 +- 30年国债在利率上升时表现不佳 + +**结论**:动态久期选择在复杂市场环境下可能失效。 + +### 4.4 2022年熊市(表现分化) + +**方案C收益:+16.82%(最差)** + +| 配置 | 债券选择 | 年度收益 | 分析 | +|------|---------|---------|------| +| 方案B | 30年国债 | +27.65% | 最优 ✓ | +| 方案A | 10年国债 | +24.32% | 次优 | +| 方案C | 10年国债(40%) + 30年国债(30%) | +16.82% | 最差 | + +**分析**: +- 2022年全球通胀,利率上升 +- 商品(原油)表现优异,债券分散效果减弱 +- 方案C债券占比70%,错过商品机会 + +**结论**:通胀环境下债券分散效果有限。 + +--- + +## 五、数据覆盖度分析 + +### 5.1 债券指数数据起始时间 + +| 指数 | 数据起始 | 2001年数据 | 2005年数据 | +|------|---------|-----------|-----------| +| 931862.CSI (10年国债) | 2007-12-31 | ❌ 无 | ❌ 无 | +| H30269.CSI (30年国债) | 2005-12-30 | ❌ 无 | ✓ 有 | + +### 5.2 回测起点对策略的影响 + +**2000-2005年(债券无数据)**: +- 所有配置收益相同(-41.08% ~ +45.85%) +- 无法实现股债分散 +- 分散化约束强制持有股票 + +**2005-2007年(30年国债有数据)**: +- 方案B和C开始体现差异 +- 2006年方案B/C (+29.94%) 显优于方案A (+4.30%) + +**2007年后(双国债有数据)**: +- 方案C动态久期选择生效 +- 2007年大牛市收益+133.30%最优 + +### 5.3 ETF数据覆盖度 + +| ETF | 上市时间 | 数据天数 | 适用性 | +|-----|---------|---------|--------| +| 512890.SH (10年国债ETF) | 2019-01-18 | 1771天 | 回测需用指数数据 | +| 511090.SH (30年国债ETF) | 2023-06-13 | 706天 | 回测需用指数数据 | + +**说明**:ETF数据覆盖度不足,回测使用指数数据,实际交易使用ETF。 + +--- + +## 六、分散效果分析 + +### 6.1 债券与股票相关性 + +| 债券类型 | 久期 | 波动性 | 与股票相关性 | 分散效果 | +|---------|------|--------|-------------|---------| +| 5年国债 | 4-5年 | 1-2% | 强负相关 | 最佳 ✓ | +| 10年国债 | 8年 | 3-5% | 中等负相关 | 较好 ✓ | +| 30年国债 | 20年 | 10-15% | 可能同向 | 较弱 ✗ | + +### 6.2 久期分散原理 + +**短久期债券**: +- 价格对利率变化敏感度低 +- 波动性小(1-2%) +- 熊市防御效果稳定 +- 与股票负相关性强 + +**长久期债券**: +- 价格对利率变化敏感度高 +- 波动性大(10-15%) +- 牛市弹性强,熊市波动大 +- 利率快速变化时可能与股票同向波动 + +### 6.3 方案C久期分散效果 + +| 年份 | 市场环境 | 动态选择效果 | 分散效果 | +|------|---------|-------------|---------| +| 2007 | 大牛市 | 100%选30年 ✓ | 弹性最大化 | +| 2008 | 熊市 | 55%选10年 | 部分防御 | +| 2018 | 熊市 | 39%选10年 | 效果不佳 ✗ | +| 2022 | 通胀熊市 | 40%选10年 | 效果不佳 ✗ | + +--- + +## 七、收益分解分析 + +### 7.1 累计收益差异 + +| 对比 | 收益差异 | 原因分析 | +|------|---------|---------| +| 方案C vs 方案B | +2703% (高18%) | 动态久期选择在部分年份优化 | +| 方案C vs 方案A | +9132% (高112%) | 牛市弹性贡献显著 | +| 方案B vs 方案A | +6429% (高79%) | 30年国债弹性优势 | + +### 7.2 关键贡献年份 + +**方案C超额收益贡献年份**: + +| 年份 | 方案C收益 | 方案B收益 | 超额贡献 | 原因 | +|------|---------|---------|---------|------| +| 2007 | +133.30% | +132.84% | +0.46% | 30年国债主导 | +| 2009 | +79.78% | +70.33% | +9.45% | 动态切换优化 | +| 2010 | +17.97% | +12.26% | +5.71% | 动态切换优化 | +| 2015 | +19.95% | +5.86% | +14.09% | 动态切换优化 ✓ | +| 2021 | +27.25% | +20.39% | +6.86% | 动态切换优化 | +| 2024 | +83.72% | +82.09% | +1.63% | 30年国债主导 | + +--- + +## 八、回撤分析 + +### 8.1 最大回撤对比 + +| 配置 | 最大回撤 | 回撤期间 | 分析 | +|------|---------|---------|------| +| 方案A | -61.05% | 相同 | 债券防御未改善回撤 | +| 方案B | -61.05% | 相同 | 债券弹性未改善回撤 | +| 方案C | -61.05% | 相同 | 动态久期未改善回撤 | + +### 8.2 回撤未改善原因分析 + +1. **债券数据缺失**:2000-2005年债券数据未覆盖,无法分散 +2. **分散化约束**:diversified=true强制从多类选股,债券占比不足 +3. **短期动量陷阱**:25天动量无法识别长期趋势,买入后继续下跌 +4. **利率环境复杂**:部分熊市利率上升,债券表现不佳 + +### 8.3 改善回撤的可能方案 + +| 方案 | 预期效果 | 难度 | +|------|---------|------| +| 增加长期动量过滤(60/120天) | 改善趋势识别 | 低 | +| 回测起点后移至2007年 | 增加债券覆盖 | 低 | +| 放松分散化约束 | 提高债券占比 | 低 | +| 增加持仓止损机制 | 控制单次回撤 | 中 | + +--- + +## 九、结论与建议 + +### 9.1 核心发现 + +1. **收益提升显著**: + - 方案C累计收益17283%,为三种配置最高 + - 比单30年国债高18%,比单10年国债高112% + +2. **动态久期有效**: + - 牛市时自动选择30年国债获取弹性 + - 部分熊市时选择10年国债增强防御 + +3. **回撤未改善**: + - 三种配置最大回撤相同(-61.05%) + - 债券分散对极端回撤效果有限 + +4. **数据覆盖影响**: + - 2001年债券数据缺失导致无法分散 + - 2005年后30年国债开始生效 + - 2007年后双国债动态选择生效 + +### 9.2 配置建议 + +**推荐方案C(双国债配置)**: + +| 维度 | 优势 | 说明 | +|------|------|------| +| 收益 | ✓ 最高 | 累计收益17283% | +| 分散 | ✓ 久期分散 | 动态选择合适久期 | +| 适应性 | ✓ 动态 | 牛市弹性+熊市防御 | +| 实用性 | ✓ ETF可交易 | 两只ETF均有交易 | + +### 9.3 改进方向 + +1. **增加长期动量过滤**: + - 60/120天动量>=0过滤 + - 避免短期反弹陷阱 + +2. **回测起点优化**: + - 从2007年开始(债券数据完整) + - 验证债券分散效果 + +3. **增加短久期债券**: + - 考虑增加5年国债指数 + - 实现更完整的久期分散 + +### 9.4 当前配置 + +```yaml +# 债券配置(方案C) +"931862.CSI": + name: "10年国债" + etf: "512890.SH" + market: "BOND" +"H30269.CSI": + name: "30年国债" + etf: "511090.SH" + market: "BOND" +``` + +--- + +## 十、附录 + +### 10.1 债券持仓组合分布 + +**含债券的组合Top10**: + +| 组合 | 天数 | 占比 | +|------|------|------| +| GC=F,931862.CSI | 194 | 5.4% | +| CL=F,931862.CSI | 107 | 3.0% | +| 931862.CSI | 90 | 2.5% | +| CL=F,N225,931862.CSI | 89 | 2.5% | +| GC=F,931862.CSI,NDX | 55 | 1.5% | +| GC=F,931862.CSI,399006.SZ | 52 | 1.5% | +| 931862.CSI,GC=F | 51 | 1.4% | +| 399006.SZ,GC=F,931862.CSI | 49 | 1.4% | +| GC=F,399006.SZ,931862.CSI | 49 | 1.4% | +| N225,NDX,931862.CSI | 44 | 1.2% | + +### 10.2 回测参数 + +```yaml +# 回测参数 +start_date: "2000-01-01" +n_days: 25 # 动量窗口 +factor_type: "weighted_momentum" +select_num: 3 # 持仓数量 +diversified: true # 分组选股 +min_score: 0.0 # 动量阈值 +trade_cost: 0.001 # 交易成本 +``` + +--- + +**报告生成时间**:2026-05-07 +**数据来源**:Flask API (k3s.tokenpluse.xyz) +**回测区间**:2000-01-01 ~ 2026-05-15 \ No newline at end of file diff --git a/strategies/rotation/config.yaml b/strategies/rotation/config.yaml index a648db2..4eda646 100644 --- a/strategies/rotation/config.yaml +++ b/strategies/rotation/config.yaml @@ -10,10 +10,7 @@ code_list: name: "创业板指" etf: "159915.SZ" market: "A" - "H30269.CSI": - name: "中证红利低波" - etf: "512890.SH" - market: "A" + # 全球市场 "NDX": @@ -53,6 +50,10 @@ code_list: etf: "159980.SZ" # 国内有色金属ETF market: "COMMODITY" "931862.CSI": + name: "10年国债" + etf: "512890.SH" + market: "BOND" + "H30269.CSI": name: "30年国债" etf: "511090.SH" market: "BOND"