V9 实盘 vs 回测一致性校验

窗口:entry 2026-07-13 → 07-29(严格闭合,7/31 收盘全部平仓;7/30-31 开仓待下期)| 账户:4061 lrh(10f)· 4001 wk(11f)· 4081 jz(10f)
生成:2026-08-02 | 实盘口径:trades 成交表(positions 为运行时中间产物,不作统计依据)| 上期锚点:6/8–7/13(Δ +0.15pp)

〇、结论

1. 策略信号层:一致。同一 flow 精确对账下,六个核心因子(iv/price/otm/asset/rule/tod)零分歧;入场价差中位数个位 bp;逐笔收益率差 ≈ 0;历史 65,567 条信号评分与基线漂移为 0。回测代码与实盘运行代码同为 origin/main。

2. 收益缺口:可完整归因。4001 与回测对齐(Δ +0.21pp);4061/4081 的 Δ ≈ +4pp 中约七成来自 7/13–7/15 两笔"6 分线边界翻转"(OUST / UMC,见第二节)——rv3d、dvol 两个 booster 特征在实盘与回测两套数据源下贴着阈值各差 1 分,恰好都翻向对实盘有利的一侧并撞上大波动票。期望上对称,下周可能反向。

3. 实盘侧需要处理的事:MU 持仓于 7/30 被人工 SQL 展期 +48h(已确认为自家干预)——$168.8k 敞口延长 2+ 个交易日、跨周末,DB 无留痕,影响量化见第五节;另有 score 持久化表跨账户互踩、7/15 一次重复下单 race、重启截断当日日志。详见第四、五节。

一、核心数字

4061 lrh · 10f
+2.23% vs bt −2.19%
Δ +4.42pp | 已平实收 PnL +$5,207
4001 wk · 11f
−2.51% vs bt −2.73%
Δ +0.21pp ≈ 对齐 | 已平实收 −$6,496
4081 jz · 10f
+1.78% vs bt −2.22%
Δ +4.00pp | 已平实收 +$30,119
SPY(7/13 收盘 → 7/31)
−0.29%
基准
live vs backtest curves

曲线:CAP(7/10 收盘 NAV,已折 USD)+ 逐日已实现 + 未平 MTM,实盘按 trades 成交表逐笔重建。MU 7/28 三笔未平仓位双边剔除,单独在第五节报告。

账户实盘回测Δ双边匹配率*入场价差中位score 一致
4061 lrh+2.23%−2.19%+4.42pp81%(30/37)−8.9bp25/30
4001 wk−2.51%−2.73%+0.21pp69%(25/36)−3.9bp20/25
4081 jz+1.78%−2.22%+4.00pp83%(30/36)+2.2bp24/30

* 匹配率 = 双边同票同日成交笔数 / 回测笔数。score 不一致的笔大多是"同票同日两边选了不同 flow"(回测选了更高分的另一条流);flow 级对账下核心因子零分歧,残余分歧集中在 rv3d/dvol/ret5d 三个 booster 的数据源边界(约 5% 的评估流),方向两边都有。

二、缺口归因:7/15 批次的两笔准入翻转

逐日分解 Δ 增量:缺口的种子在 7/13–7/15 的入场决策(图上 7/17 拉开,是因为该批次亏损单在 7/17 集中出场、水位差就此定格)。三账户 7/15 当日 Δ 增量各 +2.8~2.9pp、批次合计 +3.05~3.22pp,占最终缺口约七成,其余交易日基本互相抵消:

日期(Δ 日增量, pp)406140014081说明
07-15+2.92+2.95+2.82缺口主源(三账户高度一致 = 信号准入差,非执行)
07-17−0.39−0.31−0.257/15 批次出场日,增量为负
07-21 / 07-23−0.36 / −0.14−2.71 / −1.34−0.58 / −0.394001 出金期漏掉赢家,把 7/15 的领先还了回去
07-27 / 07-28+0.95 / +0.63+0.35 / +0.63+0.93 / +0.66次要贡献(BMNR/MU/CORZ 批次)
07-31−0.71−1.51−0.30期末回吐

逐票看,缺口几乎全部来自两笔"6 分线翻转"——两票其余 9 个因子逐位一致,仅一个 booster 因子在阈值边界上两边取值不同:

