# Mrdang

> MR Dang 价值选股打分助手 - 根据 MR Dang 投资体系对 A 股进行风险筛查和多维度打分。当用户提及 A 股选股、价值投资分析、股票打分、投资评级、股息率筛选、银行股分析、资源股评估时立即使用此技能。触发词：MR Dang 选股、MR Dang 打分、MR Dang 分析

- Skill: `cnife/mrdang` (Agent Skill, multi-file: 7 files)
- Install (CLI): `npx skillmds@latest add cnife/mrdang`
- Raw SKILL.md: https://api.skillmd.com/api/skills/cnife/mrdang/raw
- Safety review: pending
- Works with: Claude Code, Claude.ai, OpenAI Codex
- Category: Coding & Dev Tools
- Author: cnife (https://skillmd.com/u/cnife)
- Updated: 2026-09-17
- Page: https://skillmd.com/skills/cnife/mrdang

---


# MR Dang 价值选股打分助手

根据 MR Dang 投资体系，对 A 股上市公司进行**标准化风险筛查 + 多维度打分 + 投资评级**。
自动通过 **Tushare 获取财务/估值/分红数据** + **Jina 搜索补充业务/行业/风险信息**。

## 核心规则

1. **一票否决**：股息率＜2% 直接淘汰
2. **及格线**：≥60 分可进入深度研究
3. **核心逻辑**：以排除风险为主，不追求完美公司
4. **适用行业**：银行、资源、化工/制造、公用事业、其他传统行业

## 触发方式

用户输入示例：
- MR Dang 选股 `<股票名称>`
- MR Dang 打分 `<股票名称>` `<行业类型>`
- 帮我用 MR Dang 体系分析 `<股票代码>`

**自动触发场景**（无需用户显式提及 MR Dang）：
- 用户询问某只 A 股是否值得投资 / 能不能买
- 用户提及股息率、分红稳定性筛选
- 用户询问银行股 / 资源股 / 周期股 / 公用事业股的投资价值
- 用户需要股票估值判断（PE/PB 分析）
- 用户提及"价值投资"、"安全边际"、"高股息"等概念

## 可用脚本

| 脚本 | 用途 |
|------|------|
| `scripts/data.py` | 从 Tushare 获取股票数据 |
| `scripts/search.py` | 通过 Jina 搜索网络信息 |

所有脚本均遵循 **PEP 723** 标准，内置依赖声明，可直接用 `uv run` 执行，无需手动安装依赖。

**API Key 安全配置：**

脚本通过 `scripts/_keys.py` 统一加载 API Key，加载优先级：环境变量 > 当前目录 `.env` 文件。

推荐做法：在**当前工作目录**（非 skill 目录）创建 `.env` 文件：
```
TUSHARE_TOKEN=your_token_here
JINA_API_KEY=your_key_here
```

`.env` 已在仓库 `.gitignore` 中排除，不会被提交。

支持的环境变量：
- `TUSHARE_TOKEN` 或 `TUSHARE_API_KEY` — Tushare API Token（必需，二选一）
- `JINA_API_KEY` — Jina API Key（可选，提高搜索限额）

**禁止将 API Key 直接粘贴到对话上下文中。**

## 执行流程

### 第一步：获取股票代码

如果用户提供股票名称，先用 Tushare 查询股票代码：

```bash
uv run scripts/data.py search <股票名称或代码>
```

输出包含 ts_code、名称、行业、上市日期等信息。

### 第二步：获取 Tushare 结构化数据

使用 Tushare 获取以下数据：

```bash
# 获取所有数据（推荐）
uv run scripts/data.py get <ts_code> --type all

# 获取基础信息
uv run scripts/data.py get <ts_code> --type basic

# 获取每日指标 (PE, PB, 市值等)
uv run scripts/data.py get <ts_code> --type daily

# 获取财务指标
uv run scripts/data.py get <ts_code> --type financial

# 获取完整财务指标（多期）
uv run scripts/data.py get <ts_code> --type financial-full --periods 8

# 获取分红信息
uv run scripts/data.py get <ts_code> --type dividend --years 5

# 获取日线行情
uv run scripts/data.py get <ts_code> --type ohlcv --days 250

# 获取股价位置判断
uv run scripts/data.py get <ts_code> --type price
```

**必须获取的核心字段：**
- PE(TTM)、PB、总市值、流通市值
- 资产负债率、经营现金流、ROE
- 近1年股息率、近3年分红稳定性、派息率
- 近期增发/解禁情况

### 第三步：Jina 搜索非结构化信息

使用 `scripts/search.py` 搜索以下内容：

```bash
# 搜索公司全面信息
uv run scripts/search.py company <公司名称> --industry <行业>

# 单独搜索
uv run scripts/search.py query "<公司名称> 主营业务" --max-results 5
uv run scripts/search.py query "<公司名称> 行业地位" --include-domains eastmoney.com

# 从搜索结果提取摘要
uv run scripts/search.py extract results.json --max-length 500
```

**搜索模板（自动执行）：**

1. **主营业务搜索**: `{公司名称} 主营业务 业务构成 产品结构`
2. **行业地位搜索**: `{公司名称} 行业地位 竞争优势 市场份额`
3. **周期性判断**: `{公司名称} 是否周期股 产能周期 行业景气度`
4. **再融资情况**: `{公司名称} 增发 配股 再融资 近三年`
5. **资产属性判断**: `{公司名称} 生产资料属性 重资产还是轻资产`
6. **银行股专用**: `{公司名称} 区域经济 房地产风险 不良率 拨备覆盖率`

### 第四步：基础 5 项风险筛查

**任意不通过直接淘汰：**

1. 是否纯题材/故事股，无实际营收与主业
2. 是否高估值泡沫股（科技类 PE＞30 且无强壁垒）
3. 是否处于严重内卷、产能过剩行业
4. 是否近期高位增发、频繁圈钱
5. 投资逻辑是否复杂到无法用三句话说明

### 第五步：8 维度打分（总分 100）

#### 1. 生产资料属性（20 分）
- 资源/能源/公用/银行/重资产：18–20 分
- 稳定制造业、渠道型：10–17 分
- 轻资产、纯服务、题材型：0–9 分

#### 2. 股息率（20 分）
- ≥5%：20 分
- 3%–5%：15 分
- 2%–3%：8 分
- ＜2%：0 分（直接淘汰）

#### 3. 估值（15 分）
- PE≤10 或 PB 历史低分位：15 分
- PE 10–20：10 分
- PE 20–30：5 分
- PE＞30：0 分

#### 4. 资源禀赋 / 成本优势（15 分）
*仅资源/化工/制造启用，其他行业跳过*
- 自有资源 / 成本行业前列：13–15 分
- 一般成本、中等竞争力：6–12 分
- 无优势、高成本、尾部企业：0–5 分

#### 5. 行业与竞争位置（10 分）
- 行业龙头/寡头/供需紧张：8–10 分
- 中等地位、竞争温和：4–7 分
- 尾部、内卷严重、价格战：0–3 分

#### 6. 地域因素（10 分）
*仅银行/区域股启用，其他跳过*
- 经济发达、风险低：8–10 分
- 地区一般：4–7 分
- 高负债地区、地产风险高：0–3 分

#### 7. 流动性与财务安全（5 分）
- 市值适中、负债健康、现金流稳定：4–5 分
- 小市值、负债偏高、现金流波动：0–3 分

#### 8. 逻辑清晰度（5 分）
根据业务复杂度打分。

### 第六步：总分评级

| 分数 | 评级 | 操作建议 |
|------|------|----------|
| 80–100 | ⭐⭐⭐⭐⭐ 优秀 | 重点关注、可建仓 |
| 60–79 | ⭐⭐⭐⭐ 良好 | 可分批买入 |
| 40–59 | ⭐⭐⭐ 一般 | 谨慎观察 |
| 20–39 | ⭐⭐ 较差 | 建议回避 |
| 0–19 | ⭐ 极差 | 直接排除 |

### 第七步：买入前 10 项清单

对每一项判断：达标 / 存疑 / 不达标

1. 能否三句话说清买入逻辑
2. 是否具备生产资料属性
3. 股息率≥3%
4. PE≤20
5. 股价不在历史高位
6. 逻辑不依赖短期财报
7. 逻辑为独立判断
8. 跌 30% 仍敢加仓
9. 没有更便宜更安全替代标的
10. 有明确持有周期

## 行为约束

1. **必须先获取数据，再打分，不许凭空估分**
2. **不许美化、不许自我说服，严格按规则执行**
3. **数据缺失要标注【数据不足】，不隐瞒**
4. **必须提示：本报告为投资参考，不构成投资建议**
5. **银行股必须强调：PB 低不等于低估，要看资产质量**

## 输出格式

```markdown
# MR Dang 选股打分报告

【标的】{股票名称}（{ts_code}）
【行业归类】{行业}
【分析日期】{日期}

---

## 一、基础筛查结果

| 筛查项 | 结果 | 说明 |
|--------|------|------|
| 题材股筛查 | 通过/淘汰 | |
| 高估值筛查 | 通过/淘汰 | |
| 产能过剩筛查 | 通过/淘汰 | |
| 增发圈钱筛查 | 通过/淘汰 | |
| 逻辑复杂度筛查 | 通过/淘汰 | |

**筛查结论**：通过 / 淘汰（原因：xxx）

---

## 二、核心数据概览

### 估值指标
| 指标 | 数值 | 说明 |
|------|------|------|
| PE(TTM) | | |
| PB | | |
| 总市值 | | |
| 流通市值 | | |

### 财务指标
| 指标 | 数值 | 说明 |
|------|------|------|
| 股息率(TTM) | | |
| 资产负债率 | | |
| ROE | | |
| 经营现金流 | | |

### 分红历史
| 指标 | 数值 | 说明 |
|------|------|------|
| 近3年分红次数 | | |
| 派息率 | | |
| 分红稳定性 | | |

### 业务概况
- **主营业务**：
- **行业地位**：
- **资源/成本优势**：

---

## 三、维度打分明细

| 维度 | 得分 | 满分 | 评分依据 |
|------|------|------|----------|
| 生产资料属性 | | 20 | |
| 股息率 | | 20 | |
| 估值 | | 15 | |
| 资源/成本优势 | | 15 | （如不适用标注 N/A）|
| 行业竞争位置 | | 10 | |
| 地域因素 | | 10 | （如不适用标注 N/A）|
| 流动性与财务安全 | | 5 | |
| 逻辑清晰度 | | 5 | |

**总分：__ / 100**
**评级：__ 星**

---

## 四、操作建议

{根据分数与股息率给出明确结论}

---

## 五、买入前清单核验

| 清单项 | 状态 | 说明 |
|--------|------|------|
| 三句话逻辑 | 达标/存疑 | |
| 生产资料属性 | 达标/存疑 | |
| 股息率≥3% | 达标/存疑 | |
| PE≤20 | 达标/存疑 | |
| 股价不在高位 | 达标/存疑 | |
| 不依赖短期财报 | 达标/存疑 | |
| 独立判断 | 达标/存疑 | |
| 跌30%敢加仓 | 达标/存疑 | |
| 无更优替代 | 达标/存疑 | |
| 明确持有周期 | 达标/存疑 | |

**达标项：X / 10**

---

## 六、综合结论

{简洁总结是否适合跟踪、买入、回避}

---

**风险提示**：本报告基于公开数据分析，不构成投资建议。投资有风险，入市需谨慎。
```

## 可用命令

### 数据获取 (scripts/data.py)

| 命令 | 说明 |
|------|------|
| `uv run scripts/data.py search <关键词>` | 搜索股票代码 |
| `uv run scripts/data.py get <ts_code> --type basic` | 股票基础信息 |
| `uv run scripts/data.py get <ts_code> --type daily [--date YYYYMMDD]` | 每日指标 (PE, PB, 市值等) |
| `uv run scripts/data.py get <ts_code> --type financial` | 财务指标摘要 |
| `uv run scripts/data.py get <ts_code> --type financial-full [--periods N]` | 完整财务指标 |
| `uv run scripts/data.py get <ts_code> --type dividend [--years N]` | 分红信息 |
| `uv run scripts/data.py get <ts_code> --type ohlcv [--days N]` | 日线行情 |
| `uv run scripts/data.py get <ts_code> --type price [--days N]` | 股价位置判断 |
| `uv run scripts/data.py get <ts_code> --type all` | 获取所有数据 |

### 网络搜索 (scripts/search.py)

| 命令 | 说明 |
|------|------|
| `uv run scripts/search.py query <查询> [--max-results N]` | Jina 搜索 |
| `uv run scripts/search.py company <公司名> [--industry 行业]` | 搜索公司全面信息 |
| `uv run scripts/search.py extract <json文件> [--max-length N]` | 提取搜索摘要 |

## 示例执行流程

**用户**：MR Dang 选股 `<股票名称>`

**助手执行**：

```bash
# 1. 搜索股票代码
uv run scripts/data.py search <股票名称>
# 获取 ts_code 和行业信息

# 2. 获取 Tushare 数据
uv run scripts/data.py get <ts_code> --type all

# 3. 搜索网络信息
uv run scripts/search.py company <公司名称> --industry <行业>

# 4. 执行评分规则（根据 SKILL 中的打分标准）
# ... 计算 scores, screening, checklist ...

# 5. 生成并输出分析报告
```

**输出**：在终端显示完整的选股打分报告

