---
name: hectorlee-daily-precision-picker
slug: hectorlee-daily-precision-picker
version: 2.2.1
displayName: 每日精选
description: "每日精选1-3只股票的四层漏斗策略系统。从量价形态初筛池出发，依次通过量价二次过滤、基本面安全排雷、资金流向打分、板块与形态质量打分，最终输出精选股票，选不出则空仓。触发词：精选、每日优选、深度筛选、资金确认、精筛、4层漏斗。"
agent_created: true
---

# 每日精选策略 V2.2.1 — 四层漏斗 + 三层分级 + 离线容错

## V2.2.1 更新（2026-08-25）

- 修复资金流向打分解析：westockdata `fund flow` 输出为英文表头 markdown 表格（`JumboNetFlow`/`MainNetFlow` 在表头），原解析按"数据行含 jumbo/主力 关键词"匹配导致资金分恒为 0，现改为按表头列索引提取数值。
- 新增 `--json <路径>` 参数：将分层结果（tier1/tier2/tier3）及数据可用性写结构化 JSON，供外部程序/定时任务读取生成卡片。

## 概述

从量价形态初筛池（volume-price-screener 或其他来源）中，通过 4 层漏斗过滤和打分，输出**三个层级**的精选结果：

| 层级 | 标签 | 数量 | 分数阈值 | 用途 |
|:---:|:-----|:----:|:---:|:-----|
| ⭐ 第一层 | **精选** | 1-3 只 | ≥ 82 | 重点关注，信号最确定 |
| 👍 第二层 | **优选** | 5-10 只 | ≥ 60 | 备选标的，信号较好 |
| 👀 第三层 | **关注池** | ≤ 50 只 | ≥ 38 | 宽基观察，通过 L1+L2 底线 |

各层独立筛选，不互相依赖。每层可能不满（信号不足时空出），第三层也可能超过 50 只（按总分截断）。

**核心设计原则**：基本面做硬过滤兜底，资金流向做核心打分（d=1.21 超大单区分力远超量价特征），量价只做 MA 支撑初筛和辅助打分。

**V2.1 更新（2026-08-03）— 基于端到端回测优化**：

基于 103,758 条记录、655 个交易日的 VPS 全量回测，关键发现：
- VPS 纯量价评分 Top30 仅产生 **+0.10%** 超额收益（vs 随机基线），区分力极弱
- DPP L1 过滤中，**仅 MA 支撑**有实质边际贡献（+0.48%），缩量天数/振幅/背离预警近乎零贡献
- **少而精**胜过大而全：L1+Top3 = **+2.04%** vs L1+Top30 = +1.17%
- 量价质量得分从 20% 降至 10%，资金流向提升至主导地位（75%）

**数据依据**：基于 103,758 条历史回测记录的赢家画像 + 近期多维度截面分析 + 端到端路径对比回测（详见 `references/research_findings.md`）。

## 运行模式

### 收盘模式（默认）

每日收盘后运行一次，数据完整、信号稳定。全链路约 3-8 分钟。

### 盘中模式（可选）

盘中可多次运行，但需注意以下限制和调整：

**与收盘模式的区别**：

| | 收盘模式 | 盘中模式 |
|:--|:--|:--|
| K线数据 | 完整日K | 盘中K线（当日未完成） |
| 资金流向 | 当日完整数据 | 前一日数据（当日未出） |
| 量价形态 | 完整确认 | 可能不满足条件（缩量天数不足） |
| 运行频率 | 1次/日 | 可多次（建议每30-60分钟） |
| 信号可靠性 | 高 | 较低，仅供盘中参考 |

**盘中模式调整**：

1. **L1 放宽**：缩量天数阈值不强制（盘中缩量可能未完成），但振幅、MA支撑、背离预警仍需检查
2. **L3 降级**：资金流向使用前一日数据（标注"T-1数据"）
3. **历史信号去重**：盘中多次运行产生的命中记录，**按 `(code, date)` 去重后再统计出现天数**，避免同一交易日的重复扫描抬高历史计数

```python
# 去重示例
history_count = len(set(
    (rec['code'], rec['date']) 
    for rec in records 
    if rec['code'] == target_code and rec['date'] < today
))
```

4. **输出标注**：盘中报告需标注"盘中模式，信号仅供参考"和时间戳
5. **收盘后最终确认**：收盘后必须重新运行一次收盘模式，以正式报告为准

### 去重数据结构

为避免多次扫描污染历史数据，所有运行记录在写入时需要：

```
写入前检查: 该 (code, date) 组合是否已存在？
  → 已存在: 更新最新评分，不新增记录
  → 不存在: 新增记录
```

## 工作流程

### 使用场景

- **全链路自动精选**：先运行 volume-price-screener 获取初筛池，然后自动触发本技能做精选
- **独立候选池分析**：用户提供一批候选股票代码，直接运行精选

### 执行步骤

#### 1. 获取候选池

扩大初筛池以支撑三层分级（目标 ≥ 50 只候选）：

```bash
cd volume-price-screener-dir/scripts
python screener.py --all --top 100
```

提取命中结果中的全部股票代码作为候选池。

#### 2. 四层漏斗过滤

按顺序执行，每层通过后才进入下一层。

**第一层：量价初筛（MA 支撑硬条件）**

