research: 订正额外信号的机制——不是重画,是中枢终点在实时不可知
我先前把 B4 的额外信号归因为「中枢重画」,用户两次指出后逐条查证,归因是错的: ① 中枢边界不重画(用户对)。zg/zd 由前三笔定死,verify_window_sens/step39 验过。 ② 中枢只由已确认的笔构成,这是结构性保证:cal_bi_zs_list_pure 要求 bi1/bi2/bi3.is_sure,延伸时要求 leave_bi/back_bi.is_sure。 step70 实测 789 个信号全部 z_sure=True,用户说的浅色 B4 在研究路径不存在。 因此我提的「补一道 is_sure 门」是空操作,实测 PF 0.73→0.73,已标记不要再提。 ③ 真机制是 available_ts 棘轮,§5.41 早写明:改动不是已确认的笔被推翻, 而是中枢又吸收了新笔、bis[-1] 换人。available_ts 取末笔 sure_time, 于是往后棘轮,find_fast_bsp3 的 200 根扫描窗口整体右移。 消失的不是笔,是中枢的终点。 顺带澄清一个伪问题:中枢跨度 > 200 根不会导致突破落不进窗口, 因为扫描起点是中枢结束(末笔确认)而非起点,此时价格已在离开中枢。 仍未对上的是数量级:中枢层面 6.5% vs 信号层面 75%。假设是 max_per_zone=1 的放大(起点棘轮越过旧入场点,同一中枢反复产出「第一个」)。 step69_mechanism.py 已写好判据但三次后台运行被中断,标为下一步前置项。 Co-authored-by: Cursor <cursoragent@cursor.com>
This commit is contained in:
+47
-4
@@ -1603,8 +1603,44 @@ B4 错在**存在性**(信号当根就有,但其中 74% 事后会消失)
|
||||
还要看执行层是否有额外去重/冷却,**这一层未审计**
|
||||
|
||||
**这不否定 B4 的 alpha**——回测口径那 51 笔 PF 4.21、t 5.90 是真实的,说明
|
||||
「真中枢上的 B4」确实赚钱。问题是实时分不出真假中枢。可能的方向(均未测):
|
||||
要求中枢的构成笔 `is_sure`(用滞后换稳定性)、或等 N 根看信号是否仍然存在。
|
||||
「真中枢上的 B4」确实赚钱。问题是实时分不出真假中枢。
|
||||
|
||||
#### 3.3994a 机制订正:不是重画,是中枢终点在实时不可知
|
||||
|
||||
我最初把它归因为「中枢重画」,**这个归因是错的**,用户两次指出后逐条查证:
|
||||
|
||||
**① 中枢边界不重画(用户对)。** `zg/zd` 由前三笔定死,`verify_window_sens`
|
||||
与 step39 都验过。
|
||||
|
||||
**② 中枢只由已确认的笔构成(结构性保证)。** `cal_bi_zs_list_pure`:
|
||||
|
||||
```python
|
||||
if not (bi1.is_sure and bi2.is_sure and bi3.is_sure): continue
|
||||
if not (leave_bi.is_sure and back_bi.is_sure): break # 延伸时同样要求
|
||||
```
|
||||
|
||||
step70 实测:789 个信号**全部** `z_sure=True`。所以用户说的「浅色 B4 会出现
|
||||
然后消失」在研究路径上不存在(那来自 web 展示用的非 `_pure` 中枢)。
|
||||
⛔ **「补一道 is_sure 门」是空操作**,实测 PF 0.73 → 0.73 分毫未动,不要再提。
|
||||
|
||||
**③ 真正的机制是 `available_ts` 棘轮,§5.41 早已写明:**
|
||||
|
||||
> 6.5% 的改动**不是已确认的笔被推翻**,而是中枢又吸收了新笔、`bis[-1]` 变成了
|
||||
> 另一根笔。**原来那根笔本身没变。**
|
||||
|
||||
`available_ts` = 中枢**最后一笔**的 `sure_time`(`AVAIL_BI_INDEX = -1`),
|
||||
而中枢会持续吸收新确认的笔 → 「最后一笔」换人 → `available_ts` 往后棘轮 →
|
||||
`find_fast_bsp3` 的 200 根扫描窗口整体右移。消失的不是笔,是**中枢的终点**。
|
||||
|
||||
顺带澄清一个我一度担心的伪问题:**中枢跨度 > 200 根不会导致突破落不进窗口**,
|
||||
因为扫描起点是中枢**结束**(末笔确认)而非起点,此时价格已在离开中枢。
|
||||
|
||||
**⚠️ 唯一还没对上的是数量级:中枢层面 6.5%,信号层面 75%。**
|
||||
假设是 `max_per_zone=1` 的放大——每个中枢只返回**第一个**入场点,而
|
||||
`start = searchsorted(ts, available_ts)` 每棘轮一次就越过旧入场点,
|
||||
同一中枢于是反复产出新的「第一个」;全量只用最终 `available_ts`,每中枢至多一个。
|
||||
**这条未测**(`step69_mechanism.py` 已写好,判据是「额外信号落在几个不同中枢上」,
|
||||
三次后台运行都被中断,需重跑)。
|
||||
|
||||
### 3.4 alpha 的来源(step32 消融)
|
||||
|
||||
@@ -2824,8 +2860,15 @@ API 限流风险隔离三个好处。
|
||||
1m 的关键分组只有 34 笔。扩到 8~11 币或 5 万根再看是否稳定
|
||||
- [ ] **①c 审计执行层是否有去重/冷却**。「额外信号」是实时算得出、事后消失的,
|
||||
但实盘是否真的每个都下单,取决于执行层,这一层还没看过
|
||||
- [ ] **② 试「中枢构成笔 is_sure」与「等 N 根看信号是否仍在」**(均未测)。
|
||||
前者用滞后换稳定性,后者直接过滤会消失的信号。目标是把那 74% 压下去
|
||||
- [x] ⛔ **「中枢构成笔 is_sure」已证是空操作**(step70,§3.3994a)。
|
||||
`cal_bi_zs_list_pure` 本就强制全部构成笔 is_sure,789 个信号全是已确认,
|
||||
加这道门 PF 0.73 → 0.73。**不要再提这条**
|
||||
- [ ] **② 先测数量级放大:那 592 个额外信号落在几个不同中枢上**(§3.3994a)。
|
||||
中枢层面只改 6.5%,信号层面却 75%,怀疑 `max_per_zone=1` + 起点棘轮
|
||||
让同一中枢反复产出「第一个」入场点。脚本已写好 `step69_mechanism.py`,
|
||||
**三次后台运行都被中断,需在前台重跑**。这是修法的前置——
|
||||
若确是重复触发,修法是「每中枢只认一次」,代价远小于动 available_ts
|
||||
- [ ] **③ 若非重复触发,再试「等 N 根看信号是否仍在」**(用滞后换稳定性)
|
||||
- [ ] **③ 通知服务器侧**:当前实盘在做一批回测里不存在的单。在 ① 出结果前
|
||||
不建议改参数,但应知晓风险
|
||||
- [x] **窗口左边界效应判为否**(§3.3994)。2001 根滚动窗口与 2万→4万根增长窗口
|
||||
|
||||
Reference in New Issue
Block a user