万象-金融数据查询与投研
📌 能力边界与类目归属(发布说明)
| 项 | 说明 |
|---|---|
| 输入 | 用户主动提出的查询请求(代码、名称、指标、事件日期) |
| 输出 | 客观数据、结构化摘要、可核验报告与图表;每个数字标注来源与数据日期 |
| 不做 | ❌ 不荐股、不给目标价 ❌ 不代客决策 ❌ 不接代客下单 ❌ 不提供付费投顾服务 ❌ 不做「必涨/稳赚」类表述 ❌ 不接机构授权数据源(Wind/标普全球) |
| 最终决策 | 始终由用户本人作出;本技能只提供数据、推导过程与纪律提示 |
| 类目归属 | 属金融数据查询与结构化整理工具(取数、读财报、算基金与指数、生成数据看板与报告)⇒ 归入「工具 > 信息查询」 |
> 平台审核提示的「金融业 > 证券/期货投资咨询」类目需企业开发者资质,个人开发者账号无法选到该类目;
> 且该类目对应的是投资顾问业务,而本技能明确不做投资建议与代客决策。
> 本技能按个人开发者账号提交,实际能力以上表为准,特此如实说明。
铁律(最高优先级,任何篇都不得违反)
- 先读路由。任何取数动作前,先按本文件「A1 数据源优先级与分流」判定该用哪个源。禁止凭印象选源。
- 禁止跨源混口径。同一份交付物内,同一指标只能来自同一个源。混源会产生口径不一致,这是最隐蔽也最致命的错误。
- 禁止编数。任何数字必须有来源。取不到就明确写「未取到」,严禁用训练数据、记忆或估算补数。
- 场外/场内必须先分流。6 位纯数字代码存在场外基金与 A 股股票同号冲突(实例:
002611既是场外基金"博时黄金ETF联接C",也是深市股票"东方精工")。判定方法见 A1,判错会导致整份报告结论错误。 - 每个数字标注数据日期。金融数据强时效,不标日期等于不可核验。
- 红涨绿跌。所有涨跌配色、箭头、符号一律遵循中国习惯:上涨=红色,下跌=绿色。禁止用欧美惯例。
- 不荐股、不代客决策。只给客观数据、推导过程与纪律提示。最终判断与下单动作始终由用户本人作出。禁止出现「建议买入/卖出」「目标价 XX」「必涨」这类表述。
- 区分事实与推断。交付物中必须把「数据事实」和「基于事实的推断」分开标注,不得混写成一段。
总路由:先判任务类型
| 任务形态 | 读哪篇 | 典型信号 |
|---|---|---|
| 判断该用哪个数据源(含场外/场内分流) | A1 路由 | 一切取数动作的第一步 |
| 自然语言综合查询("腾讯最新财报怎么样") | A2 NeoData | 一句话要行情+财报+研报+舆情 |
| 结构化行情/批量对比(K线/财务/资金流/板块/宏观) | A3 WeStock | 给代码查数据、多股对比 |
| 分析师一致预期/批量选股/ETF/可转债细查 | A4 朝阳永续 | 350+ 指标复合筛选 |
| 日常跟踪/复盘/研报/PPT/图表(9 模块工作流) | B 投研工作台 | "看看我的持仓""复盘这个月" |
| 未来事件时间点(发布日/决议日/财报日) | C 财经日历 | "非农几号""本周有什么事件" |
| 基金诊断/组合规划/家庭财务 | D 盈米投顾 | "这只基金怎么样""怎么配置" |
A 篇 · 数据源路由与三大取数通道
A1 数据源优先级与分流
场外/场内分流(6 位代码撞车判据,判错整份报告作废)
- 先按全称分流:用户说得出基金全称(含"ETF 联接""C 类"等字样)→ 场外基金,走 NeoData/盈米基金通道;只说 6 位代码 → 必须先问清或按上下文确认是基金还是股票。
- 场内品种(ETF、封闭基金、lof)走 WeStock(
search --type etf)或朝阳永续 etf 通道。 - A股/港股/美股股票按市场与所需维度走 WeStock(结构化批量)或 NeoData(自然语言综合)。
- 一致预期/盈利预测/批量选股走朝阳永续(其 T1 工具独有优势)。
三源优先级总则(来源:各源服务条款,冲突时按以下顺序)
- NeoData 检索服务(腾讯):覆盖股票(A股/港股/美股/英股/日股/韩股)、指数、板块、公募基金(含港股/海外基金/REITs)、债券、期货、期权、宏观经济、外汇、大宗商品十大类,外加研报/舆情/新闻/交易日历,共 130+ 数据工具。凡其能力范围内的查询一律优先通过它获取;禁止用训练数据回答本可实时查询的问题。
- WeStock(腾讯自选股):结构化行情/财务/资金流/技术指标/板块/宏观的权威 CLI 入口。命中能力域时禁止 web_search、HTTP 直连或其它通道替代;宏观数据必须用其
macro indicator。 - 朝阳永续:分析师一致预期、批量选股(350+ 指标)、可转债/ETF 细查的独有通道。
- 仅当明确不支持某查询时才降级其他来源,并需告知用户数据来源。
- 禁止混源:单份交付物同一指标只认一个源(铁律 2)。
跨源协作建议
- 单股深度研究 = 朝阳永续 stock(数据)+ NeoData(公告研报);可转债深度研究 = 朝阳永续 bond(估值条款)+ WeStock(正股行情)。
- 持仓台账类计算(模块 1/2)用本地
scripts/holdings.py,行情 NAV 由上述通道取数后录入。
A2 NeoData 检索服务(自然语言全品类)
一句话概述:用自然语言查询股票行情、财务报表/财报、基金、指数、板块、债券、期货、期权、宏观经济、外汇、大宗商品、研报舆情等全品类金融数据,即问即答。NeoData Financial Search 由腾讯提供,输入一句自然语言问题即可一站式返回结构化数据 + 文档型内容,覆盖 130+ 数据工具、多市场(A股/港股/美股/英股/日股/韩股/全球)与实时/历史两种时效;像跟分析师同事聊天一样提问,无需记接口、无需写代码——"腾讯最新财报怎么样?""光芯片板块今天资金流向如何?""这只可转债的转股溢价率是多少?"
典型使用场景(节选)
| 场景 | 示例提问 |
|---|---|
| 个股盯盘 | 贵州茅台(600519.SH)现在的最新股价是多少?苹果(AAPL)美股盘中最新价和涨跌幅? |
| 公司基本面研究 | 招商银行2024年的归母净利润是多少?腾讯控股最近一期资产负债表数据? |
| 财报全文检索 | 宁德时代最新财报里关于海外产能的表述?比亚迪年报中研发投入相关段落? |
| 资金流向分析 | 格力电器今日主力资金净流入?宁德时代2021年至今的累计主力资金净流入? |
| 股票事件追踪 | 贵州茅台近期的分红送配方案?腾讯控股近一年的港股回购明细? |
| 板块行情/热点 | 今日人工智能板块为什么涨?驱动原因?白酒板块的龙头股有哪些? |
| 指数与大盘 | 上证指数当前的PE估值百分位?沪深300最新成分股权重前十? |
| 基金研究/筛选 | 招商中证白酒指数A 2024年Q4业绩?近1年股票型基金收益排名前10? |
| 港股/海外基金 | 某香港互认基金的费率和近一年业绩?某美股ETF的每日净值? |
| 机构观点/投研 | 贵州茅台近期券商评级、目标价和盈利预测?光伏行业最新研报的供需格局? |
| 舆情/社媒 | 市场对英伟达最新财报的社媒讨论热点?近期关于AI算力的KOL观点? |
| 债券/期货/期权 | 某可转债的转股溢价率和双低指标?10年期国债收益率曲线?螺纹钢主力合约历史行情?50ETF期权某合约希腊字母? |
| 宏观/外汇/贵金属 | 最新一期中国制造业PMI?美国GDP长周期数据?今日美元兑人民币中间价?今日伦敦金价格走势? |
| 市场日历/专项 | A股今日是否交易日?凯美特气近5日两融数据?福莱特玻璃最近5日港股卖空比例? |
完整的数据服务目录与出入参字段说明见 finance-data 插件内 neodata-financial-search 子技能的 reference.md。
鉴权与调用
凭证由脚本自动管理(本地缓存,12 小时有效期),绝大多数情况下直接执行查询即可。不要向用户展示或提及凭证的具体内容,静默处理。
第一步永远是直接执行查询,不要提前获取凭证:
python3 <finance-data 插件>/skills/neodata-financial-search/scripts/query.py --query "用户的查询"
脚本自动判断:缓存存在且未过期 → 直接返回;否则输出 TOKEN_EXPIRED / TOKEN_MISSING。
只有当脚本输出 TOKEN_EXPIRED / TOKEN_MISSING,或查询返回鉴权错误(HTTP 401/403 = 凭证过期或无效;code=40101 = 凭证验证失败;msg 提及 token/认证/鉴权 = 鉴权类错误)时,才执行获取凭证流程:
- 调用
connect_cloud_service工具(无参数) - 提取凭证:优先
tempToken字段;不存在或为空则用token字段 - 执行
python3 <finance-data 插件>/skills/neodata-financial-search/scripts/query.py --save-token "<凭证>"保存到缓存 - 重新执行查询
> 凭证可能较长,禁止在 Bash 命令中明文内联。 必须通过 --save-token 保存后由脚本自动读取。
> 最多重试 1 次。两次失败说明是服务端问题,告知用户"金融数据服务暂时不可用",停止重试。
跨平台说明:Python 脚本不强依赖第三方库——缺少 requests 时自动尝试安装修复,失败则退化到标准库 urllib;文档示例用 python3,Windows 无 python3 命令时改用 python 或受管 Python 绝对路径。Shell 备选 bash <finance-data 插件>/skills/neodata-financial-search/scripts/query.sh "查询"。
请求参数与 data_type 纪律
| 字段 | 必填 | 说明 |
|---|---|---|
query |
是 | 自然语言查询 |
channel |
是 | 固定值 neodata |
sub_channel |
是 | 固定值 workbuddy |
data_type |
否 | 默认不传 = all(API + 文章一并召回),强烈建议默认不传 |
data_type 使用纪律:
- 默认不传:让服务同时尝试结构化 API 召回与文档型召回,最大化命中率。
api(仅结构化):仅在用户明确只要数字/表格且绝不接受文章作为答案时使用。doc(仅文章):仅在用户明确要"新闻/公告/研报/解读/原因分析"型答案时使用。- 禁止为"减少返回体积"而默认加
--data-type api——历史数据表明此用法会让约 20–40% 本可被文章召回兜底的 query 变成空结果。
响应结构与错误码
成功时 code 为 "200",suc 为 true,核心数据在 data 中:
data.apiData— 结构化 API 召回:entity(命中标的列表)、apiRecall(API 内容块列表)data.docData— 文本召回:docRecall(文档召回分组,每组含extQuery和docList)
| code | 说明 |
|---|---|
1001 |
未命中意图 |
1616039101 |
参数值不合法 |
1006 |
查询解析拒答(策略拦截、风险或不支持场景) |
服务端点:https://copilot.tencent.com/agenttool/v1/neodata(代理自动填充 request_id;channel/sub_channel 必须显式传入)。
A3 WeStock 行情数据(结构化 CLI)
调用方式:npx -y westock-data-skillhub@1.0.5 <命令> [参数](下文 westock-data <命令> 是同一调用的简写)。nodejs ≥ 18,无需 npm install,需网络。
npx -y westock-data-skillhub@1.0.5 search 宁德时代
npx -y westock-data-skillhub@1.0.5 kline sh600519 --period day --limit 20
npx -y westock-data-skillhub@1.0.5 kline sh600036,sh601318,sz300750 --period day --limit 20 # 批量
并发:无依赖的多个查询(如 kline + report + fund flow)应在同一轮工具调用中并行发出,不要串行等结果。
参考文档(仅不确定时查阅,禁止每次任务都读):
由 finance-data 插件的 WeStock 子技能提供(skills/westock-data/references/):
routing-guide(场景路由与通道边界)· commands(完整命令语法)· scenarios-guide(分析场景模板)· ai_usage_guide(返回字段说明)。
通道铁律
- 禁止绕过——不用
web_search/ HTTP 直连 / 训练数据替代。宏观数据(GDP/CPI/PMI 等)必须用macro indicator。 - 未知代码先
search——用户只给名称时,先search拿代码再查数据。 - 货币单位正确——港股港元/美元、美股美元;禁用人民币符号。
- K 线有延迟——
kline不代表实时行情;展示须标注数据日期,勿称「现价」「实时涨跌」。 - 多股批量——对比/分析 N 只股票时,凡支持批量的命令只调 1 次、代码用逗号分隔;禁止同一轮对比里「有的命令批量、有的按股拆开」。例外:
search不支持代码批量。
search 规则
默认仅搜股票(search <关键词> = --type stock,只调 1 次接口)。不会自动查 ETF/板块/指数/期货/外汇。
| 用户意图 | 命令 | 不要 |
|---|---|---|
| 找股票代码(默认) | search 宁德时代 |
不要无 --type 时再去试 etf/bond/index/sector |
| 找 ETF/基金 | search 沪深300 --type etf |
用户说了「ETF」就直接带 type,不要先默认再重试 |
| 找指数 | search 中证红利 --type index |
|
| 找板块 | search 银行 --type sector |
|
| 找可转债 | search 兴业 --type bond |
|
| 找期货/外汇 | search 黄金 --type futures / --type forex |
空结果时:读 CLI 返回的提示,按用户原意最多再试 1 种 --type,不要对同一关键词依次扫 etf→bond→index→sector。仍无结果则告知用户,不要死磕。禁止对同一关键词连续换 3+ 种 --type 盲试。
批量查询
多标的对比:代码用逗号写在同一条命令里(如 finance sh600519,sz000651),不要一股一条命令。
# 分析 sh600519 + sz000651 → 下面各 1 次(共 5 次),不是 10+ 次
westock-data kline sh600519,sz000651 --period day --limit 60
westock-data finance sh600519,sz000651 --num 4
westock-data technical sh600519,sz000651 --indicator macd
westock-data fund flow sh600519,sz000651
westock-data report list sh600519,sz000651 --limit 5
无依赖的多种查询同一轮并行发出。完整限制见 WeStock 插件本体的 routing-guide §六/§九。
高频命令速查
# 搜索
westock-data search 宁德时代
westock-data search 半导体 --type sector
# K 线 / 财务 / 技术
westock-data kline sh600519 --period day --limit 20
westock-data finance sh600519,sz000651 --num 1 # 多股三大表
westock-data technical sh600519 --indicator macd
# 研报 / 公告
westock-data report list sh600519 --limit 5
westock-data notice list sh600519 --limit 10
# 板块 / 指数 / 宏观
westock-data sector constituent pt01801080 # 成份股
westock-data sector valuation pt01801080 # 估值 PE/PB/PS + 历史百分位
westock-data sector finance pt01801780 # 申万行业财报 TTM 聚合
westock-data index constituent sh000300
westock-data macro indicator cn_core --date 2026-03-01
# 资金 / 北向
westock-data fund flow sh600519
westock-data fund north-holding sh600519
westock-data fund south-holding hk00700
westock-data fund north-holding pt01801080
# ETF
westock-data etf detail sh510300
完整语法见 WeStock 插件本体的 commands。
异常与空结果
- 命令失败:如实转述,禁止编造数据。
- 空结果:说明「暂无数据」;区分代码不支持 vs 时点无披露(必要时先
search)。 - 能力不支持:如实告知(如美股无
fund flow),见 WeStock 插件本体routing-guide§六。 - 禁止:失败后改用
web_search或凭训练数据补数。
A4 朝阳永续数据聚合(MCP 四件套)
聚合取数通道:把 suntime-stock / suntime-stock-nl / suntime-etf / suntime-convertible-bond 四个结构化 MCP 统一在一个入口下。
CLI 安装/升级/Key 配置/参数格式/故障排查等完整指南见 references-suntime/mcp-cli.md;首次使用直接看下方「首次使用」节。
首次使用(约 2 分钟)
# 1. 安装 CLI(已装可跳过;该命令幂等,重跑即升级到最新版)
npm install -g suntime-mcp-cli --registry=https://registry.npmmirror.com
# 2. 配置 Key 为环境变量(去 https://open.go-goal.com 首页点「获取 API KEY」领取)
# macOS / Linux(按你的 shell 选 ~/.bashrc 或 ~/.zshec):
echo 'export SUNTIME_API_KEY=sk-suntime-xxxxx' >> ~/.bashrc && source ~/.bashrc
# Windows PowerShell(新开终端生效):
# [Environment]::SetEnvironmentVariable("SUNTIME_API_KEY","sk-suntime-xxxxx","User")
# 3. 注册本通道涉及的 4 个 MCP
BASE=${SUNTIME_BASE_URL:-https://sntp-opendata.go-goal.cn}
suntime-mcp-cli config set-url suntime-stock $BASE/s/100002/m/suntime-stock/mcp
suntime-mcp-cli config set-url suntime-stock-nl $BASE/s/100002/m/suntime-stock-nl/mcp
suntime-mcp-cli config set-url suntime-etf $BASE/s/100002/m/suntime-etf/mcp
suntime-mcp-cli config set-url suntime-convertible-bond $BASE/s/100002/m/suntime-convertible-bond/mcp
# 4. 验证(返回工具清单即成功)
suntime-mcp-cli suntime-stock tool_list | head
> 完整鉴权方式(含优先级、Key 缺失自动开浏览器引导)见 references-suntime/mcp-cli.md「鉴权配置」节。
推荐工作流:先发现,再取数
MCP 工具规模庞大,先用 scripts_suntime/analyze.py 智能发现工具,避免盲读子文档:
python3 scripts_suntime/analyze.py "贵州茅台的资金流向" # 自动识别 MCP + 拉取相关工具清单
python3 scripts_suntime/analyze.py "选ROE>20%的白酒股" --batch # 自动匹配场景并批量执行
python3 scripts_suntime/analyze.py --list-scenarios # 查看内置批量场景
发现工具后,再按路由进入对应子文档确认入参细节。更多用法(--top/--mcp/--parallel/--compact)见 analyze.py --help。
> analyze.py --batch 直接执行内置场景模板中的工具调用,工具名来自预定义模板,无需人工校验。手动构造的调用命令,由 CLI 内置校验自动把关。
快速路由
| 问题类型 | 目标子文档 |
|---|---|
| 含"ETF/场内基金"或代码 5 开头.SH / 15 开头.SZ | references-suntime/etf.md |
| 含"可转债/转债/转股价/溢价率/双低/下修"或代码 11/13 开头.SH / 12 开头.SZ | references-suntime/convertible-bond.md |
| 上述两类排除后,A/H/美股/指数/板块(优先) | references-suntime/stock.md |
| stock 无工具或需串行 3+ 次 / 批量选股 | references-suntime/stock-nl.md |
> 各子文档工具速查表中带 ⭐ 的为 T1 核心工具(共 20 个,覆盖 80%+ 场景),优先尝试。
> 完整路由表(T1/T2 分层、业务速查、跨 MCP 协作矩阵)见 references-suntime/routing-map.md。
MCP 工具质量说明
suntime-stock(固定结构化参数)的调用质量和效率高于 suntime-stock-nl(自然语言参数)。
| MCP | 参数类型 | 调用质量 | 优先级 |
|---|---|---|---|
suntime-stock |
固定结构化参数 | ✅ 高效、字段精确、口径可控 | 优先使用 |
suntime-stock-nl |
自然语言 query |
⚠️ 灵活但字段口径不可控,效率略低 | 仅在下列情况使用 |
使用 suntime-stock-nl 的三个前提(满足任意一个才选):
1. suntime-stock 没有对应工具(如单季度财务、大宗交易明细、增减持明细、港股/美股底层明细等)
2. suntime-stock 需要串行调用 3 次以上才能组合出同等结果(如批量选股涉及 5+ 维度)
3. 用户明确需要批量多股横向筛选(350+ 指标复合条件,hs_stk_screening 一句话完成)
路由判定规则(按优先级)
- ETF 走 etf:标的后缀
.SH/.SZ且名称含 "ETF",或显式提到 "ETF/场内基金",或代码段为 5 开头.SH、15 开头.SZ→ etf 子文档 - 可转债走 bond:含"可转债/转债/转股/溢价率/双低/下修",或代码段为 11/13 开头
.SH、12 开头.SZ→ convertible-bond 子文档 - 优先 suntime-stock:ETF/可转债/资讯场景排除后,先查 stock 子文档能否满足,能满足的一律用 stock
- 再考虑 suntime-stock-nl:stock 不能满足,或需多次调用才能完成时
- 跨 MCP 协作:4 个 MCP 可组合使用(协作建议见 A1)
标准调用流程(必须遵守)
每次构造工具调用前,都必须经过以下步骤,不得跳过第 1-2 步。
# ── 第 0 步:标的识别(标的不明确时必做)─────────────────────────────
suntime-mcp-cli suntime-stock recognize_security --params '{"question":"<用户描述>"}' # A股/港股/美股/指数/板块
suntime-mcp-cli suntime-etf recognize_etf --params '{"question":"<用户描述>"}' # ETF
# ── 第 1 步:确认工具名(从子文档选定候选后,用 tool_list 核验拼写)────
suntime-mcp-cli <mcp_name> tool_list 2>&1 | grep "^- "
# ── 第 2 步:查参数 schema(每次调用前必做,本地缓存零网络开销)──────
suntime-mcp-cli <mcp_name> tool_list 2>&1 | grep -A 40 "^- <tool_name>$"
# 重点确认:① required 里有哪些参数 ② 每个参数的 type
# ③ 枚举值(kline_type / report_quarter 等) ④ sec_id 还是 sec_ids
# ── 第 3 步:调用────────────────────────────────────────────────
suntime-mcp-cli <mcp_name> <tool_name> --params '<JSON>'
> 本通道文档静态维护,以 tool_list 实时输出的 schema 为最终权威;tool_list 本地缓存 1 小时,缓存命中时纯本地执行,零网络开销。
CLI 内置校验行为(第 3 步的保障层):工具名不存在 → 模糊匹配输出候选(退出码 3);必填参数缺失 / sec_id 单复数误用 → 报错并给修正命令,--fix 自动修正;参数类型不符 → 可转换时提示,--fix 自动转换;逃生通道 --no-verify 跳过所有校验。⚠️ CLI 校验是兜底保障,不是替代第 1-2 步的理由。
参数格式与时间约定详见 references-suntime/_common.md。
高频注意事项
- 工具名严格匹配:禁止凭记忆猜工具名,必须通过第 1 步
tool_list核验。报「工具不存在」(退出码 3)或ROUTE_ERROR时必须看 CLI 给出的候选,禁止连续换名字盲试。 sec_idvssec_ids:必须通过第 2 步查 schema 确认单复数。单数只能传一个标的;复数分隔符以 schema 为准(suntime-stock/suntime-etf/suntime-convertible-bond均用;),最多 100 个,超出需分批调用。
B 篇 · 投研工作台(9 模块)
把机构投研的 9 个标准工作环节,用公开可得的数据源复刻成个人投资者能真正跑起来的流程。每个模块对应一类「有稳定分析步骤和固定交付标准」的工作。
> 本技能不提供机构授权数据源(Wind、标普全球等)。数据能力边界见 A1,先读它再干活。
B 模块路由表
| # | 模块 | 用户会怎么说 | 详细规范 |
|---|---|---|---|
| 1 | 持仓早报 | 「看看我的持仓」「开盘前有什么要注意的」「今天持仓有什么变化」 | references/01-daily-briefing.md |
| 2 | 组合复盘 | 「复盘一下这个月」「收益归因」「我的组合表现怎么样」 | references/02-portfolio-review.md |
| 3 | 业绩点评 | 「XX 出财报了吗」「点评一下这份季报」「业绩超预期了吗」 | references/03-earnings-commentary.md |
| 4 | 一致预期地图 | 「机构怎么看 XX」「盈利预测怎么样」「市场预期在哪」 | references/04-consensus-map.md |
| 5 | 机构财务建模 | 「帮我搭个模型」「估一下这家公司」「DCF」「财务预测」 | references/05-financial-modeling.md |
| 6 | 机构研究报告 | 「写份深度研究」「行业分析」「覆盖一下这个板块」 | references/06-research-report.md |
| 7 | 机构PPT | 「做成投研 PPT」「汇报材料」「路演材料」 | references/07-institution-ppt.md |
| 8 | 金融动态图表 | 「画个图」「做张图表」「净值走势图」 | references/08-dynamic-charts.md |
| 9 | 港股IPO透镜 | 「港股新股」「这只 IPO 怎么样」「招股信息」 | references/09-hk-ipo-lens.md |
B 通用执行流程
任何模块都按这五步走,不得跳步:
1. 定源 → 读 A1 数据源路由,确定各字段的数据源与命令
2. 取数 → 并行发起无依赖的查询(禁止串行等待)
3. 核验 → 检查:条数是否完整?日期是否最新?有无明显异常值?
4. 推翻 → 若取数为空或异常,按数据源通道的降级规则处理,并在交付物中标注
5. 交付 → 按该模块的交付标准输出;末尾附「数据来源与日期」+「未取到项」
第 3 步不可省。 实测中曾出现「代码判错类型导致返回了完全无关标的的数据」的情况——查询成功不等于数据正确。必须核对返回实体名是否与目标一致。
B 交付物规范与本地持仓台账
除模块另有规定外,所有交付物须包含:
- 结论前置——先给结论,再给支撑。不要写成过程流水账。
- 数据来源与日期——逐项列出。
- 未取到项——取不到什么,为什么,影响哪些结论。
- 事实与推断分离——用不同小节或标注区分。
- 风险提示——固定的免责声明(见「能力边界与免责声明」节)。
本地持仓台账
模块 1、2 依赖用户的持仓数据。台账文件默认位于:
本技能目录/assets/holdings.json
首次使用先初始化,用 scripts/holdings.py 管理(零依赖,Python 标准库):
python scripts/holdings.py init
python scripts/holdings.py add --code 002611 --name 博时黄金ETF联接C --shares 1000 --cost 2.85 --class gold
python scripts/holdings.py set-nav --code 002611 --nav 2.93 --date 2026-09-17
python scripts/holdings.py target --class gold --weight 40
python scripts/holdings.py report
台账是计算的基础。 没有台账就做不了真正的收益归因——只能做定性描述。首次使用应先引导用户建台账,并说明份额与成本从交易平台(如支付宝基金持仓页)抄录即可,不需要精确到分。
完整命令见 scripts/holdings.py --help;格式范例见 assets/holdings.example.json。
星期约定(易错点):--weekday 1=周一 … 7=周日,没有 0。
刻意不使用 Python 的 0=周一 惯例——实测中该差异会让「每周二」被算成周三,导致漏投误报。
B 自检脚本
两个脚本分工不同,不要混用:
python scripts/selftest.py # 台账计算对不对:市值/盈亏/漂移/定投核对,47 项断言
python scripts/smoke.py # 包本身完不完整:文件/名字/模板/旧名残留,51 项断言
- 改过
holdings.py→ 跑selftest.py。全部通过才说明台账计算可信。 - 改名、搬目录、上架打包、增删
references模块、改 frontmatter → 跑smoke.py。
它内含旧名残留检查:批量改名后漏改一处即报错,可避免包内出现自相矛盾的名称。
C 篇 · 财经日历
C 能力概述
帮用户回答"未来某个时间点会发生什么财经事件"——投资决策中的高频痛点。三层能力:
- 查询事件:某天/某周/某月有哪些宏观数据发布、央行决议、财报披露
- 构建日历:生成可交互的 HTML 财经日历
- 影响分析:重大事件(FOMC/非农/CPI)对市场的典型影响规律
能做:查询未来 1-3 个月的财经事件时间安排;按日期/区间/国家/重要性/关键词筛选事件;生成可交互 HTML 日历(月历 + 列表双视图);提供重大事件的市场影响参考(基于历史规律);按历史发布规律预排 API 未覆盖的远期月份。
不能做:查询已发生的行情数据(走 A 篇通道);技术指标分析;因子分析;提供投资建议或预测涨跌(仅提供事件信息与历史影响参考);实时行情推送(本篇是事件日历,不是行情终端)。
C 数据源与预排
按优先级使用,确保任何月份都不空白:
| 优先级 | 数据源 | 覆盖范围 | 特点 |
|---|---|---|---|
| 主源 | 华尔街见闻 API | 未来 1-2 个月 | 结构化,含前值/预期/实际/4星评级,覆盖 20+ 国家 |
| 兜底 | 历史规律预排 | 未来 3 个月 | 基于各指标月度发布规律生成,远期月份兜底 |
| 校准 | 官方源 | 关键事件 | 国家统计局/BLS/BEA/央行官网 |
华尔街见闻 API
公开 API,无需鉴权:
GET https://api-one-wscn.awtmt.com/apiv1/finance/macrodatas?start={unix_ts}&end={unix_ts}
返回字段:public_date(秒级时间戳)、country、title、importance(1-4星)、calendar_type(FD数据型/FE事件型)、actual、forecast、previous、unit。详细调用方法见 references-calendar/data-sources.md。
历史规律预排
当 API 无数据时,基于各指标月度发布规律生成预排。完整规律见 references-calendar/recurrence-rules.md,核心规律:
| 指标 | 发布日 | 时间(北京) | 重要性 |
|---|---|---|---|
| 中国 CPI/PPI | 每月9-10日 | 09:30 | ★★★ |
| 中国官方PMI | 每月最后一天 | 09:00 | ★★★ |
| 中国 MLF | 每月15日 | 09:20 | ★★★ |
| 中国 LPR | 每月20日 | 09:15 | ★★★ |
| 中国社融/M2 | 每月10-15日 | — | ★★★ |
| 美国非农 | 每月第一个周五 | 20:30 | ★★★★ |
| 美国 CPI | 每月11-14日 | 20:30 | ★★★★ |
| 美国 PCE | 每月最后一个周五 | 20:30 | ★★★★ |
| FOMC 决议 | 每年8次 | 02:00 | ★★★★ |
| Jackson Hole | 每年8月22-24日 | 22:00 | ★★★ |
C 事件分类与重要性评级
共 9 大类(详见 references-calendar/event-taxonomy.md):
| 类别 | 代码 | 典型事件 |
|---|---|---|
| 宏观经济 | macro | CPI/PPI/GDP/PMI/非农/PCE |
| 央行政策 | monetary | FOMC/MLF/LPR/ECB/BOJ决议 |
| 重要会议 | meeting | OPEC+/G20/Jackson Hole/两会 |
| 财报披露 | earnings | 苹果/台积电/A股定期报告 |
| IPO新股 | ipo | 申购日/上市日 |
| 公司事件 | corporate | 分红/解禁/增发/重组 |
| 指数调整 | index | MSCI/沪深300调整 |
| 政策法规 | policy | 新规实施/关税调整 |
| 重大国际 | geopolitical | 选举/贸易谈判/地缘冲突 |
重要性采用 4 星制(对齐华尔街见闻):
| 星级 | 定义 | 典型事件 |
|---|---|---|
| ★★★★ | 直接影响货币政策预期,引发全市场剧烈波动 | FOMC决议、非农、CPI、PCE |
| ★★★ | 影响特定板块或高关注度 | PMI、GDP、MLF/LPR、OPEC+ |
| ★★ | 常规数据/重要事件 | 零售销售、PPI、重点财报 |
| ★ | 次要数据/小国数据 | 外汇储备、初请失业金 |
中国市场特殊加权:MLF/LPR/社融对中国市场的影响权重高于国际同类事件。
C 工作流与脚本
四个场景
场景 1:查某事件何时发布("非农什么时候发"):
1. 调用 scripts_calendar/query_events.py --keyword 非农 查询
2. 若 API 有数据,直接返回日期时间
3. 若无数据,按规律(每月第一个周五 20:30)计算下次日期
4. 输出:日期 + 时间 + 重要性 + 关联资产
场景 2:查某时段事件列表("本周有什么重要数据"):
1. 计算本周一到周日日期
2. 调用 scripts_calendar/query_events.py --start {周一} --end {周日}
3. 按日期分组表格输出,高影响事件红色标注
场景 3:生成财经日历("帮我做个8月财经日历"):
1. 调用 scripts_calendar/generate_calendar.py --month 2026-08 --output 8月日历.html
2. 脚本自动:先试 API → 无数据走预排 → 注入 HTML 模板
3. 输出 HTML 文件给用户
场景 4:事件影响分析("FOMC 降息对 A 股有什么影响"):
1. 查询下次 FOMC 时间
2. 读取 references-calendar/impact-playbook.md 的 FOMC 章节
3. 输出:决议时间 → 历史影响规律 → 关联资产 → 风险提示
辅助脚本
脚本位于 scripts_calendar/ 目录,按需调用(纯文本提示词为主,脚本为辅):
| 脚本 | 用途 | 用法示例 |
|---|---|---|
query_events.py |
统一查询入口(自动 fallback) | --month 2026-08 --importance high |
fetch_wscn.py |
直调华尔街见闻 API | --month 2026-07 --format table |
prefill_month.py |
按规律预排 | --month 2026-08 |
generate_calendar.py |
生成 HTML 日历 | --month 2026-08 --output 日历.html |
脚本依赖 Python 3,仅用标准库,无需额外安装包。
可选依赖
agent-browser:当需要从财联社投资日历(cls.cn/investkalendar)抓取题材/展会事件作为补充数据源时使用。华尔街见闻 API(主源)已覆盖绝大部分宏观数据,agent-browser 仅用于补充财联社独有的行业展会、公司事件等。详见 references-calendar/data-sources.md。
C 输出规范与案例
查询型输出:用表格,必须包含:日期、时间、国家、事件、重要性、前值/预期/实际(如有)。
日历型输出:生成 HTML 文件,必须:浅色背景、月历+列表双视图、事件按重要性色块标注、含前值/预期/实际三值、默认显示今天。
分析型输出:结构:事件描述 → 重要性判断 → 关联资产 → 历史影响参考 → 风险提示。
案例 1:晨会前快速查今日事件
输入:"今天有哪些重要财经事件?"
执行:调用 scripts_calendar/query_events.py --date 2026-07-22 --importance high
输出:
2026-07-22 共 5 个高影响事件
时间 | 国家 | 事件 | 重要性 | 前值 | 预期 | 实际
20:30 | 美国 | 6月成屋销售年化 | ★★★ | 390万 | 395万 | 待发布
02:00 | 美国 | FOMC利率决议 | ★★★★ | 4.50% | 4.50% | 待发布
案例 2:生成月度财经日历
输入:"帮我做一个8月的财经日历"
执行:调用 scripts_calendar/generate_calendar.py --month 2026-08
输出:HTML 文件,含月历视图(事件色块标注)+ 列表视图 + 事件详情面板。
案例 3:重大事件影响分析
输入:"下周 FOMC 会议对 A 股有什么影响?"
输出:
下次 FOMC 利率决议:2026-07-29 02:00(北京时间)
影响机制:利率决议 → 美元利率预期 → 美元汇率/美债收益率 → A股北向资金
关联资产:美元、美股、黄金、美债、A股北向资金
历史规律:加息超预期→A股偏空;降息超预期→A股偏多
⚠️ 仅供投资参考,不构成投资建议。
D 篇 · 盈米投顾工作台
本篇是且慢金融能力的本地公开入口:负责完成前置检查、判断该用 MCP 还是云端子 Skill,并提供统一 HTML 报告模板入口。它不承载各金融场景的完整执行细节;进入子 Skill 后,应以远端子 Skill 的 SKILL.md 为准。
D 前置检查与决策原则
前置检查
首次安装或执行任何 MCP / remote-skill 调用前,必须完成:
- 环境检查:确认
node -v、git --version可正常执行;缺失时先引导用户安装。 - 执行 CLI 前置检查工作流(由
yingmi-skill本体提供),确认yingmi-skill-cli已安装、已更新且环境已初始化。 - 执行
yingmi-skill-cli自带的升级检查 检查 Skill 更新。
决策原则:MCP 还是子 Skill
一句话判断:MCP 是原子工具,云端子 Skill 是场景工作流。
优先用 MCP:
- 用户只要一个明确数据点、指标、详情或单次输出。
- 用户已给出完整参数,不需要固定分析流程。
- 任务可以由一个或少量工具直接完成。
优先进入云端子 Skill:
- 用户要"分析、诊断、规划、评估、生成报告"。
- 任务需要多步编排、业务约束、固定章节或统一交付物。
- 用户明确指定了某个子 Skill 或明显命中下方场景清单。
补充规则:
- 已进入子 Skill 后,如仍需真实数据,继续按 MCP 的
list -> schema -> call规则取数。 - 子 Skill 的章节、流程、字段、表格、图表和结论边界,全部以远端子 Skill 的
SKILL.md为准。 design-data-visualization若只交付独立图表 / 单图 HTML,可不套完整报告壳;若交付完整报告页,仍遵守统一 HTML 模板。
D 盈米 MCP 原子能力
使用流程:
# 1. 查看工具列表
yingmi-skill-cli mcp list
# 2. 查看目标工具入参 Schema
yingmi-skill-cli mcp schema <toolName>
# 3. 按 Schema 调用工具
yingmi-skill-cli mcp call <toolName> --input '<json>'
常见示例:
yingmi-skill-cli mcp schema GetCurrentTime
yingmi-skill-cli mcp call GetCurrentTime --input '{}'
yingmi-skill-cli mcp schema SearchFunds
yingmi-skill-cli mcp call SearchFunds --input '{"keyword":"易方达蓝筹","size":3}'
yingmi-skill-cli mcp schema BatchGetFundsDetail GetFundDiagnosis GetFundsBackTest
能力分组仅用于快速路由;完整工具列表以 yingmi-skill-cli mcp list 的实时输出为准。
| 能力分组 | 什么时候使用 | 常用工具 |
|---|---|---|
| 基础时间能力 | 当前时间、交易日范围 | GetCurrentTime、GetTxnDayRange |
| 基金检索与资料 | 搜基金、确认代码、查详情、公告、交易规则 | SearchFunds、GuessFundCode、BatchGetFundsDetail、GetPopularFund、GetFundAnnouncements、GetAnnouncementContent、BatchGetFundTradeLimit、BatchGetFundTradeRules |
| 单只基金分析 | 业绩、风险、持仓、归因、行业、风格、债基指标 | GetFundDiagnosis、AnalyzeFundRisk、GetBatchFundPerformance、BatchGetFundNavHistory、BatchGetFundsHolding、GetFundAssetClassAnalysis、getFundBenchmarkInfo、getFundBrinsonIndicator、getFundCampisiIndicator、getFundIndustryAllocation、getFundIndustryConcentration、getFundIndustryPreference、getFundIndustryReturns、getFundTurnoverRate、fund-equity-position、fund-recovery-ability、fund-sector-preference、getMarketTimingIndicator、getStockAllocationAndMetricsByFundCode、getQdFundAreaAllocation、getBondAllocationByFundCode、getBondFundCreditRatingLevel、getBondIndicator、getBondFundWithAlertRecord、getFundDiveCount |
| 组合与策略 | 多基金组合、相关性、回测、风险、穿透配置、策略查询 | GetFundsCorrelation、GetFundsBackTest、DiagnoseFundPortfolio、AnalyzePortfolioRisk、GetAssetAllocation、MonteCarloSimulate、GetPortfolioNavHistory、GetFundRelatedStrategies、StrategySearchByKeyword、GetStrategyDetails、GetStrategyRiskInfo、BatchGetStrategyRiskInfo、BatchGetStrategiesComposition、BatchGetPoTradeComposition、GetStrategyAssetClassAnalysis、GetStrategyBenchmark |
| 财富规划与资产配置 | 家庭成员、收支、资产负债、现金流、配置测算 | AnalyzeFamilyMembers、AnalyzeIncomeExpense、AnalyzeAssetLiability、AnalyzeCashFlow、AnalyzeFinancialIndicators、GetAssetAllocationPlan、GetCompositeModel、AnalyzeInvestmentPerformance |
| 基金筛选与排雷 | 选基、债基排雷、按条件筛选基金 | filterBondFundByBondType、filterBondFundByCreditRating、filterStockFundByStockTurnover |
| 市场资讯与素材 | 行情、财经资讯、热点、基金经理观点、投顾素材 | GetLatestQuotations、SearchFinancialNews、SearchHotTopic、SearchManagerViewpoint、searchInvestAdvisorContent、searchRealtimeAiAnalysis |
| 图表与报告输出 | 渲染图表、图片或导出 PDF | RenderEchart、RenderHtmlToPdf |
D 盈米云端子 Skill
使用流程:
# 1. 查看当前可用子 Skill
yingmi-skill-cli remote-skill list
# 2. 进入子 Skill,上下文名称必须以 list 输出为准
yingmi-skill-cli remote-skill enter <skillName>
# 3. 先读取远端子 Skill 说明,再执行后续任务
yingmi-skill-cli remote-skill exec --script 'cat SKILL.md'
约束:
- 下方清单只用于路由;真实可用名称以
remote-skill list为准,不要凭目录名猜测。 - 进入后必须先读远端
SKILL.md,再按其要求执行。 - 本入口不规定子 Skill 内部"怎么做",只说明"什么时候进入"。
| 子 Skill 目录 | 什么时候进入 |
|---|---|
fund-analyst |
用户明确基金代码或名称,想知道"这只基金怎么样"、是否值得关注、同类对比等 |
portfolio-doctor |
用户提供基金组合,想诊断是否合理、是否需要优化、风险收益是否匹配 |
fund-screener |
用户不知道买什么,想筛选基金、推荐基金或排查问题基金 |
market-morning-brief |
用户要市场早报、行情速报、热点汇总、基金经理观点摘要 |
advisor-content-studio |
用户要写市场解读、基金推荐文案、投教内容、热点评论或内容排版 |
wealth-family-advisor |
用户要做家庭财务规划、财务体检、收支梳理、退休目标或配置方案 |
wealth-goalmatch |
用户不知道该设什么财富目标,希望推荐优先目标 |
wealth-goalcalc |
用户要测算每月投多少、几年后有多少、目标能否达成 |
wealth-healthcheck |
用户已有结构化财务数据,想快速计算健康指标和评级 |
wealth-report |
用户已完成规划分析,接下来要生成完整书面报告 |
design-data-visualization |
用户要做图表、仪表板、交互式可视化或导出 HTML / PNG / SVG / PDF |
D 统一 HTML 报告模板
生成完整 HTML 报告页时,必须使用公共模板:
- 规范说明:
yingmi-skill本体的 HTML 视觉模板文档 - 公共模板:
yingmi-skill本体的demo-report.html
执行顺序:
- 读取当前场景远端
SKILL.md及其任务相关references/*,确定报告内容、章节、字段和图表。 - 读取盈米技能本体的
demo-report.html全文,复用其视觉壳、整段<style>、class、report-header、水印、主题切换脚本等。 - 内容以场景 Skill 为准,视觉壳以盈米技能本体的
demo-report.html为准。
禁止:未读模板即输出 HTML;照抄 demo 占位内容;自造整页 CSS / class;删除水印、顶栏图标或主题切换。
数据真实性纪律:盈米系取数遵循「MCP 数据真实性零容忍」约束(见 yingmi-skill 本体的「MCP 数据真实性零容忍」约束)——与本技能铁律 3(禁止编数)同源。
外部依赖(运行时)
本技能的取数能力不随包附带第三方文档与脚本副本,而是运行时依赖已安装的插件/子技能本体:
| 通道 | 依赖对象 | 提供的资产 |
|---|---|---|
| NeoData 检索 | finance-data 插件 → neodata-financial-search 子技能 |
reference.md(数据服务目录)· neodata-financial-search/scripts/query.py / query.sh(调用脚本) |
| WeStock 行情 | finance-data 插件 → westock-data / westock-tool 子技能 |
references/(routing-guide / commands / scenarios-guide / ai_usage_guide) |
| 盈米投顾 | yingmi-skill(且慢官方 CLI 与云端子技能) |
CLI 前置检查流程 · HTML 视觉模板 · demo-report.html · MCP 数据真实性纪律 |
原则:第三方的文档与脚本属于其作者,本技能只声明「如何调用」,不附带副本。
缺少上述依赖时,如实告知用户该通道不可用,不得用训练数据或 web_search 补数。
能力边界与免责声明
| 本技能能做 | 本技能做不到 |
|---|---|
| 公开数据取数与交叉核验(NeoData/WeStock/朝阳永续/盈米) | Wind、标普全球等机构授权源 |
| 按固定步骤完成分析并交付 | 机构级合规网关与审计留痕 |
| 简化估值模型(历史分位、盈利跟踪) | 机构一致预期口径的完整 DCF |
| 港股公开招股与新股日历 | 招股书与审核问询案例库 |
| 生成结构化研报与图表 | 专家访谈一手材料 |
| 财经事件时间查询与影响规律参考 | 实时行情推送;预测涨跌;投资建议 |
用户问「你和机构有什么差别」时,照此表如实回答,不要美化。
所有涉及投资决策的输出,必须在末尾附:
> ⚠️ 本信息仅供投资参考,不构成任何投资建议。市场有风险,投资需谨慎。事件实际影响可能因市场环境、预期差、叠加效应等因素与历史规律不同。数据可能有延迟,以交易所官方为准。
常见误用与常见问题(FAQ)
常见误用(反模式)
| 误用 | 后果 | 正解 |
|---|---|---|
| 命令失败后改用搜索或凭训练数据补数 | 编数 | 如实转述,禁止编造数据;禁止失败后改用 web_search 或凭训练数据补数 |
| 任何数字不给来源 | 不可核验 | 禁止编数 —— 任何数字必须有来源;取不到就明确写「未取到」,严禁用训练数据、记忆或估算补数 |
| 把「数据事实」与「推断」混写成一段 | 读者误读 | 必须分开标注 |
| 凭记忆猜工具名 | 排查方向错 | 工具名严格匹配,必须先经第 1 步 tool_list 核验;报错时看 CLI 给出的候选,禁止连续换名字盲试 |
| 跳过构造调用前的第 1-2 步 | 调用错 | 每次构造工具调用前都必须经过既定步骤,不得跳过第 1-2 步 |
| 拿其它通道替代权威 CLI | 数据不可靠 | 命中能力域时禁止 web_search、HTTP 直连或其它通道替代;宏观数据必须用 macro indicator |
为减少返回体积默认加 --data-type api |
约 20–40% 本可被文章召回兜底的 query 变成空结果 | 禁止默认加 |
| 以为 CLI 校验能替代前置步骤 | 误解 | CLI 校验是兜底保障,不是替代第 1-2 步的理由 |
| 结论把可能性平铺给用户自选 | 把决策成本转嫁 | 结论要分层,不要把可能性平铺给用户自选 |
| 第一步就去获取凭证 | 浪费 | 第一步永远是直接执行查询,不要提前获取凭证 |
常见问题
- Q:先判什么? A:先走「总路由:先判任务类型」;场外/场内分流按 6 位代码撞车判据判,判错整份报告作废。
- Q:多源冲突以谁为准? A:见「三源优先级总则」(来源:各源服务条款)。
- Q:哪些是最高优先级? A:见「铁律(最高优先级,任何篇都不得违反)」。
- Q:类目归属怎么交代? A:见「能力边界与类目归属(发布说明)」。
- Q:取不到数据怎么办? A:见「异常与空结果」;如实说明,不补数。
检索委派与结论分层(2026-09-21 吸收自平台件的判定条目)
> 来源:平台内置的金融数据件。只取纪律,不引其正文。
一、委派给检索工具时,只给一句话意图
- 只交代两件事:① 标的 / 主题 / 范围(带代码)② 大方向查什么。
- 禁止拆成多维度清单、字段列表、表格格式要求 —— 检索工具自身有多步规划能力;你拆得越细、要求越「全」,它解锁的检索面越大、越慢、越发散。
- 禁止堆砌词:「请尽可能全面地检索」「详细检索」「返回结构化分析数据」「覆盖以下 N 个方面」——这类话一个都不要写。
· 反例:用户问「银河电子怎么样」,委派却写成「全面分析…需覆盖:① 主营业务 ② 财务 ③ 估值 ④ 资金流向 ⑤ 研报评级 ⑥ 近期公告 ⑦ 板块概念…」。
二、结论要分层,不要把可能性平铺给用户自选
| 置信度 | 写法 |
|---|---|
| 高 | 直接断言 |
| 中 | 「倾向于」「大概率」 |
| 低 | 「不排除」「有可能」 |
⇒ 用户要的是判断,不是一张「什么都可能」的清单。
三、排序分档必须给可量化依据
给标的排序或分档时,写清依据的具体指标(市占率 / 份额 / 营收占比 / 资金流入 / 增速 / 估值分位)。确实拿不到量化指标时,明说这是定性排序,不要用「绑定深度」「市场地位」这类笼统词伪装成硬排名。
四、时效口径
用户说「最新 / 当前 / 今天 / 近期」时,先结合运行时日期、市场交易状态、指标发布频率确定目标周期,不得把当前年份直接等同于最新有效数据周期;用户指定的历史时点不得自动改写成当前周期。