跳到正文

研究指南

股票组合与模拟研究

交易记录更新后策略要重做吗:旧规则继续模拟,新版单独观察

新增股票成交可能带来不同的交易解释。更新解释时应建立新的研究分支,因为直接修改正在观察的规则,也会改变已经进行的实验。先冻结旧规则、初始状态和已接收观察,再决定如何研究修订版,不能让新赢家回头改写旧信号。

本指南登记人工提供的第二版本,用相互独立的合成股票账户对照。没有调用模型或导入真实日志。版本登记、持久观察账和定时更新属于扩展方法,不能据此声称 CoTrading 或参考影子回放已经提供长期运行的完整服务。

先确认是否有必要修订

记录新到达的成交、日志截止时间及建议解释变化。修正导出错误、新持仓刚刚平仓和真正提出不同规则,是三种不同更新理由。修正输入可以要求带说明的修复分支;增加一个赢家却不自动授权替换正在观察的候选。作决定前应保留原观察政策,而不是先看新结果再决定旧实验算不算数。

两个规则都由人工提供。v1 在此前已知值大于 100 时进入,低于 100 时退出;v2 的进入阈值是 105,退出阈值是 102。观察值明确是前一时段已知输入,与当前合成成交价分开。本文不把两个版本描述成 AI 学到的规则,也没有评价这些阈值最初如何选出。

即使来源曾达到五笔盈利往返门槛,也只说明挑选过的输入满足参考条件。新版本更贴近追加赢家,不代表未来行为更好。应保存每次修订理由与未采用候选,避免版本名一变,尝试过多少解释就从研究记录中消失。对旧候选的否定和对新候选的批准也应分别留痕。

规则字节和账户状态分开封存

将版本、阈值、提取截止时间一起保存。Python hashlib 文档提供用于识别序列化输入的 SHA-256。摘要能发现表示内容变了,但不能认证审核人、证明数据质量,或保证一个不可信时间戳真的早于观察。真实研究仍需要适当的审批与归档证据,不能用哈希替代全部来源审查。

程序在临时目录写入 v1,再以排他创建登记 v2,并核对 v1 原字节没有变化。第二次尝试创建相同 v2 文件会失败。这实际检验了本地登记政策,但不是并发版本注册表、分布式锁或永久档案。程序退出后临时目录会清理,用户应把真实研究产物保存在另行管理的归档位置。

比较摘要前需确定稳定序列化约定。Python JSON 文档说明键排序与紧凑分隔符,辅助函数还关闭非有限数序列化。格式不同就可能产生不同字节,即使人认为两张卡含义相同。应同时保存语义字段与规范表示,不能把每次摘要变化都解释成有经济意义的策略改进。

持续分支使用真实已知的初态

未来夹具起点,持续观察的 v1 有现金 900 美元和一股。这是明确输入快照,不是第一条新观察时凭空补出的买入。新 v2 则独立以现金 1000、零股起跑。两者此前经历及开场暴露不同,因此不能直接用终值差异推断规则修订效果,记录中必须显示初始状态。

未来事件编号为四至七,先前已知决策输入依次 101、107、99、110,当前成交价分别 102、108、100、111。程序假设在这些另行提供的价格即时成交且费用为零。它没有声称看完当前收盘后,还能回到同一个收盘成交。真实价格可得时间与执行延后仍需独立核实。

每个事件都在同一成交价计算交易前后现金加持股市值。零费用假设下两者必须相等,现金不得为负。这个逐步检查能抓住终值看似合理却提前使用资金的错误。事件之间价格变化属于估值变化,买卖只是现金与股票之间的转换,两类影响不能混成“策略又赚了一笔”。

阅读两个独立账户路径

持续 v1 在事件四与五持有原来一股。事件六已知值 99 触发卖出,成交价 100,现金由 900 升到 1000。事件七以 111 再买一股,剩余现金 889、一股;按最终合成价格 112 估值,终值为 1001。程序保留每条动作,不只展示最后余额。

