技术修复: - 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作为美股大类代表 - 不添加同大类新标的(避免类内切换成本) - 新增标的应优先考虑新大类(增加跨类分散)
171 lines
4.2 KiB
Markdown
171 lines
4.2 KiB
Markdown
# 实验记录 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对比:
|
||
├─ 纳指100:2.21
|
||
├─ 标普500:2.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* |