Stock Info Organizer - 股票信息整理
Overview
对用户指定的一只或多只股票进行全方位信息整理,生成包含多维度数据的多 Sheet Excel 报告。核心能力包括:基础行情采集、财务数据整理、公司基本面梳理、近期新闻与研报汇总,以及收入构成与竞品对标分析(拆解各盈利模块收入,识别各模块主要竞争对手并采集其对标收入数据)。
Workflow
Step 1: Parse Input
- 接收用户输入的股票代码或名称(支持 A 股、港股、美股)。
- 对每只股票进行标准化识别:
- A 股:6 位代码(如 600519、000858)
- 港股:5 位代码(如 00700)
- 美股:字母代码(如 AAPL、TSLA) - 若用户给出的是名称而非代码,先通过搜索确定对应的股票代码和上市市场。
- 确认股票清单后进入数据采集阶段。
Step 2: Data Collection
按以下优先级采集数据,逐层降级:
- Connector 优先:检查当前已连接的金融数据 Connector(如东方财富妙想 MCP、Wind 金融数据、腾讯自选股、PandaData 等)。若已连接,优先通过 Connector 获取结构化数据。
- 网页搜索降级:若无可用 Connector 或 Connector 未覆盖所需字段,使用 WebSearch / WebFetch 从以下公开来源获取:
- 东方财富(quote.eastmoney.com, emweb.eastmoney.com)
- 同花顺(stockpage.10jqka.com.cn)
- 巨潮资讯网(cninfo.com.cn)—— 公告与年报
- 雪球(xueqiu.com)—— 讨论与研报摘要
- 新浪财经(finance.sina.com.cn) - 参考 references/data_sources.md 了解各数据源的字段覆盖范围和 URL 模式。
需采集的数据维度:
| 维度 | 字段 |
|---|---|
| 基础行情 | 当前价格、涨跌幅、成交量、成交额、总市值、流通市值、PE(TTM)、PB |
| 财务数据 | 营业收入、归母净利润、毛利率、净利率、ROE、资产负债率、营收同比、净利润同比(最近报告期 + 同比) |
| 公司基本面 | 所属板块/概念、主营业务描述、行业地位、实际控制人、注册地 |
| 新闻与研报 | 近期重要新闻(3-5条)、近期公告(3-5条)、卖方研报观点与目标价(2-3条)、机构评级汇总 |
| 收入构成 | 见 Step 3 |
Step 3: Revenue Composition & Competitor Analysis
此为本 Skill 的核心差异化能力,需重点执行。
3.1 拆解盈利模块
- 从年报/半年报/季报中获取营业收入按产品/业务板块拆分数据。
- 数据来源优先级:年报附注 > 业绩说明会 > 券商研报 > 公开新闻。
- 对每个盈利模块记录:
- 模块名称
- 报告期营业收入(金额 + 占比)
- 同比增速
- 毛利率(如可获取)
3.2 识别各模块竞争对手
- 对每个盈利模块,识别 2-5 个主要竞争对手。
- 竞争对手识别方法:
- 年报中披露的同业公司
- 行业研报中的竞争格局分析
- 同板块/同概念上市公司 - 对每个竞争对手,采集其在同一业务模块的营业收入数据。
- 数据来源:竞争对手年报/半年报中的分部收入数据。若对手为多元化公司,需拆出对应模块收入而非使用总收入。
3.3 对标分析
- 计算目标公司在各模块的市场份额估算(模块收入 / (目标 + 所有已识别对手的模块收入之和))。
- 标注各模块的竞争态势标签:领先 / 跟随 / 追赶 / 落后。
- 参考 references/competitor_analysis.md 了解详细的竞品识别和对标方法论。
Step 4: Generate Excel Report
使用 scripts/generate_excel.py 生成多 Sheet Excel 报告。
执行方式
# 将采集到的数据写入 JSON 文件,再调用脚本生成 Excel
C:\Users\32410\.workbuddy\binaries\python\envs\default\Scripts\python.exe scripts/generate_excel.py --input <data.json> --output <output.xlsx>
前置条件
确保 openpyxl 已安装:
C:\Users\32410\.workbuddy\binaries\python\envs\default\Scripts\pip.exe install openpyxl
数据 JSON 格式
采集完所有数据后,将数据整理为以下 JSON 结构并传给脚本:
{
"stocks": [
{
"code": "600519",
"name": "贵州茅台",
"market": "A股",
"quote": {
"price": 1680.00,
"change_pct": 1.23,
"volume": "2.1万手",
"turnover": "35.2亿",
"market_cap": "2.1万亿",
"circulating_market_cap": "2.1万亿",
"pe_ttm": 25.3,
"pb": 7.8
},
"financials": {
"report_period": "2024Q3",
"revenue": "1196.16亿",
"net_profit": "608.28亿",
"gross_margin": "91.5%",
"net_margin": "50.9%",
"roe": "29.8%",
"debt_ratio": "17.2%",
"revenue_yoy": "15.3%",
"profit_yoy": "13.2%"
},
"fundamentals": {
"sector": "白酒",
"concepts": "消费升级/核心资产/MSCI",
"main_business": "茅台酒及系列酒的生产与销售",
"industry_position": "高端白酒龙头",
"controller": "中国贵州茅台酒厂(集团)有限责任公司",
"registered_address": "贵州省仁怀市"
},
"news": [
{"date": "2025-01-15", "title": "xxx", "source": "xxx"}
],
"announcements": [
{"date": "2025-01-10", "title": "xxx", "type": "业绩预告"}
],
"research_reports": [
{"date": "2025-01-12", "institution": "中信证券", "rating": "买入", "target_price": "1850", "viewpoint": "xxx"}
],
"revenue_composition": [
{
"module": "茅台酒",
"revenue": "1010.92亿",
"ratio": "84.5%",
"yoy": "15.8%",
"gross_margin": "93.2%",
"competitors": [
{"name": "五粮液", "code": "000858", "module_revenue": "约600亿", "note": "浓香型白酒龙头"},
{"name": "泸州老窖", "code": "000568", "module_revenue": "约200亿", "note": "国窖1573为主力"}
],
"market_position": "领先",
"market_share_estimate": "约55%"
}
]
}
],
"generated_at": "2025-08-13T00:00:00"
}
Excel 输出 Sheet 结构
| Sheet 名 | 内容 |
|---|---|
| 概览 | 所有股票的基础行情一览表(代码/名称/价格/涨跌幅/市值/PE/PB) |
| 财务数据 | 每只股票一行,列出所有财务指标 |
| 公司基本面 | 主营业务/板块/行业地位/实控人等 |
| 收入构成与竞品 | 核心 Sheet:每行一个盈利模块,列出收入/占比/增速/毛利率/竞争对手/对手收入/市场份额/竞争态势 |
| 新闻与研报 | 近期新闻/公告/研报汇总,按日期倒序 |
Step 5: Deliver
- 将生成的 Excel 文件保存到工作目录下。
- 通过 present_files 展示给用户。
- 在回复中简要说明:
- 整理了哪些股票
- 各股票的收入构成亮点
- 竞品对标的发现摘要
- 数据获取受限的字段(如有)
Important Notes
- 数据时效性:行情数据存在延迟,需在报告中标注数据采集时间。
- 收入拆分难点:部分公司年报不披露分部收入,此时需从研报、业绩说明会纪要等渠道推断,并在报告中标注"估算"。
- 竞品模块匹配:竞争对手的业务分类口径可能与目标公司不一致,需人工判断对应关系,标注口径差异。
- 多只股票批处理:当用户一次给出多只股票时,概览页汇总所有股票,其余 Sheet 按股票分行。收入构成 Sheet 中用"所属股票"列区分。
- 港股/美股适配:财务数据字段名称可能因会计准则不同而异(如港股用"营业额",美股用"Revenue"),统一映射为中文标准字段名。