docs: 按git创建日期重命名文档为YYYYMMDD_中文名称格式

This commit is contained in:
2026-06-21 19:21:26 +08:00
parent e5381d54fb
commit c2bd31ac2a
53 changed files with 0 additions and 0 deletions

View File

@@ -0,0 +1,172 @@
# 科创板ETF接入与收益对比实验
## 1. 背景描述
### 问题发现
在轮动策略回测中,尝试将科创板指数(000688.SH)作为A股风险资产替代创业板时数据获取失败
```
x 588000.SH: HTTP 404
```
### 根因分析
数据源 `tushare_source.py` 中的 `_is_etf_code()` 方法仅识别以下ETF代码前缀
- `51xxxx.SH` (上交所ETF)
- `52xxxx.SH` (上交所ETF)
- `15xxxx.SZ` (深交所ETF)
- `16xxxx.SZ` (深交所ETF)
科创板ETF代码格式为 `58xxxx.SH`不在识别列表中导致Tushare API无法正确识别ETF类型。
---
## 2. 实验设置
### 2.1 数据源修复验证
**测试内容**验证Tushare是否支持科创板ETF数据获取
**测试代码**:使用 `.env` 中的 TUSHARE_TOKEN 直接调用 Tushare API
**测试标的**
| 标的 | 类型 | 代码 |
|------|------|------|
| 科创50ETF | ETF | 588000.SH |
| 科创板指 | 指数 | 000688.SH |
| 其他科创板ETF | ETF | 588080.SH, 588050.SH, 588060.SH |
### 2.2 收益对比实验
**对比场景**
| 版本 | A股风险资产配置 |
|------|----------------|
| 创业板版(基准) | 仅创业板指(399006.SZ) |
| 科创板版(测试) | 仅科创板指(000688.SH) |
| 双A股版 | 创业板指 + 科创板指 |
**回测参数**
```yaml
backtest:
start_date: '2020-01-10'
factor:
n_days: 25
type: slope_r2
rotation:
select_num: 1
weight: rank
diversified: true
```
---
## 3. Commit代码版本
### 修复提交
```
7f2a968 fix(datasource): ETF代码识别支持科创板(58)和沪市新ETF(56)前缀
```
### 修改内容
文件:`datasource/tushare_source.py`
```python
def _is_etf_code(self, code: str) -> bool:
"""判断是否为ETF代码"""
# ETF代码51xxxx.SH, 52xxxx.SH, 56xxxx.SH, 58xxxx.SH(科创板), 15xxxx.SZ, 16xxxx.SZ
import re
if not re.match(r'^\d{6}\.(SZ|SH)$', code):
return False
prefix = code[:2]
return prefix in ['51', '52', '56', '58', '15', '16']
```
**新增前缀**
- `58` - 科创板ETF (如 588000.SH 科创50ETF)
- `56` - 沪市新ETF (如 560150.SH 红利低波ETF泰康)
---
## 4. 实验结果
### 4.1 数据源验证结果
| 标的代码 | 数据条数 | 状态 |
|---------|---------|------|
| 588000.SH | 1355 rows | ✅ 成功 |
| 000688.SH | 1565 rows | ✅ 成功 |
| 588080.SH | 1355 rows | ✅ 成功 |
**结论**Tushare `fund_daily` 接口完全支持科创板ETF数据获取问题在于项目代码识别逻辑。
### 4.2 收益对比结果
| 指标 | 创业板版 | 科创板版 | 双A股版 |
|------|---------|---------|---------|
| **年化收益率** | 48.51% | 45.00% | **38.95%** |
| **累计收益率** | 1053.08% | 894.46% | **664.12%** |
| **最大回撤** | -26.33% | -26.33% | -26.80% |
| **夏普比率** | 1.34 | 1.27 | **1.14** |
| **卡尔曼比率** | 1.84 | 1.71 | **1.45** |
| **胜率** | 54.91% | 55.06% | 54.56% |
| **调仓次数** | 182 | 189 | 205 |
### 4.3 收益差异分析
| 对比项 | 年化收益差异 | 累计收益差异 |
|--------|------------|------------|
| 创业板版 vs 科创板版 | -3.51% | -158.62% |
| 创业板版 vs 双A股版 | **-9.56%** | **-388.96%** |
| 科创板版 vs 双A股版 | -6.05% | -230.34% |
---
## 5. 结论与建议
### 5.1 代码层面结论
**修复有效**:添加 `58``56` 前缀后科创板ETF数据获取成功
### 5.2 配置层面结论
**不建议科创板替代创业板**
- 创业板版年化收益 48.51% > 科创板版 45.00%
**不建议创业板+科创板双配置**
- 双A股版收益最低38.95%),比创业板版下降 9.56%
### 5.3 原因分析
双A股配置收益下降的原因
1. **组内竞争**创业板和科创板同为高波动A股资产在同一组内竞争出线名额
2. **信号稀释**资产池从11个增至12个优质信号被稀释
3. **相关性高**:创业板与科创板走势高度相关,分散化效果有限
### 5.4 最终建议
| 配置方案 | 推荐程度 | 年化收益 |
|---------|---------|---------|
| **创业板单配置** | ✅ 推荐 | 48.51% |
| 科创板单配置 | ⚠️ 不推荐 | 45.00% |
| 创业板+科创板双配置 | ❌ 不推荐 | 38.95% |
---
## 6. 附录
### ETF代码前缀完整列表
| 前缀 | 交易所 | 类型 | 示例 |
|------|-------|------|------|
| 51 | 上交所 | ETF | 518880.SH (黄金ETF) |
| 52 | 上交所 | ETF | 520030.SH |
| 56 | 上交所 | 新ETF | 560150.SH (红利低波ETF泰康) |
| 58 | 上交所 | 科创板ETF | 588000.SH (科创50ETF) |
| 15 | 深交所 | ETF | 159915.SZ (创业板ETF) |
| 16 | 深交所 | ETF | 160723.SZ (原油ETF) |
### 相关文件
- 修复代码:`datasource/tushare_source.py#L326-L333`
- 配置文件:`rotation/config_simple.yaml`
- 实验结果:`rotation/results/cyb_kcb_dual/comparison_*.json`