| name | ivr-base |
| description | 投价报告盈利预测与估值章节的共享基座,定义模型读取、样本使用、信息源、原创性查重、输出铁律、路径约定与共享工具。不独立触发,由 ivr-chapter-earnings 和 ivr-chapter-valuation 隐式引用。 |
投价报告:共享基座规范
本文件是投价报告「盈利预测」与「估值分析」两个章节 skill 的共享基座。
不要把它当成独立 skill 调用——它由 ivr-chapter-earnings 和 ivr-chapter-valuation 隐式引用。
1. 任务路由
| 用户意图 | 使用的 Skill | 关键触发词 |
|---|
| 写盈利预测 | ivr-chapter-earnings | 盈利预测 / 营收拆分 / 量价拆分 / 毛利率预测 / 费用率预测 |
| 写估值分析 | ivr-chapter-valuation | 估值 / DCF / FCFF / 相对估值 / 绝对估值 / 可比公司 / 敏感性分析 |
| 写完整投价报告(盈利预测+估值) | 串行调用 盈利预测 → 估值分析 → assemble | 投价报告 / 投资价值研究报告 |
2. 输入契约
每个章节 skill 的输入统一为:
| 输入 | 来源 | 说明 |
|---|
<模型.xlsx> | 用户上传 | 投价报告体系标准财务模型,必选 |
<语料目录> | 用户上传 | 招股书/问询函/落实函等 PDF,可选 |
<输出目录> | 系统约定 | 各 skill 的 _out/ 目录 |
不依赖任何硬编码的本地路径。所有脚本均要求通过命令行参数传入模型路径。
3. 样本使用与信息源铁律(两个章节共用)
3.1 样本只是质量标杆,严禁抄袭
- 参考样本只用于学习“合格报告的结构、深度、该引哪类依据”,不得照搬句子、段落、措辞或行文结构。
- 禁止以样本为骨架逐段改写。正确做法是:先基于模型 + 用户语料独立列出提纲和论证链,再撰写正文;样本只在动笔前用于把握深度,写作时不逐段对照。
- 参考范本统一称“托伦斯报告”等中性名称,禁止出现具体券商研报名。
3.2 信息源只来自用户语料
- 报告事实、行业数据、公司业务口径、可比公司数据等,只能来自用户提供的语料输入:财务模型、招股说明书/招股意向书、审核问询回复、落实函等。
- 样本报告中出现但未在用户语料独立核到的数据,不得使用;需要但缺来源的项目进入
*_待补底稿.md。
- 引用一手事实时尽量转述,不逐字摘录长句;正文保持原创表达。
3.3 成稿原创性检查
交付前对成稿运行原创性检查:
python ../ivr-base/tools/check_originality.py <成稿.md> <样本文本.txt>
样本文本.txt 由使用者从参考样本 PDF/Markdown 自行抽取;本工具只用于防抄袭检查,不作为信息源。
- B 类(含叙述性词组、读起来像句子的重合)必须为 0,有则逐句改写。
- A 类(数字、占比、法定产品口径、产品名称)可接受;同公司同模型同招股书口径下这些内容本就应一致。
4. 模型只读铁律
- 模型文件只读,绝不使用 openpyxl 存盘修改模型。
- 取值统一用
data_only=True 读取缓存值(含 Wind/iFinD 公式计算结果)。
- 缓存为空时登记到 warnings,由上层决定是否提示用户重算。
5. 输出铁律
5.1 报告可直接挂网
- 报告正文(
*_报告.md)必须专业、通顺、终稿级。
- 正文严禁出现任何
【待确认】/【待资料确认】/【依据待补】/“用户未提供”/“模型未给出”/“暂无公开数据支撑”等过程性标注。
- 以模型数据底稿为既定事实正常成稿;缺底稿来源不在正文留痕。
5.2 报告与待补分离
- 凡用到但在语料中检索不到来源/口径的假设,写进单独的
*_待补底稿.md。
- 待补清单列明:章节 + 假设项 + 缺什么(来源/口径)。
- 待补清单供后续人工补底稿,不进报告正文。
5.3 分析师口吻
- 把模型测算结果当作“我们的预测/测算”如实叙述,禁止暴露 Excel 建模过程。
- 禁用“模型预测”“模型假设”“根据公司财务模型”等字眼。
- 用“我们预计”“我们认为”“我们测算”“我们判断”。
- 正文直接给观点与结论,避免“需要单独说明”“从……看”“按……口径,该板块”“我们倾向于认为”等思考过程表述。
5.4 数字、单位与精度
- 所有数字取自模型或用户语料,不杜撰。
- 收入、利润、估值类结论性金额优先使用“亿元”,保留两位小数。
- 量价驱动明细表可保留件/元/百万元等原生单位,表头必须标明。
- 倍数、百分比、毛利率、费用率等保留两位小数。
- 为 0 或极小的调整项不写入正文,避免“少数股东权益 0 亿元”等累赘表达。
5.5 内容基准
- 参考报告写到的必要章节、表格、口径,本报告应尽量覆盖;模型无对应数据的项进入待补清单,不编造。
- 两个章节的正文必须能独立成章,也能通过 assemble 拼成完整投价报告。
6. 共享工具说明
6.1 模型适配层 lib/model_reader.py
投价报告模型的统一数据读取层,两个章节 skill 共用。
职责:
- 模板 diff:拿公司模型对比标准模板,分类 sheet 为「标准」或「自定义」。
- 标准 sheet:按
config/cell_map.yaml 取数(scalars/series/blocks),做标签校验。
- 自定义 sheet:结构化解析「收入拆分」为量×价驱动树、「可比公司」为结构化数据、「风险因子」为管线风险表。
- 利润表指标:动态检测年份列,提供 PS/PE 所需的营业收入/归母净利润。
用法:
from model_reader import ModelReader
rd = ModelReader("公司财务模型.xlsx")
val = rd.read_valuation()
rev = rd.parse_revenue_breakdown()
6.2 语料检索层 lib/pdf_index.py
把上传的 PDF(招股书/问询函等)抽成文本+页码索引,供 skill 按驱动关键词检索原文写依据。
from pdf_index import PdfIndex
idx = PdfIndex(["招股书.pdf"])
hits = idx.search("关键词", k=3)
6.3 Markdown→Word 渲染器 lib/md_to_docx.py
把报告 Markdown 渲染成 Word(.docx),支持标题/表格/加粗/引注,中文宋体。
from md_to_docx import md_to_docx
md_to_docx("报告.md", "报告.docx", title="XX公司投资价值研究报告")
6.4 原创性检查 tools/check_originality.py
对成稿和样本文本做句子级重合检测,区分可接受的 A 类共享事实和必须改写的 B 类叙述重合。
python ../ivr-base/tools/check_originality.py <成稿.md> <样本文本.txt>
6.5 两章拼装器 scripts/assemble_report.py
将盈利预测 + 估值两章拼装为完整报告(.md + .docx),自动注入表格、生成章末财务预测表。
python scripts/assemble_report.py <模型.xlsx> <盈利预测报告.md> <估值报告.md> <输出.docx>
7. 路径约定
| 路径类型 | 格式 | 说明 |
|---|
| 财务模型 | 用户上传的 .xlsx 文件 | 投价报告体系 |
| PDF 语料 | 用户上传的 .pdf 文件 | 招股书/问询函等 |
| 章节输出 | 各 skill 的 _out/ 目录 | Markdown + JSON |
| 最终报告 | 用户指定路径 | .md + .docx |
8. 标准 sheet 映射
标准 sheet(估值/利润表/同业分析/财务基础数据等)的单元格地址映射定义在 config/cell_map.yaml。
模板升级时只需修改 yaml 文件,model_reader.py 不需要改动。
自定义 sheet(收入拆分/可比公司/风险因子/费用预测)由 reader 结构化解析,不依赖固定地址。
9. 换公司适配
零代码修改——只要模型遵循投价报告标准 sheet 结构:
- 用户上传新公司的
<公司名>财务模型.xlsx。
- 运行对应章节 skill 的引擎脚本。
- 引擎自动检测年份/列布局/业务线/驱动行。
- AI 按章节 SKILL.md 和本基座铁律写正文。