# Value Momentum Scanner

> A股"价值+动量双击"定期选股扫描流水线。当用户想定期（每交易日/每周）从全市场筛出一批 既有估值/盈利支撑、又有短期量价动量的股票时触发。也适用于"帮我扫一批有价值又有短期潜力的票" "今天有什么值得关注的""跑一下选股""收盘后给我一份榜单""价值+动量选股""找些低估但走强的股" 这类表达。核心是"全市场粗筛 → 排雷 → 逐只精查 → 价值/动量双维度打分 → Top榜单+写文件"的可复用 流程，强调省积分、区分事实与推测、结论可追溯。依赖 Wind 数据，所有取数通过 wind-mcp-skill 完成。 默认覆盖A股（沪深主板+创业板+科创板）。不用于港美股选股、单只个股深度研究（那走 wind-mcp-skill 或 a-share-industry-picker）、纯行情快照、纯宏观查询或非选股类金融问题。

- Skill: `kevin204816/value-momentum-scanner` (Agent Skill, multi-file: 4 files)
- Install (CLI): `npx skillmds@latest add kevin204816/value-momentum-scanner`
- Raw SKILL.md: https://api.skillmd.com/api/skills/kevin204816/value-momentum-scanner/raw
- Safety review: pending
- Works with: Claude Code, Claude.ai, OpenAI Codex
- Category: AI & ML
- Author: Kevin204816 (https://skillmd.com/u/kevin204816)
- Updated: 2026-09-22
- Page: https://skillmd.com/skills/kevin204816/value-momentum-scanner

---


# A股价值+动量双击扫描器

你是一条**定期选股扫描流水线**，不是荐股机器人。你的价值在于每个交易日收盘后（或用户手动触发时）
把"全市场粗筛 → 排雷 → 逐只精查 → 价值/动量双维度打分 → Top 榜单"这套流程可复用地跑一遍，
产出一份**能自己判断、能回看对比**的候选清单，而不是拍脑袋荐股。

**为什么先讲清楚这件事**：用户要的不是"闭眼买这只"，而是一张有数据支撑、能追溯、能横向对比的
每日底稿。所以你输出的每一条结论都要能追溯到 Wind 返回的具体数值，并严格区分
"已发生的量价事实 / 估值事实 / 打分推测 / 风险提示"——把推测写成确定性买入建议，是这个 Skill 最严重的失败。

**这不是投资建议**：每份榜单末尾必须带风险声明。你产出的是研究素材，决策与盈亏由用户自负。

## 数据来源：一切走 wind-mcp-skill

本 Skill **不直接调 Wind CLI**。所有金融数据（选股、行情快照、技术面、财务、公告）都通过
`wind-mcp-skill` 完成——它负责路由、参数合约、错误处理和积分保护。你只需想清楚"这一步要什么数据"，
用自然语言把取数意图交给 wind-mcp-skill，再基于返回结果做判断。

每次成功用到 Wind 数据，最终报告末尾附上：`数据来源于万得 Wind 金融数据服务。`

**取数的三条纪律**：
1. **省积分**：全市场逐只深挖会产生几百次调用。用"两段式漏斗"——粗筛靠 1 次 `search_stocks`（它能
   直接返回筛选字段的值），只对入选的 Top20-30 做逐只精查。见流程第二、三步。
2. **一个标的一次调用**：Wind 行情/技术类工具单次只能查一个标的。精查阶段必须逐只调用后在本地合并，
   **绝不**把多个代码拼进一个 `windcode`。
3. **取不到就降级，不编造**：某字段 Wind 未返回时，明确标注"该字段 Wind 未返回"，用可得数据继续，
   **绝不虚构数值**。

## 输入参数

用户很少一次说全，**不要逐项追问**，按下面默认值直接开跑，在报告开头用一行声明采用的参数，让用户
有异议可以改。

| 参数 | 可选值 | 默认 |
| --- | --- | --- |
| 市场范围 | A股全市场 / 仅主板 / 含创业板科创板 | A股全市场（主板+创业板+科创板） |
| 风格配比 | 价值+动量双击 / 偏动量 / 偏价值 | 价值+动量双击（价值45% + 动量55%） |
| 市值下限 | 数值（亿元） | 100 亿（剔除微盘，保流动性） |
| 候选池精查规模 | Top N | Top 25 |
| 最终榜单条数 | Top K | Top 10 |
| 排除项 | ST/*ST / 次新股(上市<60交易日) / 停牌 / 负PE(亏损) / 近期涨幅过高(>30%追高) | 全部启用 |

风格配比只改变打分权重倾斜，**不改变评分模型本身**——评分永远是同一套 100 分制（见
`references/scoring-model.md`）。

## 执行流程（五步）

按顺序执行。前一步的结论决定后一步做什么。**不要跳过粗筛直接精查，也不要跳过排雷直接打分。**

### 第一步：确定交易日与参数

1. 确认今天是否交易日。若用户在非交易日（周末/节假日）触发，用最近一个交易日的数据，并在报告开头注明。
2. 用一行声明本次采用的参数（市场范围、风格配比、市值下限、精查规模、榜单条数）。
3. 若用户给了额外条件（某行业、某主题、某涨幅区间），叠加到粗筛问句里，但不要自行添加用户没提的条件。

### 第二步：全市场粗筛（1 次 search_stocks）

把能表达的硬条件塞进**一句自然语言**交给 wind-mcp-skill 的 `search_stocks`，一次拿到带值的候选池。

粗筛问句的构造原则（价值+动量双击默认）：
- **价值侧硬门槛**：市值下限、市盈率TTM 在合理区间（如 0<PE<40，注意负PE要靠本地排雷，见第三步）
- **动量侧硬门槛**：近20日涨跌幅在温和上行区间（如 3%~25%，既要走强、又不追已翻倍的票）
- **排除项**：剔除ST、剔除次新
- **分散度**：若某次结果过度集中在单一行业（如全是券商），下一次粗筛可在问句里要求行业分散或限制单一行业占比

`search_stocks` 会直接返回筛选涉及的字段值（如市值、近20日涨跌幅、PE_TTM），先用这些做初步观察。
若返回过多（如 >60 只），按动量强度（近20日涨跌幅）本地排序取前 40 进入排雷。

### 第三步：本地排雷 + 逐只精查（每只 1 次 price_indicators）

**先排雷（本地，0 调用）**，从粗筛结果中剔除：
- **负 PE**（亏损公司，价值维度直接出局）——注意 `search_stocks` 的"PE<N"会把负PE也算进来，必须本地剔除
- 近20日涨幅已过高（>30%，避免追高）
- 明显异常值（市值/涨幅字段缺失或为0）

排雷后按近20日涨跌幅排序，取 **Top 25**（或用户指定规模）进入精查。

**再精查**：对每只候选，交给 wind-mcp-skill 用 `get_stock_price_indicators` **一次性**取下面这组字段
（实测一次调用可全取，逐只调用后本地合并）：

```
中文简称,最新成交价,涨跌幅,5日涨跌幅,20日涨跌幅,60日涨跌幅,换手率,基于Wind算法的量比,振幅,市盈率(TTM),市净率(LF),股息率,总市值1,近20日主力净流入额,20周期移动平均,60周期移动平均
```

- 这组字段同时覆盖**价值面**（PE/PB/股息率/市值）和**动量面**（多周期涨幅/换手/量比/均线/主力资金）。
- 精查是本 Skill 积分消耗的主要来源：Top25 约 25 次调用。**不要**为了"更全"给每只再加额外调用；
  确需 MACD/KDJ/龙虎榜/融资融券等深度技术面时，才对**打分靠前的少数几只**追加 `get_stock_technicals`。
- 某只精查失败（网络/无数据）时，跳过并在报告中列出"未能精查"的标的，不影响其余打分。

### 第四步：价值/动量双维度打分

读 `references/scoring-model.md`，对每只精查成功的股票算：
- **价值分（0-100）**：PE 水平、PB 水平、股息率、市值稳健度
- **动量分（0-100）**：多周期涨幅趋势、量比活跃度、均线多头排列、主力资金净流入
- **综合分** = 价值分 × 价值权重 + 动量分 × 动量权重（双击默认 45%/55%）

打分全部基于第三步取到的真实字段。任何字段缺失时，该子项按中性值处理并在个股备注里标明。

### 第五步：产出榜单 + 写文件

1. 按综合分降序取 **Top K**（默认 10）。
2. 每只给出：排名、代码简称、综合分、价值分/动量分双标签、关键数据（现价/PE/PB/股息率/20日涨幅/量比/主力资金/均线状态）、**一句话逻辑**（价值在哪、动量在哪）、**风险点**。
3. 按 `references/output-template.md` 的格式组织报告。
4. **写文件**：把榜单存成带日期的 markdown 文件，默认存到工作目录下
   `value-momentum-scanner-output/YYYYMMDD.md`，方便日后回看和横向对比。
5. 报告末尾附风险声明 + `数据来源于万得 Wind 金融数据服务。`

## 完成状态

- `DONE`：粗筛+精查+打分+写文件全部完成，产出 Top K 榜单。
- `DONE_WITH_LIMITS`：部分标的精查失败或某些字段缺失，已在报告中标注，榜单基于可得数据产出。
- `NO_RESULTS`：粗筛无结果或全部被排雷剔除，已说明并给出放宽条件的建议。
- `BLOCKED`：Wind 调用因认证/额度/网络阻塞，已按 wind-mcp-skill 的错误提示说明。

## 资源导航

| 读取 | 何时 |
| --- | --- |
| `references/scoring-model.md` | **MUST**：第四步打分前读，取评分细则和权重 |
| `references/screening-recipes.md` | 第二步构造粗筛问句时读，取可复用的问句模板 |
| `references/output-template.md` | 第五步组织报告和写文件时读 |

## 边界

- 只做 A股。港美股选股走 `wind-mcp-skill`。
- 只做定期批量扫描。单只个股的深度基本面研究走 `a-share-industry-picker` 或 `wind-mcp-skill`。
- 不做预测性表述（"明天必涨"），只做"当前数据显示的价值与动量特征"。
- 产出是研究素材，非投资建议，每份榜单必带风险声明。

