程序员量化交易实战 20:生成模拟盘日报和告警摘要
程序员量化交易实战 20:生成模拟盘日报和告警摘要
古董级程序员,大厂出来后一直在创业公司,现在仍活跃在一线做 AI 相关的开发。这个专栏会把一个 A 股量化平台从 0 到 1 拆开写:数据、策略、回测、模拟盘、提醒和生产化,尽量用真实代码和真实运行结果说话。更完整的更新也会同步到微信公众号「字与码」。
第 16-19 篇已经有了账本、快照、风控和调仓计划。
第 20 篇把这些结构合成一条稳定的模拟盘日报。它还不发送消息,只负责生成消息内容。

先做消息格式
很多系统一开始就急着接飞书、企业微信、邮件或短信。
我更愿意先把消息内容做成纯函数。只要标题、正文和严重级别稳定,后续接任何发送通道都比较简单。

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