news 2026/6/26 8:11:15

程序员量化交易实战 16:先把模拟盘账本写清楚

作者头像

张小明

前端开发工程师

1.2k 24
文章封面图
程序员量化交易实战 16:先把模拟盘账本写清楚

第 15 篇完成了策略晋升门禁。通过门禁不等于可以真实交易,它只表示这个候选策略有资格进入更慢、更保守的纸面模拟盘观察。

第 16 篇先不做复杂撮合,也不接券商接口,只做一件事:把模拟盘账户账本写清楚。

为什么从账本开始

模拟盘的第一层可信度来自账本。

如果买入后现金没有扣对,卖出后持仓没有减对,手续费没有算进成本,后面的权益曲线、风控、调仓提醒都会建立在错误状态上。

这里先把几个常见名词说清楚:

名词在模拟盘里的含义
账本记录现金、持仓、成交和盈亏的账户状态
成交一笔订单被接受后形成的账户变更
平均成本当前持仓每股摊薄后的成本,买入手续费也会影响它
已实现盈亏卖出后真正落到账户里的盈亏
未实现盈亏当前持仓按最新价估算出来的浮动盈亏

账户状态

第 16 章新增app/paper_ledger.py,核心对象很少:

@dataclass(frozen=True) class PaperAccountState: cash: float positions: dict[str, PaperPositionState] = field(default_factory=dict)

持仓只保留当前需要的字段:代码、股数、平均成本和已实现盈亏。这里没有数据库,也没有异步任务,是一个纯函数账本,便于测试和复用。

执行买卖

下单入口是apply_paper_order()

它会复用第 4 篇的 A 股交易规则:买卖股数按 100 股一手处理,买入检查现金,卖出检查可用持仓,并使用同一套手续费估算函数。

execution = apply_paper_order( account, trade_date=date(2026, 1, 8), symbol="000001.SZ", side="buy", price=10.0, shares=1234, )

这个订单会被规范成 1200 股。账本返回PaperExecution,其中既包含本次成交,也包含成交后的新账户状态。

市值和权益

账本还提供两个小函数:

account_market_value(account, last_prices) account_total_equity(account, last_prices)

它们暂时只用最新价估算持仓市值。后续第 17 篇会把这些值组织成更完整的账户快照。

当前主线联动运行

当前主线仓库提供了一条从第 16 篇跑到第 20 篇的模拟盘示例:

git clone https://github.com/ax2/zi-quant-platform.git cd zi-quant-platform uv sync --extra dev uv run python -m scripts.chapter_examples paper-flow

第 16 篇对应的是账本成交部分:

这次示例从 100000 现金开始,买入000001.SZ6400 股,成交金额 79744.00,费用 24.72,成交后现金剩 20231.28。这个截图比单独贴测试结果更有用,因为它展示了买入订单如何真实改变账户状态。

本章更新与代码仓库

本章更新内容:

  • 新增app/paper_ledger.py
  • 实现模拟盘账户、持仓、成交执行结果和买卖更新逻辑。
  • 复用 A 股交易规则和手续费估算。
  • 新增tests/test_paper_ledger.py,覆盖买入、现金不足、卖出、无持仓卖出和权益计算。
  • 在当前主线补充scripts.chapter_examples paper-flow联动示例,可真实运行第 16-20 篇模拟盘链路。
  • 补充账本、成交、平均成本、已实现盈亏和未实现盈亏等常见名词。

代码仓库:

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

本章代码:

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

第 16 章提交为936cb5c,tag 为chapter-16

本篇小结

模拟盘不是先做界面,也不是先做提醒。

第 16 篇把账户现金、持仓、成交和权益计算写成了可测试的账本函数。下一篇会在账本之上生成账户快照,让模拟盘状态可以被展示、风控和复盘。

版权声明: 本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若内容造成侵权/违法违规/事实不符,请联系邮箱:809451989@qq.com进行投诉反馈,一经查实,立即删除!
网站建设 2026/6/26 8:10:37

深度解析:Obsidian Excel表格转换插件的技术架构与实现机制

深度解析:Obsidian Excel表格转换插件的技术架构与实现机制 【免费下载链接】obsidian-excel-to-markdown-table An Obsidian plugin to paste data from Microsoft Excel, Google Sheets, Apple Numbers and LibreOffice Calc as Markdown tables in Obsidian edit…

作者头像 李华
网站建设 2026/6/26 8:09:47

产业资本深耕实体赛道 大健康投资进入全链运营时代

2026 年是湖南大健康产业向高质量发展跃迁的关键之年。随着健康湖南战略持续深化,全省大健康产业规模稳步向五千亿级迈进,高端医疗、智慧康养、中医药科创等细分赛道成为资本关注的核心。在行业升级的过程中,投资逻辑正在发生深刻变化&#x…

作者头像 李华
网站建设 2026/6/26 8:07:47

资料分析怎么提速?粉笔题库适合做哪些限时训练

资料分析是行测里很特殊的一个模块:它看起来数字多、材料长、计算烦,但一旦方法熟起来,反而比很多模块更容易形成稳定手感。 很多考生资料分析做得慢,不是因为完全不会,而是卡在几个细节上:材料找数慢、公式…

作者头像 李华
网站建设 2026/6/26 8:07:37

第2篇:初识味美——一部用数据语言写成的公司简史

一、好奇心 入职第三天,林悦对“味美”依然没有整体的认知。 她知道味美卖酱油、方便面、坚果,知道公司有三个品牌——味美、味臻、味刻,也知道全国分八个大区。但这些信息像散落在地上的拼图碎片,看不到全貌。 “老王,有没有什么资料能让我了解一下公司的整体业务?”…

作者头像 李华
网站建设 2026/6/26 8:07:03

把U盾“揣”进电脑里:ToDesk USB映射功能科普

Hello各位,想要体验加密狗和U盾的“跨时空”之旅吗?举几个场景案例先,深夜十点,财务总监老张在家里急得团团转,因为公司网银U盾是插在办公室那台沉默的台式机上,而一笔紧急的供应商货款临时通知必须在明早八…

作者头像 李华