← 归档索引 · 2026-10-08 22:46 · 节点转折+ftshare扫描-21:45
Cronjob Response: 节点转折+ftshare扫描-21:45
(job_id: a5703c635470)
-------------

# 📊 节点转折+ftshare 晚间扫描 · 2026-10-08

## 结论先行
**脚本层全绿**(两段均非空、stderr 0 字节、`=== 完成 ===` 无失败标记 → rc=0;IMA 已归档 2 份,实测知识库有 `ima_upload_节点转折ftshare_20261008_214705.md` / `..._ftshare晚间扫描_20261008_214702.md`)。**但复核时抓到 3 个结构性问题:① 今晚报告的 10 只是从 170 只池里"随机抽 15 只",复跑与正式跑重叠 = 0;② 输出里存在自相矛盾行(出货🟡 + 无离场信号);③ 信号无基准率,全池 69% 都有信号。** 数据日期 = 20261008(节后首个交易日)。

---

## 一、市场读数(先大盘)

| 指数 | 收盘 | 涨跌 | 量(vs 前日) |
|---|---|---|---|
| 上证 | 3811.90 | **-0.79%** | 4.82亿 vs 4.15亿 放大 |
| 深成 | 12620.90 | **-2.07%** | 1.68亿 vs 1.49亿 放大 |
| 创业板 | 3036.66 | **-3.15%** | 放大 |

**闸门判定:① FAIL** — 深成指 9/30 收 12887.62,今日 12620.90 **创新低**(未止跌);② 成交放大(满足)。两条件须同时满足 → **未过闸,个股信号今晚只作记录,不作操作依据。**

## 二、ftshare 情绪(21:45 实测)

```
涨停 45 | 跌停 19 | 炸板 34 | 炸板率 43.0% | 早盘板 35 | 尾盘板 0
情绪七度: 悲观 → 建议: 轻仓试错
池风险: 149只(扫描时点)解禁/商誉 0 命中
```

**交叉验证通过(漂亮)**:21:30 任务的 tushare `stk_limit` 报 `up_limit=79, break=34, down=19`;ftshare 报 45 收盘涨停 + 34 炸板 = **79 ✓**,跌停 19=19 ✓,炸板 34=34 ✓。两源口径互补、数字完全自洽。

**池数三口径对账(全部解释得通,非 bug)**:扫描时 149 → 21:58:56 `dragon_preselect` 写入 20 只「起涨前夜」auto 新股 → 169(ft 只读 `code` 字段)→ **170**(get_pool 认 `ts_code or code`)。差额 20 = 新增,差额 1 = 见下问题③。

## 三、节点转折信号(正式跑 10/15)

688256 次低点+踩踏|002151 次低点|300041 次低点+踩踏|002049 踩踏|920001 踩踏|603501 次低点|603078 踩踏|688272 次低点|002080 次低点+踩踏|300831 踩踏 —— 全部"无离场信号"。

**检测器本身我逐只独立复跑验证:10/10 判定完全一致**(次低点布尔值、踩踏分类全匹配)→ 检测器确定性 ✓、可复现 ✓。问题不在检测器,在下面的抽样。

## 四、🔴 发现① 抽样是随机的,报告不可复现(根因级)

`node_turning_scan.sh:23` → `codes = hub.get_pool()[:15]`,而 `bingjia_system.py:135` 返回 **`list(set(codes))`** —— set 顺序由 PYTHONHASHSEED 决定,**每次进程都不同**。

实测(不是推的):
- **21:45 正式跑的 10 只 vs 我复跑的 10 只:重叠 = 0**
- 同脚本 A/B 双跑:A=11 只信号、B=13 只,重叠仅 5
- 10 次独立抽样,前 15 两两重叠均值 **1.29**,随机独立期望 **1.32** → 纯随机,无任何稳定序

**影响量化**:单晚只扫 15/170 = **8.8%**;5 晚累计覆盖仅 37%;今晚报告的 10 只 ≠ 明晚报告的 10 只,**跨日不可比、不可追踪**。另有 3 处 `get_pool_codes()[:5]`(expectation_manager / mainforce_interpreter / weak_rebound)同病。

