当前位置: 首页 > news >正文

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

第 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}, )

函数内部依次生成快照、风控报告、调仓计划、推荐摘要、日报消息和复盘记录。它不会修改账户,也不会发送消息。

当前联动运行结果

每日流程也可以通过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 章提交为9e6672c,tag 为chapter-23

本篇小结

每日流程不是新功能堆叠,而是边界整合。

第 23 篇把前面几个模块串成一个稳定入口。下一篇会解决一个现实问题:程序重启后,模拟盘账户状态从哪里恢复。

http://www.jsqmd.com/news/1094427/

相关文章:

  • 自定义数据集
  • 内网穿透的应用-把雨声和篝火装进NAS:Moodist环境音服务部署实践
  • Adobe Speech to Text 使用教程Adobe Speech to Text 2026 Mac 下载安装教程
  • 2026掌静脉梯控实测:这三点体验颠覆你的认知
  • ClearerVoice-Studio语音处理引擎:解决复杂音频场景下的语音清晰化挑战
  • git进阶07_Git 高级技巧与故障排查
  • 90%的外贸网站标题都写错了!GEO视角下的标题优化法则
  • [大模型架构重构,或可完美适配昇腾]大模型不是生成器而是分类响应器——三段式归档-范式-输出引擎 + 分类调度缓存
  • 计算机毕业设计之基于深度学习的文本异常事件抽取系统研究与实现
  • 从Prompt Engineering到Parameter Tuning:ChatGPT微调能力金字塔(L1-L5认证级能力图谱),你卡在第几层?(附自测题库与进阶路径图)
  • 计算机毕业设计之基于SSM技术企业营销画像系统设计与实现
  • 专业Modbus测试工具OpenModScan:工业自动化调试的终极解决方案
  • AI系统建设知识管理与应用系统:让企业的“AI造轮子”经验变成“数字资产”
  • 【JAVA毕设源码分享】基于springboot建筑工程项目管理系统设计与实现(程序+文档+代码讲解+一条龙定制)
  • 2026养猪保温灯罩排行榜!猪场实测:这才是规模化养殖标配
  • Calibre繁简中文转换插件:3分钟搞定电子书跨地区阅读难题
  • C#联合编程(网格检测)
  • 2026最新易学入门APP怎么选?
  • #代码合并冲突:一场关于协作的“健康摩擦”
  • 年轻电竞玩家AI笔记本实测:四款机型核心性能对比
  • 【Function Calling性能瓶颈白皮书】:实测对比12种参数组合,响应延迟从2.8s压至320ms的关键3配置
  • 专业geo搜索优化公司怎么选?一文理清核心要点
  • NukeSurvivalToolkit:292个专业特效插件如何让你的合成效率提升300%
  • 金融法草案正式落地|数据分类分级升级为法定义务,金融机构合规闭环落地指南
  • 计算机毕业设计之电商网站的设计与实现
  • ChatGPT Plus付费全流程拆解(Apple ID/Google Pay/国际信用卡三轨并行实操手册)
  • 申博文献综述撰写核心逻辑,告别堆砌式无效写作
  • GHelper完整使用指南:华硕笔记本性能控制的终极解决方案
  • 漫画收藏者的终极管理工具:如何用标签系统拯救混乱的本地漫画库?
  • 微调LLM前你需要了解的一些概念-- 反向传播解析