experiment(rotation): 同大类扩充与纳指vs标普替换对比实验

技术修复:
- SOCKS5代理IPv6问题:socks5:// → socks5h:// (hybrid_source.py, yfinance_source.py)

目录整理:
- scripts/ → 仅保留策略入口(daily_scheduler, run_rotation, run_cci_screener)
- 实验脚本移至 tests/experiments/
- 工具脚本移至 tests/utils/
- 实验记录新增 docs/experiments/
- results/ 添加到 gitignore

实验结果:

实验001 - 同大类扩充(添加标普500):
├─ 累计收益: 1467.35% → 1176.26% (-291%)
├─ CAGR: 48.10% → 43.82% (-4.28%)
├─ 调仓次数: 459 → 501 (+42次)
└─ 结论: 添加同大类标的不增加跨类分散,反而侵蚀收益

实验002 - 纳指vs标普替换对比:
├─ 累计收益: 1467.35% → 1118.77% (-348%)
├─ CAGR: 48.10% → 42.87% (-5.22%)
├─ Sharpe: 2.21 → 2.08 (-0.13)
├─ MaxDD: -17.33% → -15.14% (+2.18%)
└─ 结论: 纳指100优于标普500,成长风格更适合动量策略

策略建议:
- 保持纳指100作为美股大类代表
- 不添加同大类新标的(避免类内切换成本)
- 新增标的应优先考虑新大类(增加跨类分散)
This commit is contained in:
2026-05-06 20:43:38 +08:00
parent a4e8a6050e
commit 6b59855c28
20 changed files with 1086 additions and 2 deletions

View File

@@ -0,0 +1,171 @@
# 实验记录 002: 纳指100 vs 标普500 替换对比
## 实验信息
| 项目 | 内容 |
|------|------|
| 实验编号 | 002 |
| 实验日期 | 2026-05-06 |
| 实验类型 | A/B对比测试替换场景 |
| 研究问题 | 将美股大类代表从纳指100替换为标普500后的绩效变化 |
---
## 1. 实验背景
### 与001实验的区别
| 实验 | 操作 | 类内竞争 | 标的数量 |
|------|------|---------|---------|
| 001 | **添加**标普500 | 有纳指vs标普 | 11→12 |
| 002 | **替换**纳指为标普 | 无 | 11→11 |
**002实验聚焦**:评估标的特性变化对策略绩效的影响(无类内切换干扰)
### 理论假设
```
纳指100 (NDX)
├─ 成分股100只科技龙头
├─ 风格:纯成长、高波动
├─ 动量特性:趋势强、涨跌幅大
└─ 与动量策略匹配度:高
标普500 (SPX)
├─ 成分股500只大盘股
├─ 风格:价值+成长混合、中波动
├─ 动量特性:趋势相对平缓
└─ 与动量策略匹配度:中
```
---
## 2. 实验设计
### A/B组配置
| 组别 | 美股大类标的 | 其他大类 |
|------|-------------|---------|
| **A组对照组** | 纳指100 (NDX) → 513100.SH | A股2、港股2、日本1、欧洲1、商品3、固收1 |
| **B组实验组** | 标普500 (SPX) → 513500.SH | 同A组 |
---
## 3. 回测结果
### 绩效对比
| 指标 | A组纳指100 | B组标普500 | 差异 |
|------|---------------|---------------|------|
| 美股标的 | 纳指100 | 标普500 | 替换 |
| **累计收益** | **1467.35%** | 1118.77% | **-348.58%** |
| **CAGR** | **48.10%** | 42.87% | **-5.22%** |
| **Sharpe** | **2.21** | 2.08 | **-0.13** |
| MaxDD | -17.33% | **-15.14%** | **+2.18%** ✓ |
| Calmar | 2.78 | **2.83** | +0.06 |
| 日胜率 | 56.45% | 56.22% | -0.23% |
| 调仓次数 | 459次 | 475次 | +16次 |
---
## 4. 关键发现
### 发现1纳指100累计收益显著更高
```
差距分析:
├─ 累计收益差距348.58%
├─ CAGR差距5.22%
└─ 原因纳指100成长性强动量信号更明显
```
### 发现2标普500回撤控制更好
```
风险指标:
├─ MaxDD改善2.18%(标普更稳定)
├─ Calmar略优+0.06
└─ 原因标普500波动率更低成分股更多元
```
### 发现3纳指100风险调整收益更优
```
Sharpe对比
├─ 纳指1002.21
├─ 标普5002.08
└─ 纳指虽波动大,但收益补偿足够
```
### 发现4调仓次数差异不大
```
替换场景(无类内竞争):
├─ 调仓次数差:仅+16次vs 001实验+42次
└─ 证明:替换比添加更稳定
```
---
## 5. 实验结论
### 核心结论
| 维度 | 结论 |
|-----|------|
| 收益能力 | 纳指100 **显著优于** 标普500 (+348%) |
| 风险控制 | 标普500 **略优于** 纳指100 (+2.18%) |
| 风险调整收益 | 纳指100 **优于** 标普500 (Sharpe +0.13) |
| 综合评价 | **保持纳指100** |
### 策略建议
```
当前策略建议保持纳指100作为美股大类代表
理由:
1. 动量策略本质是捕捉强趋势
2. 纳指100成长股特性使其动量信号更强
3. 累计收益差距显著1467% vs 1118%
4. 标普500虽更稳定但牺牲收益太大
例外情况可能考虑标普500
├─ 风险偏好极低,优先回撤控制
├─ 牛市末期或市场不确定性高时
└─ 需要降低组合整体波动率
```
---
## 6. 与001实验对比
| 实验 | 操作 | 收益变化 | 调仓变化 |
|------|------|---------|---------|
| 001添加 | 纳指 + 标普 | -291% | +42次 |
| 002替换 | 纳指 → 标普 | -348% | +16次 |
**洞察**
- 替换场景调仓更稳定(+16 vs +42
- 但收益损失更大(无纳指成长性补偿)
---
## 7. 相关文件
| 文件 | 说明 |
|-----|------|
| `tests/experiments/ab_test_ndx_vs_spx.py` | A/B测试脚本 |
| `results/ab_test_ndx_vs_spx.csv` | 测试结果数据 |
---
## 8. 后续研究方向
1. **纳指100 vs 其他美股成长指数**如罗素1000成长、MSCI美国成长
2. **不同市场周期表现**:牛市、熊市分别测试纳指和标普效果
3. **动态切换机制**:根据市场状态动态选择纳指或标普
---
*实验记录版本: v1.0*
*最后更新: 2026-05-06*