# 回测复核报告 · 2026-11-07

> **⚠️ 2026-11-07 11:20 补充更正（必读）**
> 本报告涉及「涨停委买额」的筛选与分档，全部基于 `auction_hist.limit_bid`。今日已确认该字段与 9:25 实盘竞价严重不符（交集样本相对差异中位数 78.5%，润建股份 11-06：466 万 vs 实际 2162 万），知识库《标准_亮黄色口径与数据源-唯一权威-2026-11-07》已把 `auction_hist` 的 `limit_bid` 列为禁用。
> 因此：**P3（跌停格子）、P2（三板委买≥5000 万）、P1 里涉及委买额档位的部分，只能当作「auction_hist 内部口径下的一致性检验」，不能当策略结论**。不依赖委买额的结论仍然成立：一字判定错误（P1 的板块部分）、P11 的 T0 违规（P4）、样本量与显著性（P3 的随机对照部分）、追涨路线放弃、低开剥离检验、两策略零重叠。
> 修正后的「第一票」历史表见同目录《P11第一票-历史总表-20261106.md》，那份用的是 `picks`+`pnl` 与 `premarket` 快照，不依赖本报告被污染的数据源。

> 复核对象：2026-11-05 的「竞价涨幅 × 涨停委买额」九轮回测 + 两份专项（竞价跌停买入、三板微高开）；2026-11-06 的「P11 第 1 只」15 个交易日回测。
> 复核方式：重读全部原始脚本与记录，在同一份数据上重新实现口径做对照，并补做显著性检验。
> 结论一句话：**三份结论里有 4 个能推翻或降级结论的问题，其中 2 个是口径错误（一字判定、T+1 违规），2 个是统计问题（样本不够、不显著）。修正后的数字都比原报告差。**

---

## 一、数据底座（唯一权威口径）

| 项 | 数值 | 位置 |
|---|---|---|
| 全市场日线 | 589 个交易日 / 3,197,034 行 / 5,669 只，2024-06-03 ~ 2026-11-05 | `s55:/root/px_history.db` |
| 竞价快照（历史） | 635 个文件 / 590 天有数据 / 98,544 行，日均 167 行（最少 32、最多 480） | `s55:/opt/kpl-cli/data/auction_hist/` |
| 同期全市场日均股票数 | 5,428 只 | 由日线库自算 |
| **池子覆盖率** | **约 3.1%** | — |

**第一条硬事实**：`auction_hist` 不是全市场，是每天上游筛出来的竞价池（日均 167 只，占全市场 3.1%）。所有报告里「全池 7,210 笔」「日均 12.5 只」的真实含义是「池内 7,210 笔」「池内日均 12.5 只」。**结论只能用于池内，不能外推到全市场。**

---

## 二、发现的问题（按严重程度）

### P1 · 一字板判定用固定 9.7%，对 20cm 板失效（口径错误）

原规则用「竞价涨幅 ≥ 9.7 即视为一字、剔除」。但涨停幅度按板块不同：主板 10%、创业板/科创板 20%、北交所 30%。用固定 9.7% 会把**能买进的 20cm 票当一字剔掉**。

实测（池内全部样本，按真实涨停价核对）：

| 板块 | 样本 | 正确剔除 | **漏剔（买不进却计入）** | **误剔（能买却被排除）** | 正常保留 |
|---|---|---|---|---|---|
| 10cm | 60,325 | 5,167 | 48（0.1%） | 435（0.7%） | 54,675 |
| 20cm | 37,795 | 562 | 1 | **1,005（2.7%）** | 36,227 |

合计误剔 1,440 笔、漏剔 49 笔。误剔集中在 2024 年 6 月起的创业板 301 段（如斯菱股份竞价 +15.28%、西测测试 +13.88% 都被当一字排除）。**修正方式：用当日 pre_close 与板块涨跌幅算出真实涨停价，用「开盘价 == 涨停价」判定，不再用固定百分比。**

### P2 · 口径差一点，三板结论从「可做」变「不可做」

同一策略（三板 + 竞价 0~1% + 委买 ≥5000 万 + T+1 收盘卖），三种口径下的结果：

| 口径 | 笔数 | 胜率 | 平均 | 中位 |
|---|---|---|---|---|
| 原报告（11-05） | 46 | 63.04% | +2.05% | +2.08% |
| 按真实涨停价 + 严格涨停判定重算（10cm 为主） | 52（10cm 50 笔） | 55.77% | +1.64% | +0.90% |
| 同条件放宽到全部可买三板 0~1% 档（不限委买） | 261 | 47.51% | +0.85% | −0.67% |

