원클릭으로
invest-a
A股个股调研 AI 学习技能 — 数据采集 + 学术级引用,产出带来源追溯的 Markdown 学习报告。这是一个学习工具,不是决策工具。
Codex 또는 Claude로 설치 이 Prompt를 복사해 Codex, Claude 또는 다른 어시스턴트에 붙여 넣으면 Skill 페이지를 검토하고 설치를 진행할 수 있습니다.
메뉴
A股个股调研 AI 学习技能 — 数据采集 + 学术级引用,产出带来源追溯的 Markdown 学习报告。这是一个学习工具,不是决策工具。
Codex 또는 Claude로 설치 이 Prompt를 복사해 Codex, Claude 또는 다른 어시스턴트에 붙여 넣으면 Skill 페이지를 검토하고 설치를 진행할 수 있습니다.
SOC 직업 분류 기준
| 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 模块或引用配置。 该目录仅保留用于历史追溯。