| name | daymade-sector-research |
| description | A股行业投研工作流:全板块 Top N 涨幅标的计算、公告窗口检索(周/月)、市场情绪证据分级判断,并以 Agent Team 并行执行 + fresh-context 对抗验证。
触发场景(命中任一即读本 skill):
- 「XX 行业 Top N / Top 10 标的」(如「医药行业今天的 Top 10 标的」)
- 「这些标的最近一周 / 一个月发过哪些公告」
- 「判断 XX 行业 / 板块现在的市场情绪怎么样」
- 「用 Agent Team / 多 agent 做行业投研」或要求对行业研究结论做对抗性验证
- 需要「基于证据、基于数据」的板块级研究交付(成分股 → 行情 → 公告 → 情绪 → 验证 → 报告)
核心能力:东财 push2 成分股 → 新浪实时快照涨幅排序(scripts/top_n_pipeline.py);巨潮 cninfo + 东财公告双源交叉,沪深+北交所统一通道(scripts/ann_query.py);情绪证据 L1(一手行情)/L2(带时间戳媒体)/L3(未核实标题)分级;Agent Team 并行编排与验证纪律。全程国内公开数据源,无付费依赖;Gangtise 官方 skill 为可选增强(需积分,缺失时走公开源 pivot)。
最高纪律(用户原话):没有十足把握的事,宁可标注不确定,不可给错误答案。 |
A股行业投研 Skill
对某个申万行业/东财板块做一次完整投研交付:Top N 涨幅标的 → 公告窗口检索 → 市场情绪判断 → Agent Team 对抗验证 → 综合报告。
铁律(每次执行都必须遵守,违反代价最高)
- 宁可标注不确定,不可给错误答案(用户原话,最高纪律)。没有十足把握的事实写「不确定/未核实」,不编、不猜、不省略来源。推断与观察必须分开表述。
- 基于证据、基于数据。每个结论 trace 到一手数据源(API 返回 / CSV 落盘 / 官方公告);汇报数值时从工具输出原文照抄,禁凭印象转写。
- 证据分级 L1–L3:L1 一手行情(交易所/行情接口实时值);L2 带时间戳的媒体/公告报道;L3 未核实标题或传闻。判断情绪时只允许 L1/L2 承重,L3 只能作为「待核实线索」列出。
- 0 条双向读:月窗口公告 0 条 ≠ 真无公告。必须扩宽窗(90 天)+ 第二数据源核对,证明「真无」或发现参数错误,才能下结论。
- 双源交叉:公告检索必须巨潮 + 东财两源对照;单一数据源发现的「重要公告」也要在另一源确认存在,不一致必须如实标注。
- 盘中快照标注漂移:盘中取的行情数值是瞬时快照会漂移,任何引用必须带快照时间戳,报告里注明「盘中快照」。
- 数值照抄落盘 CSV:中间数值必须落盘(脚本输出 CSV / agent 落盘文件),报告引用时照抄 CSV 值,不凭对话记忆。
- Agent Team 编排纪律:见 references/agent-orchestration.md——子代理显式
model:'sonnet';SendMessage 交付协议;每条 finding 带可证伪锚点;验证用 fresh-context 对抗性 agent;禁 spawn 重复 agent。
工作流(五阶段)
Phase 0 数据能力侦察 → 必要时 pivot 公开源
Phase 1 并行三 agent:Top N 名单 / 涨跌幅分桶分布 / 情绪证据清单
Phase 2 公告检索:Top N 全标的 × 周窗口 + 月窗口,双源交叉
Phase 3 对抗验证:fresh-context agent 复核假设(用户原话:「看哪些假设是错的」)
Phase 4 综合报告:名单 + 公告 + 情绪分级 + 显式不确定标注
Phase 0 — 数据能力侦察(Gangtise pivot 决策)
若用户点名 Gangtise(或其官方 skill),先侦察可用性再决定数据源:
- 对照实验判「额度」:同一凭据某些端点可用(如
quote.py、stockpool.py、get_industries.py)而内容搜索端点全报 POINT_NOT_ENOUGH → 这是积分不足的整体性解释,同一凭据一通一挂已否定「网络/配置问题」;若不同端点表现不一致,别急着下「额度耗尽」结论,做对照实验(换端点/换参数/最小请求)。
- pivot 决策表:内容搜索不可用 → Top N 改东财成分股+新浪快照;公告改 cninfo+东财;情绪改公开行情+媒体。侦察结论与 pivot 决策必须告知用户,不静默切换数据源。
- 完整侦察矩阵(各端点实测形态、积分报错、对照实验)→ references/gangtise-scout.md
Phase 1 — 并行三 agent
派 3 个并行 agent(显式 sonnet),每个 prompt 附可证伪锚点要求:
| Agent | 交付物 | 数据链 |
|---|
| Top N 名单 | top{N}_{board}_{日期}.csv | scripts/top_n_pipeline.py(东财成分股 → 新浪快照 → 涨幅排序) |
| 涨跌分桶分布 | distribution_{board}_{日期}.csv + 市场宽度结论 | 全板块快照按 6 分桶(>5%/2-5%/0-2%/0%/-2-0%/<-2%)+ up/down/flat 汇总,六桶 count 加和必须等于 total |
| 情绪证据清单 | 分层证据表(L1/L2/L3 各列) | 一手行情 + 媒体检索 |
行情与板块接口细节 → references/market-data.md;情绪证据方法与信源 → references/sentiment-evidence.md。
Phase 2 — 公告检索
对 Top N 全标的查公告,周窗口(近 7 天)与月窗口(近 31 天)互斥分桶:
cd <本 skill 安装目录>
env -u http_proxy -u https_proxy -u all_proxy -u HTTP_PROXY -u HTTPS_PROXY -u ALL_PROXY \
python3 scripts/ann_query.py --codes 002219,600613,920946 \
--end 2026-08-13 --out-dir /path/out \
--universe-csv /path/top10_xxx.csv
脚本内置:巨潮 orgId 一律 topSearch 解析(禁按市场自拼,深市双形态/沪市前导零/科创板 gfbj 均实测拼错即假阴)、B 股(900/200 开头)自动转对应 A 股代码检索、双源交叉与类型回填、两源翻页、月窗 0 条自动扩宽窗判据(宽窗最新日期 vs 月窗起点)、URL 抽查。orgId 陷阱与接口形态 → references/cninfo-announcements.md。
分桶规则:公告日期落在周窗口内标 1周,否则(仍在月窗口内)标 1月,互斥不重复。输出表头:股票代码,股票名称,公告标题,公告日期,公告类型(如有),公告URL,时间窗口(1周|1月)。
必做验证:① 双源交叉(巨潮 vs 东财)计数一致;② 0 条标的扩宽窗确认「真无」;③ 两源覆盖不完全一致(部分投关类公告仅东财有、部分巨潮也收录),东财独有条目补并集并按 URL 域名标注来源。
Phase 3 — 对抗验证(用户原话:「看哪些假设是错的」)
派 2 个 fresh-context 对抗性 agent(不 fork,不共享本会话上下文),各自带验证轴:
- 验证轴 1 · 方法论与数值:Top N 名单重算(独立重跑数据链)、分桶统计重算(六桶 count 加和 = total)、快照时间戳核对
- 验证轴 2 · 公告完整性与情绪证据强度:抽查公告月窗口是否漏检、情绪结论逐条检查是否 L1/L2 承重、有无未标注的推断
每个 agent 的 finding 必须带可证伪锚点(具体数值/URL/命令输出),prompt 中明令「编造不如标不确定」。验证结果在综合报告中单独成节:哪些假设被推翻、哪些被确认、哪些无法验证。编排细节 → references/agent-orchestration.md。
Phase 4 — 综合报告
交付结构:
- 数据源与 pivot 披露:用了哪些源、哪些不可用、为何 pivot
- Top N 名单:表格(排名/代码/名称/涨幅/价格/成交额)+ 快照时间戳
- 公告清单:周/月分桶,按标的聚合,标注来源与交叉验证结果
- 情绪判断:L1–L3 分层呈现,结论明确标注证据等级;证据不足的维度写「不确定:无 L1/L2 证据」
- 验证结果:对抗验证发现、假设推翻清单
- 不确定项清单:所有未达「十足把握」的条目显式列出
报告数值一律照抄落盘 CSV,禁止凭记忆转写。
环境约束
- 国内站点(东财/新浪/巨潮)curl/脚本必须去代理:
env -u http_proxy -u https_proxy -u all_proxy -u HTTP_PROXY -u HTTPS_PROXY -u ALL_PROXY
- Python 用
uv run --no-project 或系统 python3(脚本 stdlib only)
- 新浪快照返回 GBK 编码,需 Referer
https://finance.sina.com.cn;东财公告接口可不带 Referer(实测);北交所公告不单独走 bse.cn(官网接口三重失效,走巨潮 gfbj 通道)
- 若 push2 域名解析进 198.18.0.0/15(代理 TUN fake-IP),去代理无效,须修代理分流或用
curl --resolve 直连真实 IP(见 references/market-data.md)