with one click
invest-a
A股个股调研 AI 学习技能 — 数据采集 + 学术级引用,产出带来源追溯的 Markdown 学习报告。这是一个学习工具,不是决策工具。
Install with Codex or Claude Copy this prompt, paste it into Codex, Claude, or another assistant, and let it review the skill page and install it for you.
Menu
A股个股调研 AI 学习技能 — 数据采集 + 学术级引用,产出带来源追溯的 Markdown 学习报告。这是一个学习工具,不是决策工具。
Install with Codex or Claude Copy this prompt, paste it into Codex, Claude, or another assistant, and let it review the skill page and install it for you.
Based on SOC occupation classification
| name | invest-A |
| version | 0.1.2 |
| description | A股个股调研 AI 学习技能 — 数据采集 + 学术级引用,产出带来源追溯的 Markdown 学习报告。这是一个学习工具,不是决策工具。 |
| argument-hint | /invest-A 600176 | /invest-A 600176 --with-macro | /invest-A 600176 --deep | /invest-A 600176 --compare 000858 |
| allowed-tools | Bash, Read, Write, WebSearch, WebFetch |
| user-invocable | true |
| metadata | {"requires":{"bins":["uv","python3"]},"optionalEnv":["TUSHARE_TOKEN","FRED_API_KEY","TAVILY_API_KEY"]} |
这是一个学习工具,不是决策工具。 不提供买卖建议、目标价或仓位建议。
❌ 旧模式(v0.2):Tushare → 失败 → akshare → 失败 → 腾讯 → 标注不可得
↳ 串行降级,单源数据无法交叉验证
✅ 新模式(v0.3+):全部可用源并行查询 → 各渠道独立记录 → 汇总为证
↳ 每个维度对所有可用源同时发起请求,各渠道独立记录
↳ 所有渠道均失败 → 结论标注"未获取到任何有效数据,无法判断"
↳ 多源都有数据 → 标注各渠道内容、以哪个为主
↳ 类似论文的"多来源相互印证",不是"一个不行换另一个"
当前已配置的数据源:
docs/TODO.md)v0.1.2 起不再自动清除 HTTP_PROXY 等环境变量。大陆用户若开启 VPN/代理,国内金融数据源应直连;collect / report 启动时若检测到代理,会提示将以下域名加入 Clash DIRECT 规则:
rules:
- DOMAIN-SUFFIX,eastmoney.com,DIRECT
- DOMAIN-SUFFIX,gtimg.cn,DIRECT
- DOMAIN-SUFFIX,baostock.com,DIRECT
- MATCH,PROXY
invest.py diagnose 输出 proxy_detected 与 clash_rules_hintno_proxy_session);Tushare 客户端在初始化时捕获代理配置,与 akshare 并行互不干扰详见 references/source-guide.md §代理 / VPN 问题。
所有数据采集和分析通过 invest.py 完成。Claude 根据用户意图构建对应命令:
# 采集并展示
uv run python skills/invest-A/scripts/invest.py collect 600176
# 生成研究报告(默认 HTML,自动保存到当前目录)
# 文件名格式: YYYY-MM-DD-hh-mm-ss-股票代码-股票名称.html
uv run python skills/invest-A/scripts/invest.py report 600176
# 指定输出目录
uv run python skills/invest-A/scripts/invest.py report 600176 --outdir=./reports/
# 生成 JSON / Markdown 格式(stdout)
uv run python skills/invest-A/scripts/invest.py report 600176 --emit=json
uv run python skills/invest-A/scripts/invest.py report 600176 --emit=md
# 深度模式(扩大K线范围至730日 + 行业/舆情分析)
uv run python skills/invest-A/scripts/invest.py collect 600176 --deep
uv run python skills/invest-A/scripts/invest.py report 600176 --deep
# 对比双标的财务数据
uv run python skills/invest-A/scripts/invest.py compare 600176 000858
# 检查各数据源可用性
uv run python skills/invest-A/scripts/invest.py diagnose
# 对比两次快照变化(需先 --store 至少两次)
uv run python skills/invest-A/scripts/invest.py diff 600176
uv run python skills/invest-A/scripts/invest.py diff 600176 --emit=json
# 查看历史采集记录
uv run python skills/invest-A/scripts/invest.py store list
# 保存本次采集到持久化存储
uv run python skills/invest-A/scripts/invest.py collect 600176 --store
注意:
invest.py在skills/invest-A/scripts/下。运行前确保终端在code/目录。 所有子命令支持--help查看参数详情。 ⚠️ 必须使用uv run python替代裸python3,确保依赖从.venv加载而非全局环境。
diagnose — 先检查数据源是否可用collect — 采集指定股票的六维度数据(基本信息、财务、行情、股东、资金流、日K线)report — 对采集结果进行分析并生成报告(Claude 手动分析 + 渲染)store — 将高质量采集结果持久化(可选)以下法则约束所有输出。违反即为 Bug。
LAW 1 — 每条分析论述必须引用数据来源。 LAW 2 — 报告使用统一研究流程结构:公司画像 → 经营质量 → 估值位置 → 资金与筹码 → 技术结构 → 事件催化 → 核心矛盾;每节末尾附待验证项。 LAW 3 — 区分"事实陈述"与"分析判断"。 LAW 4 — 风险提示出现首部和尾部。 LAW 5 — 并行取证,汇总为证。 采集器对所有可用源并行查询(非串行降级),各渠道独立记录。如果所有渠道均无法获取某一维度的有效数据,报告必须在该维度明确标注 "未获取到任何有效数据,无法判断",而非默认跳过或让读者自行推断。多源均有数据时,标注各渠道内容摘要及以哪个为主。 LAW 6 — 禁止买卖建议、目标价、仓位建议。 LAW 7 — 每个数字标注可审查的追溯路径(函数调用、查询语句、公告链接)。最终数据来源清单表必须包含检索关键字/API 调用参数列——仅写来源名称不满足 LAW 7。 LAW 8 — 每个维度末尾要求"🔍 待独立验证项"。 LAW 9 — 无数据源支撑的分析不输出。
| 版本 | 策略 | 缺点 |
|---|---|---|
| v0.2(旧) | 串行降级:Tushare → 失败 → akshare → 失败 → 腾讯 | 单源数据无法交叉验证 |
| v0.3(当前) | 多源并行:全部可用源同时采集,选最优为主数据,全部结果附于 _meta.all_sources | 需辨别各源差异 |
当 Tushare 和 akshare 对同一指标给出不同数值时,采集器保留所有值,由 Claude 在分析阶段判断并标注差异。
事实性陈述: "数值" [来源: {追溯路径} / {获取日期}]
✅ "营收 188.81 亿元 [来源: WebSearch / query: '中国巨石 600176 2025年报'
结果3(东方财富 finance.eastmoney.com/a/...) / 2026-06-10]"
✅ "当前 PE(TTM) 41.23x [来源: collector.collect_quote(symbol='600176') → tencent_finance / 2026-06-10]"
分析性判断: "判断" [依据: {数据来源}; 逻辑链: {推理}]
推测: "推测" [推测,待验证]
无数据(全部渠道失败): "未获取到任何有效数据,无法判断。[尝试了 {源1}、{源2},均失败]"
报告末尾必须包含一个"引用来源(References)"附录,类似论文的参考文献章节。表格列出每个渠道的独立结果,表头固定为:
| 维度 | 渠道 | 追溯路径 | 数据状态 |
✅ 有数据 — 该渠道成功获取数据❌ {错误原因} — 该渠道失败⏭️ 未尝试 — 该渠道因依赖缺失未执行| 维度 | 渠道 | 追溯路径 | 数据状态 |
|---|---|---|---|
| 日K线 | tushare.daily | pro.daily(ts_code='300328.SZ', start_date='20260501') | ✅ 有数据 |
| 日K线 | akshare.stock_zh_a_hist | ak.stock_zh_a_hist(symbol='300328', period='daily') | ❌ 连接被拒绝 |
| 日K线 | baostock.kline | bs.query_history_k_data_plus(...) | ✅ 有数据 |
| 行业动态 | WebSearch | query: "宜安科技 液态金属 2026" | ✅ 有数据 |
pro.{api_name}() + 调用参数(symbol、日期范围等)query: "..." 原字符串ak.{函数名}(参数...)qt.gtimg.cn + 请求 URLbs.query_history_k_data_plus(...)均线(MA)和 MACD 仅用于描述市场状态,不生成交易信号。
| 章节 | 分析要点 | 数据来源 | 引擎渲染 |
|---|---|---|---|
| 公司画像 | 公司概况、行业分类、上市时长 | collect.basic_info | ✅ 事实罗列 |
| 经营质量 | ROE趋势、EPS、扣非净利润 | collect.financials | ✅ 表格 + 趋势句 |
| 估值位置 | PE/PB历史分位、股息率 | collect.valuation + lib/valuation.py | ✅ 完整渲染 |
| 资金与筹码 | 股东结构、北向资金、行情 | collect.shareholders + northbound + quote | ✅ 事实罗列 |
| 技术结构 | 趋势/动量/波动/成交量/结构 | collect.kline → lib/technical.py | ✅ 完整渲染 |
| 事件催化 | 公告、新闻、行业动态 | Claude 分析(WebSearch 补充) | 占位 |
| 核心矛盾 | 当前最值得跟踪的问题 | Claude 根据数据卡片撰写 | 占位 + 数据卡片 |
⚠️ "事件催化"和"核心矛盾"两个章节无稳定 API 支撑,依赖 WebSearch 和 Claude 分析,须标注数据来源并提示不确定性。
⚠️ 项目根目录的
archive/是旧代码归档(v0.2 遗留),不被 Skill 引用。 不要从archive/中导入任何 Python 模块或引用配置。 该目录仅保留用于历史追溯。