# 问小达选ETF

> 通达信智能选ETF技能。使用tdx_screener获取数据，根据行情、跟踪指数基本面、规模、风格类型等条件筛选ETF。返回符合条件的相关ETF数据。当用户询问ETF筛选问题时，必须使用此技能。

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

---


# 问小达选ETF

---

## 目录

- [技能概述](#技能概述)
- [核心功能](#核心功能)
- [数据来源与工具](#数据来源与工具)
- [使用流程](#使用流程)
- [接口参数说明](#接口参数说明)
- [返回数据格式](#返回数据格式)
- [注意事项](#注意事项)
- [错误处理](#错误处理)
- [使用示例](#使用示例)
- [筛选指标参考](#筛选指标参考)
- [技能调用约束](#技能调用约束)

---

## 技能概述

本技能提供ETF智能筛选能力，通过自然语言查询支持多种筛选维度，帮助用户快速找到符合条件的ETF产品。

**适用场景**：
- ETF筛选（按涨跌幅、规模、跟踪指数等）
- ETF排行（涨幅前列、规模最大等）
- 多条件组合筛选
- 指数产品查找
- 风格类型筛选

---

## 核心功能

### 支持的筛选维度

| 维度 | 说明 | 示例查询 |
|------|------|------|
| **行情指标** | 按价格、涨跌幅、成交量、换手率等筛选 | 价格小于2元、涨幅超过3%、放量上涨 |
| **跟踪指数** | 按跟踪的指数筛选 | 沪深300ETF、中证500ETF、上证50ETF |
| **基本指标** | 按估值、费率、跟踪误差等筛选 | 市盈率低于15、费率低于0.5% |
| **规模指标** | 按资产规模、份额变化等筛选 | 规模大于10亿、份额增长 |
| **风格类型** | 按投资风格筛选 | 成长风格、价值风格、平衡风格 |
| **多条件组合** | 多个条件组合筛选 | 沪深300且涨幅超过3%且规模大于50亿 |
| **主题类型** | 按投资主题筛选 | 科技主题、医药主题、新能源主题 |

### 核心能力

1. **自然语言理解**：将用户的口语化查询转换为标准筛选条件
2. **多维度筛选**：支持行情、规模、风格等多维度组合
3. **实时数据**：基于通达信实时行情数据
4. **智能改写**：自动优化查询条件，提高查询成功率
5. **指数匹配**：支持指数名称模糊匹配和精确查询

---

## 数据来源与工具

### 主要数据源

- **通达信问小达 (tdx_screener)**：核心选ETF数据接口
- **通达信行情 (tdx_quotes)**：实时行情数据补充
- **通达信K线 (tdx_kline)**：趋势分析数据补充
- **资讯接口 (tdx_api_data(entry="tdxf10_gg_rdtc", fixedTag="sjcd"))**：相关资讯补充 [已切换为 F10 替代方案]

### 依赖工具清单

| 工具名称 | 用途 | 使用场景 |
|----------|------|----------|
| tdx_screener | ETF筛选查询 | 必须调用 |
| tdx_quotes | 获取实时行情 | 需要扩展数据时调用 |
| tdx_kline | 获取K线数据 | 趋势分析时调用 |
| tdx_api_data(entry="tdxf10_gg_rdtc", fixedTag="sjcd") | 获取相关资讯 | 需要资讯背景时调用 |

---

## 使用流程

### 流程图

```
用户输入 → Query改写 → 调用接口 → 数据扩展 → 格式化输出
```

### 详细步骤

#### 步骤 1：接收用户查询

接收用户的自然语言ETF筛选请求，分析用户意图和筛选条件。

**用户输入示例示例**：
- "涨幅超过3%的ETF"
- "沪深300的ETF"
- "规模大于50亿的ETF"
- "帮我选一个科技主题的ETF"
- "价格便宜且流动性好的ETF"

#### 步骤 2：Query 改写与标准化

将用户的口语化表达改写为标准的金融查询语句。

**改写规则**：
- 保留核心意图（指数、规模、风格等）
- 将口语转为标准术语
- 适当简化复杂条件
- 保持原意不变

**标准化映射表**：

| 用户输入 | 标准化 Query |
|---------|---------------|
| 帮我选一个ETF | ETF有哪些 |
| 给我推荐个ETF | ETF有哪些 |
| 涨得好的ETF | 涨幅前10的ETF |
| 涨幅最大的前3个 | 涨幅前3的ETF |
| 规模大的ETF | 规模前10的ETF |
| 沪深300的基金 | 沪深300ETF |
| 沪深300涨幅前3 | 沪深300ETF按涨幅排名前3 |

**⚠️ 关键：排序查询与条件查询的区别**

| 类型 | 表达方式 | 示例 | 含义 |
|------|----------|------|------|
| **排序查询** | `前N` | "涨幅前3"、"规模前10" | 按指标排序，取最大的N个 |
| **条件查询** | `超过/小于/大于` | "涨幅超过3%"、"规模大于50亿" | 按阈值筛选，返回符合条件的所有结果 |

**常见混淆场景**：
- ❌ "涨幅超过3%" ≠ "涨幅前3"
- ✅ "涨幅超过3%" = 返回所有涨幅>3%的ETF
- ✅ "涨幅前3" = 返回涨幅最大的3只ETF

**思维链拆解**：
- **单次查询**：如果用户问题可以直接用单个 query 回答，直接进入下一步
- **多次查询**：如果用户问题涉及多个独立的问句，需要拆分为多个标准 query 分别调用接口

#### 步骤 3：调用数据接口

使用 `tdx_screener` 工具查询ETF数据：

```bash
tdx_screener message="<标准化的Query>" rang="JJ"
```

**分页支持**：
- 默认返回第1页
- 每页最多10条记录
- 可通过 `pageNo` 和 `pageSize` 参数控制

#### 步骤 4：数据扩展决策（可选）

根据数据完整性决定是否需要补充信息：

**需要扩展背景信息的场景**：
- 用户请求了深度分析
- 查询涉及趋势分析，需要K线数据
- 查询涉及市场热点，需要资讯补充

**扩展方式**：
- 调用 `tdx_quotes` 获取实时行情数据（价格、涨跌幅、成交额等）
- 调用 `tdx_kline` 获取K线数据（趋势、形态分析）
- 调用 `tdx_api_data(entry="tdxf10_gg_rdtc", fixedTag="sjcd")` 获取相关资讯

#### 步骤 5：格式化输出

组织语言回答用户，确保结果清晰易懂。

**输出格式要求**：
- 使用表格展示ETF列表
- 说明数据来源（通达信问小达）
- 如果改写了问句，需说明最终使用的查询条件
- 如有扩展信息，提供简要分析

---

## 接口参数说明

### tdx_screener 参数

| 参数名 | 类型 | 必填 |说明 | 示例 |
|--------|------|--------|------|------|
| message | string | 是 | 自然语言查询语句 | "涨幅超过3%的ETF" |
| rang | string | 否 | 市场范围，ETF查询使用"JJ" | "JJ" |
| pageNo | string | 否 | 页码，默认"1" | "2" |
| pageSize | string | 否 | 每页条数，默认"10" | "20" |

### rang 参数可选值

| 值 | 说明 |
|-----|------|
| JJ | 基金（包括ETF，默认） |
| AG | A股 |
| ZS | 指数 |
| ZG-JJJL | 基金经理 |
| GG-GP | 港股 |

---

## 返回数据格式

### 基础表格字段

| 字段 | 说明 | 数据类型 |
|------|------|----------|
| 基金代码 | ETF的唯一标识代码 | string |
| 基金名称 | ETF的名称 | string |
| 基金价格 | 当前基金净值 | number |
| 涨跌幅 | 当日涨跌百分比 | string |
| 成交量 | 当日成交量（手） | number |
| 换手率 | 当日换手率百分比 | string |
| 市盈率 | 静态市盈率 | number |
| 规模 | 基金规模（亿元） | number |
| 份额 | 基金份额（亿份） | number |
| 跟踪指数 | 跟踪的标的指数 | string |
| 管理人 | 基金管理公司 | string |
| 费率 | 管理费率 | string |

### 输出示例

```
涨幅超过3%的ETF（数据来源于通达信问小达）：

| 排名 | 代码 | 名称 | 价格 | 涨跌幅 | 规模(亿) | 跟踪指数 | 费率 |
|------|------|------|------|--------|----------|----------|--------|
| 1 | 510300 | 沪深300ETF | 4.125 | 3.56% | 1258.5 | 沪深300 | 0.5% |
| 2 | 159915 | 创业板ETF | 2.345 | 4.23% | 756.3 | 创业板指 | 0.6% |
| 3 | 512880 | 证券ETF | 1.234 | 3.89% | 423.6 | 证券公司指 | 0.5% |

查询结果：共找到 3 只符合条件的ETF
```

---

## 注意事项

### 重要提示

1. **数据来源标注**
   - 所有引用通达信数据的地方，必须强调**数据来源于通达信问小达**
   - 避免用户对数据来源产生混淆

2. **数据有效性说明**
   - ETF数据为实时行情，可能存在延迟
   - 基金规模和份额数据可能有更新周期
   - 某些指标可能需要特定条件才能计算

3. **查询限制**
   - 单次查询最多返回一定数量的结果
   - 复杂条件可能需要分步骤查询
   - 部分ETF可能暂停申赎或退市

4. **分页说明**
   - 默认返回第一页（前10条）
   - 如需更多结果，可请求翻页
   - 建议先浏览第一页再决定是否继续

5. **性能优化**
   - 避免过于复杂的查询条件
   - 多条件组合时建议分步查询
   - 避免频繁重复相同查询

6. **ETF特性说明**
   - ETF可在交易所买卖，流动性关注成交量和换手率
   - ETF净值与交易价格可能有微小差异
   - 注意跟踪误差和费率对长期收益的影响

### 风险提示

1. **筛选结果仅供参考**
   - 筛选结果不构成投资建议
   - 仅供参考和学习使用

2. **独立判断重要性**
   - 用户需根据自身情况独立判断
   - 结合自身风险承受能力决策

3. **投资风险提示**
   - ETF投资有风险，可能损失本金
   - 历史表现不代表未来收益

4. **分散投资建议**
   - 建议合理分散，避免单一持仓
   - 控制单只ETF的持仓比例

5. **费用影响**
   - 注意管理费率对长期收益的侵蚀
   - 建议选择费率较低的ETF

6. **跟踪误差**
   - ETF可能与标的指数存在跟踪误差
   - 选择跟踪误差较小的ETF

---

## 错误处理

### 常见错误场景

| 错误类型 | 处理方式 | 用户提示 |
|----------|----------|----------|
| API 调用失败 | 记录日志，显示错误信息 | 提示用户稍后重试 |
| 无数据返回 | 检查查询条件，逐步放宽 | 提示条件可能过于严格，建议放宽条件或访问通达信客户端 |
| 基金代码错误 | 验证代码格式和有效性 | 提示检查基金代码是否正确 |
| 网络超时 | 检查网络连接状态 | 提示检查网络连接，建议重试 |
| 条件过于复杂 | 拆分为多个简单条件 | 建议分步查询 |
| 参数错误 | 验证参数完整性和格式 | 提示用户检查查询条件是否清晰 |

### 重试策略

**重试规则**：
- **最大重试次数**：2次
- **重试间隔**：1秒
- **条件放宽策略**：每次重试适当放宽筛选条件
- **降级方案**：重试失败后引导用户使用通达信客户端查询

### 用户引导与降级方案

当无法获取数据或查询失败时，提示用户：

```
抱歉，未能获取到符合条件的ETF数据。建议：
1. 检查网络连接是否正常
2. 尝试放宽筛选条件
3. 访问通达信客户端进行查询

数据来源：通达信
客户端下载：https://www.tdx.com.cn/
```

---

## 使用示例

### 示例 1：涨跌幅筛选

**用户输入**：
```
涨幅超过3%的ETF
```

**处理流程**：
1. 接收查询："涨幅超过3%的ETF"
2. Query 改写：无需改写（已是标准表达）
3. 调用接口：`tdx_screener message="涨幅超过3%的ETF" rang="JJ"`
4. 格式化输出：展示ETF列表和涨幅排序

**预期输出**：
```
涨幅超过3%的ETF（数据来源于通达信问小达）：

| 排名 | 代码 | 名称 | 价格 | 涨跌幅 | 规模(亿) | 跟踪指数 |
|------|------|------|------|--------|----------|----------|
| 1 | 510300 | 沪深300ETF | 4.125 | 3.56% | 1258.5 | 沪深300 |
| 2 | 159915 | 创业板ETF | 2.345 | 4.23% | 756.3 | 创业板指 |
...
```

### 示例 2：指数筛选

**用户输入**：
```
沪深300的ETF
```

**处理流程**：
1. 接收查询："沪深300的ETF"
2. Query 改写：无需改写
3. 调用接口：`tdx_screener message="沪深300的ETF" rang="JJ"`
4. 格式化输出：展示跟踪沪深300的ETF列表

### 示例 3：规模筛选

**用户输入**：
```
规模大于50亿的ETF
```

**处理流程**：
1. 接收查询："规模大于50亿的ETF"
2. Query 改写：无需改写
3. 调用接口：`tdx_screener message="规模大于50亿的ETF" rang="JJ"`
4. 格式化输出：展示大规模ETF

### ⚠️ 重要：排序查询与条件查询的区别

**排序查询**：
- `涨幅前3` = 涨幅**排名前3**的ETF（按涨幅排序，取最大的3个）
- `规模前10` = 规模**排名前10**的ETF
- `换手率前5` = 换手率**排名前5**的ETF

**条件查询**：
- `涨幅超过3%` = 涨幅数值**超过3%**的所有ETF
- `规模大于50亿` = 规模数值**大于50亿**的ETF
- `换手率超过2%` = 换手率数值**超过2%**的ETF

**示例对比**：
| 用户输入 | 含义 | 返回结果数量 |
|---------|------|------------|
| "涨幅前3的ETF" | 涨幅最大的前3名 | 3只 |
| "涨幅超过3%的ETF" | 涨幅大于3%的所有ETF | 可能很多只 |

**提示**：
- 排序查询用"前N"，条件查询用"超过/小于/大于"
- 混淆会导致查询结果不符合预期

### 示例 4：多条件组合筛选

**用户输入**：
```
规模大于50亿且涨幅超过3%的沪深300ETF
```

**处理流程**：
1. 接收查询："规模大于50亿且涨幅超过3%的沪深300ETF"
2. Query 改写：无需改写
3. 调用接口：`tdx_screener message="规模大于50亿且涨幅超过3%的沪深300ETF" rang="JJ"`
4. 格式化输出：展示综合筛选结果

### 示例 5：主题筛选

**用户输入**：
```
科技主题的ETF
```

**处理流程**：
1. 接收查询："科技主题的ETF"
2. Query 改写：无需改写
3. 调用接口：`tdx_screener message="科技主题的ETF" rang="JJ"`
4. 格式化输出：展示科技主题ETF

### 示例 6：口语化查询改写

**用户输入**：
```
帮我选一个涨得好的科技ETF，规模不要太小
```

**处理流程**：
1. 接收查询："帮我选一个涨得好的科技ETF，规模不要太小"
2. Query 改写："涨幅超过3%且规模大于10亿的科技主题ETF"
3. 调用接口：`tdx_screener message="涨幅超过3%且规模大于10亿的科技主题ETF" rang="JJ"`
4. 格式化输出：展示筛选结果，并说明使用的查询条件

### 示例 7：费率筛选

**用户输入**：
```
费率低于0.5%的ETF
```

**处理流程**：
1. 接收查询："费率低于0.5%的ETF"
2. Query 改写：无需改写
3. 调用接口：`tdx_screener message="费率低于0.5%的ETF" rang="JJ"`
4. 格式化输出：展示低费率ETF

---

## 筛选指标参考

### 行情指标

| 指标 | 说明 | 常见用法 |
|------|------|----------|
| 基金价格 | 当前基金净值/交易价格 | 价格小于2元、价格在3-5元之间 |
| 涨跌幅 | 当日涨跌百分比 | 涨幅超过3%、跌幅小于2% |
| 成交量 | 当日成交量 | 成交量大、成交活跃 |
| 换手率 | 成交量/总份额 | 换手率超过3%、换手率低于1% |
| 成交额 | 当日成交金额 | 成交额超过1亿 |

### 基本面指标

| 指标 | 说明 | 常见用法 |
|------|------|----------|
| 规模 | 基金资产规模 | 规模大于50亿、规模小于10亿 |
| 份额 | 基金总份额 | 份额增长、份额减少 |
| 费率 | 管理费率 | 费率低于0.5%、费率在0.3-0.8%之间 |
| 跟踪误差 | 与标的指数的偏离度 | 跟踪误差小于0.1% |
| 成立时间 | 基金成立时间 | 成立时间超过3年 |

### 跟踪指数

| 指数类型 | 说明 | 常见用法 |
|----------|------|----------|
| 宽基指数 | 覆盖市场整体 | 沪深300、中证500、上证50 |
| 行业指数 | 覆盖特定行业 | 科技指数、医药指数、金融指数 |
| 主题指数 | 覆盖特定主题 | 新能源指数、消费指数、AI指数 |
| 策略指数 | 特定策略指数 | 低波指数、红利指数 |

### 风格类型

| 风格 | 说明 | 常见用法 |
|------|------|----------|
| 成长风格 | 侧重成长性投资 | 成长风格ETF |
| 价值风格 | 侧重价值投资 | 价值风格ETF |
| 平衡风格 | 成长与价值平衡 | 平衡风格ETF |
| 低波风格 | 侧重低波动性 | 低波动ETF |

### 主题类型

| 主题 | 说明 | 常见用法 |
|------|------|----------|
| 科技主题 | 科技领域投资 | 科技主题ETF |
| 医药主题 | 医药领域投资 | 医药主题ETF |
| 新能源 | 新能源领域投资 | 新能源主题ETF |
| 消费主题 | 消费领域投资 | 消费主题ETF |
| 金融主题 | 金融领域投资 | 金融主题ETF |

---

## 技能调用约束

### 必须使用本技能的场景

当用户询问以下类型问题时，**必须**使用此技能：

- **ETF筛选相关**
  - "涨幅超过3%的ETF"
  - "规模大于50亿的ETF"
  - "帮我选个ETF"
  - "ETF有哪些"

- **指数产品查找**
  - "沪深300ETF"
  - "中证500ETF"
  - "上证50ETF"

- **ETF排行相关**
  - "ETF涨幅排行"
  - "规模最大的ETF"

- **ETF类型筛选**
  - "科技主题ETF"
  - "医药ETF"
  - "债券ETF"

- **多条件组合筛选**
  - "规模大且涨幅好的ETF"
  - "费率低且流动性好的ETF"

### 不适用场景

以下场景应使用其他相应技能：

| 用户问题 | 正确技能 |
|---------|----------|
| 股票筛选 | 【问小达选A股】 |
| 基金筛选 | 【问小达选基金】 |
| 基金经理筛选 | 【问小达选基金经理】 |
| 港股ETF | 【问小达选港股】 |

---

## 附录

### 相关技能

- 【问小达选A股】：A股股票筛选
- 【问小达选基金】：基金筛选和基金比较
- 【问小达选板块】：板块筛选和行业对比
- 【问小达选基金经理】：基金经理筛选
- 【问小达选港股】：港股筛选

### 常用查询模板

| 需求 | 推荐查询语句 |
|------|-------------|
| 寻找宽基ETF | 沪深300ETF或中证500ETF |
| 寻找热门ETF | 涨幅超过3%且换手率超过2%的ETF |
| 寻找低成本ETF | 费率低于0.5%且规模大于50亿的ETF |
| 寻找高流动性ETF | 换手率超过3%且成交额超过1亿的ETF |
| 寻找主题ETF | 科技主题ETF或新能源主题ETF |

### ETF投资要点

1. **费用敏感性**：长期投资应关注费率，低费率ETF更优
2. **跟踪误差**：选择跟踪误差小的ETF，确保复制指数表现
3. **流动性**：关注成交量和换手率，确保买卖便利
4. **规模效应**：大规模ETF通常流动性更好，跟踪误差更小
5. **持仓透明**：ETF每日公布持仓，便于了解投资组合

---

*最后更新：2026年4月22日*
*版本：2.0*