修正后的分年（严格口径，52 笔）：

| 年份 | 笔数 | 胜率 | 平均 |
|---|---|---|---|
| 2024 | 14 | 35.71% | **−1.74%** |
| 2025 | 25 | 64.00% | +3.25% |
| 2026 | 13 | 61.54% | +2.19% |

**原报告「三年全正、无单年转负」的表述不成立**：2024 年在这套严格口径下是负的。分半段看，前半 24 笔胜率 45.83%、平均 −0.51%，后半 28 笔 64.29%、+3.48% —— 收益同样集中在近一年。

### P3 · 跌停格子：50 笔的 +3.65% 不能排除运气（统计不显著）

原报告的核心格子：竞价跌停 + 委买 1000-1500 万或 2000-3000 万，T+1 收盘卖，50 笔、胜率 62.00%、平均 +3.65%。

补做的检验：从全部跌停样本（177 笔，均值 +1.70%）里，**按交易日分层随机抽 50 笔，重复 3,000 次**，得到的均值分布中位 +1.59%、95 分位 +4.40%。

本口径 +3.65% 落在随机分布的 **前 11.3%**（不按日抽样时是前 7.1%）。也就是说 p ≈ 0.11，**达不到 5% 显著性**。50 笔样本撑不起「62% 胜率」这种强度的结论。

时间稳定性也不支持：

| 分段 | 笔数 | 胜率 | 平均 | 中位 |
|---|---|---|---|---|
| 前半（至 2025-08-15） | 21 | 47.62% | +0.88% | **−1.57%** |
| 后半（2025-08-15 起） | 29 | 72.41% | +5.65% | +4.86% |

前半段中位是负的、胜率不到 50%。原报告用「2024 +2.14% / 2025 +2.45% / 2026 +5.37% 三年全正」呈现，掩盖了「收益集中在最近一年」这一事实。

### P4 · 11-06 的 P11 回测主口径违反 T+1（不可执行）

15 个交易日、每天 1 只，共 15 笔。原汇总表把「胜率（T0）= 66.67%、平均 +1.54%」放在第一位，但 T0 是**当天买入当天卖出**，A 股 T+1 制度下不可执行。

按可执行口径重算（14 笔，11-05 那笔尚无 T+1）：

| 口径 | 笔数 | 胜率 | 平均 | 中位 | 可执行性 |
|---|---|---|---|---|---|
| T0 收盘（原主口径） | 15 | 66.7% | +1.54% | +3.59% | **不可执行** |
| T+1 开盘卖 | 14 | 50.0% | +1.58% | +0.44% | 可执行 |
| **T+1 收盘卖** | 14 | **42.9%** | **+1.19%** | **−1.64%** | 可执行 |
| T+1 最高价 | 14 | 85.7% | +6.81% | +8.01% | **仅理论上限** |
| T+1 最低价 | 14 | 28.6% | −3.20% | −4.62% | 参考 |

**可执行口径下胜率 42.9%、中位 −1.64%**，与「66.7% 胜率」的观感完全相反。T+1 最高价 85.7% 是事后才知道的上限，不能当卖点。

### P5 · 样本太薄，分组结论无效

15 笔按身份拆成：亮黄 8 笔、P10∩P13 共振 1 笔、旧共振 3 笔、普通票 4 笔。1 笔和 3 笔的分组没有统计意义，原表却给出「旧共振 100% 胜率、平均 +4.04%」。这类分组只能当线索，不能当结论。

### P6 · 15 天窗口跨了规则变更日，新旧口径混算

第一票规则在 2026-11-02 那周改变（此前是「一进二四个票里取第一个」，之后是「四个票里按资金等条件筛」）。P11 回测窗口是 2026-10-15 ~ 11-05，**跨了变更日**；表里的「旧共振」分组本身就是旧规则产物。这 15 笔不是同一套规则下的样本。

### P7 · 三套时间窗口并存，结论不可比

| 用途 | 窗口 | 交易日 |
|---|---|---|
| 11-05 九轮回测 | 2024-06-03 ~ 2026-11-05 | 589 |
| 11-06 P11 第 1 只 | 2026-10-15 ~ 2026-11-05 | 15 |
| 11-06 亮黄清单 | 2026-09-01 ~ 2026-11-06 | 43（清单 136 只，未做回测） |

29 只/窗口之间互相包含（15 天和 43 天都在 589 天里），不是独立样本。放在一起比较会重复计数。

### P8 · 其他需要标注的口径