实盘回测唯一分歧因子结果(占 CAP)
OUST 7/155 分 → 跳过6 分 → 进场rv3d:实盘 0 vs 回测 +1(rv_ratio 贴 [1.5,3.0] band 边界;实盘读 factor_rv3d 日表,回测用分钟缓存重算)回测独吞 −15% 止损:−$4.2k / −$4.8k / −$31.8k ≈ +1.8~1.9pp
UMC 7/136 分 → 进场5 分 → 跳过dvol10d:实盘 0 vs 回测 −1(ratio 贴 0.80 阈值;评估时点在线数据 vs 离线缓存重算)实盘独得 +9.3%:+$3.2k / +$3.5k / +$22.8k ≈ +1.3~1.4pp

解读:不是执行问题,也不是哪边算错——同一特征在两套数据源下贴阈值各差一点点,两笔恰好都翻向对实盘有利的一侧,又恰好撞上两只大波动票(−15% 与 +9.3%)。期望上对称,下周完全可能反向。 改进方向:① 周报固定输出"6 分线翻转清单"(本周 11 条翻转中只有这 2 条撞上大行情);② 中期把 rv3d/dvol 实盘与回测数据源统一到同一特征存储,翻转率可从 ~5% 压到接近 0。

三、执行一致性

四、实盘侧问题清单

#问题定性处理
1MU 持仓人工展期 +48h(已确认自家干预):7/28 三账户买入的 MU(206 股,成本 ≈ $168.8k),7/30 通过 SQL 把 entry_time +48h,max_hold 顺延 2 天。DB 无任何标记,回测无对应动作。影响量化见第五节人工干预(已确认)立规矩:人工干预必须留痕(类似 sync_correction 的标记字段)+ 报备渠道;周一 8/3 盯实际平仓,结算最终影响
2rv3d / dvol 特征的实盘、回测数据源不统一 → 约 5% 评估流在阈值边界翻转(本周 11 条,其中 2 条造成第二节的缺口主源)一致性根因中期统一特征存储;短期每周输出翻转清单监控
3strategy_signal_scores 三账户共用 strategy 名 + ON CONFLICT DO NOTHING → 同一 flow 只留先写账户的评分明细(实测 RIOT 只剩 11f 的记录),10f/11f 明细互踩数据完整性strategy 名带因子版本,或唯一键加 account;分析用 positions.signal_snapshot / trades 快照
47/15 SGRY 同分钟重复下单记录(4061 两笔 500 股、4081 两笔 2,068 股),事后被 sync_correction 清理,无经济损失下单去重 race排查 _pending_orders 并发路径
5start_all.sh 用 > 重定向,当日重启覆盖早晨日志(7/30 09:30–10:00 段已永久丢失)运维>> 或文件名加时分秒——一行修复

五、MU 人工展期(已确认自家干预):过程与影响

过程:7/28 10:06 三账户按信号买入 MU 共 206 股(4061 23 / 4001 13 / 4081 170,成本 ≈ $168.8k,均价 ~819.4)。按 2 日规则应 7/30 10:06 平仓;7/30(北京时间当晚)通过 SQL 将三行 entry_time +48h 并重启系统,max_hold 顺延至 8/3(周一)开盘。前一日背景:7/27 的 MU 批次刚以 −13% 止损(4081 单笔 −$18,130)。

时间(ET)事件
7/28 10:06信号买入 206 股 @ ~819.4(回测同分钟入场)
7/30 10:06规则应平仓时点,市价 ~832.7(10:06–10:20 均价)→ 按规则应实现 +$2,739
7/30 尾盘MU 冲高收 874.92,展期仓浮盈一度 +$11,436(未兑现)
7/31 收盘回落至 822.59,浮盈仅 +$656;持仓跨周末
8/3(周一)新时钟到期,开盘平仓 → 最终影响 = (实际平仓价 − 832.7) × 206 股

影响量化(截至 7/31 收盘,最终以 8/3 平仓价结算)

⚠ 8/3(周一)观察清单:MU 7/28 三笔(新时钟到期,应开盘平仓,平仓价决定最终影响);另有 7/30–7/31 开仓的 15 笔在持仓(MU/AMD/NRG/SA/SPCE/CORZ/STX/NXE)本周一二集中到期。

