feat: establish Quant OS production-80 architecture

This commit is contained in:
2026-07-30 22:59:25 +08:00
parent 919c64c679
commit 26cc814f3f
67 changed files with 7005 additions and 142 deletions
+299
View File
@@ -0,0 +1,299 @@
# Quant OS 新架构上手
这份文档只给出当前真实可运行入口。每一步都标明它需要什么、产生什么,以及
不能证明什么。
## 0. 先认清当前声明
```text
Baseline 60: NOT_BASELINE_60 (0/10 gates)
Production 80: BLOCKED_FROM_LIMITED_LIVE (0/100 verified evidence points)
Broker mutation: disabled
Investment value claim: false
```
这是 fail-closed 结论,不妨碍运行本地工程 smoke。
## 1. 本地路径和安装
独立仓:
```text
~/boat-workspace/Code/quant-os
```
推荐 Python 3.12
```bash
cd ~/boat-workspace/Code/quant-os
python3.12 -m venv .venv-core
source .venv-core/bin/activate
python -m pip install -e .
```
核心无第三方运行依赖。JQData、Qlib 和 QMT 必须使用各自独立环境。
当前 CLI 的 profile、配置和 bundle 是仓库资产,不嵌入 wheel。已安装的
`quant-os` 应在 checkout 内运行;从其他目录调用新命令时显式写:
```bash
quant-os --project-root ~/boat-workspace/Code/quant-os doctor
```
wheel 不是独立的数据/runtime 分发包。
## 2. 十分钟理解三平面
- Control plane:选择 RunSpec、编排 use case、做发布判定。
- Data plane:不可变 PIT 数据 → 特征/模型 → 权重 → execution intent。
- Evidence plane:记录 hash、来源、平台事实、差异和 Gate;不能修改决策。
平台和供应商只通过 adapter/port 进入。读券商与下单是两个独立接口。
## 3. 工程体检
状态:`[已实现|无需账号]`
```bash
quant-os doctor
quant-os architecture check
quant-os standard validate
quant-os standard evaluate
```
预期:
- `doctor.ok = true`:目录、入口、profile 和新 namespace 边界有效;
- `standard evaluate.ok = true`:评估过程有效;
- `qualified = false`:当前没有达到 80,属于正确结果。
`doctor.architecture.scope = new_namespace_only` 表示 AST checker 只覆盖
`src/quant_os/`legacy `quant60` 和根级 adapter/platform/tool 仍在迁移。
它证明工程和标准可验证,不证明全部旧代码已经分层、策略有效或平台可用。
没有 editable install 时可用:
```bash
PYTHONPATH=src:. python -m quant_os doctor
```
## 4. 无账号本地 demo
状态:`[已实现|无需账号]`
完整验证:
```bash
make local
```
较短路径:
```bash
quant-os smoke \
--config configs/baseline.json \
--output artifacts/local-smoke
quant-os verify-manifest artifacts/local-smoke/manifest.json
quant-os research-smoke --output artifacts/research-smoke
quant-os verify-research-manifest artifacts/research-smoke/manifest.json
```
`quant-os` 在这些命令上调用兼容的 `quant60` V1 内核。产物仍使用 V1 identity
因此历史 verifier 不会失效。
本地 demo 证明:
- 核心规则、ledger、manifest 和 hash 可重放;
- synthetic 五层链能够生成 ModelBundle 和 TargetPackage
- 平台 bundle 可生成并通过 fake contract。
它不证明:
- 真实市场收益;
- 真实 JQData 完整性;
- 真实 QMT 或券商执行;
- 60/80 达标。
## 5. Tushare 数据与 Qlib
状态:`[已实现到技术 smoke|真实镜像仍不完整]`
先阅读 [`../TUSHARE_LOCAL_DATA.md`](../TUSHARE_LOCAL_DATA.md)。当前盘点表明
completed Parquet 能校验并转换为 managed Qlib provider,但缺复权、真实
benchmark、历史成分、ST、停牌和涨跌停,不能进入生产 decision。
典型流程:
```bash
PYTHONPATH=src:. python tools/tushare_qlib.py inventory --help
PYTHONPATH=src:. python tools/tushare_qlib.py build --help
PYTHONPATH=src:. python tools/tushare_qlib.py verify --help
PYTHONPATH=src:. python -m platforms.qlib_runner --help
```
具体参数以 Tushare 文档和本机 inventory 为准。不要为了跑通而静默补缺失字段。
这条路径证明数据桥和 Qlib runtime 可用,不证明 Ridge Baseline、G1/G2 或
投资价值。
## 6. JQData → 本地 PIT
状态:`[已实现 adapter|需要授权账号]`
```bash
python3.12 -m venv .venv-jqdata
source .venv-jqdata/bin/activate
python -m pip install -r requirements/jqdata.txt
PYTHONPATH=src:. python tools/jqdata_snapshot.py \
--index 000905.XSHG \
--start 2024-01-02 \
--end 2024-12-31 \
--output data/snapshots/csi500-2024
quant-os snapshot-backtest \
--snapshot data/snapshots/csi500-2024/manifest.json \
--config configs/baseline.json \
--output artifacts/csi500-2024-backtest
```
凭据只通过无回显登录或本地 secret source 注入,不进入命令历史、Git、OB、
notebook 或 artifact。
重要限制:当前 snapshot backtest/decision 仍走
`portable-momentum-v1` compatibility path;它尚未接入真实 Ridge 五层权威。
## 7. Colab
状态:`[默认流程已实现|JQData/Qlib cell 需对应授权/运行时]`
打开 `notebooks/quant_os_colab.ipynb`。独立仓 clone 目标为:
```text
https://git.gomars.fun/boat/quant-os.git
```
默认 cell 不需要账号。`RUN_JQDATA=True``RUN_QLIB=True` 是显式可选。
Colab 禁止上传券商凭据、账户号、持仓/成交、QMT userdata 或未获许可的行情。
本地先验证 notebook
```bash
python tools/run_colab_notebook.py notebooks/quant_os_colab.ipynb
python tools/run_colab_notebook.py notebooks/quant_os_colab.ipynb --execute
```
## 8. 聚宽
状态:`[bundle 已实现|上传/导出需要登录聚宽]`
动量 smoke
```bash
python tools/bundle_platforms.py
```
TargetPackage consumer
```bash
python tools/bundle_platforms.py \
--target-package artifacts/research-smoke/target_package.json \
--output-dir dist/target-package
```
上传 `dist/target-package/joinquant_strategy.py` 后,必须保存平台运行参数、日志、
订单、成交和同输入 hash。当前已有一次 synthetic-research package 的真实
execution smoke,只证明 execution consumer,不计 G9/60/80。
## 9. QMT
状态:`[bundle/fake/read-only 框架已实现|真运行需要 Windows QMT 账号]`
当前可做:
```bash
python tools/bundle_platforms.py
PYTHONPATH=src:. python tools/export_mock_parity.py export \
--output artifacts/mock-parity/report.json
PYTHONPATH=src:. python tools/export_mock_parity.py verify \
artifacts/mock-parity/report.json
```
取得 QMT 后按顺序启用:
1. built-in 历史回测;
2. qmttools 回测导出;
3. XtTrader 只读 contract probe
4. broker snapshot 与 shadow plan
5. callback/restart/reconcile
6. 完成券商程序化交易报告确认后,才讨论 TradeBrokerPort。
账号、userdata 路径和账户标识不放进 Git/OB。当前没有任何 operator 可运行的
实盘下单命令,这是有意的安全边界。
## 10. 如何读 60/80 状态
```bash
quant-os standard evaluate
```
重点字段:
- `raw_score`:只有达到最低 evidence tier 且 hash 有效的控制项得分;
- `effective_score`:应用 60/canary cap 后的分数;
- `hard_gate_failures`:任何一项都阻断上线;
- `domain_floor_failures`:防止用文档/单一领域堆分;
- `prerequisites`60、QMT、券商确认、shadow、canary、P0/P1
- `standard_canonical_sha256`:本次评估解释所使用的精确标准版本;
- `pre_canary_authorization`:授权 ID/hash、有效期和 verifier/issuer provenance
- `pre_canary_authorization_valid_as_of_assessment`:授权在评估日是否仍可开始或继续
canary;过期后为 false,但不会否定期限内已完成的历史 canary chain
- `canary_authorization_chain_verified`:E4 canary 是否引用同一有效授权、处于合法
时间窗,并以实际最大资本/notional、标的、流量和 breach/stop 记录证明未突破
hard caps
- `verification_environment` / `test_only`:测试 verifier 永远不能冒充生产信任;
- `pre_canary_authorized`:只有生产 issuer registry 核验后才可能为真;
- `trusted_attestation_verified`:最终 promotion attestation 是否由信任边界核验;
- `qualified`:唯一可用于 promotion policy 的布尔值。
当前 CLI 没有注入 production trust provider / issuer registry,所以它只能
诚实评估当前全负状态,不能接受手工伪造的 `passed` 或自行颁发 60/80。
单元测试即使构造满分证据,也只能得到 `TEST_ONLY_STRUCTURAL_PASS`
production verifier 是明确 backlog。
公开页只展示脱敏静态快照,不是实时健康页:
```text
https://gomars.fun/quant-os/status/
```
## 11. 新策略如何接入
状态:`[目标 API|本轮只定义边界,尚未完成 Strategy SDK]`
策略最终应留在 `quants-strategies`,通过版本化 StrategySpec/port 进入 Quant OS。
策略只提供特征、预测或目标权重逻辑,不能自行:
- 读取券商 secret
- 调用 TradeBrokerPort
- 修改 evidence
- 绕过独立风险;
- 把 hosted 平台变成第二个 Alpha 权威。
当前新增策略仍按现有 `quant60` 实验接口工作,待 V2 StrategySpec 和 golden
vectors 完成后迁移。
## 12. 建议的学习顺序
1. 跑 `doctor` 和 `standard evaluate`
2. 跑 `make local`,打开 manifest 看 hash/identity
3. 对照 60/80 文档解释为什么 synthetic 不得分;
4. 阅读三平面架构和 ReadBroker/TradeBroker 拆分;
5. 盘点 Tushare provider,再跑 Qlib technical smoke
6. 获得 JQData 后生成真实 snapshot
7. 先做真实聚宽多期导出,再接真实 QMT;
8. 最后才累计 shadow/canary。
任何时候发现“代码可以下单,但证据/规则/券商确认还没到”,正确行为都是让
系统保持停机。