当前位置: 首页 > 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.gsyq.cn/news/1606386.html

相关文章:

  • git进阶07_Git 高级技巧与故障排查
  • [大模型架构重构,或可完美适配昇腾]大模型不是生成器而是分类响应器——三段式归档-范式-输出引擎 + 分类调度缓存
  • 2026最新易学入门APP怎么选?
  • 金融法草案正式落地|数据分类分级升级为法定义务,金融机构合规闭环落地指南
  • 漫画收藏者的终极管理工具:如何用标签系统拯救混乱的本地漫画库?
  • ChatGPT Plus付费全流程拆解(Apple ID/Google Pay/国际信用卡三轨并行实操手册)
  • 智慧工地边缘 AI 视觉识别方案:从摄像头到业务闭环
  • NLWeb:轻量级前端自然语言交互协议解析
  • 2026国内数字孪生头部企业TOP5:从长期运营能力看行业第一梯队
  • 中兴ZXR10-3928A端口镜像实战:从零配置到流量捕获
  • 全域感知,精准干预——气象调控与多链路设备的融合创新应用
  • ChatGPT Plus退订后数据去哪了?:深度解析OpenAI账户注销逻辑、API访问残留、聊天记录自动清除时效(附官方未公开的GDPR合规操作清单)
  • 静态住宅IP vs TikTok专线:两种直播网络方案的深度对比与选择指南
  • 2026年选展厅设计公司:5大核心标准及推荐的展厅设计公司
  • Anthropic零感层:大模型服务栈的协议级坍缩与上下文治理革命
  • MFC 主程序显示 模态对话框
  • Untrunc视频修复工具终极指南:三步拯救损坏的MP4视频文件
  • 基于图像验证的反钓鱼技术:从视觉特征到工程实践
  • 企业官网做 GEO 时,Schema JSON-LD 应该怎么配合?
  • 新衣洗几次就变旧
  • 计算机毕业设计之基于SSM框架的高校运动会管理系统的设计与实现
  • ChatGPT函数调用可靠性SLO达成率低于89%?用这6个可观测性埋点+Prometheus告警模板,1小时定位根因
  • MCMS v5.4.1文件上传漏洞深度剖析:从代码审计到RCE攻击链构建
  • 气体检测核心器件国产替代:从“卡脖子”到“全自主”还有多远?
  • ChatGPT Plus退订失败?92%用户踩中的5大隐形障碍,含Apple Family Sharing绑定冲突、Stripe支付网关冻结、OpenAI账户状态校验异常(附实时检测命令行工具)
  • YgoMaster终极指南:3种方式快速搭建本地游戏王PvP对战环境
  • Java 开发工具 IDEA 2025.2 社区版完整安装实操指南
  • SSRF漏洞深度解析:从原理到高级绕过与防御实战
  • Hermes Agent 项目深度解析与学习教程
  • 手把手搭建RAG+Agent智能问答Demo(LangChain+Chroma+BGE),附面试深挖清单