| name | write-report |
| description | 按照国泰君安五步法(信息差->逻辑差->预期差->催化剂->结论+风险闭环)撰写深度分析研报。Agent 自主规划、迭代搜索、分析输出。 |
| keywords | 研报, 分析报告, 五步法, 深度分析, 投资建议, 基本面, 研究报告, 撰写, 写报告, 个股深度, 季报速评, 行业比较, 事件驱动 |
write-report 技能指南
核心理念
研报撰写由 Agent 自主驱动,而非简单调用脚本。Agent 负责:
- 规划分析框架和信息需求
- 通过多轮迭代搜索收集素材(web-search 为主,本地 RAG 为辅)
- 按五步法框架组织分析
- 直接在对话中输出 Markdown 格式研报
国泰君安"五步法"框架
| 步骤 | 名称 | 核心问题 | 信息来源 |
|---|
| Step 1 | 信息差 | 市场还不知道/忽视了什么关键数据? | web-search + 本地RAG(如有) |
| Step 2 | 逻辑差 | 市场看到数据但推理错在哪里? | Agent 自主分析推理 |
| Step 3 | 预期差 | 一致预期 vs 实际偏离多大?可持续吗? | web-search(券商预期) + 财务指标 |
| Step 4 | 催化剂 | 什么事件/时间节点会触发价值重估? | web-search(news/policy) |
| Step 5 | 结论+风险闭环 | 投资建议 + 哪个假设失效会导致结论崩塌? | Agent 综合判断 |
五种研报场景
场景1: 个股深度报告
- 触发词: "深度分析/深度研报/五步法分析 + 某公司"
- 推荐搜索序列:
- "{公司名}最新业绩 营收利润" (type=stock)
- "{行业}市场格局 竞争分析" (type=general)
- "{公司名}竞品对比 市场份额" (type=stock)
- "{公司名}分析师评级 目标价" (type=stock)
- "{公司名}近期重大事件 催化剂" (type=news)
- 辅助: 本地RAG(如有该股票数据) + ratio_analysis.py
场景2: 季报速评
- 触发词: "季报/刚发了财报/业绩点评"
- 推荐搜索序列:
- "{公司名}最新季报业绩" (type=stock)
- "{公司名}业绩 市场预期 一致预期" (type=stock)
- "{公司名}管理层指引 展望" (type=stock)
- 辅助: 本地RAG优先(如有最新季报PDF) + cross_period.py(跨期对比)
场景3: 行业比较
- 触发词: "对比/比较/谁更好/哪个值得买"
- 推荐搜索序列:
- 各公司最新业绩 (type=stock, 多轮)
- "{行业}估值对比 PE PB" (type=general)
- "{行业}发展趋势 增长前景" (type=general)
- 辅助: peer_compare.py(横向对比财务指标)
场景4: 事件驱动
- 触发词: "政策/新闻/突发事件/听说..."
- 推荐搜索序列:
- 事件本身的详细内容 (type=policy/news)
- 受益/受损公司筛选 (type=stock)
- 类似历史事件的市场反应 (type=general)
- 特点: web-search 为绝对主力
场景5: 财务异常挖掘
- 触发词: "异常/风险/扫描/现金流有问题"
- 推荐搜索序列:
- "{公司名}财务风险 异常" (type=stock)
- "{公司名}审计意见 关注事项" (type=stock)
- 辅助: ratio_analysis.py(定量检测) + 本地RAG(附注深挖)
可用脚本(辅助工具)
| 脚本 | 功能 | 使用场景 |
|---|
scripts/report_generator.py | 将分析内容格式化并保存为 Markdown 文件 | 用户要求保存研报文件时使用 |
scripts/five_step_analysis.py | 调用LLM做五步法分析(备用) | 仅在 Agent 无法自主完成分析时作为备选 |
scripts/prompts.py | Prompt 模板模块(不直接执行) | - |
report_generator.py 使用方式
当用户明确要求保存研报到文件时:
python skills/write-report/scripts/report_generator.py --analysis_file output/分析结果.json --output_dir output/reports/
工作流程
标准流程(Agent 自主驱动):
- 规划: 识别分析对象和场景类型,列出五步法每一步的信息需求
- 搜索: 通过 web-search 多轮迭代搜索,每轮搜索后分析结果并决定是否追加搜索
- 补充: 按需使用本地 RAG / 财务指标 / 行情数据补充
- 分析: 按五步法框架组织分析,直接在对话中输出 Markdown 研报
- 保存(可选): 如用户要求,使用 report_generator.py 保存文件
关键原则:
- 搜索发现新线索时,主动追加搜索(迭代式研究的核心)
- 每个五步法步骤都要有具体数据支撑,不能空泛
- 结论必须包含风险闭环: "如果XX假设失效,结论将被推翻"
示例对话
示例1: 个股深度分析
用户: "帮我写一份宁德时代的深度分析研报"
Agent 执行过程:
- 识别场景: 个股深度报告
- 第一轮搜索: "宁德时代2025年业绩 营收利润"
-> 发现: 储能业务增长超预期,动力电池市占率变化
- 第二轮搜索: "宁德时代储能业务 海外订单 中东"
-> 发现: 中东/澳洲大单,储能毛利率高于动力电池
- 第三轮搜索: "宁德时代 分析师一致预期 目标价"
-> 量化预期差
- 第四轮搜索: "宁德时代 固态电池 技术路线 催化剂"
-> 梳理催化剂时间轴
- 直接在对话中输出完整五步法研报(Markdown 格式)
示例2: 事件驱动分析
用户: "最近半导体大基金三期消息,有什么投资机会?"
Agent 执行过程:
- 识别场景: 事件驱动
- 搜索事件: "半导体大基金三期 最新进展" (type=policy)
- 搜索受益标的: "大基金三期 投资方向 受益公司" (type=stock)
- 追加搜索: 具体受益公司的业绩和估值
- 输出: 事件解读 + 受益标的排序 + 催化剂时间轴
示例3: 季报速评
用户: "中芯国际刚发了一季报,帮我点评一下"
Agent 执行过程:
- 识别场景: 季报速评
- 先查本地RAG(data/vector_store/ 有中芯国际数据)获取精确财务数据
- 搜索市场预期: "中芯国际一季报 市场预期" (type=stock)
- 跨期对比: cross_period.py 看环比/同比变化
- 输出: 聚焦预期差的快速点评