feat: establish Quant OS production-80 architecture
This commit is contained in:
@@ -1,13 +1,20 @@
|
||||
# Quant OS:个人 A 股 60 分 Baseline 工程
|
||||
# Quant OS:个人 A 股量化研究到受限生产的独立工程
|
||||
|
||||
Quant OS 是项目名;`quant60` 是第一版 A 股 Baseline 的 Python
|
||||
包、CLI namespace 与 artifact 协议前缀。
|
||||
Quant OS 已从 `quants-strategies` 拆成独立项目。`quant-os` / `quant_os`
|
||||
是长期 CLI/import;`quant60` 是第一版 A 股 Baseline 的兼容包、CLI namespace
|
||||
与 V1 artifact 协议前缀。60/80 是证据 profile,不再写进产品名。
|
||||
|
||||
本项目把 2026-07-22 的技术选型文章落成一个可执行、可审计的模块化单体:
|
||||
本地与 Colab 可零账号运行工程 smoke;JQData 登录后可生成不可变快照并直接
|
||||
运行 PIT 本地回测/目标决策;聚宽、QMT 与 Qlib 有各自明确的运行入口。
|
||||
> 当前交易执行范围仅覆盖上交所、深交所(沪深)。北交所尚未接入,
|
||||
> 所有北交所委托必须 `fail closed`;代码映射支持 `.BJ` / `.XBSE`
|
||||
> 不代表具备北交所回测或实盘交易能力。
|
||||
|
||||
> 当前状态仍是 `NOT_BASELINE_60`。本地五层 vertical slice、单测、
|
||||
本项目正在把 2026-07-22 的技术选型实现,从 `quant60` legacy 内核迁移成
|
||||
严格边界、可执行、可审计的模块化单体:本地与 Colab 可零账号运行工程
|
||||
smoke;JQData 登录后可生成不可变快照并直接运行 PIT 本地回测/目标决策;
|
||||
聚宽、QMT 与 Qlib 有各自明确的运行入口。
|
||||
|
||||
> 当前状态仍是 `NOT_BASELINE_60`,80 分评估为
|
||||
> `BLOCKED_FROM_LIMITED_LIVE`、0/100 已验证证据分。本地五层 vertical slice、单测、
|
||||
> synthetic、fake harness、Qlib fixture、真实聚宽 hosted 动量 smoke,以及
|
||||
> 单个 synthetic-research TargetPackage 的真实聚宽 **execution smoke**,
|
||||
> 都不能代替授权真实数据 OOS、逐层同输入 parity、真实 QMT、券商影子盘、
|
||||
@@ -17,15 +24,30 @@ Quant OS 是项目名;`quant60` 是第一版 A 股 Baseline 的 Python
|
||||
> [`docs/AUDIT_2026-07-25.md`](docs/AUDIT_2026-07-25.md) 与
|
||||
> [`gate_scorecard.json`](gate_scorecard.json)。
|
||||
|
||||
> 新依赖检查当前只覆盖 `src/quant_os/`;约 26k 行 legacy 仍位于
|
||||
> `src/quant60/`、根级 `adapters/`、`platforms/` 与 `tools/`,按 vertical
|
||||
> slice 迁移。`doctor.ok = true` 只表示独立仓必需文件和**新 namespace**
|
||||
> 边界有效,不表示 legacy 已分层,也不表示达到 60/80。生产 trust provider /
|
||||
> issuer registry 尚未实现,仓库不能自行签发正向 80 分资格。
|
||||
|
||||
先读:
|
||||
|
||||
- [80 分标准](docs/standards/QUANT_OS_80_STANDARD.md)
|
||||
- [60 与 80 的差别](docs/standards/BASELINE_60_VS_PRODUCTION_80.md)
|
||||
- [面向 80 的三平面架构](docs/architecture/ARCHITECTURE_80.md)
|
||||
- [新架构上手](docs/getting-started/GETTING_STARTED_80.md)
|
||||
- [独立仓迁移记录](MIGRATION.md)
|
||||
|
||||
## 在线公开验收面板
|
||||
|
||||
公开只读入口:
|
||||
|
||||
[`https://gomars.fun/quants-strategies/quant-os/status/index.html`](https://gomars.fun/quants-strategies/quant-os/status/index.html)
|
||||
[`https://gomars.fun/quant-os/status/`](https://gomars.fun/quant-os/status/)
|
||||
|
||||
页面从 `gate_scorecard.json`、平台矩阵、bundle manifest 和证据文档生成
|
||||
脱敏的构建时快照,逐层展示数据、模型、回测平台、券商影子盘与 G1—G10
|
||||
缺口。它不是实时服务健康页,不发布本地行情、账户状态或运行 artifacts。
|
||||
页面从 Production 80 machine profile、`gate_scorecard.json`、平台矩阵、
|
||||
bundle manifest 和证据文档生成脱敏的构建时快照,逐层展示数据、模型、
|
||||
回测平台、券商影子盘与证据缺口。它不是实时服务健康页,不发布本地行情、
|
||||
账户状态或运行 artifacts。
|
||||
|
||||
更新权威记录后必须重新生成并检查页面数据:
|
||||
|
||||
@@ -49,7 +71,7 @@ python3 tools/build_public_status.py --check
|
||||
| QMT built-in/qmttools | 默认动量 smoke;TargetPackage 模式为 Python 3.6 backtest-only 消费器 | Python 3.6 语法、TargetPackage/fake/qmttools 合约 | 需要已授权 QMT 客户端、历史数据权限与 TargetPackage 实跑导出 |
|
||||
| Qlib 0.9.7 | native momentum backtest;Alpha158/LightGBM CLI/Recorder 工作流 | Python 3.12 两条 fixture 已真实跑通,并保存表级 hash、行列/时间边界和重算指标 | synthetic 两股票没有投资价值;无真实 OOS、L3/L4 parity |
|
||||
| Tushare → Qlib | 只读盘点 completed Parquet、校验 checksum、构建/验证不可变 provider、运行本地回测 | 93 个 completed 文件已验证;早期未复权 provider 与两次 byte-identical momentum run | 下载仅到 1993-10;缺复权、真实 benchmark、历史成分/ST/停牌/涨跌停,不能进入生产 decision |
|
||||
| XtTrader shadow | 只读账户查询、HMAC 账户绑定、broker observation/snapshot、零下单 target-diff 计划与完整 verifier | fake broker/QMT 合约;所有 broker mutation 均不可达 | 需要授权 QMT 环境的账户合同探针、20 日影子、恢复/对账和券商确认 |
|
||||
| XtTrader shadow | 只读账户查询、HMAC 账户绑定、broker observation/snapshot、零下单 target-diff 计划与完整 verifier | fake broker/QMT 合约;所有 broker mutation 均不可达 | 需要授权 QMT 环境的账户合同探针、恢复/对账和券商确认;Baseline 60 至少 20 个交易日,Production 80 当前缺口为同一冻结候选至少 60 个交易日 |
|
||||
|
||||
`portable-momentum-v1` 只是当前真实跑过聚宽的跨引擎连通性 smoke,不是
|
||||
60 分 Baseline。Baseline 的权威决策留在本地:冻结 Ridge model bundle,
|
||||
@@ -68,13 +90,14 @@ make local
|
||||
|
||||
它依次执行:
|
||||
|
||||
1. 全量单元/合约测试;
|
||||
2. 聚宽与 QMT 单文件 bundle;
|
||||
3. synthetic execution smoke 与完整 manifest verifier;
|
||||
4. synthetic research-to-target 与 research manifest verifier;
|
||||
5. JoinQuant/QMT mock parity 报告及校验;
|
||||
6. capability probe;
|
||||
7. Colab notebook 语法检查和逐 cell 本地执行。
|
||||
1. 新 namespace 依赖边界和 80 分 profile 评估;
|
||||
2. 全量单元/合约测试;
|
||||
3. 聚宽与 QMT 单文件 bundle;
|
||||
4. synthetic execution smoke 与完整 manifest verifier;
|
||||
5. synthetic research-to-target 与 research manifest verifier;
|
||||
6. JoinQuant/QMT mock parity 报告及校验;
|
||||
7. capability probe;
|
||||
8. Colab notebook 语法检查和逐 cell 本地执行。
|
||||
|
||||
等价的脚本入口:
|
||||
|
||||
@@ -437,7 +460,9 @@ key。它必须稳定备份、限制访问且绝不
|
||||
官方 query API 对“失败”和“空列表”的返回合同,并记录实际
|
||||
terminal/xtquant build、确认 `XtTrade.traded_amount` 成交金额语义与允许
|
||||
误差。当前 amount 只是被认证的 informational fact,不参与 target quantity
|
||||
或 proposed delta。之后还要累计至少 20 个交易日、恢复演练和零未知账差。
|
||||
或 proposed delta。之后还要先满足 Baseline 60 的至少 20 个交易日 shadow、
|
||||
恢复演练和零未知账差;Production 80 当前要求同一冻结候选累计至少 60 个
|
||||
交易日。
|
||||
|
||||
## Qlib 0.9.7
|
||||
|
||||
@@ -553,7 +578,8 @@ real_platform_pass = false
|
||||
gate_credit = []
|
||||
```
|
||||
|
||||
真实 G9 仍要求聚宽/QMT 导出与至少 20 个交易日 QMT 影子记录。完整层级、
|
||||
Baseline 60 的真实 G9 仍要求聚宽/QMT 导出与至少 20 个交易日 QMT 影子记录;
|
||||
Production 80 当前要求同一冻结候选至少 60 个交易日。完整层级、
|
||||
容差和 reason code 见
|
||||
[`docs/CROSS_ENGINE_CONSISTENCY.md`](docs/CROSS_ENGINE_CONSISTENCY.md)。
|
||||
|
||||
@@ -593,7 +619,8 @@ factor risk、CVXPY、TWAP/POV 或 Ridge 上游四层在 hosted 环境被调用
|
||||
- 聚宽已有单包 TargetPackage execution 导出,但仍缺授权真实数据的多期
|
||||
TargetPackage、本地/聚宽逐层同输入对账;QMT 尚无真实 peer 导出,QMT
|
||||
历史 ST 权限正例、账户 query 合同、
|
||||
20 日只读影子、回调/恢复/对账尚未形成真实证据;
|
||||
Baseline 60 所需 20 日只读影子、回调/恢复/对账尚未形成真实证据;
|
||||
Production 80 还要求同一冻结候选累计至少 60 个交易日 shadow;
|
||||
- 自动 scheduler、日终对账服务、监控告警与 kill-switch 演练未形成连续证据;
|
||||
- 实际券商程序化交易报告、权限、频率与软件要求尚未书面确认。
|
||||
|
||||
|
||||
Reference in New Issue
Block a user