Files
fidc-backtest-engine/docs/successor-protection-20260914.md
T
2026-09-14 23:48:27 +08:00

4.5 KiB

换股后的策略保护继承

2026-09-14。开发候选;生产未发布,完整目标仍未完成。

反例与根因

原代码只给跨公司行为的迟到成交附带后继代码保护;及时回报之后正常换股则没有相同处理。日期锁也只比较当前代码,原持仓换股后会失去锁定。完整引擎反例已复现:及时卖出旧证券后的禁买期内,新证券又买入100股;旧证券仍处日期锁定内,新证券却卖出100股。

初始15:00样例虽产生了不该生成的委托,但因没有之后的报价而到期,不能把无成交视为保护通过。改用14:30调度和14:30/14:31报价后,实际回放成交证明了上述错误。ETF正向对照最初缺候选资格行,补齐隔离输入后正常成交,未放宽生产数据或风控校验。

统一语义

  • 仅记录已真实影响持仓的、条款与证券身份已经校验的转换关系。目录别名、请求中的代码或尚未发生的公司行为不能使另一证券受锁定;不向候选池或策略目标添加证券。
  • 连续转换保留已证明的前身关系,保护读取原实际买卖日期;日期锁沿关系生效,但到期日仍为原配置,不从换股日重新计时。买后保护和最长持有继续使用原取得/买入日期。
  • 换股后手工清仓不删除仍有效的日期锁关系,防止自动重新买回绕过锁定。若迟到回报证明在换股前已经全部卖出,则原本推定的持仓转换关系应被校正掉,不将旧锁误加给新证券。
  • 关系进入经济账本的重放校验;无换股时原账本摘要形状不变。权益校正整体替换已验证关系,不并入已被新事实推翻的旧关系;原参数、目标权重、未提交目标及已发订单不擅自换成新代码。
  • 普通表达式策略、股票池普通调仓、ETF顺延开盘消费三个入口均使用同一保护内核。股票池与ETF共用经实际持仓关系解析的保护证据,不只修表面策略层。
  • 移除按公司行为引用列表直接扩展卖出代码的两个旁路,避免无实际持仓转换也被误认为曾卖出新证券。原股票的真实卖出记录和已发订单仍保留。

验证

6项新增专项覆盖23个隔离配置场景:及时/迟到回报、买卖两方向、禁买期、日期锁、原日期到期、转换后手工清仓、转换前已清仓,股票池0%/100%目标以及ETF顺延开盘。已知保护有效时验证零委托/零成交及200股原持仓;到期对照必须能够真实回放成交,不能靠缺报价或被其他风险拒绝冒充保护正确。

本机Core913、Trading625、Runner463/API129全量通过;原9/63/16项ignore不计。没有新增私有数据库、生产页面或券商实测;UI和其他业务仓代码未改。此次修复不改变配置为0/null/空的保护规则,也不是全局共享风控配置。

发布边界与后续

Source公司行为接口仍缺正式换股条款及所需数据范围闭包,在线重建也仍需要权威转换持仓事实,不能仅凭最终股数或证券名称猜关系。本轮原生回放与Linux测试不是GT/QMT公司行为实盘验收。Source d5冻结保持,不改旧合同、不注册替代合同或恢复交易。

继续正式Source/Runner联合验收、在线转换事实持久化/重建、旧目标及活动单边界、清空/0%后再投参考及其余ETF跨模式矩阵。需先核对原账务模型与仓位参数的关系,不能为了通过保护样例擅自改变再投定价、费用或策略意图。

Linux配套验收

功能提交 ba4b77fd746963687b8029b47806f943ed6ce03f 已推送并核对,177引擎开发树已快进至此,Service并行5991e77保留。新只读快照 /srv/fidc/programs/runtime-snapshots/conversion-protection-20260914-51wBBB 含985文件,独立同名build根;4CPU/12GiB、boris运行、1GiB保护线不改。源码manifest SHA 6ae0cb8f0e571b4848e2cba6b39368a19434cc43729cfe07aad6fdce531d2814

Linux Core913、Trading625、Runner/API594共2132项全过,原9/63/16项ignore单列,源码前后不变;结束时可用80519344128字节。scope已inactive,不再重复本批测试或覆盖前阶段收据。证据为 docs/evidence/successor-protection-20260914/{local-tests,linux-tests,runtime}.json

23:47 CST逐服务比对,现有UI/五后端PID及后端实际SHA与上一轮完全相同,Source d5且tracked clean。没有新release构建、发布tag、生产重启、账户/任务/路由/通知写入或券商委托;开发树同步不等于运行版本发布,完整目标仍需上述联合验收。