feat: 量化引擎加固 — 新增测试 + 数据/因子/回测层优化

- 新增 finance/tests/ 6 个测试套件(agents/backtest/dao_upsert/factors/features/fundamental_lookahead)
- 数据层: data_manager / dao 优化,新增 upsert 逻辑
- 因子层: 基本面因子抽象定位 _mapping、ROE/PE/PB 重构
- 回测层: vectorbt/engine 大改动(251 行),report 增强
- ML 层: features/backtest_integration 特征工程与回测优化
- CLI: agent_cli 重构
- config/settings 扩充配置项
This commit is contained in:
Simon
2026-08-31 14:01:06 +08:00
parent 6acf938caf
commit 73d191b43a
28 changed files with 1418 additions and 373 deletions
+7 -3
View File
@@ -101,6 +101,10 @@ def get_factor(name: str, **overrides) -> BaseFactor:
返回:
BaseFactor 实例
说明: 返回实例的 .name 恒等于注册键 name,即使构造器默认生成的
.name 与注册键不同(如 boll 的构造器默认 .name='boll_20')——
注册键是列名的唯一事实源,避免 FactorEngine.compute 的列名漂移。
"""
if name not in _BUILTIN_FACTORIES:
raise KeyError(f"未知因子: '{name}'。可用: {list(_BUILTIN_FACTORIES)}")
@@ -109,9 +113,9 @@ def get_factor(name: str, **overrides) -> BaseFactor:
for k, v in overrides.items():
if hasattr(factor, k):
setattr(factor, k, v)
# 更新 factor.name
if hasattr(factor, "name"):
factor.name = name
# 无论是否覆盖参数,都强制 .name = 注册键,保证与分类/策略的引用一致
if hasattr(factor, "name"):
factor.name = name
return factor