五·五、信号源一致性全量审计(2026-03 → 07,全账户)

针对"实盘 API 信号流与回测 CSV 是否同源"的疑问,对全部账户 V9 时代(3/31–7/29)做了三层全量审计,以 trades 成交表为备查锚点:

结论
宇宙层(信号集合)实盘信号的 99.85% 能在 CSV 中精确找到(premium 容差 100% 通过);反向 CSV→实盘覆盖 66–83%/月——UW alert config 漏掉约 25% 的 CSV 信号,但漏的是低分票:5 个月里仅 25 条够 6 分、10 笔真进回测成交单
评分层(同信号因子值)9.4% 的流有 ≥1 因子分歧;6 分线翻转全历史仅 23 条(0.55%)。⚠ 趋势:dvol 分歧率 6 月 1.5% → 7 月 12.0%,rv3d 6 月 5.8%——booster 特征两套数据源的漂移在恶化
交易层(成交闭环, n=925)A 一致 93.8% | B 评分翻转 57 笔(6.2%,名义金额 7.4%)| C 宇宙缺失 0 笔——实盘每一笔成交,回测宇宙里都有对应信号。B 翻转率 4 月 1.8% → 5 月 2.5% → 6 月 11.6% / 7 月 10.8%(6/8 上 10f 引入 dvol/rv3d 后翻 4 倍)

翻转的影响到底有多大(真实成交口径,3/31–7/29,五账户合计)

方向规模真实结果
实盘多买的(57 笔翻转成交)名义 $3.1M,占总买入金额 7.4%已实现 PnL 合计 −$2,857(−0.09%);月度最差 −$14.4k(6 月)/ 最好 +$9.7k(7 月)
实盘错过的(回测独有准入 ~13 条)每月 1–4 条回测侧 2 日收益均值 +0.80%,按实盘仓位折算 ±数千美元(含躲过 OUST −15% 一笔)

净影响:四个月 ±$1 万以内,摊在 ~$220 万合计资金上不到 0.1% —— 对钱几乎没有影响。 两个方向的期望都接近零(实盘多买的均值 −1.39%、错过的 +0.80%,均不显著)——翻转长期是对称噪音,本周 OUST/UMC 双双利好实盘属巧合,不可外推。

真实代价是可核验性而非亏损:① 单周对账噪音可达 ±3pp(本周两条翻转 = 每账户 +3.1pp"跑赢假象",占缺口七成),不修则每周核验都在解释噪音;② 频率在恶化——交易级翻转率 4 月 1.8% → 6–7 月 ~11%(10f 上线后翻 4 倍),dvol 分歧率 7 月 12% 仍在上行。

修什么(按优先级):① 统一 dvol/rv3d/ret5d 特征源(每日离线 job 落库、两边同读,先查生产端 massive 缓存新鲜度——7 月恶化疑似缓存 stale);② 周报固定输出翻转清单、>2%/周报警;③ UW config 阈值代码化(fetch 显式传参,现无 $100k 下限且条件不可见);④ fetcher 的 -rule 复制行使同一笔成交实盘评两次,回测无此机制,需二选一对齐。完整审计:claude_explore/live_vs_backtest_zlj/SIGNAL_SOURCE_AUDIT_ZLJ.md

六、口径与可复现

七、下一步

  1. 周一盯 MU 三笔展期仓 + 15 笔集中到期持仓(第五节清单)。
  2. 展期已确认为自家干预:确立人工干预留痕制度(标记字段 + 报备),并明确"何种情况允许人工展期"的规则,避免侵蚀 2 日持有纪律。
  3. rv3d/dvol 特征数据源统一(消除边界翻转);周报固定输出 6 分线翻转清单。
  4. score 表加账户维度;下单去重 race;日志重定向修复。
  5. 下期对账:entry 7/30 起;4001 换新 NAV 基线。
V9 bigopen · 实盘账户 4061 / 4001 / 4081 · 2026-08-02 · 实盘口径 = trades 成交表 · 存档:claude_explore/live_vs_backtest_zlj/weekly/2026-W29-W31_0713-0731_3acct_zlj/