feat: add Tushare Qlib data bridge

This commit is contained in:
2026-07-26 13:41:24 +08:00
parent 48c5f64bbd
commit e5911ca454
15 changed files with 1804 additions and 8 deletions
+12 -1
View File
@@ -32,6 +32,7 @@ synthetic PIT/features -> purged walk-forward -> Ridge challenger
(not deployment-frozen)
Qlib 0.9.7:
Tushare completed/checksummed Parquet -> immutable managed provider
native portable-momentum signal bridge
Alpha158 + LightGBM + Recorder research workflow
(no L3 target / L4 order-intent parity)
@@ -62,6 +63,14 @@ XtTrader:
## Data plane and point-in-time semantics
本地 Tushare 镜像是独立只读输入边界。adapter 只信任 SQLite 中 completed
job,并重新核对文件大小、SHA-256、Parquet 行数/footerQlib provider
发布到新目录,manifest 绑定 source job、build parameter、converter source、
完整 provider tree 和可重算 `data_version`。当前镜像未完成且缺复权、
真实 benchmark、历史成分/ST/停牌/涨跌停,因此只能进入 Qlib 技术 smoke
不能直接进入 canonical production decision。完整合同与实跑证据见
[`TUSHARE_LOCAL_DATA.md`](TUSHARE_LOCAL_DATA.md)。
JQData adapter 的输入合同是逐交易日历史指数成员和 `get_bars` 日线字段:
- 未复权 `open/high/low/close``volume``money`
@@ -173,6 +182,8 @@ Qlib 路径固定为 `0.9.7`。CPython 3.12 实际 fixture smoke 已得到:
重算的有限值指标,明确 `investment_value_claim=false`
- local MLflow file store 使用时,runner 以
`os.environ.setdefault("MLFLOW_ALLOW_FILE_STORE", "true")` 显式确认。
- 本地 Tushare completed 分区已生成 managed provider;早期未复权动量
smoke 在 `PYTHONHASHSEED=0` 下连续两次得到逐 byte 相同的 evidence JSON。
该 fixture 只有两只股票和一个 benchmark,性能没有投资意义。Qlib 的单一
`limit_threshold` 也不能表达逐日板块/ST 规则,所以它只参与 L1/L2 和诊断
@@ -217,7 +228,7 @@ saved/current source aggregate、saved/current schema aggregate 和 payload
schema。`verify-snapshot-decision` 与 data snapshot semantic verifier 承担
各自边界的同类职责。
这些合同已有自动测试;最近一次标准库套件为 211 tests、OK、3 个可选路径
这些合同已有自动测试;最近一次标准库套件为 216 tests、OK、6 个可选路径
skip。测试结果不能替代 schema 迁移演练、真实平台导出或券商回调认证。
## Clocks and reconciliation