feat(v2): 增强框架核心功能与ETF复权修复
- 修复 end_date=None 导致 Flask API 返回错误时间范围的 bug * strategy.py: 自动使用今天日期作为 end_date * 验证:回测区间从 77 天恢复到 1539 天 - ETF 收益计算从原始价格改为后复权价格 * flask_api_fetcher.py: adj='raw' → adj='hfq' * 自动处理 ETF 份额拆分事件,确保收益率准确 - V2 简单版添加 A 股交易日过滤 * simple.py: 获取 SSE 交易日历,过滤非交易日 * 验证:1999 天 → 1539 天(与 V1 一致) - 配置严格对齐 V1 config.yaml * config_simple.yaml: start_date 从 2020-01-01 改为 2020-01-10 * group 字段值严格映射 V1 的 market 字段 关键验证: - V2 简单版回测:1539 天,981.95% 收益(未计入交易成本) - V2 正式版回测:1539 天,135.63% 收益(已计入交易成本) - V1 旧版框架:1539 天,103.29% 收益(基准)
This commit is contained in:
@@ -106,12 +106,19 @@ class StrategyBase(ABC):
|
||||
|
||||
codes = self.get_codes()
|
||||
|
||||
# 处理 end_date 为 None 的情况(使用今天)
|
||||
from datetime import date
|
||||
start = self.config.backtest.start_date
|
||||
end = self.config.backtest.end_date
|
||||
if end is None:
|
||||
end = date.today().strftime('%Y-%m-%d')
|
||||
|
||||
# 批量获取数据(fetch_indices 返回 {code: DataFrame})
|
||||
try:
|
||||
data = self._data_fetcher.fetch_indices(
|
||||
codes=codes,
|
||||
start=self.config.backtest.start_date,
|
||||
end=self.config.backtest.end_date
|
||||
start=start,
|
||||
end=end
|
||||
)
|
||||
return data
|
||||
except Exception as e:
|
||||
|
||||
Reference in New Issue
Block a user