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、重启截断当日日志。详见第四、五节。
曲线:CAP(7/10 收盘 NAV,已折 USD)+ 逐日已实现 + 未平 MTM,实盘按 trades 成交表逐笔重建。MU 7/28 三笔未平仓位双边剔除,单独在第五节报告。
| 账户 | 实盘 | 回测 | Δ | 双边匹配率* | 入场价差中位 | score 一致 |
|---|---|---|---|---|---|---|
| 4061 lrh | +2.23% | −2.19% | +4.42pp | 81%(30/37) | −8.9bp | 25/30 |
| 4001 wk | −2.51% | −2.73% | +0.21pp | 69%(25/36) | −3.9bp | 20/25 |
| 4081 jz | +1.78% | −2.22% | +4.00pp | 83%(30/36) | +2.2bp | 24/30 |
* 匹配率 = 双边同票同日成交笔数 / 回测笔数。score 不一致的笔大多是"同票同日两边选了不同 flow"(回测选了更高分的另一条流);flow 级对账下核心因子零分歧,残余分歧集中在 rv3d/dvol/ret5d 三个 booster 的数据源边界(约 5% 的评估流),方向两边都有。
逐日分解 Δ 增量:缺口的种子在 7/13–7/15 的入场决策(图上 7/17 拉开,是因为该批次亏损单在 7/17 集中出场、水位差就此定格)。三账户 7/15 当日 Δ 增量各 +2.8~2.9pp、批次合计 +3.05~3.22pp,占最终缺口约七成,其余交易日基本互相抵消:
| 日期(Δ 日增量, pp) | 4061 | 4001 | 4081 | 说明 |
|---|---|---|---|---|
| 07-15 | +2.92 | +2.95 | +2.82 | 缺口主源(三账户高度一致 = 信号准入差,非执行) |
| 07-17 | −0.39 | −0.31 | −0.25 | 7/15 批次出场日,增量为负 |
| 07-21 / 07-23 | −0.36 / −0.14 | −2.71 / −1.34 | −0.58 / −0.39 | 4001 出金期漏掉赢家,把 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/15 | 5 分 → 跳过 | 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/13 | 6 分 → 进场 | 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。
| # | 问题 | 定性 | 处理 |
|---|---|---|---|
| 1 | MU 持仓人工展期 +48h(已确认自家干预):7/28 三账户买入的 MU(206 股,成本 ≈ $168.8k),7/30 通过 SQL 把 entry_time +48h,max_hold 顺延 2 天。DB 无任何标记,回测无对应动作。影响量化见第五节 | 人工干预(已确认) | 立规矩:人工干预必须留痕(类似 sync_correction 的标记字段)+ 报备渠道;周一 8/3 盯实际平仓,结算最终影响 |
| 2 | rv3d / dvol 特征的实盘、回测数据源不统一 → 约 5% 评估流在阈值边界翻转(本周 11 条,其中 2 条造成第二节的缺口主源) | 一致性根因 | 中期统一特征存储;短期每周输出翻转清单监控 |
| 3 | strategy_signal_scores 三账户共用 strategy 名 + ON CONFLICT DO NOTHING → 同一 flow 只留先写账户的评分明细(实测 RIOT 只剩 11f 的记录),10f/11f 明细互踩 | 数据完整性 | strategy 名带因子版本,或唯一键加 account;分析用 positions.signal_snapshot / trades 快照 |
| 4 | 7/15 SGRY 同分钟重复下单记录(4061 两笔 500 股、4081 两笔 2,068 股),事后被 sync_correction 清理,无经济损失 | 下单去重 race | 排查 _pending_orders 并发路径 |
| 5 | start_all.sh 用 > 重定向,当日重启覆盖早晨日志(7/30 09:30–10:00 段已永久丢失) | 运维 | 改 >> 或文件名加时分秒——一行修复 |
过程: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)本周一二集中到期。
run_backtest_v9.py,10f / 11f(4001)信号表,asof 2026-08-01,SPY guard 全程在位;生产机运行同一 main 分支——回测代码与实盘运行代码同源。claude_explore/live_vs_backtest_zlj/weekly/2026-W29-W31_0713-0731_3acct_zlj/。