shy3130
e3a2fbce13
feat(ext-data): 扩展表字段接入信号与因子(数值因子/评分 + string 归属筛选)
数值字段(int/float) → 信号+因子双通道:
- ext_factors: 帧组装时 join 扩展列并注册 kind=base 因子(分组「扩展数据」),
时序模式按 (symbol,交易日) 精确对齐无未来函数, 快照模式仅当日单日帧
注入(历史帧跳过防未来函数)
- registry.all_factors 惰性同步(配置目录签名幂等, 以注册表为权威增删);
custom_signals.allowed_fields 自动并入 → 信号下拉/因子库/AI提示词/检验
同一份清单; factor 补算入口按需注入
- 失效链: 上传/拉取/配置变更自动清扩展帧缓存+策略缓存, API层补
repo.clear_cache; 写入后下一次计算立即生效
- 列名保留中文(预设表字段名), 非ASCII数值字段只进信号不注册因子
(DSL标识符ASCII-only)
string 字段(概念/行业归属) → 仅信号条件通道:
- 运算符 包含(contains,字面量匹配非正则)/等于/不等于, 右值为字符串字面量,
可与数值条件混合(强势板块归属 AND 热度阈值)
- 前端信号编辑器按字段类型切换运算符与右值输入; /options 暴露
stringFields; AI 提示词含字符串字段清单与 contains 用法
- string 不注册为因子(数值口径), 空值不误报
测试: test_ext_factors 18个(PIT对齐/跨日不泄露/快照门控/写入失效/
contains字面量/中文列名端到端等); 存量因子计数测试补 data/ 运行时隔离
夹具(黄金断言不依赖本机扩展表); 受影响回归148个全过; pnpm build 通过;
ruff 对齐 main 基线
2026-09-06 18:27:33 +08:00
..
2026-09-05 20:33:31 +08:00
2026-08-30 19:05:13 +08:00
2026-08-30 19:05:32 +08:00
2026-09-05 15:41:15 +08:00
2026-09-04 12:03:06 +08:00
2026-07-18 18:31:02 +08:00
2026-09-04 12:50:50 +08:00
2026-08-13 20:16:02 +08:00
2026-08-30 19:05:27 +08:00
2026-08-30 19:05:31 +08:00
2026-08-05 17:56:27 +08:00
2026-09-05 15:41:15 +08:00
2026-07-12 13:52:49 +08:00
2026-09-03 13:26:42 +08:00
2026-09-05 22:49:52 +08:00
2026-09-05 22:49:52 +08:00
2026-08-02 10:56:03 +08:00
2026-08-02 10:56:03 +08:00
2026-08-02 10:56:03 +08:00
2026-08-05 17:56:27 +08:00
2026-09-03 13:20:59 +08:00
2026-09-05 22:49:52 +08:00
2026-08-23 19:36:00 +08:00
2026-07-25 22:51:27 +08:00
2026-08-30 19:05:20 +08:00
2026-09-05 15:41:15 +08:00
2026-09-05 15:41:15 +08:00
2026-09-05 15:41:15 +08:00
2026-07-26 18:35:31 +08:00
2026-08-23 19:13:03 +08:00
2026-09-05 15:41:15 +08:00
2026-08-16 23:39:07 +08:00
2026-09-02 20:20:38 +08:00
2026-07-08 13:42:53 +08:00
2026-08-30 19:05:32 +08:00
2026-08-30 19:05:29 +08:00
2026-09-04 12:40:04 +08:00
2026-08-23 19:13:03 +08:00
2026-09-03 13:01:43 +08:00
2026-08-16 23:39:07 +08:00
2026-09-05 15:41:15 +08:00
2026-08-16 23:39:07 +08:00
2026-08-16 23:39:07 +08:00
2026-07-18 00:49:28 +08:00
2026-09-06 18:27:33 +08:00
2026-07-16 14:34:07 +08:00
2026-09-04 11:53:15 +08:00
2026-09-03 13:45:12 +08:00
2026-07-31 19:56:33 +08:00
2026-08-30 18:51:24 +09:00
2026-08-26 00:54:39 +08:00
2026-09-05 15:41:15 +08:00
2026-09-05 15:41:15 +08:00
2026-09-05 15:41:15 +08:00
2026-09-05 15:41:15 +08:00
2026-08-16 23:39:07 +08:00
2026-09-06 18:27:33 +08:00
2026-09-06 18:27:33 +08:00
2026-09-05 15:41:15 +08:00
2026-07-19 16:42:03 +08:00
2026-08-30 19:05:25 +08:00
2026-08-16 23:39:07 +08:00
2026-08-30 19:05:26 +08:00
2026-09-03 14:42:32 +08:00
2026-08-16 23:39:07 +08:00
2026-08-16 23:39:07 +08:00
2026-07-16 12:17:27 +08:00
2026-08-16 23:39:07 +08:00
2026-07-31 19:38:36 +08:00
2026-08-30 22:29:33 +08:00
2026-08-30 22:29:33 +08:00
2026-09-06 18:26:29 +08:00
2026-08-30 19:05:27 +08:00
2026-09-01 22:42:59 +08:00
2026-09-03 17:35:16 +08:00
2026-08-16 23:39:07 +08:00
2026-08-30 19:05:14 +08:00
2026-08-16 23:39:07 +08:00
2026-08-16 23:39:07 +08:00
2026-07-18 00:49:28 +08:00
2026-07-28 09:46:51 +08:00
2026-09-02 20:20:38 +08:00
2026-08-16 23:39:07 +08:00
2026-09-04 11:59:00 +08:00
2026-08-16 23:39:07 +08:00
2026-09-03 13:01:43 +08:00
2026-08-16 23:39:07 +08:00
2026-08-16 23:39:07 +08:00
2026-08-26 13:19:16 +08:00
2026-08-16 23:39:07 +08:00
2026-08-16 23:39:07 +08:00
2026-08-16 23:39:07 +08:00
2026-08-16 23:39:07 +08:00
2026-08-16 23:39:07 +08:00
2026-08-30 19:05:25 +08:00
2026-08-16 23:39:07 +08:00
2026-08-31 22:53:24 +08:00
2026-09-01 13:04:00 +08:00
2026-08-30 19:05:11 +08:00
2026-08-30 19:05:25 +08:00
2026-07-08 12:12:29 +08:00
2026-08-22 20:26:34 +08:00
2026-07-28 21:13:10 +08:00
2026-09-05 21:14:53 +09:00
2026-09-04 16:37:06 +08:00
2026-08-16 23:39:07 +08:00
2026-07-09 17:38:44 +08:00
2026-09-04 16:37:06 +08:00
2026-08-30 18:38:24 +09:00
2026-09-04 16:37:06 +08:00
2026-08-16 23:39:07 +08:00
2026-07-19 09:36:55 +08:00
2026-07-19 10:06:26 +08:00
2026-07-28 21:13:10 +08:00
2026-08-30 19:05:21 +08:00
2026-08-16 23:39:07 +08:00
2026-07-19 10:06:26 +08:00
2026-07-30 13:09:07 +08:00
2026-08-30 19:05:27 +08:00
2026-08-16 23:39:07 +08:00
2026-09-04 12:19:35 +08:00
2026-08-16 23:39:07 +08:00
2026-07-26 18:35:31 +08:00
2026-09-04 11:59:00 +08:00
2026-08-16 23:39:07 +08:00
2026-07-20 13:01:03 +08:00
2026-08-31 22:53:12 +08:00
2026-09-03 13:26:42 +08:00
2026-09-03 13:45:12 +08:00
2026-08-31 16:50:21 +08:00
2026-08-16 23:39:07 +08:00
2026-08-16 23:39:07 +08:00
2026-09-05 15:41:15 +08:00
2026-07-26 18:35:31 +08:00
2026-09-02 10:53:08 +08:00
2026-08-13 20:16:02 +08:00
2026-07-20 13:01:03 +08:00
2026-08-23 19:29:44 +08:00
2026-07-22 11:21:13 +08:00
2026-08-13 20:16:02 +08:00
2026-08-26 09:36:06 +08:00
2026-09-04 16:37:06 +08:00
2026-08-13 20:16:02 +08:00
2026-07-16 12:17:27 +08:00
2026-08-13 20:16:02 +08:00
2026-08-23 19:36:00 +08:00
2026-08-13 20:16:02 +08:00
2026-08-13 20:16:02 +08:00
2026-08-31 22:53:24 +08:00
2026-08-25 14:07:16 +08:00
2026-09-05 21:11:44 +09:00
2026-07-26 18:35:31 +08:00
2026-08-20 16:15:13 +08:00
2026-09-05 21:11:44 +09:00
2026-09-05 21:11:44 +09:00
2026-09-04 16:37:06 +08:00