大智 (Dazhi) — 买方财报分析
完全自建的买方财报分析系统。不依赖 dayu-agent / dayu-cli / 外部 LLM API。 所有 LLM 任务由 WorkBuddy 自身模型直接完成,无需外部 API 调用、无需 API Key。
与 dayu-agent 的关系:本 skill 蒸馏了 dayu-agent 的完整能力(财报下载、投研问答、报告自动生成、多轮交互), 但所有功能使用 WorkBuddy 自身能力独立完成,不调用外部大模型 API。
执行任务时必须直接执行,不要仅给出命令示例让用户自行执行。
环境要求(已完成)
- 工作区:
C:\Users\gary\dayu-workspace - Python: 3.11(
C:\Users\gary\AppData\Local\Programs\Python\Python311\python.exe) - pandoc: 3.9.0.2(渲染 PDF/Word/HTML)
- Python 包: edgartools, pdfplumber, requests, bs4, lxml, rich, tenacity, tqdm, markdown
- 初始化已完成,无需再次执行 init
核心工作流
1. 财报下载(调用 dazhi.py,无需 LLM)
# 美股(通过 SEC EDGAR)
python C:\Users\gary\.workbuddy\skills\dazhi\scripts\dazhi.py download --ticker AAPL
python C:\Users\gary\.workbuddy\skills\dazhi\scripts\dazhi.py download --ticker AAPL --forms 10K 10Q --start 2016 --end 2026
# A股(通过 cninfo 巨潮信息网)
python C:\Users\gary\.workbuddy\skills\dazhi\scripts\dazhi.py download --ticker 600519 --forms FY H1 Q1 Q3
# 港股(通过 HKEX 披露易)
python C:\Users\gary\.workbuddy\skills\dazhi\scripts\dazhi.py download --ticker 00700 --forms FY H1 Q1 Q3
# 下载所有类型报告(默认行为)
python C:\Users\gary\.workbuddy\skills\dazhi\scripts\dazhi.py download --ticker 00700
# 强制覆盖
python C:\Users\gary\.workbuddy\skills\dazhi\scripts\dazhi.py download --ticker AAPL --overwrite
默认下载规则:
- 如果不指定
--forms参数,默认下载所有类型报告:- 美股:10K(年报)、10Q(季报)
- A股/港股:FY(年报)、H1(中期报告)、Q1/Q3(季度报告)
- 建议明确指定
--forms参数,避免下载不必要的数据
注意:下载美股财报需设置环境变量 EDGAR_IDENTITY(如有效邮箱地址),
否则会报 User-Agent identity is not set 错误。
2. 投研问答(助理直接完成,无需外部模型)
由助理直接读取本地财报数据,用 WorkBuddy 自身能力回答问题。
(蒸馏自 dayu-agent 的 dayu-cli prompt 能力)
执行步骤:
- 读取
C:\Users\gary\dayu-workspace\portfolio\{TICKER}\processed\*.txt(全部或部分) - 根据问题进行分析,区分事实与判断
- 输出回答,末尾必须包含
### 证据与出处 - 不输出目标价、估值区间、仓位建议、买卖建议
用户问题:{question}
[基于财报数据的分析内容]
### 证据与出处
- SEC EDGAR | Form 10-K | Filed 2025-10-31 | Accession XXXX | 章节路径
- ...
多轮交互对话(蒸馏自 dayu-agent 的 dayu-cli interactive 能力):
用户:@skill:dazhi 分析腾讯控股的财报
助理:
1. 检查财报数据是否已下载(如果没有,先执行下载)
2. 读取 `C:\Users\gary\dayu-workspace\portfolio\00700\processed\*.txt`
3. 提取关键财务数据
4. 回答用户问题
5. 等待用户下一个问题(多轮对话)
用户:它的现金流情况如何?
助理:
1. 从已读取的财报数据中提取现金流信息
2. 分析经营性现金流、自由现金流、现金净额等指标
3. 回答用户问题
4. 等待用户下一个问题(多轮对话)
交互式对话的最佳实践:
- 保持对话上下文(记住之前讨论的内容)
- 引用之前的分析结果(避免重复读取数据)
- 主动提供相关建议(如"您可能还想知道...")
3. 自动写作(助理直接完成,无需外部模型)
由助理直接读取财报数据,用 WorkBuddy 自身能力撰写报告章节。
(蒸馏自 dayu-agent 的 dayu-cli write 能力)
重要:本 skill 严格按照 dayu-agent 的报告结构(章节 0-10)和分析框架进行写作, 但所有 LLM 任务由 WorkBuddy 自身完成(不调用外部 API)。
执行步骤:
- 读取
C:\Users\gary\dayu-workspace\portfolio\{TICKER}\processed\*.txt - 执行 infer:判断公司业务类型与关键约束,结果存入
manifest.json的infer_result - 逐章撰写:第 1-9 章 → 第 10 章 → 第 0 章 → 来源清单
- 每章保存至
C:\Users\gary\dayu-workspace\draft\{TICKER}\chapters\ch{id}_{title}.md - 更新
C:\Users\gary\dayu-workspace\draft\{TICKER}\manifest.json - 全部完成后合并为
C:\Users\gary\dayu-workspace\draft\{TICKER}\{TICKER}_qual_report.md
写作流程主线:infer → 第 1-9 章 → 第 10 章(研究决策)→ 第 0 章(投资要点)→ 来源清单
章节列表(严格按照 dayu-agent 的结构):
| ID | 标题 | 类型 | |----|------|------| | 1 | 公司做的是什么生意 | body | | 2 | 行业格局和竞争态势 | body | | 3 | 商业模式与盈利驱动 | body | | 4 | 管理层与治理 | body | | 5 | 财务分析 | body | | 6 | 增长与增长驱动 | body | | 7 | 风险与不确定性 | body | | 8 | 关键度量与经营指标 | body | | 9 | ESG 与可持续性 | body | | 10 | 是否值得继续深研与待验证问题 | special | | 0 | 投资要点概览 | special | | sources | 来源清单 | special |
调用示例:
用户:@skill:dazhi 撰写腾讯控股的买方分析报告
助理:
1. 检查财报数据是否已下载(如果没有,先执行下载)
2. 读取 `C:\Users\gary\dayu-workspace\portfolio\00700\processed\*.txt`
3. 执行 infer(判断公司业务类型与关键约束)
4. 逐章撰写(第 1-9 章 → 第 10 章 → 第 0 章 → 来源清单)
5. 每章保存至 `draft\00700\chapters\ch{id}_{title}.md`
6. 更新 `draft\00700\manifest.json`
7. 合并为 `draft\00700\00700_qual_report.md`
8. 使用 pandoc 或 Python 脚本转换为 HTML
9. 使用 `preview_url` 工具展示报告
4. 简化版报告撰写(助理直接完成,无需外部模型)
如果用户只需要简化的投资分析报告(而非完整的买方分析报告),可以使用此工作流。
执行步骤:
- 下载财报:如果
C:\Users\gary\dayu-workspace\portfolio\{TICKER}\processed\*.txt不存在或不完整,先执行下载 - 数据分析:读取
processed\*.txt文件,提取关键财务数据(收入、毛利、净利润、现金流等) - 撰写报告:按照标准投研报告结构撰写 Markdown 格式报告
- 保存报告:保存到
C:\Users\gary\dayu-workspace\portfolio\{TICKER}\{TICKER}_投资分析报告_YYYY.md - 渲染为 Web:使用 pandoc 或 Python markdown 库将 Markdown 报告转换为 HTML 网页格式
简化版报告结构:
# {公司名称}({股票代码})投资分析报告
## {年份}年度财报分析
## 一、执行摘要
## 二、公司概况
## 三、财务分析
### 3.1 损益表分析
### 3.2 分部业务分析
### 3.3 资产负债表分析
### 3.4 现金流量表分析
## 四、业务分析
### 4.1 核心竞争优势
### 4.2 增长驱动因素
### 4.3 战略举措
## 五、风险因素
## 六、估值分析
## 七、投资建议
## 八、结论
## 附录:财务数据摘要
调用示例:
用户:@skill:dazhi 撰写腾讯控股分析报告
助理:
1. 检查财报数据是否已下载(如果没有,先执行下载)
2. 读取 `C:\Users\gary\dayu-workspace\portfolio\00700\processed\*.txt`
3. 提取关键财务数据
4. 撰写 Markdown 格式报告(简化版结构)
5. 保存为 `00700_投资分析报告_2024.md`
6. 使用 pandoc 或 Python 脚本转换为 HTML
7. 使用 `preview_url` 工具展示报告
5. 报告渲染(调用 dazhi.py 或助理直接完成)
# 使用 dazhi.py 渲染
python C:\Users\gary\.workbuddy\skills\dazhi\scripts\dazhi.py render "C:\Users\gary\dayu-workspace\portfolio\00700\00700_投资分析报告_2024.md" -o report.docx
python C:\Users\gary\.workbuddy\skills\dazhi\scripts\dazhi.py render "C:\Users\gary\dayu-workspace\portfolio\00700\00700_投资分析报告_2024.md" -o report.html
python C:\Users\gary\.workbuddy\skills\dazhi\scripts\dazhi.py render "C:\Users\gary\dayu-workspace\portfolio\00700\00700_投资分析报告_2024.md" -o report.pdf
# 使用 Python markdown 库渲染为 HTML(推荐)
python C:\Users\gary\.workbuddy\skills\dazhi\scripts\convert_md_to_html.py "input.md" "output.html"
推荐使用 Python markdown 库渲染 HTML,因为:
- 不依赖 pandoc 可执行文件(避免 pandoc 路径/版本问题)
- 可以添加自定义 CSS 样式(响应式设计、表格美化等)
- 生成独立的 HTML 文件(self-contained),可直接在浏览器中打开
6. 上传本地财报(调用 dazhi.py,无需 LLM)
python C:\Users\gary\.workbuddy\skills\dazhi\scripts\dazhi.py upload --ticker 600519 --files ./贵州茅台2024年报.pdf --fiscal-year 2024 --fiscal-period FY --company-name 贵州茅台
7. 查看写作状态(调用 dazhi.py 或助理直接读取)
python C:\Users\gary\.workbuddy\skills\dazhi\scripts\dazhi.py status --ticker AAPL
助理也可直接读取 C:\Users\gary\dayu-workspace\draft\{TICKER}\manifest.json 查看进度。
股票代码格式
| 市场 | 格式 | 示例 |
|------|------|------|
| 美股 | 字母代码 | AAPL, MSFT, GOOGL |
| A股 | 6 位数字 | 600519(贵州茅台), 000858(五粮液) |
| 港股 | 5 位数字 | 00700(腾讯控股), 00941(中国移动) |
关键约束
- 不输出目标价、估值区间、仓位建议、买卖建议
- 不伪造证据不足的内容,用占位符标记缺口
- 区分事实与分析:主观判断须用自然语言标注
- 前瞻表述用"预计/预期/可能/指引"等,不写成当前事实
- 证据可追溯:回答末尾必须包含"证据与出处"
- ticker 传最自然写法,不手工穷举变体
占位符格式
【占位符】(缺口:{缺失信息} | 需要:{来源类型} | 已检索范围:{范围} | 下一步:{建议路径})
证据与出处格式
- SEC filings:
SEC EDGAR | Form XX | Filed YYYY-MM-DD | Accession XXXX | 章节路径 - 港股/A股:
主体 | 报告类型 | 报告期,公告日期 | 章节路径 - 网页:
机构/网站 | 标题 | 日期 | URL:{link}
故障排除
| 错误 | 原因 | 解决 |
|------|------|------|
| edgartools 限流 | SEC EDGAR 请求频率过高 | 脚本已内置速率限制,等待重试即可 |
| PDF 解析不完整 | PDF 扫描件/图片型 | 尝试 --overwrite 重跑,或手动提供文本版 |
| pandoc 渲染失败 | pandoc 不在 PATH | 确认 C:\Users\gary\AppData\Local\pandoc-bin\pandoc-3.9.0.2 在 PATH |
| A股/港股下载失败 | 数据源反爬 | 减少请求频率,或手动下载后用 upload 命令 |
| EDGAR_IDENTITY 未设置 | 未设置环境变量 | 执行前先设置:$env:EDGAR_IDENTITY="your-email@example.com" |
| pandoc.exe 无法运行 | pandoc 可执行文件损坏或架构不匹配 | 使用 Python markdown 库替代 pandoc 渲染 HTML |
工作区目录结构
C:\Users\gary\dayu-workspace\
├── config/
│ └── prompts/ # 写作模板(dazhi 自带)
├── portfolio/ # 每个 ticker 的财报与材料
│ └── {TICKER}/
│ ├── meta.json # 公司元数据
│ ├── filings/ # 原始财报文件
│ ├── materials/ # 补充材料
│ └── processed/ # 预处理后文本数据(.txt)
├── draft/ # write 输出目录
│ └── {TICKER}/
│ ├── manifest.json # 章节状态
│ ├── chapters/ # 各章 .md
│ └── audits/ # 审计 JSON
├── output/ # 渲染输出目录
└── scripts/ # dazhi 脚本
├── dazhi.py # 主程序
└── convert_md_to_html.py # Markdown 转 HTML 工具
与 dayu-agent 的对比
| 功能 | dayu-agent | dazhi(本 skill) |
|------|------------|-------------------|
| 财报下载 | ✅ dayu-cli download | ✅ dazhi.py download |
| 投研问答 | ✅ dayu-cli prompt(使用外部 LLM API) | ✅ 助理直接完成(WorkBuddy 自身) |
| 多轮交互对话 | ✅ dayu-cli interactive(使用外部 LLM API) | ✅ 助理直接完成(WorkBuddy 自身多轮对话) |
| 生成分析报告 | ✅ dayu-cli write(使用外部 LLM API) | ✅ 助理直接完成(WorkBuddy 自身) |
| 报告结构 | 章节 0-10 | 章节 0-10(严格遵循)+ 简化版结构 |
| 外部 LLM API | 需要(OpenRouter) | 不需要(WorkBuddy 自身) |
| 配置复杂度 | 高(需要 API Key) | 低(无需配置) |
进阶参考
- 分析规则与写作规范 → references/analysis_rules.md
- 工作区详细说明 → references/configuration.md
更新日志
2026-05-27
- 蒸馏 dayu-agent 完整能力:
- 添加投研问答能力(对应
dayu-cli prompt) - 添加多轮交互对话能力(对应
dayu-cli interactive) - 添加自动写作能力(对应
dayu-cli write)
- 添加投研问答能力(对应
- 严格遵循 dayu-agent 的报告结构:
- 章节 0-10 结构(infer → 第 1-9 章 → 第 10 章 → 第 0 章 → 来源清单)
- 章节类型(body / special)
- 所有功能使用 WorkBuddy 自身能力:
- 不调用外部 LLM API
- 无需 API Key 配置
- 无需 dayu-agent / dayu-cli
- 添加简化版报告撰写功能:
- 如果用户只需要简化的投资分析报告,可以使用此工作流
- 报告结构:执行摘要 → 公司概况 → 财务分析 → 业务分析 → 风险因素 → 估值分析 → 投资建议 → 结论
- 优化工作流:下载 → 分析 → 撰写 → 渲染 → 预览,全流程自动化
微信扫一扫