程序员量化交易实战 20:生成模拟盘日报和告警摘要
原创 · 约 6 分钟阅读 · 阅读 --
Last updated on

程序员量化交易实战 20:生成模拟盘日报和告警摘要

作者: Alex Xiang


程序员量化交易实战 20:生成模拟盘日报和告警摘要

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

第 16-19 篇已经有了账本、快照、风控和调仓计划。

第 20 篇把这些结构合成一条稳定的模拟盘日报。它还不发送消息,只负责生成消息内容。

ZiCode 工程师生成模拟盘日报和告警摘要

先做消息格式

很多系统一开始就急着接飞书、企业微信、邮件或短信。

我更愿意先把消息内容做成纯函数。只要标题、正文和严重级别稳定,后续接任何发送通道都比较简单。

模拟盘日报和告警摘要

消息对象

第 20 章新增 app/alert_messages.py

@dataclass(frozen=True)
class PaperAlertMessage:
    title: str
    body: str
    severity: str

它足够小,但边界清楚:格式化模块只产出消息,不关心发到哪里。

日报内容

format_paper_daily_alert() 接收账户快照、风控报告和可选调仓计划。

正文包含:

  • 总权益。
  • 现金和现金比例。
  • 持仓市值。
  • 风控状态。
  • 风控违规项。
  • 调仓建议。

如果没有调仓计划,它不会编造建议;如果计划为空,会明确写“无需调仓”。

为什么保留纯文本

纯文本有几个现实优点:

  • 容易测试。
  • 容易粘贴到文章和日志。
  • 容易发到不同通知通道。
  • 不需要先确定最终 UI。

后续如果要做 Markdown、HTML 或飞书富文本,可以在这个稳定对象之上增加新的 renderer。

本章更新与代码仓库

本章更新内容:

  • 新增 app/alert_messages.py
  • 实现模拟盘日报消息对象和格式化函数。
  • 合并账户快照、风控报告和调仓计划。
  • 新增 tests/test_alert_messages.py,覆盖有风控违规和无调仓建议两种场景。
  • 完成第 16-20 篇阶段 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-20
uv sync --extra dev
uv run pytest tests/test_alert_messages.py

第 20 章提交为 2a9647e,tag 为 chapter-20。当前全量测试通过:201 passed,只有既有 FastAPI deprecation warning。

第 16-20 篇阶段 review

第四组五篇完成了“模拟盘状态到日报摘要”的闭环。

第 16 篇实现模拟盘账本,让账户现金、持仓、买卖成交和权益计算有了可测试基础。

第 17 篇生成账户快照,统一现金比例、持仓市值、浮动盈亏和权重口径。

第 18 篇加入风控检查,针对总仓位、现金缓冲和单票权重输出结构化违规项。

第 19 篇把目标权重转换成调仓计划,并明确计划不是执行。

第 20 篇把快照、风控和调仓建议合成纯文本日报,为后续接入通知通道做准备。

这组文章的重点不是让模拟盘看起来完整,而是把状态、检查、计划和消息四个边界分清楚。边界清楚,后面接真实行情、调度任务和通知渠道时才不容易互相污染。

本篇小结

模拟盘日报不是最后一步,而是一个集成点。

第 20 篇把前四篇的结构串起来,让系统每天能产出一条可读摘要。下一组文章会继续推进推荐、复盘和提醒通道,把模拟盘从“能算”推进到“能持续观察”。