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:
@@ -776,9 +776,9 @@ Skill 会自动:
|
||||
- [ ] 测试覆盖正常和异常情况
|
||||
## 11. 示例参考
|
||||
|
||||
### 11.1 完整示例:api_daily.py
|
||||
### 11.1 完整示例:api_pro_bar.py
|
||||
|
||||
参见 `src/data/api_wrappers/api_daily.py` - 按股票获取日线数据的完整实现。
|
||||
参见 `src/data/api_wrappers/api_pro_bar.py` - 按股票获取 Pro Bar 行情数据的完整实现(主力行情表)。
|
||||
|
||||
### 11.2 完整示例:api_trade_cal.py
|
||||
|
||||
|
||||
@@ -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 执行表达式计算
|
||||
```
|
||||
|
||||
|
||||
@@ -92,17 +92,17 @@
|
||||
|
||||
| 字段名 | 状态 | 数据来源 | 所属类别 |
|
||||
|--------|------|----------|----------|
|
||||
| `close` | 可用 | daily/pro_bar 表 | 价格 |
|
||||
| `open` | 可用 | daily/pro_bar 表 | 价格 |
|
||||
| `high` | 可用 | daily/pro_bar 表 | 价格 |
|
||||
| `low` | 可用 | daily/pro_bar 表 | 价格 |
|
||||
| `vol` | 可用 | daily/pro_bar 表 | 成交量 |
|
||||
| `amount` | 可用 | daily/pro_bar 表 | 成交额 |
|
||||
| `pre_close` | 可用 | daily/pro_bar 表 | 价格 |
|
||||
| `change` | 可用 | daily/pro_bar 表 | 价格变化 |
|
||||
| `pct_chg` | 可用 | daily/pro_bar 表 | 涨跌幅 |
|
||||
| `turnover_rate` | 可用 | daily/pro_bar 表 | 换手率 |
|
||||
| `volume_ratio` | 可用 | daily/pro_bar 表 | 量比 |
|
||||
| `close` | 可用 | pro_bar 表 | 价格 |
|
||||
| `open` | 可用 | pro_bar 表 | 价格 |
|
||||
| `high` | 可用 | pro_bar 表 | 价格 |
|
||||
| `low` | 可用 | pro_bar 表 | 价格 |
|
||||
| `vol` | 可用 | pro_bar 表 | 成交量 |
|
||||
| `amount` | 可用 | pro_bar 表 | 成交额 |
|
||||
| `pre_close` | 可用 | pro_bar 表 | 价格 |
|
||||
| `change` | 可用 | pro_bar 表 | 价格变化 |
|
||||
| `pct_chg` | 可用 | pro_bar 表 | 涨跌幅 |
|
||||
| `turnover_rate` | 可用 | pro_bar 表 | 换手率 |
|
||||
| `volume_ratio` | 可用 | pro_bar 表 | 量比 |
|
||||
|
||||
### 1.8 支持的运算符
|
||||
|
||||
@@ -482,7 +482,7 @@ spec = DataSpec(
|
||||
|
||||
| 数据源 | 依赖因子数 | 实现难度 | 优先级 |
|
||||
|--------|------------|----------|--------|
|
||||
| daily/pro_bar (已有) | ~40 | 低 | 高 |
|
||||
| pro_bar (主力行情表) | ~40 | 低 | 高 |
|
||||
| 纯技术指标 (ts_*) | ~30 | 中 | 高 |
|
||||
| 筹码分布 (cyq) | ~50 | 中 | 中 |
|
||||
| 资金流向 (moneyflow) | ~30 | 中 | 中 |
|
||||
|
||||
@@ -524,7 +524,7 @@ def prepare_data(...) -> pl.DataFrame:
|
||||
```python
|
||||
# 系统自动识别
|
||||
n_income → financial_income 表 (PIT)
|
||||
close → daily 表 (DAILY)
|
||||
close → pro_bar 表 (主力行情表)
|
||||
```
|
||||
|
||||
### 3. 财务数据清洗
|
||||
@@ -584,10 +584,10 @@ CREATE TABLE financial_income (
|
||||
);
|
||||
```
|
||||
|
||||
### daily(日线行情)
|
||||
### pro_bar(主力行情表)
|
||||
|
||||
```sql
|
||||
CREATE TABLE daily (
|
||||
CREATE TABLE pro_bar (
|
||||
ts_code VARCHAR, -- 股票代码
|
||||
trade_date DATE, -- 交易日期
|
||||
open DOUBLE, -- 开盘价
|
||||
@@ -595,6 +595,10 @@ CREATE TABLE daily (
|
||||
low DOUBLE, -- 最低价
|
||||
close DOUBLE, -- 收盘价
|
||||
vol BIGINT, -- 成交量
|
||||
turnover_rate DOUBLE, -- 换手率
|
||||
volume_ratio DOUBLE, -- 量比
|
||||
... -- 其他行情字段
|
||||
);
|
||||
```
|
||||
|
||||
**说明**: pro_bar 表通过 Tushare Pro Bar 接口获取,包含后复权数据和换手率、量比等指标,是主力行情数据表。
|
||||
|
||||
Reference in New Issue
Block a user