朝阳永续-A股多维筛选
下载地址
https://www.zhengdianxue.com/wp-content/uploads/skills/org-w1ar0msk--suntime-a-shares-screen.zip将提示词发送给你的 AI 安装该 skills
请根据 https://skillhub.cn/install/skillhub.md,安装 @org-w1ar0msk/suntime-a-shares-screen。- 本技能用于A股全维度选股,支持用户以自然语言描述涵盖基本面、技术面、资金面、公告事件及主题概念的多因子条件,进行批量筛选。首次使用前需访问朝阳永续-AI开放平台 (https://open.go-goal.com/) 注册并登录账户,获取API Key,并在首次调用时输入"
- 请调用 朝阳永续A股多维度条件筛选 skill,查询「ROE大于20%且PE小于15的白酒股」,我的 API Key 是:XXXX"
- 完成配置。
阅读全文 (展开查看完整说明)
概述
suntime-a-shares-screen- A股多维度条件筛选Skill
1. 配置与调用
1.1 检查 API Key 与错误引导
需配置环境变量 SUNTIME_API_KEY(朝阳永续 API Key,去 https://open.go-goal.com?channel=qw 首页点「获取 API KEY」领取)。
调用返回以下错误时,改参数无法解决,需自动为用户打开浏览器引导处理(无图形界面的云端环境改为直接把链接给用户)。按返回 JSON 的 message 关键词匹配:
| API 返回 message | 含义 | 自动执行 |
|---|---|---|
账户积分余额不足 | Key 有效但积分耗尽 | 打开 https://open.go-goal.com?channel=qw 引导充值购买积分,到账后直接重试原命令(无需改任何配置) |
API KEY不能为空 / API KEY无效 | Key 未配置或已失效 | 打开 https://open.go-goal.com?channel=qw 首页点「获取 API KEY」申领,配置环境变量 SUNTIME_API_KEY 后重试 |
打开浏览器命令:macOS open <url>;Windows start <url>;Linux xdg-open <url>。
1.2 接口调用
curl -s "https://sntp-opendata-qw.go-goal.cn/s/100006/a/search_stock?query=ROE大于20%且PE小于15的股票"
-H "Authorization: Bearer ${SUNTIME_API_KEY}"参数说明:
query= 用户的原始问题(不要改写,执行时自动 URL 编码)Authorization=Bearer $SUNTIME_API_KEY- 超时时间 = 50秒
⚠️ 安全:API Key 仅通过请求头
Authorization传递,不暴露到前端。
1.3 可用字段
构造查询时只使用这些字段名,不要自己编。
| 数据类型 | 关键字段 |
|---|---|
| 基础数据 | 所属行业、经营范围、所属市场 |
| 累计财务指标 | 累计营收、累计净利润、同比负债率、经营现金流、毛利率 |
| 单季度财务指标 | 当季营收、当季净利润、ROE、当季毛利率、周转率 |
| 个股年度业绩预测 | 预测营收、预测净利润、预测EPS、预测股息率、预测市盈率 |
| 个股季度业绩预测 | 预测机构、财报周期、预测单季度营收/净利润上下限和中值及增长率 |
| 行业/指数一致预期 | 行业代码/名称、行业预期净利润、行业预期增速 |
| 财报期业绩跟踪 | 业绩预告、快报、财报日期、业绩鉴定(超预期/低于预期) |
| 日行情 | 收盘价、涨跌幅、换手率、最高最低价、总市值 |
| 估值 | PE、PB、一致预期PE/PB及相对位置 |
| 标签 | 行业地位、业绩预判、业绩鉴定、风险等级、A股评分、公司荣誉、公募持仓、风格周期性 |
| 融资融券 | 融资余额、融券余额、融资净买入 |
| 北向资金 | 沪深股通持股变化、陆股通持仓 |
| 主力资金 | 主力净额变化、大单/超大单/小单净额 |
| 大宗交易 | 溢价率、折价率、成交量、成交笔数 |
| 分红明细 | 股息率、派息率、每股分红 |
| 回购计划跟踪 | 回购数量/金额/均价/进度 |
| 增减持明细 | 大股东和高管增减持数量/比例/均价 |
| 主营业务明细 | 各业务板块收入占比 |
| 客户供应商 | 前五大客户/供应商占比 |
| 十大股东 | 股东名称/性质/持股数量/持股比例 |
| 高管列表 | 姓名/职务/薪酬/持股数 |
| 员工情况 | 员工总数/构成/薪酬总额 |
| 公告列表 | 公告标题/发布日期/标签分类 |
| 管理层信心洞察 | 未来展望信心评分/经营情况/核心竞争力评价 |
| 研报统计 | 机构评级/研报数量/首次关注/新财富上榜 |
| 申万行业代码 | 一级/二级/三级行业代码和名称 |
1.3a 字段查询措辞指南(重要)
NL2SQL 接口会根据 query 中的措辞决定字段映射到哪个后端数据源。措辞不同,即使含义相同,也可能返回不同口径的数据。为确保结果一致,需先按前缀判定数据口径,再写出最终query措辞。
数据来源判定规则(通用,适用于所有财务指标)
用户在描述财务指标时,根据前缀确定指向哪个数据口径:
| 用户说的前缀 | 含义 | query措辞公式 |
|---|---|---|
| 无前缀 / 说"最新"("ROE>20%"、"营收>100亿") | 累计值 — 最近完整财报期的年度累计数据 | Y0_1年财报{真实字段名} 条件 |
| 说"当季"("当季营收>30亿") | 单季值 — 最近完整财报期的单季度数据 | 当季{真实字段名} 条件 |
| 说"预测"/"预期"("预测净利润增长>20%") | 一致预期 — 卖方分析师对未来的预测值 | Y0年一致预期{真实字段名} 条件 |
| 说"历史"("历史股息率>3%") | 历史已披露值 — 最近一期已披露的实际数据 | 最近年度{真实字段名} 条件或对应历史口径 |
⚠️ 非财务类字段(换手率、市值、概念、行业、资金流向等)不适用以上规则,按各自口径直传。
映射表
以下表格列出各字段口语词对应的API真实字段名。使用时将下方真实字段名代入上方规则公式,拼出最终query:
① 营收类
| 用户说 | 口径 | API真实字段名 |
|---|---|---|
| 营收>100亿 | 累计值 | Y0_1年财报营业总收入(亿元) |
| 当季营收>30亿 | 单季值 | 当季营业总收入(亿元) |
| 营收增长>30% | 同比增长率 | Y0_1年财报营业总收入同比(%) |
| 预测营收增长>20% | 一致预期 | Y0年一致预期营收同比(%) |
② 净利润类
| 用户说 | 口径 | API真实字段名 |
|---|---|---|
| 净利润>10亿 | 累计值 | Y0_1年财报净利润(亿元) |
| 当季净利润>5亿 | 单季值 | 当季净利润(亿元) |
| 净利润增长>20% | 同比增长率 | Y0_1年财报净利润同比(%) |
| 预测净利润增长>20% | 一致预期 | Y0年一致预期净利润同比(%) |
③ ROE类
| 用户说 | 口径 | API真实字段名 |
|---|---|---|
| ROE>20% | 累计值 | Y0_1年财报ROE(%) |
| 预测ROE>15% | 一致预期 | Y0年一致预期ROE(%) |
④ PE / PB / 估值类
| 用户说 | 口径 | API真实字段名 |
|---|---|---|
| PE<15 | TTM | 市盈率TTM(倍) |
| 预测PE<15 | 一致预期 | Y0年一致预期PE(倍) |
| PB<1 | — | 市净率PB(倍) |
| 估值处于低位 | TTM百分位 | 十年市盈率TTM相对位置(%) |
⑤ 毛利率类
| 用户说 | 口径 | API真实字段名 |
|---|---|---|
| 毛利率>50% | 累计值 | 销售毛利率(%) |
| 当季毛利率>50% | 单季值 | 当季毛利率(%) |
⑥ 预测 / 一致预期类
| 用户说 | API真实字段名 |
|---|---|
| 预测EPS>1元 | 滚动一致预期EPS(元) |
| 股息率>3%(默认=一致预期;历史前缀=最近年度实际值) | Y0年一致预期股息率(%) / 股息率(%) |
⑦ 超预期 / 业绩鉴定类
| 用户说 | 最终query措辞 |
|---|---|
| 未来业绩可能超预期(前瞻) | 业绩预判未来标签为可能超预期或很可能超预期 |
| 最新财报业绩超预期(事后确认) | 最新财报超预期且财报二次鉴定结果为超预期 + 动态追加当前最新财报期(见 §3.1 步骤1a) |
核心原则:
数据来源选型:
- 历史已披露财务数据 →
Y0_1年财报/Y0_2年财报+ 指标名(ROE默认累计口径) - 卖方一致预期 →
Y0年一致预期/Y1年一致预期/滚动一致预期+ 指标名 - 行情量价 →
收盘价/涨跌幅/市盈率TTM/换手率 - 标签类 →
业绩预判未来/行业地位/公司荣誉/A股评分
业绩超预期场景判定(按优先级):
- 说"未来可能/很可能超预期" → 前瞻:
业绩预判未来(用"或"合并) - 说"最新财报超预期" → 事后确认:
最新财报超预期且财报二次鉴定结果为超预期+ 财报期 - 只说"业绩超预期"(无前缀)→ 默认走事后确认路径
- 预告阶段 →
预告鉴定(优先二次) - ⚠️ 可用字段中
业绩鉴定是独立口径(单次鉴定标签),需明确写成"业绩鉴定结果为超预期"
时间坐标系:措辞指南中 Y0_1年财报 是相对年份标识,与下方锁定的绝对财报期(财报期为2025年年报)是两套坐标系。同时使用时,以绝对财报期为准。
最新统一财报期(仅适用于历史已披露财务数据):筛选历史已披露财务数据时,需要统一口径,所有股票比较同一个财报期的数据才有意义。根据当前日期确定最新完整财报期并追加到query末尾。
| 当前月份 | 最新统一财报期 | query追加文本 |
|---|---|---|
| 1~4月 | 上年年报 | 且财报期为{上年}年年报 |
| 5~8月 | 当年一季报 | 且财报期为{当年}年一季报 |
| 9~10月 | 当年中报 | 且财报期为{当年}年中报 |
| 11~12月 | 当年三季报 | 且财报期为{当年}年三季报 |
示例:当前6月 → 追加
且财报期为2026年一季报。
⚠️ 适用范围限制:
判断标准是:映射后的字段名中是否已含有相对时间坐标前缀,而非属于哪类数据。
- ✅ 需要追加:映射表中的字段名不含
Y0_1年财报/Y0_2年财报/当季等相对时间坐标前缀的。例如销售毛利率(%)(毛利率类映射不含时间坐标,需追加财报期明确口径)。 - ❌ 不需要追加:
- 映射表中字段名已含相对时间坐标前缀(
Y0_1年财报/Y0_2年财报/当季)—— 这些前缀本身已指向"最近完整财报期",追加绝对财报期会覆盖其语义,导致下个季度时 query 仍被锁定在上一期。- 例如:
Y0_1年财报ROE(%)→Y0_1年财报自动指向最近一期,不加统一财报期。 - 例如:
当季营业总收入(亿元)→当季本身就是最近单季度,不加。
- 例如:
- 一致预期/预测类(
Y0年一致预期/Y1年一致预期/滚动一致预期口径)—— 本身就是明确年度的预测值 - 行情量价类(总市值、换手率、PE/PB、涨跌幅等)—— 实时数据,无财报期概念
- 标签类(行业地位、业绩预判、A股评分等)—— 无财报期概念
- 映射表中字段名已含相对时间坐标前缀(
快速判定口诀: 映射表字段名前已经带有 Y0_1年财报 / Y0_2年财报 / 当季 → 不加统一财报期;裸字段名如 销售毛利率(%) → 需要加。
2. 问题分类
| 用户输入特征 | 类型 | 处理路径 |
|---|---|---|
| "在第X次结果中"、"在刚才的结果里"、"在XX的结果中" | 引用历史 | 走历史记录(见 §3.2) |
| 其他全部(全新/追加/清空) | 筛选 | 走筛选流程(见 §3) |
不确定时一律走筛选。
3. 筛选流程
3.1 全新查询 / 清空重来
- 拼装query:用户原始提问 → 按 §1.3a 规则替换歧义字段 → 检查替换后的 query 是否已含
Y0_1年财报/Y0_2年财报/当季等相对时间坐标前缀(有则跳过统一财报期);如果字段名是裸字段(不含相对时间坐标)且属于历史已披露财务数据,按最新统一财报期规则追加财报期 - 调API → 回JSON
- 验证结果(标签/鉴定类必做):取首条检查关键字段值是否匹配查询意图。不匹配则自动重试(最多3次),超限提示"结果不稳定"
- 存入记录栈,标记为当前活跃结果
- 按输出格式(§5)返回
3.2 引用历史
- 定位历史记录:
- "刚才的" = 记录栈最近一条(注意和活跃结果区分)
- "第X次" = 按序号。序号以记录栈存入顺序的全局序号为准(从1递增),清空重来不重置序号
- "在XX中" = 按关键词匹配。匹配到多条时,取最近一条(timestamp最新);匹配不到时跳到步骤2
- 找不到或引用序号已被淘汰 → 列出当前记录栈中所有历史记录的序号+query概览,供用户重新选择
- 取出该历史记录的
records+fields,走追加筛选逻辑(§3.3)
3.3 追加/叠加筛选
从记录栈获取当前活跃结果的 records(完整JSON数据集)和 fields(可用字段列表),然后:
解析用户新条件 → 涉及字段在 fields 中?
├─ ✅ 是 → 本地过滤(§3.3.1)
└─ ❌ 否 → 优先:独立查询+本地求交集(§3.3.2)
→ 截断致交集为0?→ 兜底:代码列表补数据(§3.3.3)操作完成后存入记录栈,覆盖当前活跃结果,按输出格式(§5)返回。
3.3.1 字段存在 → 本地过滤(不调API)
- 遍历
records,逐条判断是否满足新条件 - 符合条件的保留,不符合的丢弃
3.3.2 字段不存在 → 优先:独立查询+本地求交集
- 独立查询:用新条件做一次全市场查询(同样执行 §3.1 的query拼装规则)
- 求交集:按
证券代码取两批 records 的交集 - 截断校验:见 §4
- 合并字段:交集结果合并两查询的全部 fields
3.3.3 字段不存在 → 兜底:代码列表补数据
当独立查询被截断且交集为0时使用。用活跃结果中的证券代码锁定股票池,避免扩大范围。
query=股票代码为[代码列表]并且[新条件]- 代码 > 50只时分批并行 curl + wait
- 每批独立截断校验(count > data.length →
batch_truncated: true),任一批准截断则最终结果标注truncated: true
- API返回结果通过证券代码匹配到原records,合并字段
4. 边界情况处理
API 截断判定
API 可能返回 count > data.length(如 count=296 但只返回100条):
| 场景 | 判断 | 处理 |
|---|---|---|
| 独立查询 + 本地求交集(§3.3.2) | count > data.length 且 交集=0 | 不可信,标注"受API截断影响,交集可能不全",回退兜底(§3.3.3) |
| 独立查询 + 本地求交集 | count == data.length 且 交集=0 | 可信,说明无重叠 |
| 独立查询 + 本地求交集 | count > data.length 但 交集≠0 | 标注"仅展示部分匹配结果(API截断),实际数量可能更多";输出时在表格后追加提示"⚠️ 实际符合条件的股票可能多于展示数量,建议增加筛选条件缩小范围" |
| 代码列表补数据(§3.3.3) | count > data.length | 标注"受API限制仅展示前N条数据";后续叠加仅基于已返回数据 |
5. 记录栈 + 输出格式
5.1 记录栈存储
每次调API或本地过滤后,存入记录栈。栈容量最多10条,超出淘汰最早的。当前活跃结果 = 最近一条。清空重来只重置活跃结果,不删历史。
淘汰后引用处理: 用户引用被淘汰的历史序号时,提示"该历史记录(第X次)已被淘汰,当前记录栈中最早的记录是第Y次",并列出当前记录栈的全部历史供重新选择。
记录格式:
{
"timestamp": "2026-06-03T13:00:00+08:00",
"query": "用户的原始查询",
"count": 100,
"api_count": 365,
"records": [
{"证券代码":"000333.SZ", "证券名称":"美的集团", ...}
],
"fields": ["证券代码", "证券名称", "申万一级行业", ...],
"truncated": true,
"source": "api" | "local_filter" | "independent_query" | "code_list_filter" | "independent_intersection"
}source 说明:
api— 全新查询/清空重来local_filter— 本地过滤后independent_query— 独立查询结果code_list_filter— 代码列表补数据independent_intersection— 独立查询+本地求交集后:count为交集数,records为交集数据(合并两查询全部字段),fields为两查询fields的去重并集
本地过滤后:query/fields不变,count更新为过滤后数量,records更新。独立查询+本地求交集后:同上,source标记为 independent_intersection。
5.2 输出格式
显示多少条
| 结果数量 | 做法 |
|---|---|
| ≤30 | 全部展示 |
| 31~50 | 展示前30个 |
| >50 | 展示前30个,强烈建议加条件缩小范围 |
每条内容
股票代码 + 名称 + 行业 + 本次核心指标值 + 入选理由。按表格形式输出。
数据验证(必做)
在输出任何基于API返回数据的表格前,必须先打印一条样本记录确认实际字段和数据存在,再组织展示。不得凭猜测或"想当然"填补数据占位。如果数据缺失,应让代码显式报错或输出提示。
开头话术
| 场景 | 话术 |
|---|---|
| 全新筛选 | 共找到 [N] 只符合条件的股票 |
| 追加条件 | 在原条件基础上,增加新条件,共找到 [N] 只 |
| 引用历史 | 在历史条件的 [N] 只中,筛出新条件,找到 [M] 只 |
| 清空重来 | 已重置,共找到 [N] 只符合条件的股票 |
| 数量超过50 | 前30个如下,强烈建议增加筛选条件以缩小范围 |
尾部引导
当前筛选条件:【具体条件】
操作建议:
1. 输入"刷新":重新执行当前条件
2. 输入"清空":重置所有条件重新筛选
3. 输入"再加【条件】":在当前结果基础上添加新条件
4. 输入"在第X次结果中筛XX":跳回历史筛选
⚠️ 风险提示:以上内容由AI辅助生成,仅供参考,不形成任何投资决策和投资建议。6. 铁律
- 不编造字段名 — 只用 §1.3 可用字段里列出来的
- 替换歧义措辞为精确字段名 — 对易路由错误的字段(ROE/PE/营收/净利润/超预期等),按 §1.3a「映射表 + 前缀规则」拼出精确query措辞
- 正确:用户说"ROE>20%" → query中用"Y0_1年财报ROE大于20%"
- 正确:用户说"营收增长>30%" → query中用"Y0_1年财报营业总收入同比大于30%"
- 不改:用户说"银行股" / "市值>500亿" → 保持原样(无歧义)
- ⚠️ 替换后检查:如果替换后的 query 中已含
Y0_1年财报/Y0_2年财报/当季等相对时间坐标前缀,不要再追加统一财报期(见 §1.3a 适用范围限制)
- 不确定就走筛选 — §2 判断拿不准时直接走筛选流程
- 每次存结果 — 调API或本地过滤后必存到记录栈
- 保存完整数据集 — records + fields 必须完整保存
- 代码列表锁定股票池 — 补数据时必须用股票代码拦住范围,绝不能扩大
- 并行批次 — 代码列表 >50 只时分多批并行 curl + wait
- 必须验证 API Key — 调用前检查
$SUNTIME_API_KEY是否有效 - 输出前验证数据完整性 — 见 §5.2 数据验证
- NL2SQL 非确定性路由处理 — 同一 query 多次调用可能返回不同 count,属 API 正常现象。返回结果以
data中的实际记录为准,count仅作参考。涉及标签/鉴定类字段的查询(如业绩超预期、业绩预判未来),必须验证返回记录的首条关键字段值是否与查询条件一致(见 §3.1 步骤3),不一致则提示用户重试。