跳转至

Control-plane API

语言:简体中文 · English

quant-platform 中的 strategy_pipeline 负责协调 owner 实现和 artifact publication,传递 reference 和 receipt,不计算 artifact 的具体内容。

Contracts

ArtifactRef 用 kind、URI、digest 和 producer 标识不可变输出。RunRequest 携带 run ID 和输入 artifact reference。PublicationRequest 与 HandoffRequest 描述 下游交付。RunReceipt 记录公共结果,不暴露 owner 的异常文本。

from strategy_pipeline import ArtifactRef, RunRequest, run

request = RunRequest(run_id="run-2026-01-01", inputs=())

所有 contract 都是不可变且经过校验的 dataclass。产出 artifact 的代码应返回 ArtifactRef,避免返回内存中的 domain object 或 provider client。

编排

公共 runner 先调用 RunOwner,再调用 ArtifactPublisher:

receipt = run(request, owner=owner, publisher=publisher)
if receipt.status == "published":
    print(receipt.artifacts)

注入的实现抛出异常时,runner 返回经过脱敏的 owner_failure 或 publication_failure category,不把私有异常细节序列化到 receipt。

其他边界

使用 publish_artifact 接入 callable writer,使用 publish_handoff 接入目标 publisher。两者都会校验注入实现返回 ArtifactRef。

公共包不包含 provider SDK、凭证、网络 client、存储 backend、模型实现或策略 registry。 这些能力应放在使用方仓库的 adapter 后面。

多 owner 编排端口

需要协调多个 owner 的使用方可以通过 control_plane.ports 注入数据、研究、组合和 交接端口。PipelineOwnerPorts 只保存协议对象,Native*OwnerAdapter 只负责把已有 owner callable 接到控制面。公共包不会实现这些 owner 的领域逻辑。

completed_run_receipt 会按 data、alpha、portfolio 和 artifact_handoff 阶段 生成可序列化回执。owner 仓库可以替换适配器实现,公共控制面只依赖协议和回执结构。

目标文件中的默认 source label 是 strategy-pipeline。它表示控制面负责生成交接文件, 不表示控制面拥有具体策略或研究逻辑。需要自定义 source label 的使用方可以在自己的 adapter 中显式传入,不应把策略名称写入公共包。

AFML 证据绑定

attach_afml_evidence_to_lineage 可以把运行目录中已生成的研究协议、组合 sizing、 风险和 HRP receipt 绑定到 targets.json.lineage.json。函数只写入证据文件路径和 SHA-256,不修改目标持仓语义。默认要求研究协议报告的 level 为 release 且 status 为 pass,可以通过 require_release_protocol=False 放宽这个要求。