**修复(未执行,待你点头)**:`bingjia_system.py:135` `list(set(codes))` → `list(dict.fromkeys(codes))`(保序去重,1 行)。或更彻底:**全池扫描** —— 我已实测 **170 只跑满 5 模块 = 129.6s < timeout 240s**,可行。
校验:改后连跑两次,信号集必须完全一致;耗时 ≤150s rc=0。
证伪:若明晚不改代码、两次跑出相同 10 只 → 我的"随机抽样"判断错(现有 1.29 vs 1.32 + 重叠 0 的证据不支持这个方向)。

## 五、🟡 发现② 输出存在自相矛盾行(今晚复跑实证)

```
300258.SZ 出货🟡 — ℹ️ 无离场信号:主力未明显撤退,按持仓纪律
```
根因:`classify_stampede` 判 `distribute`(放量大跌)时,`advice` 却固定取 `es['advice']`(exit_style 返回 none)。**同一行里"出货"和"无离场信号"打架**,读者无法采信。另有 300548.SZ 今日 **-13.37%**(全池最大跌幅)也输出"无离场信号"——`right_kill` 要求跳空低开>1%,它只低开 -0.55% → 漏判。
**修复**:`node_turning_scan.sh` 输出逻辑改为——`st=distribute` 时 advice 取 stampede 的 meaning,不取 exit_style 的 none 文案;并给 `right_kill` 加"单日跌幅 ≤-8%"的并列入口。校验:构造 300548 样例,输出不得再出现矛盾句。

## 六、🟡 发现③ 池覆盖缺口 1 只 + 信号无基准率

- `ft_risk_scan.load_pool_codes` **只读 `code` 字段** → invest 池 **300548.SZ 博创科技**只有 `ts_code` → 被漏(169 vs 170)。修:`item.get("code") or item.get("ts_code")`(1 行)。
- **基准率缺失**:全池 170 只实测 **117 只(69%)有信号**、踩踏命中 **53%**、出货 4%。所以"10/15 有信号"毫无信息量(随机抽 15 只期望就有 ~10 只)。**建议输出底部固定打印全池基准**,否则报告在制造虚假的"信号密集"感。
- `exit_style.left_hidden` 分支要求 `mf.columns` 有 `main_net_amount`,moneyflow 禁令后 `get_moneyflow` 恒返回空 DataFrame → **三种离场方式永久只剩 2 种**,需在输出标注"左侧隐性离场已停用"。

## 七、上下文任务状态(顺带核对,非本任务范围)
- **21:40 龙头融合:今晚已恢复** ✅ `xinfa_scanner.py` 已按 10-06 诊断改为 `return []`(我实测 `get_filtered_codes` → 0 只 / 0.00s 走快路径),`/tmp/dragon_fusion_results.txt` 21:41 写入,任务 last_status=ok。**但改动未提交**(git status 仍 M,今晚 3:00 autocommit 才会入库)。
- **21:30 产业链扫描:仍未修** ❌ `data_hub.py` 无 `smart_select`、`chain_definition_card.py:182` 仍调用 —— 第 4 晚带病。moneyflow 恒 rc=1 也是第 4 晚。

---
**因果基因**:数据源 = evening_2145_scan.sh(rc=0/errlog 0字节/IMA 2份实测在库)+ DataHub.get_daily(20261008 全量)+ ft_limit_sentiment/ft_risk_scan 独立复跑 + bingjia_system 源码。分析路径 = 脚本产物验收 → 检测器逐只复验(10/10 一致)→ 抽样机制溯源(set 随机序,10 次抽样重叠 1.29≈期望1.32)→ 全池基准实测(69%)→ 三口径池数对账(149+20=169,+300548=170)。判断 = 管道绿、检测器可信,**抽样层随机导致报告不可复现是今晚唯一根因级问题**;闸门① FAIL,全部信号降级为记录。

**明日可验证**:① 深成指收盘 < 12620.90 → 闸门继续 FAIL,个股信号不作操作;② 不改代码复跑两次 → 若信号集又不同,随机抽样判断坐实;③ 改 `dict.fromkeys` 后两次跑信号集应完全相同。

To stop or manage this job, send me a new message (e.g. "stop reminder 节点转折+ftshare扫描-21:45").