程序员量化交易实战 21:把模拟盘结果压成推荐摘要
原创 · 约 7 分钟阅读 · 阅读 --
Last updated on

程序员量化交易实战 21:把模拟盘结果压成推荐摘要

作者: Alex Xiang


程序员量化交易实战 21:把模拟盘结果压成推荐摘要

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

第 20 篇已经能生成模拟盘日报。但日报更像“状态说明”,还不是一个适合复盘和提醒的动作摘要。

第 21 篇新增推荐摘要,把风控、调仓和持仓状态压成一个清晰动作:继续观察、检查调仓,或者优先降风险。

ZiCode 工程师整理模拟盘推荐摘要

为什么要多一层推荐摘要

风控报告告诉你哪里有问题,调仓计划告诉你可能要买卖什么,账户快照告诉你当前状态。

这些信息都重要,但提醒系统不适合把所有结构原样推给人。人每天更需要先看到一句话:今天需要做什么。

在量化系统里,这一层通常不是“交易信号”,而是“运营动作”。交易信号回答买卖方向,运营动作回答今天要不要人工介入、是否需要降低风险、是否可以继续观察。把这两者分开,可以避免提醒系统把一个技术信号包装成不该有的投资建议。

推荐对象

第 21 章新增 app/recommendations.py

@dataclass(frozen=True)
class PaperRecommendation:
    action: str
    severity: str
    summary: str
    reasons: tuple[str, ...]
    order_count: int

这里的 action 先保持简单:REDUCE_RISKREBALANCEHOLD

  • REDUCE_RISK:先处理阻断级风险,比如单票过度集中或总仓位过高。
  • REBALANCE:没有阻断级风险,但已有调仓计划需要检查。
  • HOLD:没有明显风险,也没有达到最小调仓阈值,继续观察。

优先级

推荐逻辑的关键是优先级。

阻断级风控永远高于调仓建议。也就是说,如果账户已经触发单票超限或总仓位过高,系统不应该一边提醒你调仓,一边淡化风险。

if risk_report.severity == "blocker":
    action = "REDUCE_RISK"
elif rebalance_plan.orders:
    action = "REBALANCE"
else:
    action = "HOLD"

这个判断很朴素,但它把模拟盘的动作边界写进了代码。

当前联动运行结果

现在可以通过第 21-25 篇共用的示例命令查看推荐摘要:

uv run python -m scripts.chapter_examples paper-ops

这条命令会先构造一个包含两只股票的模拟盘账户,再依次执行输入检查、状态保存、每日流程、推荐摘要、复盘汇总和输出检查。推荐摘要部分如下:

paper-ops 命令生成的推荐摘要运行结果

这次运行中,600519.SH 的持仓权重达到 49.90%,超过默认单票上限,因此推荐动作是 REDUCE_RISK。这里虽然也有一条调仓计划,但推荐层不会把它展示成普通调仓,而是优先提示风险处理。

本章更新与代码仓库

本章更新内容:

  • 新增 app/recommendations.py
  • 实现模拟盘推荐摘要对象。
  • 将快照、风控报告和调仓计划合成推荐动作。
  • 增加 paper-ops 联动示例,展示推荐摘要在完整模拟盘日流程里的输出。
  • 补充推荐动作和交易信号的边界说明。
  • 新增 tests/test_recommendations.py,覆盖风险优先、调仓建议和空账户继续观察。

代码仓库:

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

本章代码:

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

第 21 章提交为 8ede593,tag 为 chapter-21

本篇小结

推荐摘要不是预测收益,也不是投资建议。

第 21 篇只是把模拟盘内部状态整理成更适合人阅读的动作摘要。下一篇会把这些结果落到每日复盘记录里。

微信公众号

欢迎关注「字与码」

如果这篇文章对你有用,也欢迎在微信里继续关注后续更新。

微信公众号字与码二维码