shy3130
61130cfdff
fix(backtest): ETF/指数矩阵链路不再要求股本字段, 修复因子挖掘准备阶段失败
etf 维表(index_sync)物理上只有 symbol/name/code/asset_type, enriched 窄表
也不落盘股本字段; 而 DEFAULT_BASIC_FILTER 与矩阵缓存档 common_filter 均带
非 None 市值界, 依赖解析会无条件要求 total_shares/float_shares, 导致
_resolve_matrix_storage_fields 抛
"matrix parquet fields unavailable: ['float_shares', 'total_shares']"
(用户反馈: ETF 因子挖掘死于「准备共享撮合矩阵」阶段)。
- 新增 _basic_filter_for_asset: 非股票资产将市值/流通市值四项界置 None,
依赖解析前中和; 运行期过滤本就对缺失股本列降级 no-op, 无需改动
- StrategyDependencyResolver.resolve 新增 asset_type 参数(默认 stock,
旧调用行为不变), 四个调用点传入真实资产类型:
build_matrix_cache_profile / prepare_matrix_optimization /
单次回测 / composite 子计划
- mining_runtime._prepare_base_market 两处 resolve 传入 request.asset_type
- 新增回归测试: ETF 计划与缓存档不含股本字段、股票行为不变、
ETF 维表下字段解析成功、反向对照锁定失败模式
验证: 全量 pytest 976 passed; 真实组件端到端复现用户失败路径已转绿
(ETF enriched + 四列维表, 共享矩阵 (280,3) 构建成功)。
2026-08-23 17:46:54 +08:00
..
2026-08-22 20:57:40 +08:00
2026-08-21 17:41:35 +08:00
2026-07-18 18:31:02 +08:00
2026-08-17 17:47:46 +08:00
2026-08-13 20:16:02 +08:00
2026-08-05 17:56:27 +08:00
2026-07-12 13:52:49 +08:00
2026-08-23 12:34:40 +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-07-25 22:51:27 +08:00
2026-07-26 18:35:31 +08:00
2026-08-16 23:39:07 +08:00
2026-08-16 23:39:07 +08:00
2026-07-08 13:42:53 +08:00
2026-07-15 21:34:44 +08:00
2026-08-20 22:56:11 +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-07-18 00:49:28 +08:00
2026-07-16 14:34:07 +08:00
2026-07-31 19:56:33 +08:00
2026-08-13 20:16:02 +08:00
2026-08-16 23:39:07 +08:00
2026-07-19 16:42:03 +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-07-16 12:17:27 +08:00
2026-08-16 23:39:07 +08:00
2026-07-31 19:38:36 +08:00
2026-07-26 19:59:10 +08:00
2026-08-23 14:57:12 +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-07-18 00:49:28 +08:00
2026-07-28 09:46:51 +08:00
2026-08-16 23:39:07 +08:00
2026-08-17 16:49:28 +08:00
2026-08-16 23:39:07 +08:00
2026-08-23 17:46:54 +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-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-10 23:32:44 +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-08-16 23:39:07 +08:00
2026-07-09 17:38:44 +08:00
2026-08-05 17:57:05 +08:00
2026-08-16 23:39:07 +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-16 23:39:07 +08:00
2026-07-19 10:06:26 +08:00
2026-07-30 13:09:07 +08:00
2026-08-16 23:39:07 +08:00
2026-08-17 16:49:28 +08:00
2026-08-16 23:39:07 +08:00
2026-07-26 18:35:31 +08:00
2026-08-16 23:39:07 +08:00
2026-07-20 13:01:03 +08:00
2026-07-16 12:17:27 +08:00
2026-08-06 19:28:39 +08:00
2026-08-16 23:39:07 +08:00
2026-08-16 23:39:07 +08:00
2026-07-26 18:35:31 +08:00
2026-07-08 14:19:52 +08:00
2026-08-13 20:16:02 +08:00
2026-07-20 13:01:03 +08:00
2026-08-13 20:16:02 +08:00
2026-07-22 11:21:13 +08:00
2026-08-13 20:16:02 +08:00
2026-08-13 20:16:02 +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-13 20:16:02 +08:00
2026-08-13 20:16:02 +08:00
2026-07-28 21:13:10 +08:00
2026-07-26 18:35:31 +08:00
2026-08-20 16:15:13 +08:00
2026-07-26 12:19:55 +08:00
2026-07-26 18:35:31 +08:00