refactor(factor): 完成因子框架 DSL 化重构

- 重构 FactorEngine 实现完整的 DSL 表达式执行链路
- 新增 DataRouter 数据路由器,支持内存模式和核心宽表组装
- 新增 ExecutionPlanner 执行计划生成器,整合编译器和翻译器
- 新增 ComputeEngine 计算引擎,支持并行运算
- 完善 factors/__init__.py 公开 API 导出
- 新增 test_factor_engine.py 引擎单元测试
- 移除旧引擎实现和废弃的 DSL promotion 测试
- 更新 AGENTS.md 添加 v2.2 架构变更历史和 Factors 框架设计说明
This commit is contained in:
2026-03-01 15:03:56 +08:00
parent 84479ee9ff
commit b461a4940d
5 changed files with 1087 additions and 663 deletions

76
src/factors/__init__.py Normal file
View File

@@ -0,0 +1,76 @@
"""ProStock 因子计算框架。
提供完整的因子表达式 DSL、编译、翻译和执行能力。
主要组件:
- dsl: DSL 表达式层,定义节点类型和运算符重载
- api: 常用符号和函数的便捷接口
- compiler: AST 编译器,提取依赖关系
- translator: Polars 表达式翻译器
- engine: 因子计算引擎,系统统一入口
使用示例:
>>> from src.factors import FactorEngine
>>> from src.factors.api import close, ts_mean, cs_rank
>>> # 初始化引擎
>>> engine = FactorEngine()
>>> # 注册因子
>>> engine.register("ma20", ts_mean(close, 20))
>>> engine.register("price_rank", cs_rank(close))
>>> # 执行计算
>>> result = engine.compute(["ma20", "price_rank"], "20240101", "20240131")
"""
from src.factors.dsl import (
Node,
Symbol,
Constant,
BinaryOpNode,
UnaryOpNode,
FunctionNode,
)
from src.factors.compiler import (
DependencyExtractor,
extract_dependencies,
)
from src.factors.translator import (
PolarsTranslator,
translate_to_polars,
)
from src.factors.engine import (
FactorEngine,
DataSpec,
ExecutionPlan,
DataRouter,
ExecutionPlanner,
ComputeEngine,
)
__all__ = [
# DSL 层
"Node",
"Symbol",
"Constant",
"BinaryOpNode",
"UnaryOpNode",
"FunctionNode",
# 编译器
"DependencyExtractor",
"extract_dependencies",
# 翻译器
"PolarsTranslator",
"translate_to_polars",
# 引擎
"FactorEngine",
"DataSpec",
"ExecutionPlan",
"DataRouter",
"ExecutionPlanner",
"ComputeEngine",
]

File diff suppressed because it is too large Load Diff