research: 一二类买卖点可行性探针(step55),结论为不可用

用户提出把 B4 的研究思路搬到第一/第二类买卖点,并指定 5m/15m 测。

滞后先于收益测,结论是用户判断正确:B1/B2/B3 滞后中位都是 8~9 根,
三类共用 find_all_bsp 的「中枢 is_sure + 笔 is_sure + sure_time」,
滞后不是区分它们的变量。

收益全负,一类最差:5m 上 B1 PF 0.24 / 胜率 18.6% / t −17.3,
S1 PF 0.20 / 胜率 14.8% / t −22.3,15m 同量级。B3 跑出 0.64/0.76、
HANDOFF §4 记的是 0.66,口径校验通过,所以 B1/B2 的数可信。

一类烂得彻底是几何决定的:等 8 根后价格已朝上跑 1.68 ATR,新入场价往下
2 ATR 的止损落在比原始低点还低 0.3 ATR 处,几乎贴着极值。同样的滞后在
顺势突破上只是追高,在逆势反转上是加倍惩罚。

探针里修掉两个会静默出错的地方:cdf.date 是 datetime64[ms] 而
Timestamp.value 是纳秒,手工转 int64 比较会让 searchsorted 全部落到末尾
且不报错(这是之前跑出 0 条的原因);速率对照未按币归一,拿 5 币的数去
比 10 币的 B4 基线等于凭空打对折。

Co-authored-by: Cursor <cursoragent@cursor.com>
This commit is contained in:
jackyu66git
2026-08-28 19:48:59 +08:00
co-authored by Cursor
parent 6d93975e67
commit 30592889aa
2 changed files with 370 additions and 0 deletions
+62
View File
@@ -974,6 +974,68 @@ mom10 同形状(Q2 最好、Q4 最差),样本内外一致。**势要有—
> **② 在几十个分组里挑出的最显著那个,默认它是噪声,除非它能在另一个总体上
> 复现。** p 值不做多重比较校正就等于没做检验。
### 3.393 一类/二类买卖点:引擎实现下全是负的,一类尤其糟(step55)
用户提出把 B4 那套研究思路搬到一二类上,并指定用 5m/15m 测。
**先量滞后,不先跑收益**——`Chan_BSP_TYPE` 的枚举注释里写着 B4 存在的全部意义
就是「几何位置同 B3/S3,但不等笔确认」,说明这个项目早就付过等笔确认的学费。
**① 滞后:三类完全一样(用户的判断,实测确认)**
| 类型 | 5m 滞后中位 | 15m 滞后中位 | 5m 漂移中位 | 占 2ATR 止损 |
|---|---|---|---|---|
| B1 | 8 根 | 9 根 | 1.68 ATR | 84% |
| B2 | 8 根 | 8 根 | 2.03 ATR | 101% |
| B3 | 8 根 | 9 根 | 1.95 ATR | 98% |
三类都卡在同一处:`中枢 is_sure` + `笔 is_sure` + `sure_time`
**所以滞后不是区分一二三类的变量**,它是 `find_all_bsp` 这个实现的共同属性。
⚠️ 「漂移为正的占比 100%」是**定义决定的,不是发现**:笔之所以在那里结束,
正是因为价格从极值反向走了,`bi.end_klc` 就是极值点。有信息量的是幅度不是符号。
**② 收益:全负,一类是最差的一档**(5m / 15m,5 币,出场用实盘的 2/3/8/2/48
| 类型 | 5m 笔数 | 5m 胜率 | 5m 毛R | 5m PF | 5m t值 | 15m PF | 15m t值 |
|---|---|---|---|---|---|---|---|
| **B1** | 623 | **18.6%** | 0.592 | **0.24** | **17.3** | 0.21 | 18.9 |
| **S1** | 644 | **14.8%** | 0.675 | **0.20** | **22.3** | 0.23 | 15.9 |
| B2 | 293 | 35.8% | 0.104 | 0.73 | 1.4 | 0.85 | 0.8 |
| S2 | 288 | 36.8% | 0.115 | 0.82 | 1.6 | 0.75 | 2.4 |
| B3 | 2806 | 33.3% | 0.187 | 0.64 | 8.0 | 0.76 | 5.3 |
| S3 | 2685 | 35.4% | 0.135 | 0.70 | 5.6 | 0.73 | 4.8 |
**口径校验通过**B3 跑出 PF 0.64/0.76,§4 记的引擎 B3 是 0.66 —— 接线是对的,
所以 B1/B2 的数可以信。
**③ 一类为什么烂得这么彻底:它的结构自带反向杠杆**
B1 买点的理想入场是那一笔的低点。等到 `sure_time` 可以动手时,价格已经**朝上
跑了 1.68 ATR**。于是新入场价往下 2 ATR 的止损,落在**比原始低点还低 0.3 ATR**
的位置——几乎贴着极值,任何一次回踩都打掉;而 3 ATR 的减半目标从低点算起变成
了 4.7 ATR。胜率 15~21% 完美对应这个几何:**它低于随机入场**(SL2/TP3 下随机
约 40%)。
**这和三类的滞后代价不是一回事。** 三类是顺势突破,等 8 根是「追高一点」;
一类是逆势抄底,等 8 根是「在反弹了 1.7 ATR 之后才去接刀」——**同样的滞后,
在反转型信号上是加倍惩罚**。
**④ 结论与下一步**
引擎现成的 B1/B2 **不可用**,且原因是结构性的不是参数性的,调参救不回来。
B3 当年的解法不是调参,是**重新定义成实时判据**(B4:收盘突破 zg → 收盘未跌回
→ 重新上行,全部当根可判),选样口径随之改变(627 个中枢只认 212 个),
统计性质才翻正。
**但这条路未必能照搬到一类**:B4 能实时判,是因为「突破 + 回踩不破 + 重新上行」
每一步都能用收盘价当根判定。而一类的核心是**背驰**,它要求「知道这一笔已经
结束」——那本身就是事后信息。要做实时版,得先找到一个不依赖笔端点的力竭代理。
> 另有一个来自 §3.391 的先验值得先算:**一类按定义就发生在一段已走完的行情
> 末端,也就是 `mom60` 最高的那个区间——而那正是我们实测最差的四分位**
> (Q4 发现期余量只剩 1.44bp)。真要做实时一类,先验就不利。
### 3.4 alpha 的来源(step32 消融)
逐条拆掉 `fast_bsp3` 的条件后发现:**alpha 完全来自缠论中枢的上下文定位,