把策略代码复制到另一台电脑后,最常见的失败并非文件打不开,而是依赖版本、数据样本、参数默认值或运行日志缺了一项。代码相同而结果不同,往往意味着交付包没有把“当时怎样运行”一起带走。一个可复核的策略包,至少应让接收者确认文件没有变化,并看见数据日期、参数和退出状态。
交付包至少保留四类内容
| 内容 | 最小文件 | 验收问题 | 常见遗漏 |
|---|---|---|---|
| 代码与依赖 | strategy.py、requirements.txt | 能否安装并启动 | 只写库名,不写版本 |
| 输入数据 | sample.csv、data_note.txt | 日期、复权和字段是否明确 | 只有文件,没有来源日期 |
| 策略参数 | config.json | 单位、默认值和边界是否完整 | 5%与0.05混用 |
| 运行记录 | run.log、result.json | 开始、结束、异常和结果是否可查 | 只保留收益截图 |
用清单先检查文件有没有被改动
下面的脚本只使用Python 3.11标准库。它为目录中的文件计算SHA-256摘要,生成manifest.json,再立即复核一次。摘要只能证明文件内容是否一致,不能证明策略逻辑正确;数据口径和参数单位仍需人工验收。
from __future__ import annotations import hashlib import json import tempfile from pathlib import Path def sha256(path: Path) -> str: h = hashlib.sha256() with path.open("rb") as f: for chunk in iter(lambda: f.read(8192), b""): h.update(chunk) return h.hexdigest() def build_manifest(root: Path) -> dict[str, str]: files = {} for path in sorted(root.rglob("*")): if path.is_file() and path.name != "manifest.json": files[str(path.relative_to(root))] = sha256(path) return files def verify(root: Path, manifest: dict[str, str]) -> list[str]: errors = [] for name, expected in manifest.items(): path = root / name if not path.exists(): errors.append(f"missing:{name}") elif sha256(path) != expected: errors.append(f"changed:{name}") return errors with tempfile.TemporaryDirectory() as tmp: root = Path(tmp) (root / "strategy.py").write_text("LOOKBACK = 20\n", encoding="utf-8") (root / "config.json").write_text('{"stop_loss": 0.05}', encoding="utf-8") (root / "data_note.txt").write_text("sample ends: 2026-08-15\n", encoding="utf-8") manifest = build_manifest(root) (root / "manifest.json").write_text( json.dumps(manifest, ensure_ascii=False, indent=2), encoding="utf-8" ) print("files:", len(manifest)) print("verify:", verify(root, manifest))示例输出中的files应为3,verify应为空列表。若接收方看到missing或changed,应先找回文件或确认修改原因,不能直接比较新的回测结果。实际交付时还应记录Python版本、操作系统、时区和数据更新时间。
不同工具的交接重点
网页研究平台通常要导出代码、参数和结果;本地框架还要带上依赖锁定、数据目录和启动方式;靠近账户的工具必须额外核对权限、登录和订单回报。把选股范围、仓位、持有周期、止盈止损等规则写清后,牛股王股票的历史回测、模拟持仓与调仓记录可以帮助普通投资者检查交接前后的规则是否一致。聚宽更方便保存研究代码和实验输出;PTrade等券商侧工具的开通条件与可用能力需要向开户券商逐项确认。
验收结束的条件
接收者能复现环境、识别数据日期、读懂参数单位、得到相同的样例输出,并在日志里看到正常退出,交付才算完成。只搬代码会把大量隐含条件留在原电脑上,之后任何结果差异都难以定位。
可核对资料
代码与文件摘要部分可对照Python 3.11 hashlib、json、pathlib官方文档;平台交接字段可结合牛股王量化2.0产品说明资料、聚宽帮助中心以及开户券商当期公布的PTrade等终端说明核验。
风险提示:文件摘要和迁移验收只能提高复现能力,不能证明策略有效,也不构成收益承诺。实盘衔接仍需核对账户权限、券商系统、交易时段、成交规则和市场条件。