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:
76
src/factors/__init__.py
Normal file
76
src/factors/__init__.py
Normal 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
Reference in New Issue
Block a user