跳到正文

研究指南

股票回测与实验

回测显示成功却缺交易文件:结果能不能进入比较

股票回测显示成功,仍可能缺少比较所需证据。摘要数字不能代替丢失成交,别次运行的交易文件也不能补齐当前缺口。进入排名之前,先按同一运行身份与覆盖契约核验产物集合,不能看见高收益就放宽要求。

本文检查摘要、净值、成交三组合成字节流,识别缺失、JSON截断和串用,再演示从可信同次备份恢复。方法属于外部检查,不证明CoTrading已有报告中心或完整产物恢复能力,也不是真实市场绩效审计。

查看利润前先规定产物契约

列出必需文件及用途:净值支持收益回撤计算,成交支持执行和成本复核,摘要提供数量与选定指标。每种文件需要满足什么检查,事先确定。不能因为摘要特别好,就临时把支持它的成交明细改为可选。

产物绑定稳定运行编号、数据配置引用、起止覆盖和模式,必要时保存预期行数与末值。清单应跟可信运行记录保存,而不是故障后根据剩余文件倒推。否则真正丢失的一项,可能从新清单里彻底消失,表面又变成完整。

有意空成交表与文件不存在要分开。完整无交易运行可以产生零行文件并有完成状态,缺文件则没有这些证据。不能据此推断策略空仓,也不能让空文件、损坏文件和合法零行在汇总表共享同一标记。

比指标前先核对身份

逐项确认文件存在、字节可读,并属于同次运行与期间。文件名相同不够,其他尝试也可能使用同一个通用名称。核对内嵌身份和生产任务引用,尤其注意手工复制、重命名和共享输出目录造成的串用。

Python JSON官方文档提供解析工具,但解析成功只说明语法,不认证研究语义。对象格式正确、运行编号错误,仍是错误证据。模式、覆盖和跨文件关系需要另外检查,不能用加载没有报错代替产物验收。

恢复前先保留原文件。可疑导出不要随意用表格软件打开再保存,可能改变格式和值。记录观察到的摘要和错误,再调查生产尝试。修复应增加可追溯证据,不能静默替换,使后来读者看不出原先发生过丢失。

完整主例:S1同次产物

合成S1覆盖索引零至二,摘要声明两行成交、三行净值、末值一百零二。净值为零/一百、一/一百零一、二/一百零二。最小成交样本记录买入金额一百、卖出一百零二,与期初一百和两元盈利相容。

样例在内存字节字典中模拟文件,方便重现错误,不触及真实报告目录。成交结构刻意缩小,生产表还需要证券、时点、数量、方向和费用,不能把这个最小模式宣称为完整真实交易导出验证器。文件身份字段也不自动证明每行时点正确。

产物内嵌身份及期间约定内容
summary.jsonS1,0至2数量2、3及末值102
equity.jsonS1,0至2三个有序观测
trades.jsonS1,0至2两行合成交易

完整集合通过,检查元数据、净值覆盖、行数对应和末值一致,另外断言金额桥。它是最低证据门槛,不证明真实策略记账或报价正确。输入参考本身也需要可信来源,不能只因为几个文件内部一致,就推断没有共同错误。

用摘要发现意外替换

清单保存可信原始字节的SHA-256,接口见Python hashlib文档。拿观察字节与其比较,能发现未解释替换,但不能证明作者身份或清单可信,也不是权限保护。

if name not in files:
    issues.append(name + ':missing')
elif sha256(files[name]).hexdigest() != expected[name]:
    issues.append(name + ':digest_mismatch')

只改排版的重新导出也会改变字节摘要。允许规范化语义比较时,要先规定并验证政策。不能把所有摘要变化都直接叫损坏,但应阻止准入直到解释清楚;更不能从不明文件重新算预期摘要,只为让检查变绿。

原始与规范化产物最好分别保存,说明哪些转换不会改变事件含义。成交顺序若影响可用现金,就不能任意排序。字段单位、日期格式或浮点展示改变时,也应确认转换可逆或有明确精度规则,不能在恢复过程中悄悄丢失信息。

