程序员量化交易实战 23:串起每日模拟盘流程

📅 2026/6/30 6:59:06
程序员量化交易实战 23:串起每日模拟盘流程
第 17-22 篇已经有了很多小模块。单独看都能跑但系统每天运行时需要的是一条完整链路。第 23 篇新增每日模拟盘流程把快照、风控、调仓、推荐、日报和复盘串成一次可测试的运行结果。先做纯函数编排这章仍然不引入 APScheduler、Celery 或 crontab。原因是现在更需要确定流程顺序而不是确定运行器。只要核心编排是纯函数后续接任何调度系统都比较容易。这里的“纯函数编排”不是说内部没有任何计算而是指它不直接发消息、不写数据库、不修改账户。它只接收账户、行情、目标权重和交易日然后返回一组结果。这样失败时能直接重跑测试时也不需要准备外部服务。每日流程结果第 23 章新增app/paper_daily_cycle.py。dataclass(frozenTrue) 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_datedate(2026, 1, 19), last_prices{000001.SZ: 10.0}, target_weights{000001.SZ: 0.4}, )函数内部依次生成快照、风控报告、调仓计划、推荐摘要、日报消息和复盘记录。它不会修改账户也不会发送消息。当前联动运行结果每日流程也可以通过paper-ops命令看到uv run python -m scripts.chapter_examples paper-ops下面这张图只保留流程顺序和关键输出一次每日流程至少要产出六类对象账户快照、风控报告、调仓计划、推荐摘要、日报消息和复盘记录。把这些对象统一放进PaperDailyCycleResult后续才能对整条链路做生产检查而不是只测试某个函数。为什么暂时不自动执行模拟盘自动化要慢一点。如果流程本身还没测清楚过早接调度器只会让问题变得更难定位。第 23 篇先把“每天该算什么”固定下来下一步再讨论“每天什么时候算、算完保存到哪里”。本章更新与代码仓库本章更新内容新增app/paper_daily_cycle.py。实现每日模拟盘运行结果对象。串联账户快照、风控、调仓、推荐、日报和复盘记录。增加paper-ops联动示例展示每日流程六类产物的运行顺序。补充纯函数编排和调度器解耦的工程背景。新增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 章提交为9e6672ctag 为chapter-23。本篇小结每日流程不是新功能堆叠而是边界整合。第 23 篇把前面几个模块串成一个稳定入口。下一篇会解决一个现实问题程序重启后模拟盘账户状态从哪里恢复。