feat: ETF复权功能扩展至支持前复权qfq

核心变更:
- TushareSource: _fetch_etf_adj() 支持 qfq 和 hfq 双模式
  * 后复权(hfq): close × adj_factor
  * 前复权(qfq): close × adj_factor / latest_factor
- UniversalDataFetcher: VALID_ADJ_BY_TYPE 更新
  * CHINA_ETF: ['raw', 'hfq'] → ['raw', 'qfq', 'hfq']

复权公式验证:
- 纳指ETF(513100.SH): HFQ / QFQ = latest_factor (5.0020) 
- 5/5 个交易日全部通过验证

技术实现:
- fetch_etf_adj(): 公共接口支持 adj='qfq' 或 'hfq'
- _fetch_etf_adj(): 内部实现根据 adj 参数分支计算
- 前复权使用全量最新复权因子确保准确性
This commit is contained in:
2026-05-25 00:15:59 +08:00
parent c07974ad94
commit 798a316ad5
2 changed files with 33 additions and 14 deletions

View File

@@ -171,7 +171,7 @@ class UniversalDataFetcher:
# 各资产类型支持的 adj 参数
VALID_ADJ_BY_TYPE = {
AssetType.CHINA_INDEX: ['raw'], # 指数无复权
AssetType.CHINA_ETF: ['raw', 'hfq'], # ETF 支持后复权
AssetType.CHINA_ETF: ['raw', 'qfq', 'hfq'], # ETF 支持前复权/后复权
AssetType.CHINA_STOCK: ['raw', 'qfq', 'hfq'],
AssetType.US_INDEX: ['raw'], # 指数无复权
AssetType.US_STOCK: ['raw', 'qfq', 'hfq'],