38 lines
1.4 KiB
Markdown
38 lines
1.4 KiB
Markdown
# Research artifact contract handoff
|
||
|
||
## Goal
|
||
|
||
把完整可信研究链固化成存储中立、版本化、确定性的 `ResearchRunArtifact`,供
|
||
`research_results` 持久化和 `research_platform` 查询:
|
||
|
||
- run identity / schema version / config hash / code revision / data snapshot;
|
||
- signal scores / decision weights / signal-to-execution mapping;
|
||
- NAV / returns / benchmark / costs;
|
||
- trades / realized positions / cash;
|
||
- asset and daily return attribution;
|
||
- performance including Sortino / TE / IR / alpha / beta;
|
||
- reserved risk snapshot table;
|
||
- canonical JSON / SHA-256 manifest。
|
||
|
||
## Branch stack
|
||
|
||
- 当前:`codex/research-artifact-contract-20260821`
|
||
- 基线:`codex/ledger-attribution-20260821`(Draft PR #4)
|
||
- 下层:Draft PR #3 → Ready PR #2 → `main`
|
||
|
||
不得绕过堆叠顺序直接合并到 `main`。
|
||
|
||
## Verification
|
||
|
||
- `pytest -q --cov=src --cov-report=term-missing`: 520 passed,9 个既有 SciPy warning;
|
||
- total coverage 91%,`artifact.py` 91%;
|
||
- `mypy --strict src/`: 16 source files passed;
|
||
- changed-scope Ruff: passed;
|
||
- no runtime dependency added;
|
||
- no database, network, broker or filesystem write side effect in artifact builder。
|
||
|
||
## Next action
|
||
|
||
在 `research_results` 新建独立分支,实现只接受 `ResearchRunArtifact.table_frames()` 的
|
||
ClickHouse / artifact-store adapter;先以 mock writer 做契约测试,不接触真实数据库。
|