已有股票持仓怎么做模拟组合:冻结起始快照后单独推演
从已有股票持仓开始模拟,需要带日期的数量快照和独立确认的现金假设。股票市值不能变成虚拟账户再次消费的现金。先冻结开场资产,说明未覆盖持仓,再让模拟路径独立于后来真实账户活动,不能悄悄同步变动,把人的决定写进规则历史。
本指南完全使用合成持仓快照及后续合成账户更新,不访问用户账户、对账单服务或券商。从已有持仓初始化持续影子分支属于外部扩展,不是已核实 CoTrading 能力,也不能由原批次影子回放推导。本例只建立声明的部分范围虚拟账,没有真正取得任何人的持仓。
取得只读开场快照
真实研究输入需要确认快照时间、证券身份、数量、币种和来源引用。原导出保持只读,另建标准化工作数据。没有 as-of 边界的持仓列表,无法说明哪些交易在实验之前,也无法排除后来数量被带进初态。即使数量表看起来完整,也不能因此假定它与给定现金来自同一时点。
SEC 费用说明建议核对账户与成交确认来理解成本,这些记录可帮助确认实际资产和收费,但本文没有导入。程序字典都是虚构夹具,不是匿名化用户数据,也不代表真实账户勾稽已经完成。文章只展示取得确认输入后如何构造独立分支。
提供的快照为二〇二六年一月一日 UTC 十六时,美元持仓 A 两股、B 三股、C 五股。时间只是夹具边界,不说明真实交易所开市或存在这些报价。初始化要求显式时区偏移,且只接受本例 USD;换汇与多账户合并不在契约内,不能用默认币种掩盖输入未确认。
将数量映射到核实篮子
观察篮子只有 A、B,精确身份映射到两个键,C 未覆盖。初始化要求对每个未覆盖持仓明确排除理由,且不能附无关排除。没有确认就报错,不静默删除 C,也不把余下股票重新归一成完整账户。真实映射还要区分上市地、股份类别与具体柜台,名称相近不能自动互换。
接受分支标为 active_partial_scope,C 的排除理由始终随账保留。原输入的五股 C 没有消失,只是不属于当前模拟范围。没有提供 C 报价,所以其价值未知,不能称 A/B 分支为投资者完整组合,也不能从它计算全账户回报或推断全部风险已经覆盖。
数量按夹具整股政策要求非负整数,证券身份不能空白。真实碎股、股份类别映射、手数和公司行动需要独立处理。某股票在计划篮子中,不证明应用能取得及时数据或按真实规则成交。范围与数据的核实记录应附在初始化包,不由一次本地数组计算替代。
不在纸面上重复卖掉持仓
开场价格 A=100、B=50,覆盖股票价值为两股乘 100 加三股乘 50,即 350。独立现金 None 时,结果 waiting_cash,保留 covered_value=350,没有 cash 字段。这是有效准备结果,不是有 350 可花现金的活跃账户,程序没有清算原股票或把它当额外入金。
明确提供现金 200 后,分支以该现金、A 两股、B 三股开始,初始净值 550。股票 350 与现金 200 是不同资产。现金假设应说明是已确认可用资金,还是刻意选定的虚拟研究额度,不能把任意实验数字表现为已核实券商余额,也不能从盈利样本倒推账户可买数量。
Python Decimal 文档支持金额和价格的十进制及有限数检查。程序拒绝 NaN 或非正标价、负或非有限现金、缺必要报价及未确认排除。开场价格假设已经为快照边界准备好,小助手没有独立核实报价时间和交易日历,真实接入不能省掉这一步。
现金确认和估值确认也要分开保留。可能已知股数但现金未对齐,或现金已确认却缺某只股票标价。此时应分别展示已知状态与阻断原因,不将缺字段统一填零。补齐后使用同一个冻结快照重建分支,并保留确认发生的时间,避免后来输入被误写成原先就已知。
原始输入与独立分支同时冻结
程序保存原快照副本和序列化摘要,初始化及虚拟交易后,原对象与摘要必须不变,分支使用独立复制的持股字典。这些检查针对程序内意外修改,不认证来源真实性,也不证明开场时间被可信预登记。真实输入仍需适当来源证据,不能只凭哈希就称为已审计账户。
分支带原 as-of、USD、human-v1、接受持仓及排除理由。版本标识代表人工给定解释,程序没有生成或学习规则,只直接接收之后的示例买入请求。真实观察工作流还需事前冻结可执行规则及决策输入,不能把本文初始化助手描述成能够自动从持仓提取策略的系统。
开场决定与后续事件分开记录。看结果后更换开场数量,会改变实验初始暴露;若发现来源纠正,应保留旧分支,说明新版本或从可信边界重建。不能只改期末余额,却让起始来源保持旧说法,否则股数、现金、规则与结果无法形成可追溯的同一条路径。
跟随第一次虚拟成交
下一组合成标价 A=110、B=45,未交易分支价值为 200 加两股乘 110 加三股乘 45,等于 555。由 550 变化是估值,不是新现金。拟按 110 买一股 A、费用一,需要现金 111,原确认现金 200 足够。这一步没有使用股票市值或未来卖款来支持购买。
买入后现金 89、A 三股、B 三股。同价净值为 89 加三股乘 110 加三股乘 45,等于 554,恰为交易前 555 减费用。函数检查现金与 A 的同价桥并保持 B 不变,独立完整分支估值再确认全部接受股票都在账内,没有只验证发生交易的一只后漏掉其他资产。
再请求按 100 买一股 A、费用一,需要 101,却只有 89,必须拒绝。原股票市值不能自动资助它。此反例针对开场资产被重复当钱花,机制不同于 C 未覆盖或缺报价。没有开启借款,也没有预支未确认卖出款;若真实模型允许融资,必须另定资金规则,不能由正净值推导。
后来真实风格更新不自动同步
程序构造后续合成账户风格快照,B 为零、现金 335,但不传给分支,所以分支仍是 B 三股、现金 89。这是分离政策的模型,没有连接实际账户输入。人的后续卖出不自动成为冻结规则下的虚拟卖出,两条路径不同并不说明数据一定错了,而是各自执行了不同动作。
之后标价 A=105、B=40,独立分支净值为 89 加三股乘 105 加三股乘 40,等于 524。这只是部分 A/B 虚拟账,后续真实风格输入仍有未覆盖 C,也不提供可直接比较的完整估值。不能将两者差额报告成规则反事实利润,更不能据此推断人如果跟单会得到同样结果。
若确实希望同步,应作为新实验或明确外部流,记录数量和现金影响。静默同步会让规则看起来提前知道人的动作,并破坏虚拟结果归属。独立分支才能评价冻结规则与人工记录行为是否不同;不访问实际账户的本例也没有授予任何真实交易权限或建立实盘复制链路。
运行并验收初始化包
下载完整示例,保存 R648.py,以 Python 3.12 或更新版本执行 python R648.py。只依赖标准库和合成快照。断言验证现金等待、覆盖价值 350、初始净值 550、估值 555 与 554、现金 89、末部分净值 524、源未改及排除未确认、买不起、NaN 标价拒绝。
交付来源边界、接受身份与数量映射、未覆盖账、现金假设、开场价格、规则引用和独立分支状态,并显著标明部分范围。这些产物不授权实盘,也不证明赢家规则有效。另一个准备流程即使有五笔盈利来源,也不能替代正确开场资产或独立未来观察,更不能把已有持仓误作没有风险的研究起点。
验收可以从原快照逐项勾到接受与排除两张表,再从接受表复算初始资产。后续每次虚拟成交应能回到上一状态与确认输入,真实风格更新保持在独立记录中。这样范围变动、现金纠正和策略动作都有清楚归属,不需要通过覆盖旧快照来维持一条看起来连续的历史。
常见问题
覆盖股票市值能当开场现金吗?
不能。原股份仍是股份,现金未知使本例等待,不会多建一份资金。
后来真实卖出会自动改变模拟账吗?
不会。分支保持独立,有意状态转移需新政策与明确资产移动记录。