程序员量化交易实战 30:生成每日运行健康报告
原创 · 约 7 分钟阅读 · 阅读 --
Last updated on

程序员量化交易实战 30:生成每日运行健康报告

作者: Alex Xiang


程序员量化交易实战 30:生成每日运行健康报告

古董级程序员,大厂出来后一直在创业公司,现在仍活跃在一线做 AI 相关的开发。这个专栏会把一个 A 股量化平台从 0 到 1 拆开写:数据、策略、回测、模拟盘、提醒和生产化,尽量用真实代码和真实运行结果说话。更完整的更新也会同步到微信公众号「字与码」。

第 26-29 篇补了提醒通道、文件发送、价格源和目标权重策略。

第 30 篇做一个阶段收口:把价格缺失、生产检查和提醒回执汇总成每日运行健康报告。

ZiCode 工程师查看模拟盘运行健康报告

健康报告看什么

健康报告不评价策略好坏。

它只回答一个工程问题:今天这次模拟盘运行是否健康?

每日运行健康报告

当前判断包括:

  • 价格快照是否有缺失 symbol。
  • 输入生产检查是否有问题。
  • 输出生产检查是否有问题。
  • 通知回执是否接收成功。

报告对象

第 30 章新增 app/run_health.py

@dataclass(frozen=True)
class RunHealthReport:
    status: str
    issue_count: int
    notification_accepted: bool
    missing_price_count: int
    summary: str

status 只保留三档:okwarningblocker

状态优先级

生产检查失败是 blocker。

缺价格或者提醒失败是 warning。它们未必让当天结果完全不可用,但必须被看见。

if issue_count:
    status = "blocker"
elif missing_price_count:
    status = "warning"
elif notification_receipt is not None and not notification_accepted:
    status = "warning"
else:
    status = "ok"

这类优先级以后可以继续细化,但第一版先把最重要的分叉写清楚。

本章更新与代码仓库

本章更新内容:

  • 新增 app/run_health.py
  • 实现运行健康报告对象。
  • 汇总价格快照、输入检查、输出检查和提醒回执。
  • 新增 tests/test_run_health.py,覆盖健康、阻断和提醒失败三类状态。
  • 完成第 26-30 篇阶段 review。

代码仓库:

https://github.com/ax2/zi-quant-platform

本章代码:

git clone https://github.com/ax2/zi-quant-platform.git
cd zi-quant-platform
git checkout chapter-30
uv sync --extra dev
uv run pytest tests/test_run_health.py

第 30 章提交为 7add464,tag 为 chapter-30。当前全量测试通过:229 passed,只有既有 FastAPI deprecation warning。

第 26-30 篇阶段 review

第六组五篇补齐了模拟盘运行链路里几条关键边界。

第 26 篇抽象提醒通道,让日报发送不再绑定具体平台。

第 27 篇实现文件型通道,用 JSONL 保存日报发送记录,方便本地验证和回放。

第 28 篇抽象价格源,把价格输入和每日流程拆开,并显式暴露缺失 symbol。

第 29 篇加入目标权重策略,把候选列表转换成总仓位受控的等权目标。

第 30 篇生成运行健康报告,把价格、生产检查和通知回执汇总成 okwarningblocker

这一组的重点不是做更复杂的策略,而是继续把工程边界拆稳。提醒、价格、权重、健康状态都独立以后,后面接真实调度和真实行情时,改动范围会小很多。

本篇小结

健康报告是每日运行的最后一层摘要。

第 30 篇让模拟盘不仅能算、能提醒,还能说明这次运行本身是否健康。下一组文章可以在这条链路上继续接真实调度、报告归档和更接近生产环境的数据输入。