三种不同失败机制

第一种删除成交文件,检查报告必需产物缺失并阻断。摘要末值一百零二不能恢复交易,合法净值也无法揭示所有成交、费用或盘中委托,因此不能替代明细。若业务只允许摘要比较,应明确收窄用途,而不是称为完整复现。

第二种把成交字节换成未完成的{"run_id":,解析失败且摘要变化。文件存在不等于完整,文件大小也不保证内容。补个括号不能恢复未知丢行,不能把人工凑成可解析文本当作可信修复。

第三种提供格式正确、但标为S0的成交。它可能是S0的有效证据,却不属于S1,检查标为串用。把它放进正确文件夹不是恢复,而是在拼造一次从未存在的组合运行。名字、路径和格式都不能覆盖身份冲突。

判断恢复还是重跑

可信同次备份可以恢复缺失原字节。样例保留S1原成交流,补回后核对摘要和全部关联检查,没有从摘要生成交易,也没有借其他运行的输出。恢复来源和可信依据都应写入记录,不只写“文件已补齐”。

如果不可变检查点确实保存足够同源执行状态,可以受控重新导出,记录来源、导出器版本、重建产物和比较政策。条件不满足,就重跑冻结实验,不能编造明细。此前缺失状态仍然保留,用于解释为何发生了恢复操作。

字节恢复与新执行不同。新运行可能在冻结条件下重现结果,但有新的尝试身份;数据或引擎若变了,还要声明上下文变化。不能把后来顺利的一次改名为旧运行,再宣传旧产物一直完整,也不能覆盖失败日志。

建立准入与恢复账

每个必需文件导出存在性、观察摘要、解析状态、运行身份、覆盖、行数和结论,附全部问题及恢复来源。检查者应看见初始为什么阻断、后来增加了什么证据,才允许比较。一个最终绿色目录不能代替这条过程链。

进程状态与产物状态并列。工作线程正常退出和比较证据完整回答不同问题。若有意只作摘要层比较,说明哪些执行问题无法回答;不能没有成交仍宣传全部可复现。共享检查包也不要嵌凭证,保留数据访问限制。

交接者可随机抽一项文件,比对运行编号、覆盖和摘要,再从摘要计数追到实际行数。还应检查净值顺序与末值是否一致,是否有重复时间键、截掉最后一行或从旧目录误拷的情况。本文样例只检查定义过的最小关系,真实模式扩展后相应补充验证。

如果恢复后仍有未解决冲突,明确保留阻断,不把“不影响最后数字”作为通行理由。例如交易文件期间不一致,即使末值碰巧相同,也无法支持同期间成本解释。每条准入条件应对应实际用途,避免最后只剩一个没有依据的成功标签。

备份清单本身也需要来源。若清单和可疑文件一起由未知目录取得,摘要吻合只能说明二者一致,不能证明与原运行一致。应追到先前冻结记录或可信存储引用,记录备份版本与取得时间。找不到可信参照时,报告只能说当前集合内部可解析、部分关系相容,不能升级为已恢复原始输出。这样的限制也应保留在后续排名说明里,避免文件夹整理完成就被误当成证据问题已经解决。

运行与验收

下载完整示例。使用Python 3.12或更新版本,运行python R619.py。标准库断言允许完整S1,阻断缺失、截断、串用,恢复同次原备份,并核对末值一百零二和两行成交。它处理合成字节,不访问真实引擎文件服务。

只有必需产物属于同次同期间、完整性政策通过、计数对应,才接受比较。移动、重建、恢复或改格式后重新检查,保存旧决定。即使原进程早已显示成功,也要让支持文件的实际保存过程可解释,不能用一个摘要数字掩盖证据断裂。

常见问题

合法摘要可以替代成交明细吗?

不能恢复执行证据,只能支持明确更窄的摘要结论。

其他运行的合法成交能补文件吗?

不能。使用可核验同次证据恢复,或明确建立重跑记录。

相关阅读