原创 · 约 6 分钟阅读 · 阅读 --
Last updated on
程序员量化交易实战 23:串起每日模拟盘流程
程序员量化交易实战 23:串起每日模拟盘流程
古董级程序员,大厂出来后一直在创业公司,现在仍活跃在一线做 AI 相关的开发。这个专栏会把一个 A 股量化平台从 0 到 1 拆开写:数据、策略、回测、模拟盘、提醒和生产化,尽量用真实代码和真实运行结果说话。更完整的更新也会同步到微信公众号「字与码」。
第 17-22 篇已经有了很多小模块。单独看都能跑,但系统每天运行时需要的是一条完整链路。
第 23 篇新增每日模拟盘流程,把快照、风控、调仓、推荐、日报和复盘串成一次可测试的运行结果。

先做纯函数编排
这章仍然不引入 APScheduler、Celery 或 crontab。
原因是现在更需要确定流程顺序,而不是确定运行器。只要核心编排是纯函数,后续接任何调度系统都比较容易。

每日流程结果
第 23 章新增 app/paper_daily_cycle.py。
@dataclass(frozen=True)
class PaperDailyCycleResult:
snapshot: PaperAccountSnapshot
risk_report: PaperRiskReport
rebalance_plan: RebalancePlan
recommendation: PaperRecommendation
alert_message: PaperAlertMessage
review_record: PaperReviewRecord
这个对象把一天的主要产物放在一起,方便测试、日志和后续持久化。
编排入口
result = run_paper_daily_cycle(
account,
trade_date=date(2026, 1, 19),
last_prices={"000001.SZ": 10.0},
target_weights={"000001.SZ": 0.4},
)
函数内部依次生成快照、风控报告、调仓计划、推荐摘要、日报消息和复盘记录。它不会修改账户,也不会发送消息。
为什么暂时不自动执行
模拟盘自动化要慢一点。
如果流程本身还没测清楚,过早接调度器只会让问题变得更难定位。第 23 篇先把“每天该算什么”固定下来,下一步再讨论“每天什么时候算、算完保存到哪里”。
本章更新与代码仓库
本章更新内容:
- 新增
app/paper_daily_cycle.py。 - 实现每日模拟盘运行结果对象。
- 串联账户快照、风控、调仓、推荐、日报和复盘记录。
- 新增
tests/test_paper_daily_cycle.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-23
uv sync --extra dev
uv run pytest tests/test_paper_daily_cycle.py
第 23 章提交为 9e6672c,tag 为 chapter-23。
本篇小结
每日流程不是新功能堆叠,而是边界整合。
第 23 篇把前面几个模块串成一个稳定入口。下一篇会解决一个现实问题:程序重启后,模拟盘账户状态从哪里恢复。