refactor(data): 移除 api_daily 模块并更新文档

- 删除 src/data/api_wrappers/api_daily.py (240行)
- 更新 6 个文档文件,将 daily 表引用替换为 pro_bar
- 同步 README.md 中的因子框架和训练模块示例

BREAKING CHANGE: api_daily 模块已移除,请使用 api_pro_bar 替代
This commit is contained in:
2026-03-14 01:48:56 +08:00
parent 181994f063
commit a22bc2d282
7 changed files with 161 additions and 342 deletions

View File

@@ -222,7 +222,7 @@ def _infer_data_specs(self, node, dependencies):
```
**DataSpec 说明**
- `table`: 数据表名pro_bar 或 daily
- `table`: 数据表名pro_bar 为主力行情表
- `columns`: 需要的字段列表
**注意**:数据获取使用用户传入的日期范围,不做自动扩展。时序因子(如 `ts_delay``ts_mean`)在数据不足时会返回 null这是符合预期的行为。
@@ -377,19 +377,19 @@ def execute(self, plan, data):
### 7.1 用户代码
```python
from src.factors import FactorEngine, FormulaParser, FunctionRegistry
from src.factors import FactorEngine
# 1. 创建引擎
engine = FactorEngine()
# 2. 解析字符串表达式
parser = FormulaParser(FunctionRegistry())
expr = parser.parse("(close / ts_delay(close, 5)) - 1")
# 2. 使用字符串表达式注册因子(推荐)
engine.add_factor("returns_5d", "(close / ts_delay(close, 5)) - 1")
# 3. 注册因子
engine.register("returns_5d", expr)
# 或者使用 DSL 表达式
from src.factors.api import close, ts_delay
engine.register("returns_5d", (close / ts_delay(close, 5)) - 1)
# 4. 执行计算
# 3. 执行计算
result = engine.compute(
factor_names=["returns_5d"],
start_date="20240101",
@@ -400,23 +400,27 @@ result = engine.compute(
### 7.2 内部调用链
```
FactorEngine.add_factor() / register()
└── 创建并缓存 ExecutionPlan
└── ExecutionPlanner.create_plan()
├── DependencyExtractor.extract_dependencies() → {'close'}
├── _infer_data_specs() → [DataSpec('pro_bar', ['close'], 5)]
└── PolarsTranslator.translate() → pl.col('close').shift(5).over('ts_code')...
FactorEngine.compute()
├── 1. 创建 ExecutionPlan
│ └── ExecutionPlanner.create_plan()
├── DependencyExtractor.extract_dependencies() → {'close'}
│ ├── _infer_data_specs() → [DataSpec('pro_bar', ['close'], 5)]
└── PolarsTranslator.translate() → pl.col('close').shift(5).over('ts_code')...
├── 2. 获取数据
│ └── DataRouter.fetch_data([plan.data_specs])
│ ├── _load_table('pro_bar', ['close'], start_date-5d, end_date)
├── 1. 获取所有缓存的执行计划
├── 2. 合并数据规格
└── _merge_data_specs()
├── 3. 获取数据
└── DataRouter.fetch_data(merged_specs)
├── _load_table('pro_bar', ['close'], start_date, end_date)
│ │ └── Storage.load_polars() → 查询 DuckDB
│ └── _assemble_wide_table() → Polars DataFrame
└── 3. 执行计算
└── ComputeEngine.execute(plan, data)
└── data.with_columns([polars_expr.alias('returns_5d')])
└── 4. 执行计算
└── ComputeEngine.execute_plans(plans, data)
└── data.with_columns([polars_exprs...])
└── Polars 执行表达式计算
```