VPS 仅作为粗筛池来源（形态命中即可，不依赖 VPS 评分排序）。对每只候选股检查：

| 条件 | 阈值 | 说明 |
|:-----|:-----|:-----|
| MA 支撑 | true | 价格站稳 MA10 和 MA20 |

不满足的直接排除。排除原因做标注。

> V2.1 简化：基于 103,758 条回测，缩量天数（边际 +0.05%）、振幅（+0.01%）、背离预警（-0.02%）三项的边际贡献近乎为零，已移除。仅保留边际贡献 +0.48% 的 MA 支撑条件。

**第二层：基本面安全排雷（硬过滤）**

```bash
westock-data finance CODES --num 1
```

排除以下任一情况的股票：

- 最近季度净利润 < 0（亏损）
- 商誉 / 净资产 > 30%（商誉暴雷风险）
- 资产负债率 > 80%（过高杠杆，金融/银行行业豁免）
- 最近季度经营现金流净额 < 0 且净利润 > 0（利润质量差）
- ST / *ST 标记

对排除原因做明确标注。

**第三层：资金流向打分（权重 75%）**

```bash
westock-data fund flow PASSING_CODES
```

| 指标 | 满分 | 评分规则 |
|:-----|:----:|:---------|
| 超大单净流入 | 45 | >0 得 30 分；>5000万 得 38 分；>1亿 得 45 分 |
| 主力净流入 | 30 | >0 得 20 分；>3000万 得 25 分；>1亿 得 30 分 |

两项相加得到资金得分（满分 75）。

**第四层：板块与量价辅助打分（权重 25%）**

通过 tdx-connector 获取板块信息：

```
查询 STOCK_CODE 的所属行业和概念板块
```

| 指标 | 满分 | 评分规则 |
|:-----|:----:|:---------|
| 板块热度 | 15 | 所属概念中，近一周涨幅为正的概念数 ≥ 3 个得 15 分；≥ 2 个得 12 分；≥ 1 个得 8 分；0 个得 3 分 |
| 量价形态质量 | 10 | 放量日涨幅 ≥ 8% (+4分)；缩量深度 < 30% (+3分)；低点抬高 (+3分) |
| 历史重复信号 | 10 | 前50个**交易日**内出现**天数**（按日去重）：0天(+0)；1-3天(+4)；4-7天(+6)；8+天(+10) |

> V2.1 调整：量价形态质量从 20 分降至 10 分。基于回测数据，量价各特征与 fwd20 相关性均 < 0.02，量价评分的作用是辅助而非主导。

> 历史重复信号说明：统计该股票在前50个交易日中出现在初筛关注池的**交易日数量**（同一天多次扫描只计1次，按 `(code, date)` 去重）。反复出现意味着形态持续性更强，资金可能已在暗中布局。数据来源为 volume-price-screener 的历史回测样本库。

#### 3. 三层分级输出

总分 = 资金得分（75）+ 板块得分（15）+ 量价质量得分（10）+ 历史重复信号（10）= 满分 110

按总分降序排列后，分三层输出。核心原则：**少而精**——回测证实 Top3 的胜率和收益率显著优于 Top30。精选层宁缺毋滥。

| 层级 | 分数线 | 数量 | 说明 |
|:---:|:---:|:---:|:-----|
| ⭐ 精选 | ≥ 82 | Top 1-3 | 每维都强，信号确定性最高 |
| 👍 优选 | ≥ 60 | Top 5-10 | 整体不错，可作备选 |
| 👀 关注池 | ≥ 38 | ≤ 50 | 通过 L1+L2 底线，宽基观察 |

**空层处理**：某层无股票达标时，输出"该层无标的"（不降层凑数）。

#### 4. 输出报告（三部分）

报告必须包含：分层列表 + 板块热力图 + 操作建议。

**第一部分：分层列表** — 结构化表格输出三层结果（代码/名称/总分/各维得分/资金/行业），附淘汰明细。

**第二部分：板块热力图** — 统计全部命中股票的行业分布：
- 按一级行业聚合，标注各层分布数量
- 列出代表股、计算板块集中度（Top 3占比）
- 判断资金风格（超大单主导/主力主导/散乱）

**第三部分：操作建议** — 基于以下信号输出 3-5 条建议：
- 精选层有无（有→积极，无→谨慎）
- 板块集中度（>60%→聚焦，<40%→分散）
- 资金风格（超大单→趋势，主力→短线博弈）
- 历史重复率（高频→持续性机会）
- 当前时段（开盘观察/盘中确认/尾盘决策/收盘定论）

所有建议需标注：基于量价+资金信号，不构成投资建议。

## 注意事项

- 所有颜色约定：涨=红、跌=绿（中国 A 股惯例）
- 数据依赖 westockdata（资金/财务）和 tdx-connector（板块）；tdx-connector 未连接时板块热度维度降级处理（跳过该维度或按基准分计入，并在报告中标注"板块数据缺失"）
- 精选结果为量价+资金多维信号，**不构成投资建议**
- 若数据源不可用，标注"数据缺失"并降级处理（跳过该维度，满分相应调整）
- 单日执行全流程约 2-5 分钟（含数据拉取）
- 各层分数阈值可根据市场环境调整：牛市中精选层阈值可上调（如 82→88），熊市中关注池阈值可下调（如 38→30）