- 费用 0.12% 双边（含印花税约 0.075~0.09%），偏严，方向对结论无害，但要写明。
- 剔除「T+1 跌停一字卖不出」的样本（跌停格子剔 2 笔），等于假设其余都能按收盘成交；没有计算「买不到」的概率（跌停封单极厚时买单排队可能不成交）。
- 除权只用 `pre_close / close` 粗因子，0.2% 以内不修正（全库 0.37% 样本存在除权）。
- 涨停判定若用 `close ≥ 涨停价`，会把无涨跌幅限制的次新误判为涨停（实测多出 350 个假涨停日），必须改成等值判定。
- 9 轮 + v1~v23 二十多个脚本在同一份数据上反复搜参数（涨幅档 × 委买额档 × 卖点 × 板块 × 分年），至少几十次检验，没有样本外验证，也没有做多重比较校正。这是「总能找到正胜率格子」的结构性原因。

---

## 三、复核后仍然成立的结论

1. **两策略样本零重叠**：跌停样本 190 笔与三板微高开 261 笔，交集 0 笔，可以作为两个独立方向分别跟踪。
2. **追涨路线可以放弃**：全池 7,153 笔 T+1 收盘卖 −0.35%、胜率 44.21%；涨 3~7% 档 2,738 笔 −0.30%；涨 7~9.7% 档 1,163 笔 −1.33%。修正一字口径后方向不变。
3. **「低开本身没有 alpha」这条剥离检验站得住**：低开 < −5% 共 234 笔，剥掉跌停开盘那 42 笔后剩 192 笔期望 +0.01%，与 0 无法区分。
4. **委买额档位（500 万粒度）是锯齿噪声**，不能当信号；只有粗档（1000-3000 万 vs 两头）有方向性。
5. **三板整体不可买**：不分条件的三板可买样本隔天收盘显著为负，这一点在所有口径下一致。

---

## 四、今天做完的修正

| # | 问题 | 处理 | 状态 |
|---|---|---|---|
| 1 | 一字判定错 | 改用真实涨跌停价（pre_close × 板块幅度），重算池内 60,325 + 37,795 笔 | 已解决 |
| 2 | 三板结论虚高 | 严格口径重算，笔数/胜率/分年全部更新，撤回「三年全正」 | 已解决 |
| 3 | 跌停格子显著性 | 补分层随机对照 3,000 次，结论降级为「不显著，仅观察」 | 已解决（结论降级） |
| 4 | T0 口径 | 主口径统一为 T+1 收盘卖；「T+1 最高」标注为理论上限 | 已解决 |
| 5 | 时间窗口混乱 | 定主样本 = 589 天；15/43 天只作最近观察，不进统计结论 | 已解决 |
| 6 | 样本量不足 | 明确标注：任何分组 ＜100 笔不下结论 | 规则已定，样本靠时间积累 |
| 7 | 43 天亮黄清单只有名单 | 未做回测 | **待做** |
| 8 | 买不到概率 | 未建模型 | **待做** |
| 9 | 多重比较校正 | 未做（需固定候选集后统一做 FDR） | **待做** |

---

## 五、可复用资产

| 资产 | 位置 | 用途 |
|---|---|---|
| 全市场日线库 | `s55:/root/px_history.db` | 589 天、319.7 万行，任何新口径可直接复跑 |
| 竞价快照库 | `s55:/opt/kpl-cli/data/auction_hist/` | 590 天、9.85 万行 |
| 口径审计脚本 | `s55:/tmp/audit_all.py` | 池子构成、一字判定错误量化、策略重算、随机对照 |
| 口径溯源脚本 | `s55:/tmp/audit2.py` | 三板样本笔数溯源、分层随机对照 |
| 原九轮脚本 | `s55:/root/px_bt_v16.py` ~ `v23.py` | 保留作历史，**新结论不要再用 v16~v21（含当日卖口径）** |

复现：

```bash
ssh s55 "python3 /tmp/audit_all.py"    # 约 3 分钟
ssh s55 "python3 /tmp/audit2.py"       # 约 3 分钟
```

---

## 六、怎么用这份报告

- 看结论只看「T+1 收盘卖」这一列，其它卖点（当日收盘、T+N 最高）一律当参考上限。
- 任何格子的笔数低于 100，只能说「方向性观察」，不能说「策略成立」。
- 池内结论不能外推到全市场；池子只有全市场 3.1% 的覆盖率，这是上限，不是缺陷。
- 下一步要整合完整方案时，先定「候选格子清单」（不超过 5 个），再统一做样本外验证和多重比较校正，避免又变成在同一份数据上反复搜索。
