# 实验记录 001: 同大类扩充对轮动策略的影响 ## 实验信息 | 项目 | 内容 | |------|------| | 实验编号 | 001 | | 实验日期 | 2026-05-06 | | 实验类型 | A/B对比测试 | | 研究问题 | `diversified=true`模式下,添加同大类新标地对策略绩效的影响 | --- ## 1. 实验背景 ### 理论假设 `diversified=true` 模式的选股逻辑: ``` Step 1: 类内竞争 → 每个 market 大类只保留得分最高的1只标的(大类冠军) Step 2: 跨类排序 → 从大类冠军中按得分从高到低选 Top 3 ``` **核心假设**: - 添加同大类新标的不会增加跨大类分散度(每大类还是只输出1只) - 可能增加类内切换频率,导致额外调仓成本 - 额外切换时机可能不理想,侵蚀收益 --- ## 2. 实验设计 ### A/B组配置 | 组别 | 标的数量 | 美股大类标的 | 其他大类 | |------|---------|-------------|---------| | **A组(对照组)** | 11只 | 纳指100 (NDX) | A股2、港股2、日本1、欧洲1、商品3、固收1 | | **B组(实验组)** | 12只 | 纳指100 + 标普500 (SPX) | 同A组 | ### 关键差异 B组在美股大类(market="US")中添加了标普500: - A组:美股大类只有纳指100,自动成为大类冠军 - B组:美股大类有纳指100和标普500,需要类内竞争决定冠军 --- ## 3. 回测结果 ### 数据获取情况 修复了 `socks5://` → `socks5h://` 的代理问题后,所有 YFinance 数据成功获取: ``` ✓ SSH 隧道已建立: socks5h://127.0.0.1:1080 下载 NDX (纳指100) - YFinance... ✓ 1845 条 下载 SPX (标普500) - YFinance... ✓ 1845 条 其他标的均成功获取 ``` ### 绩效对比 | 指标 | A组(无SPX) | B组(有SPX) | 差异 | |------|-------------|-------------|------| | 标的数量 | 11只 | 12只 | +1 | | **累计收益** | **1467.35%** | 1176.26% | **-291.09%** | | **CAGR** | **48.10%** | 43.82% | **-4.28%** | | **Sharpe** | **2.21** | 2.06 | **-0.15** | | MaxDD | -17.33% | -17.18% | +0.14%(略好) | | **Calmar** | **2.78** | 2.55 | **-0.23** | | 日胜率 | 56.45% | 56.11% | -0.34% | | **调仓次数** | 459次 | 501次 | **+42次** | | 年均调仓 | 66.0次 | 72.1次 | +6.1次 | --- ## 4. 关键发现 ### 发现1:跨类分散不变 添加标普500后,美股大类在最终持仓中的占比不变: - 美股大类始终只有1只冠军进入Top3候选池 - 跨大类分散度没有增加 ### 发现2:调仓次数增加 - B组调仓次数增加42次(从459→501) - 类内切换更频繁(纳指100 ↔ 标普500) - 额外调仓成本侵蚀收益 ### 发现3:绩效反而变差 ``` B组绩效全面下滑: ├─ 累计收益 -291% ├─ CAGR -4.28% ├─ Sharpe -0.15 ├─ Calmar -0.23 └─ 原因:类内切换时机不佳 + 额外调仓成本 ``` ### 发现4:类内切换逻辑 美股大类竞争示例: ``` 某日得分: 纳指100: 4.7 → 美股冠军(持有纳指ETF) 标普500: 3.5 → 淘汰 另一天得分: 纳指100: -1.0(下跌) 标普500: 2.5 → 美股冠军(切换到标普ETF) 问题:切换时机可能滞后,错过最佳窗口 ``` --- ## 5. 实验结论 ### 核心结论 | 假设 | 实证结果 | |-----|---------| | 添加同大类标的**不增加跨类分散** | ✓ **验证通过** | | 可能**增加调仓次数** | ✓ **验证通过**(+42次) | | 额外切换**可能侵蚀收益** | ✓ **验证通过**(累计收益-291%) | ### 策略建议 ``` diversified=true 模式下的标的池优化策略: ✗ 不要盲目添加同大类新标的 → 可能增加切换频率,侵蚀收益 → 每大类保持1-2只代表性标的即可 ✓ 应该添加新大类(增加跨类分散) → 印度、越南、短债等新大类 → 真正扩大 Top 3 候选池 → 提升跨大类分散度 ✓ 类内标的选择原则 → 选择该大类最具代表性的标的 → 避免风格过度细分导致频繁切换 → 例:美股选纳指100即可(成长代表) ``` --- ## 6. 技术修复记录 ### 代理问题修复 本次实验过程中发现了 SSH SOCKS5 隧道的 IPv6 问题: **问题**: ```python # 原配置(失败) proxy_url = "socks5://127.0.0.1:1080" # 本地DNS解析 → IPv6地址 → SSH隧道拒绝IPv6 → 连接失败 ``` **修复**: ```python # 新配置(成功) proxy_url = "socks5h://127.0.0.1:1080" # 'h'表示远程DNS解析 → 代理服务器只用IPv4 → 连接成功 ``` **修改文件**: - `core/datasource/hybrid_source.py` - `core/datasource/yfinance_source.py` --- ## 7. 相关文件 | 文件 | 说明 | |-----|------| | `tests/experiments/ab_test_spx.py` | A/B测试脚本 | | `results/ab_test_spx.csv` | 测试结果数据 | | `docs/轮动策略核心逻辑_v2.md` | 策略核心逻辑文档 | --- ## 8. 后续研究方向 1. **新大类扩充实验**:添加印度NIFTY、短债等新大类,验证跨类分散效果 2. **类内切换时机分析**:深入分析纳指100 vs 标普500切换的具体时间点 3. **最佳大类数量研究**:多少个大类是最优配置? --- *实验记录版本: v1.0* *最后更新: 2026-05-06*