FinanceHarness 单标的股权深度研究(Equity Deep Dive):从公开叙事到 DCF、可比公司与分析师共识的完整 Agent 工作流
【免费下载链接】google-researchGoogle Research项目地址: https://gitcode.com/gh_mirrors/go/google-research
导读
equity-deep-dive是 FinanceHarness 内置的五个 SKILL 之一,它把一次完整的单标的股权研究工作流编排成了可复现、可审计的 Agent 流程:先阅读公开信息建立"叙事",再用基本面、健康指标、DCF 内在价值、可比公司交叉验证和分析师共识四类工具逐层"落地"每个结论。读完本文,你将掌握该 SKILL 的完整工作流(七步法)、其依赖的 9 个工具链及其底层实现位置,以及如何理解"工具数据、模型判断、结论可追溯"的设计原则,并可直接套用于 NVDA、AAPL 等任意单标的的深度研究任务。
SKILL 定位:一个"工具编排型"研究配方
FinanceHarness 是一个模型无关(model-agnostic)的金融深度研究 Agent,其核心思路是"web 研究(search → visit → cite)+ 股权研究切片(fundamentals、comps、DCF、WACC)",入口为main.py(见 finance_harness/README.md)。
在 FinanceHarness 中,SKILL 是一个SKILL.md文件(YAML frontmatter + Markdown 正文),作用是编排既有工具,而非新增代码——把文件放进技能目录即被自动发现,无需任何代码改动(README 原文)。equity-deep-dive正是这一机制的典型样例,其定义文件位于:
- 技能本体:finance_harness/financeharness/skills/equity-deep-dive/SKILL.md
frontmatter 的解析逻辑在 finance_harness/financeharness/runtime/frontmatter.py:一个合法 SKILL.md 必须以---开头的 YAML 块开头,否则抛出FrontmatterError。equity-deep-dive的 frontmatter 声明了以下元数据:
| 字段 | 值 | 作用 |
|---|---|---|
name | equity-deep-dive | 技能唯一标识,供load_skill检索 |
description | 单标的深度研究完整描述 | 供模型判断"何时该调用本技能" |
tags | [equity, deep-dive, valuation, dcf, comps, consensus] | 技能分类与检索标签 |
requires_tools | 9 个工具名(见下节) | 声明技能运行所需的全部工具,运行前校验依赖 |
同仓库下还提供ticker-snapshot、dcf-valuation、relative-valuation、consensus-check四个互补技能(位于 finance_harness/financeharness/skills/),其中equity-deep-dive是覆盖面最完整的一个。
七步工作流:从叙事到可审计结论
SKILL 正文定义的核心工作流共七步,构成一条严格的"先读后算、先内后外、先相对再共识"的研究链路:
第一步:读图景(Read the picture)——先建立叙事
使用search+visit阅读近期、权威的覆盖报道:最新业绩/指引(results/guidance)、战略(strategy)、多空辩论(bull vs bear)。关键纪律是每个定性论断都必须落地到一篇实际阅读过的页面——这一步框定了"数字必须解释什么"(this frames what the numbers must explain)。
第二步:锚定(Anchor)——身份与基本面
调用data_equity_reference获取身份/分类/市场快照,data_equity_fundamentals获取财务数据:
- reference(实现见 finance_harness/financeharness/tools/data/equity/reference.py):输入仅需
ticker(如NVDA、AAPL、005930.KS),返回 name、sector/industry、country、exchange、market cap、shares outstanding、beta、当前价、52 周高低、P/E(ttm/fwd),以及截断至 600 字符的longBusinessSummary。其中 beta 是后续 WACC 计算的直接输入。 - fundamentals(实现见 finance_harness/financeharness/tools/data/equity/fundamentals.py):返回 TTM 收入、EBITDA、毛利/营业/净利率、FCF、经营现金流、现金/债务、ROE、增长、EPS,外加 4 年收入趋势(revenue / operating income / net income / EBITDA)。其结构化载荷
{"ticker", "ttm", "income_trend"}是估值工具(如 DCF)的链接面(chaining surface)。
第三步:健康检查(Health)——财务健康指标
调用data_equity_ratios(实现见 finance_harness/financeharness/tools/data/equity/ratios.py),覆盖四组指标:
- 流动性:current ratio、quick ratio;
- 杠杆:debt/equity、net debt、net-debt/EBITDA(后两者为工具安全推导值,见
_derive); - 回报:ROA、ROE;
- 倍数:P/E(trailing & forward)、EV/EBITDA、EV/revenue、P/S、PEG、股息率。
值得注意的实现细节:yfinance 把debtToEquity报告为百分比(168.6 → 1.69x),把dividendYield报告为百分数(2.99 → 0.0299),该工具统一做了归一化,保证渲染与下游链接时一致(ratios.py)。
第四步:内在价值(Intrinsic value)——DCF 与敏感性区间
这是全流程的数值核心,按固定顺序链接四个工具:
data_market_rates取无风险利率(risk-free rate);compute_valuation_wacc计算折现率;- 模型自行构造显式 FCF 时间表(explicit FCF schedule);
compute_valuation_dcf折现出内在价值;compute_valuation_dcf_sensitivity生成 bear/base/bull 区间。
WACC 工具的底层公式(finance_harness/financeharness/tools/compute/valuation/wacc.py)为:
Re = Rf + β·ERP # CAPM 股权成本 WACC = E/V·Re + D/V·Rd·(1−Tc) # 债务税后加权混合其中权重由 D/E 推导:E/V = 1/(1+D/E),D/V = D/E/(1+D/E)。该工具遵守all-or-none 校验:cost_of_debt、tax_rate、debt_to_equity三个债务参数要么全部提供(得到真正的 WACC 混合),要么全部不提供(仅 CAPM,WACC = Re),否则模型校验器直接抛错(wacc.py)。所有比率必须以小数传入(0.045而非4.5),β 可取自 reference 工具,无风险利率取自 market rates 工具。返回值包含cost_of_equity、wacc顶层字段以及implied_equity_risk_premium、wacc_premium_over_rf,便于链接与敏感性分析。
DCF 工具(finance_harness/financeharness/tools/compute/valuation/dcf.py)支持两种终值方法:gordon_growth(需terminal_growth_rate)与exit_multiple(需terminal_ebitda+terminal_ebitda_multiple)。输入fcf_schedule为显式期 FCF 平铺列表(1→N 年,美元),且是 chain-aware 的——可直接引用上一步工具的prev:链式结果。输出企业价值(EV)、股权价值(净债务后)、每股内在价值及完整的 PV 明细。工具本身只负责忠实折现所给时间表:"Dollars in, dollars out"——选 WACC 折现 FCFF 时 net_debt 才有意义,选股权成本折现 FCFE 时 net_debt 设为 0。
第五步:相对交叉验证(Relative cross-check)——可比公司
调用data_equity_comps(finance_harness/financeharness/tools/data/equity/comps.py),对模型选择的同行组(peer group)取中位数倍数,套用到目标公司自身指标上,得到每个倍数(P/E、EV/EBITDA、EV/revenue、P/S)隐含的每股价值,并输出对当前价的区间。分工原则:模型选同行(它知道可比对象),工具忠实做算术。工具还会从已抓取的.info中附带各同行的市值、利润率、增长、ROE、杠杆,让可比报告可以用落地数据制表,而非凭先验知识即兴发挥。
关键追问:相对读数与 DCF 是否一致?若不一致,差异本身就是发现。
第六步:共识(Consensus)——分析师观点
调用data_equity_estimates(finance_harness/financeharness/tools/data/equity/estimates.py),获取:
- 分析师价格目标:current / mean / median / high / low;
- 分期的 EPS 与收入共识估计(本季/下季、本财年/下财年,含分析师数量与增长);
- 最新 buy/hold/sell 推荐分布。
该工具的数据被明确标记为estimates,模型必须将其作为"共识预期"而非事实呈现。
第七步:综合(Synthesize)——形成观点
把定性叙事与三重视角(内在价值、相对价值、共识)整合成最终观点,必须明确陈述:折现率、关键假设、估值区间、主要风险。此步是 SKILL 反复强调的收敛点。
三条研究原则:可审计性的灵魂
SKILL 正文末尾的三条原则是全流程的纪律约束:
- 先读后估(Read before you value):web 步骤设定的叙事是数字必须支撑的;web 细节必须归属到阅读过的页面,未确认内容须明确标注"unconfirmed"。
- 三角互证(Triangulate):当 DCF、comps、consensus 互相矛盾时,矛盾本身即是发现——应把它浮出水面,而不是平均掉。这也是 SKILL 中"surface it rather than averaging it away"的原话含义。
- 数字全部来自工具(Every figure from a tool):让计算通过工具完成,保持精确与可审计;预测与分析师估计标注为"预期"而非"事实";明确陈述终值(terminal value)承载了多少价值——这是 DCF 报告中最容易被忽视、也最需要披露的假设敏感点。
如何在 FinanceHarness 中运行该技能
equity-deep-dive本身是模型编排层的工作流,实际执行通过 FinanceHarness 主入口驱动。安装与运行方式(finance_harness/README.md):
uv sync # 或: pip install -e . # 一次性研究——报告打印到 stdout,进度输出到 stderr python main.py -p "Estimate NVDA's intrinsic value with a DCF." python main.py -p "Apple's competitive position in 2026?" --mode research python main.py -p "..." --save run.json # 持久化完整轨迹 echo "What's AAPL's P/E?" | python main.py -p # 通过 stdin 管道传入问题可用选项:--mode {auto|research|analytical}、--profile NAME、--reader NAME、--save PATH、--quiet。安装验证:python main.py --list打印可用 profiles。模型后端在configs/providers.json与financeharness/providers/中配置,通过环境变量设置 API key,或把 profile 指向任意 OpenAI 兼容端点。
技能的发现优先级为:内置financeharness/skills/→ 项目级./skills/→FH_SKILLS_DIR环境变量指定目录(README 原文)。若要在自己的目录中复用此工作流,可直接参考 SKILL.md 的 frontmatter 与正文结构,编写同名requires_tools清单并放入上述任一搜索路径。
工具依赖清单与仓库定位
SKILL 的requires_tools声明了 9 个工具,全部在仓库中有对应实现,可逐一深挖:
| SKILL 中声明 | 实现文件 | 输入要点 |
|---|---|---|
data_equity_reference | tools/data/equity/reference.py | ticker |
data_equity_fundamentals | tools/data/equity/fundamentals.py | ticker |
data_equity_ratios | tools/data/equity/ratios.py | ticker |
data_market_rates | tools/data/market/ | 无风险利率 |
compute_valuation_wacc | tools/compute/valuation/wacc.py | Rf、ERP、β(+债务三元组可选) |
compute_valuation_dcf | tools/compute/valuation/dcf.py | FCF schedule、折现率、终值方法 |
compute_valuation_dcf_sensitivity | tools/compute/valuation/dcf_sensitivity.py | 在 DCF 基础上做区间扫描 |
data_equity_comps | tools/data/equity/comps.py | 目标 ticker + 同行组 |
data_equity_estimates | tools/data/equity/estimates.py | ticker(分析师共识) |
这些工具全部注册为tier="deferred"的ToolSpec,统一由 finance_harness/financeharness/runtime/tool_registry.py 管理;数据类工具底层走 yfinance 快照(PROVIDER定义于 tools/data/equity/common.py),计算类工具则为纯数学实现(pure-math),保证"数据与算术分离、每一步可复核"。
小结
equity-deep-dive是理解 FinanceHarness 技能体系的理想入口:它以一份 50 余行的 SKILL.md 定义了完整的单标的深度研究纪律——先读后估、三角互证、数字全部落地到工具——并把 9 个数据与计算工具串成一条可审计的估值流水线。无论你是要复现"NVDA 内在价值 DCF 估算"这类端到端任务,还是只想复用其中 WACC/DCF/sensitivity 的纯数学部分,都可以沿本文件给出的工具清单与实现路径直接深入。
【免费下载链接】google-researchGoogle Research项目地址: https://gitcode.com/gh_mirrors/go/google-research
创作声明:本文部分内容由AI辅助生成(AIGC),仅供参考