Files
etf/docs/experiments/20260621_011_科创板ETF接入测试.md

4.7 KiB
Raw Blame History

科创板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股版 创业板指 + 科创板指

回测参数

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

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 代码层面结论

修复有效:添加 5856 前缀后科创板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