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:
@@ -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
|
||||
|
||||
|
||||
|
||||
Reference in New Issue
Block a user