# price-schema-v1 迁移审计脚本（Mac 实操侧, 2026-09-13）

这些是迁移验收时跑过的一次性审计脚本（**只读**，除 `_mig_replay.py`/`_mig_scan_rerun.py` 写沙盒副本外不改任何数据）。
原先散在 `code/` 根下未跟踪，按 zt-recon 的对账自检建议归档到此目录，随仓库版本化，便于复现报告里的数字。

**运行方式：从仓库根目录跑，用仓库 venv**
```
cd ~/zt_app && ./zt_venv/bin/python code/audit_20260913/<脚本>.py [参数]
```

| 脚本 | 验的是什么 | 对应报告 |
|---|---|---|
| `_mig_audit_mac.py` | 迁移后①文件数/异常数 ②无损性最大偏差 | 「①数据 / ②无损性」 |
| `_mig_lossless_deep.py` | 无损性深挖: 偏差分布 + 是否由 adj_factor 6 位舍入解释 | 「②无损性」那一层 |
| `_mig_bak_cover.py` | 迁移前备份覆盖度（覆盖哪些池/股；未覆盖的是否本就没 qfq/hfq 列） | 「②无损性」抽样面说明 |
| `_mig_qfq_attr.py` | qfq 偏差归因（偏差>1e-5 的文件 vs 66 只 raw 回填名单） | 「②」旧 hfq 漂移归因 |
| `_mig_doubletest.py` | §7 自查双测: ①切片不变性 ②qfq 偏差分布 | 「④(d) 自查双测」 |
| `_mig_replay.py` | 全历史重放模拟盘 0901-0911（**沙盒路径**，不动实盘 state/nav） | 「③重放净值」 |
| `_mig_scan_rerun.py` | 沙盒重跑扫描（0911，不动实盘；`SBX` 指定沙盒根） | 「③重跑扫描逐值不变」 |
| `_chk_exdiv_identity.py` | 除权日恒等式: `pre_close == 前收 × 前一日因子 / 当日因子` | 三档价口径核验 |
| `_chk_exdiv_true.py` | 同上，按"真除权"判据收紧后的复测 | 三档价口径核验 |
| `_chk_preclose_consistency.py` | `pct_chg` 与 `pre_close` 自洽性（全库） | 口径核验 |
| `_chk_which_selfconsistent.py` | 两种自洽口径（pct↔pre_close / pct↔前收）哪个成立、各占比 | 口径核验 |
| `_chk_factor_vs_tushare.py` | 落盘 `adj_factor` 与 tushare 真值抽样对账（`<起日> <止日>`） | 因子列可信度 |

**结论备查**（详见 PRICE_SCHEMA.md §4 与 MAC_PEER_ACK.md 的回报）：
- 迁移对 raw 逐行无损（4231 文件 / 542.4 万行 最大差 0.000e+00）；
- 旧备份落盘 hfq 与 raw×factor 的偏差是旧 hfq 逐日链条累计 + 因子 vintage 漂移（中位 3.7e-08 / 最大 5.5e-03），非迁移引入；
- 沙盒重跑扫描 5837 行逐列逐值 0 差异，`strength_model.json` 重训 md5 不变。