新 v2 在事件四空仓。事件五的观察值 107 超过进入阈值,以 108 买一股,现金 892;事件六以 100 卖出,现金 992;事件七再以 111 买入,现金 881。相同末价下终值 993。两个账户没有共享资金,一个版本买入不会占用另一版本的虚拟现金。

持续与新建分支相差八个单位,混合了规则行为和初始持仓差异,不是保留 v1 的纯效果估计。每项比较都应附起点、现金、股数、币种、费用政策及终端估值。仅写版本名称无法识别资金路径,也不能解释为什么一个账户在第一期已经有风险敞口而另一个没有。

另建共同起点,不改写旧分支

为 v1 再建立独立对照:与 v2 一样,在事件四以现金 1000、零股开始。这个新建 v1 看见 101 后以 102 买入,看见 99 后以 100 卖出,之后再以 111 买入,终值为 999;新建 v2 仍为 993。原持续 v1 的 1001 留在原分支,不会被覆盖。

共同起点控制了所声明的初始资金和持仓,但仍只是很小的合成说明,不能决定阈值能否推广、估计可靠长期优势,或据此挑选获胜版本。如果该对照影响下一轮修订,应预留新的未触碰观察区间,不能反复使用同一段结果却始终称为独立验证,更不能只留下最好的分支。

各分支之间不转移虚拟利润或股数。v2 的买入不会关闭 v1 持仓,之后真实账户的卖出也不自动编辑任何模拟账。若另一个实验有意承接状态,应作为新分支明确记录开场资产及外部流,不要把这种状态搬移伪装成普通规则更新,否则收益和资金归属都会变得模糊。

拒绝截止前回放与静默覆盖

v2 的提取截止点为三。向其传入编号三或更早的观察会报错,因为这个交接函数只接受后续事件。该检查不证明阈值是独立选出的,只阻止函数将冻结前行当作新前瞻观察。提取输入和观察输入应分别保存,修订理由也不能在事后改成更有利的时间边界。

排他创建保护第一次本地 v2 登记,避免偶然覆盖。纠正时应使用新身份并记录关联理由。旧账户可以按声明政策继续、暂停或归档,但不能用新阈值重算它的历史信号。未知或缺失事件要保留,不要为了让路径连续而编造恢复期间发生过的观察,更不能把中断段默认为没有机会。

暂停分支时也应留最后可信状态和观察截止点。以后重新开始,先决定承接原状态还是独立重置;这两种选择会产生不同路径,不能只在图上接线。当前例子没有后台调度、恢复队列或真实日历适配器,因此只展示明确传入的四个后续事件,不把本地循环包装成长驻账户服务。

交接前应比较账户开场行,而不只是两张规则卡。开场现金未知时,不能建立有资金含义的对照;持股市值不等于可支配现金。另行核对最终估值与每次成交价,并揭示零费用简化。如果之后加入实际费用、交易单位或受阻成交,两条共同起点分支都要在同一新约定下重跑,并登记为另一个实验,不能只修表现较差的分支。

核对记录还应标明哪个账户延续旧状态、哪个只用于共同起点比较,以及各自观察结束时间。这样之后新增成交到达时,接收者能够决定继续哪一个账,而不会误把对照账户当成原账户的最新状态。保留用途标签可防止同一版本下不同初态被混合汇总。

运行并保留分支证据

下载完整示例,保存为 R640.py,使用 Python 3.12 或更新版本执行 python R640.py。程序只用标准库与合成输入,断言核对终值 1001、993、999、第一条行为差异、v1 字节不变、v2 排他登记、截止前拒绝及每步现金股数守恒。

真实研究交接应保留冻结规则卡、账户快照、事件行、截止点、对照约定和当前观察状态。只有新的明确登记决定才能更新候选。有效交付不是一定选出赢家,而是能够诚实追查哪个版本与哪种状态产生了每条路径;如果修订版还没有足够独立观察,也应直接留下这个结论。

常见问题

每次日志更新都必须启用新规则吗?

不需要。先记录新输入,再判断是否值得修订。满足输入资格或听起来合理的候选可以保持未批准。

哪种比较能控制初始状态差异?

独立共同起点分支使用相同开场现金与股数,但不会替换持续账户历史,也不证明长期优势。

相关阅读