FinRobot 确定性估值引擎 / AI4Finance-Foundation
FinRobot 确定性估值引擎:32 个算子算数,LLM 只负责写
官方把 V2 的设计原则写成一句话:模型负责推理,软件负责计算,智能体负责编排,系统负责验证。落到代码上就是 26 个估值算子 + 6 个审计算子 + 7 个协调器,全部是纯 Python,模型不参与。本页不只列方法名,而是给出本站真跑这些官方算子的输出(WACC、敏感性矩阵、蒙特卡洛分位数),以及四道闸门被触发时的报错原文——算不出来的时候,它宁可不发布。
FinRobot 的估值方法该怎么选?
官方提供 DCF、DDM、LBO、可比公司、蒙特卡洛、剩余收益与分部估值等多条路径,但每条路径都有它不该用的场合。下表把「V2 里对应哪个算子、什么时候别用」并排写出来——选错方法比算错数字更常见。
| 方法 | V2 里的对应物 | 适合什么公司 | 通常需要哪些输入 | 什么时候不该用 |
|---|---|---|---|---|
| 现金流折现 DCF | operators/dcf.py;CLI finrobot dcf <ticker> | 现金流可预测、非金融业的公司 | 营收基数与增长率、EBITDA 利润率、资本开支与营运资本占比、税率、WACC 组件、终端增长率、股本数、净负债 | 银行保险(现金流与净负债的定义本身不成立)、稳态现金流为负、WACC 与终端增长率利差过薄 |
| 股利折现 DDM | operators/ddm.py;CLI finrobot ddm(finrobot dcf 也会在更合理时自动切到它) | 分红稳定、派息政策清晰的公司 | 每股股利与增长率序列、股权成本、派息率、净资产收益率、股本数 | 不分红或派息政策不稳定的公司 |
| 杠杆收购 LBO | operators/lbo.py;CLI finrobot lbo | 现金流稳定、可承受杠杆的成熟标的 | 交易价格与溢价、债务结构与利率、退出倍数与持有年限 | 现金流波动大、行业周期极强的标的 |
| 可比公司与倍数 | operators/multiples.py、peer_screen.py、xbrl_aligned_comps.py;CLI finrobot comps <ticker> --peers … | 能找到同行业可比标的 | 同业集合、口径对齐(TTM 与财年)、企业价值桥 | 同业样本过少;给银行用 EV/EBITDA 属于类目错误(系统会直接撤下该方法) |
| 蒙特卡洛模拟 | operators/monte_carlo.py | 想表达假设不确定性而不是一个点估计 | 一套 DCF 输入、各参数标准差、当前价格 | 把它当成概率保证:它只是对假设做扰动后的分布 |
| 剩余收益与分部估值 | operators/residual_income.py、sotp.py、sotp_scenario.py | 重资产、金融类、多分部公司 | 账面价值与净资产收益,或分部数据与分部估值口径 | 分部披露不足时无法建立可信的分部口径 |
| 组合汇总 | operators/valuation_aggregator.py、valuation_synthesis.py | 已经有多种方法结果,需要合成区间 | 各方法的区间与置信度、当前价格、方法适用性标记 | 方法之间分歧过大时不要强行合成单点(系统会撤回点目标) |
FinRobot 的「模型推理、软件计算」落到代码上是什么?
官方在 2026-09-28 的提交里把这条原则写成一句话:模型负责推理,软件负责计算,智能体负责编排,系统负责验证。它不是口号,四个分句各自对应仓库里可清点的东西。
| 分句 | 谁产生 | 落到代码上是什么 | 怎么验证 | 注意点 |
|---|---|---|---|---|
| 模型负责推理 | 语言模型 | 选方法、解释结果、写章节叙述;不产生数字 | 看叙述里的数字能否在算子输出里找到 | 叙述没有数字支撑时,系统只给非阻塞警告,不会替你改写 |
| 软件负责计算 | 纯 Python 算子 | 26 个估值与分析算子 + 6 个审计算子 + 7 个协调器,无模型参与 | 按固定 commit 取算子直接调用,不需要模型与网络 | 数一数 compute/operators/ 下非 __init__ 的 .py 即可核对数量 |
| 智能体负责编排 | Lead Agent | 1 个 Lead 选流程,5 个流水线角色执行,3 个辩论角色做多空与裁决 | 看 CLI 的运行记录与制品:每一步都有类型化输出 | 8 个角色的行为写在 markdown 指令文件里,改行为不用改 Python |
| 系统负责验证 | 审计算子 + 制品契约 | 上线前拿叙述跟数字对账,并把问题放进警告通道 | 读输出里的警告行;缺数据会留下原因而不是静默填零 | 审计算子不改结论(方向、目标价、置信度都不动) |
| 这一句的出处 | 官方 README | 对应固定 commit 2717499(2026-09-28) | 在仓库 README 顶部即可读到英文原文 | 原则属于当前生产版 V2;教学版 V0 官方明说没有确定性计算与溯源 |
但也要看清它的边界:这条原则解决的是「数字不被编造」,不解决「假设是否合理」与「方向性判断是否成立」——后两者仍然需要人来负责。
FinRobot 的 32 个算子分别管什么?
数字由 32 个纯 Python 算子产生:26 个估值与分析算子、6 个审计算子;另有 7 个协调器负责把数据层的输出组装成算子输入。下面是本站按固定 commit 2717499 清点后的分组。
| 分组 | 数量 | 包含哪些 | 作用 | 注意点 |
|---|---|---|---|---|
| 现金流折现类 | 7 | dcf、dcf_seed、ddm、ddm_seed、lbo、lbo_seed、residual_income | 把假设折成现值并桥接到每股价值 | 种子算子负责从财报推导假设,是「谁选了这些假设」的答案所在 |
| 倍数与同业 | 4 | multiples、peer_screen、xbrl_aligned_comps、cyclical_peers | 同业倍数、周期股口径修正 | 同业样本与口径对齐方式直接决定结果可信度 |
| 情景与模拟 | 3 | monte_carlo、sotp、sotp_scenario | 假设扰动分布、分部加总与情景 | 蒙特卡洛输出的是假设扰动的分布,不是概率保证 |
| 前瞻与口径 | 4 | forward_estimates、fx_normalize、data_processor、earnings | 前瞻指标、币种归一、财报口径与盈利惊喜 | 币种与期间口径是很多「看起来对」的错误的源头 |
| 信号与催化 | 4 | signal、sniper、catalyst、ownership | 技术信号、事件与持股结构 | 属于研究线索,不是买卖指令 |
| 汇总与漂移 | 4 | valuation_aggregator、valuation_synthesis、report_drift、wacc | 多方法合成、权重与漂移检测、折现率计算 | 漂移检测专门用来发现「同一标的两次运行结果不一致」 |
| 审计算子 | 6 | currency_caliber、ev_bridge、narrative_divergence、narrative_numeric_grounding、sector_sign、ttm_period | 拿叙述与数字对账:币种口径、企业价值桥、叙述分歧、数字绑定性、行业符号、TTM 期间 | 只报警、不改结论;警告是「哪一段不该全信」的路标 |
| 协调器 | 7 | dcf_seed、extractor、historical_extractor、market、news、segment_extractor、technical_payload | 把 7 个数据提供方的原始返回组装成算子输入 | 取数时间会被记录下来(直接构造输入时该字段为空,代码注释明确不伪造当前时间) |
finrobot_desktop/finrobot/engine/compute/operators/(去掉 __init__.py 应为 26 个)、同目录 audit/(应为 6 个)、compute/coordinators/(应为 7 个)。数量会随版本变化,方法比数量更稳定:只要「数字来自算子、叙述来自模型」这条分工不变,核对方式就成立。跑一次估值会经过哪几步、每步该看到什么?
下按 V2 的实际执行顺序列出六步,并给出每一步的预期输出。把它当成「出错时定位在哪一环」的地图,而不是操作手册——具体命令以官方文档为准。
准备环境与入口
在
finrobot_desktop/下执行uv sync,再用finrobot --help确认命令可用。
预期输出:列出 research / dcf / ddm / lbo / comps / earnings / ic-memo 等子命令。若这里就失败,先回到安装页确认 uv 是否已装(本机实测这一步就是缺 uv)。配置密钥
桌面端与浏览器模式在 Settings 页填入自己的模型密钥(写入系统钥匙串);教学版 V0 则是两个配置文件。
预期输出:发起一次最小请求能得到模型返回。未配置时应用能打开,但分析请求会提示需要配置密钥。取数与组装
数据层按标的去 7 个提供方取数,再由协调器组装成算子输入。
预期输出:输入对象里带上取数时间;某个提供方不可用时按健康状态切换。缺项会留下警告而不是静默补零。跑确定性算子
按流水线选择执行 DCF、DDM、倍数、蒙特卡洛等算子。
预期输出:WACC、各年现金流、终值、企业价值、股本价值与每股价值等一串可复算的数字;不适用时抛错并说明理由。聚合与叙述
多方法结果聚合成区间,模型基于这些数字写章节叙述。
预期输出:方法区间与置信度;方法分歧过大时只给区间不给单点目标。审计与制品
6 个审计算子对账,结果与警告一起写进制品库。
预期输出:完整研报制品 + 警告清单。读结果时先读警告,再读结论。
FinRobot 跑一次估值要先准备什么?
把「必需的」与「按需的」分开列,能省掉很多装完却跑不动的困惑。下表按 V2 口径给出前置项、来源与缺失后果。
| 要准备的东西 | 从哪来 | 是否必需 | 缺了会怎样 | 注意点 |
|---|---|---|---|---|
| uv 包管理器 | Astral 官方安装方式 | V2 的 CLI 与浏览器模式必需 | 一上手 uv sync 就走不下去(本机实测就卡在这里) | 桌面安装包不需要 uv,但它只覆盖 macOS Apple Silicon |
| Node 20 及以上 | Node 官网 | 仅浏览器模式需要(CI 用 22/24) | 前端步骤 npm install 无法进行 | finrobot serve 只提供 JSON 接口,不提供界面 |
| Python 3.11 及以上 | 系统或版本管理工具 | V2 必需 | 安装解析失败 | 教学版 V0 走的是 3.10/3.11,两者不要放同一个环境 |
| 模型密钥 | 你自己的模型账号(DeepSeek / OpenAI / Anthropic 等) | 必需 | 应用能打开但分析请求返回「请配置密钥」 | 密钥由你自己的账号承担调用费用,具体单价以各家官方定价页为准 |
| 数据源密钥 | FMP / Finnhub / Adanos 各自的账号 | 部分必需 | 对应提供方不可用,相关方法行缺失或被降级隐藏 | yfinance 与 SEC EDGAR 属公开数据路径,不需要商业密钥(以官方 provider 说明为准) |
| 网络访问 | 本机网络 | 必需 | 取数与模型调用都会失败 | 运行分析需要联网;只浏览已有报告可以离线 |
| 端口 8321 与 5173 | 本机空闲端口 | 浏览器模式需要 | 启动脚本会先结束占用这两个端口的进程(开着桌面应用时也会被结束) | 本地后端未启用鉴权,共享机器上优先用桌面应用 |
| 磁盘与时间 | 本机 | 按需 | 完整研报流水线比单只标的查询耗时与占用都更高 | 建议按「单标的查询 / 单一板块 / 完整研报」分档记录耗时与调用量 |
DCF 的输入长什么样、为什么这样设计?
估值算子的输入是一个强类型对象,除了业务假设,还带了溯源与口径字段。这些字段是「数字可追溯」能成立的原因,也是官方文档里不常被讲到的部分。
| 字段 | 含义 | 约束或默认 | 为什么要它 | 注意点 |
|---|---|---|---|---|
| revenue_base | 基年营收(默认取 TTM 口径) | 必须为有限数值 | 基年由它推导;NaN 会被直接拒绝 | 上游缺值若被当成 0,结果会在无提示的情况下偏低 |
| revenue_growth_rates | 逐年增长率序列 | 至少一项,且必须为有限数值 | 显式窗口的营收投影 | 增长率与终值假设不一致时,投影与永续段会互相矛盾 |
| ebitda_margin | 预测期 EBITDA 利润率 | 0 到 1 | 决定经营层面的现金流能力 | 利润率超过公司历史上限时需要能解释来源 |
| capex_pct_revenue / nwc_pct_revenue | 资本开支与营运资本变动占营收比例 | capex 0 到 1;营运资本变动 −0.2 到 0.5 | 把会计利润还原为自由现金流 | 营运资本比例超出建模带会被夹紧,并留下结构化标记供报告标注 |
| da_pct_revenue / tax_rate | 折旧摊销占比与税率 | 折旧 0 到 0.5;税率 0 到 1,默认 0.21 | 折旧带来税盾,税率影响税后经营利润 | 折旧占比为 0 意味着没有税盾,会系统性压低估值 |
| WACC 组件 | 无风险利率、贝塔、股权风险溢价、债务成本、负债占比 | 各字段都有上下界(贝塔 0 到 5 等) | 先算股权成本再算加权平均资本成本 | 贝塔可用 Blume 调整(实测 1.20 调整为 1.1333) |
| terminal_growth_rate | 永续增长率 | 0 到 0.05 | Gordon 永续段的增长率 | 必须小于 WACC 且利差不少于 1.5%,否则算子拒绝计算 |
| shares_outstanding / net_debt | 股本数与净负债 | 股本数为正;净负债为有限数值(净现金为负) | 把企业价值桥接到每股价值 | 净负债超过企业价值时算子拒绝输出负的每股价值 |
| assumption_provenance | 假设来源映射 | 字典,默认空 | 记录每个假设是怎么来的 | 这是「谁选的假设」的答案;空着等于放弃追溯 |
| inputs_fetched_at | 取数时间 | 默认空(直接构造时为 None) | 报告可以标注「输入截至某时刻」 | 代码注释明确不伪造当前时间,构造输入时也不填 |
| currency | 报价币种 | 默认 USD | 每股价值是市场报价,需要跟随行情币种(例如台积电为 TWD) | 币种错了,整篇报告的数值都不可比 |
assumption_provenance 为空、取数时间为空,通常意味着这份输入是手工构造而非从真实财报推导的。真跑这套算子会得到什么?(本站实测)
下面每一行都是本站用官方代码在本机真实调用得到的结果,不是从文档转述的。环境为 Windows 10.0.26200 + Python 3.11.9 + pydantic 2.13.4 + numpy 2.4.6;输入是本站构造的合成标的(营收基数 1000、五年增长率 10%/8%/7%/6%/5%、EBITDA 利润率 25%、资本开支 6%、营运资本 2%、折旧 4%、税率 21%、无风险利率 4.2%、贝塔 1.20、股权风险溢价 5.5%、债务成本 5.5%、负债占比 20%、永续增长 2.5%、股本 100、净负债 200、美元),不含任何真实行情,不构成投资建议。
| 调用 | 本站实测输出 | 怎么读 |
|---|---|---|
calculate_wacc | 股权成本 0.108,WACC 0.09509 | 股权成本 = 无风险利率 + 贝塔 × 股权风险溢价;WACC 再按负债占比加权债务成本 |
adjust_beta_blume(1.20) | 1.1333 | 贝塔向 1 回归的行业惯例调整,会小幅改变折现率 |
calculate_dcf 每股价值 | 23.0774(美元) | 企业价值 2507.74 → 减净负债 200 → 股本价值 2307.74 → 除以 100 股 |
| 五年自由现金流序列 | 138.49 / 149.57 / 160.04 / 169.64 / 178.12 | 由 (EBITDA − 折旧) × (1 − 税率) + 折旧 − 资本开支 − 营运资本变动得到 |
| 终值与现值 | 稳态现金流 205.0,终值 2998.0,终值现值 1903.63 | 终值项占比远高于显式期现值合计(604.11)——这是 DCF 的固有特征,也是它敏感的根源 |
mid_year=True | 每股价值 24.2427(较年末口径 +5.05%) | 年中折现假设现金流在年内均匀发生,是投行常见口径 |
| 敏感性(WACC 8%/9%/10% × 永续 2%/2.5%) | [[28.05, 30.30], [23.57, 25.14], [20.21, 21.36]] | 折现率每升一点,估值下降幅度明显大于增长率的贡献 |
run_monte_carlo(2000 次、种子 42、现价 20) | 中位 23.11;5% 分位 15.97、25% 分位 19.80、75% 分位 27.07、95% 分位 34.21;均值 23.84,标准差 5.59 | 当前价处于分布 26.7% 分位;2000 条路径中 1996 条有效,无效路径被丢弃而不是算进去 |
| 方差缩减方式 | 对偶变量(antithetic variates) | 用镜像抽样降低估计方差,属于实现细节但影响结果稳定性 |
aggregate_valuation(只给 DCF) | 区间 18.46 / 23.08 / 27.69,置信度 0.85,方法来源自述为「占位带,不是真实分布」 | 只有一种方法时系统会承认这条区间不是统计结果——这类自我标注值得留意 |
2717499 取出 finrobot_desktop/finrobot/engine/compute/operators/ 与 models/,在本机 Python 3.11 环境里直接 import 调用即可,例如 calculate_dcf(DCFInputs(...))、calculate_sensitivity(...)、run_monte_carlo(inputs, current_price=20, n_simulations=2000, seed=42)。这些算子是纯 Python,模型与网络都不参与——这正是「软件负责计算」的证据。算不出来的时候,FinRobot 会怎么处理?
估值算子里有四道前置判断,触发时不是给一个近似值,而是拒绝计算并说明理由,由上层流水线回落到相对估值。下面六条报错文本来自本站对官方算子的真实调用(合成输入)。
| 触发条件 | 实际输出(原文要点) | 根因 | 系统给的解法 | 残余风险 |
|---|---|---|---|---|
| 永续增长率 ≥ WACC | Terminal growth rate 0.05 must be less than WACC 0.0(永续式无定义) | Gordon 模型在增长率不低于折现率时数学上不成立 | 拒绝计算,提示改用相对估值 | 回落后你拿到的是倍数区间,不是内在价值 |
| WACC 与永续增长率利差低于 1.5% | WACC−terminal growth spread 0.34% is below the 1.5% minimum — 并直接算出 1/(wacc−tg) = 294× | 乘数被利差急剧放大,低利率高杠杆标的容易触发 | 以 1.5% 为下限拒绝计算 | 利差在 1.5% 到 3% 之间时区间仍然很宽,需要人工收窄 |
| 稳态自由现金流 ≤ 0 | Steady-state terminal FCF is non-positive (-5.94) …a negative implied price | 负现金流被资本化成永续负值,会得到负的每股价值 | 拒绝计算并跳过 DCF 章节 | 真实处于衰退期的公司本就该换框架,这里只是避免输出无意义的负价格 |
| 股本价值 ≤ 0 | Equity value is non-positive (-9.75e+04): net debt (1e+05) exceeds the enterprise value (2.51e+03) | 净负债超过企业价值;股本价值在经济上没有负值含义 | 拒绝计算,提示改用相对估值或困境与信用分析 | 高杠杆标的仍需人工判断是否已处于困境 |
| 输入含 NaN | ValidationError: must be finite — NaN/Inf is not a number, it's missing data | NaN 与任何数值比较都为假,会绕过算子里所有区间判断 | 在输入校验层拒绝 | 上游数据源若返回空值而非 NaN,仍可能被当成 0 |
| 营运资本比例越界 | ValidationError: nwc_pct_revenue / Input should be less than or equal to 0.5 | 假设超出建模带,属于口径错误 | 字段级边界拒绝并给出允许区间 | 区间内的坏假设仍会通过,需要你自己把关 |
多个方法的结果矛盾时,目标价还发不发?
估值引擎会把多个方法的结果合成为区间与置信度,并在分歧过大时撤回单点目标。这一节讲的是「它什么时候选择不说」。
| 情形 | 系统行为 | 证据 | 你该怎么读 |
|---|---|---|---|
| 只有一种方法可用 | 给出区间,但把区间自述为占位带,不是真实分布 | 本站实测的方法来源字段原文:placeholder band, not a real distribution | 不要把这个区间当统计结果;补第二种方法再判断 |
| 多种方法分歧过大 | 撤回单点目标,只发布方向判断与区间 | 官方 README 的示例说明三种方法相差约 2.6 倍时不发布单点目标 | 分歧本身是信息:说明这家公司的估值高度依赖方法选择 |
| 缺少同业数据 | 对应方法行不出现,并留下警告说明需要先跑完整研报流程 | 本站实测的警告原文:no peer_analysis artifact | 先补数据再评估区间,不要把缺行误读成方法不适用 |
| 缺少历史估值带或前瞻指标 | 方法行被降级隐藏(degraded and hidden) | 本站实测的三条聚合警告 | 缺项来自数据而非模型;确认数据源覆盖后再看 |
| 金融业标的 | 现金流类方法整类撤下,目标价与置信度均为空 | 本站实测:方法数 0、目标价与置信度为空,并附带类目错误的警告原文 | 这是正确的拒绝:银行应该用市净率、市盈率与股利折现 |
| 目标价字段为空 | 方向判断仍然给出,但目标价诚实地留空 | 官方模型注释说明:此时能拿到的数字只能是编造的,所以只发布方向与区间 | 把「没有目标价」当作结论的一部分,而不是缺陷 |
FinRobot 研报由哪些部分组成、哪些章的数字来自算子?
V2 的完整研究制品是 13 章。下面按章列出内容,并标注数字来源——这是读报告时最省时间的索引:先看哪几章,后看哪几章。
| 章 | 内容 | 数字主要来源 | 读的时候注意 |
|---|---|---|---|
| 1 封面 | 标的、评级、目标价与区间 | 算子(区间来自聚合) | 目标价为空时先看聚合一节的撤回理由 |
| 2 投资论点 | 多空逻辑与关键支撑 | 模型叙述 + 算子数字混合 | 逐段检查数字能否回溯到算子输出 |
| 3 公司概览 | 业务与行业描述 | 模型叙述为主 | 事实性描述需要与官方披露核对 |
| 4 财务分析 | 利润级联、利润率与增长 | 算子(来自三大报表口径) | 注意报告期与币种口径是否统一 |
| 5 估值 | DCF、DDM、倍数等方法与假设 | 算子 | 先看假设表,再看结果;假设错了结果没有意义 |
| 6 近期新闻 | 新闻与事件摘要 | 模型叙述 + 数据层新闻源 | 新闻类内容容易出现时间错位或引用不准 |
| 7 敏感性 | 折现率与增长率对估值的影响 | 算子(敏感性矩阵) | 看斜率而不只看单点:哪一侧更敏感 |
| 8 催化剂 | 潜在上行驱动 | 模型叙述 | 没有日期与量级的条目要打折扣 |
| 9 技术与进阶 | 技术面与派生指标 | 算子(技术载荷) | 技术指标属于线索,不构成买卖依据 |
| 10 竞争格局 | 同业对比 | 算子(同业倍数)+ 叙述 | 同业集合的选取方式决定这一章的说服力 |
| 11 财务数据 | 原始财务数据表 | 数据层 | 这一章是其他章节的可核对底稿 |
| 12 持股与治理 | 股权结构与治理信息 | 数据层 + 叙述 | 披露日期可能滞后于行情 |
| 13 免责声明 | 使用边界 | 固定文本 | 读一遍:它本身也是内容的一部分 |
拿到输出后,怎么判断哪些能信、哪些只是观点?
把输出里的每一项分进三个桶,再对每个桶采取不同的信任策略。下面的自查清单可以逐条过,也能直接用来审阅其它金融 AI 工具的输出。
| 内容 | 怎么识别 | 信任策略 |
|---|---|---|
| 代码算出来的 | 能对应到具体算子与入参;改一个假设,数字会按确定规则变化 | 可以复核:按同样输入重算应得同样结果 |
| 模型写出来的 | 段落、观点、定性与因果解释,回溯不到任何函数 | 当观点:可作线索,不作结论 |
| 两者混合 | 数字来自算子、结论来自模型(例如目标价与上行空间) | 拆开看:数字复核,判断打折 |
| 你或种子算子选的假设 | 输入对象里的假设字段与它们的来源映射 | 问责源头:假设错了,后面的计算再准也没有意义 |
| 审计产生的警告与降级标记 | 警告通道里的文字、被隐藏的方法行、撤回的目标价 | 优先读:它直接告诉你哪一部分不该全信 |
| 自查项 | 合格的样子 | 不合格的信号 | 为什么重要 |
|---|---|---|---|
| 数字能否回溯 | 每个关键数字都能在算子输出里找到 | 出现无来源的精确数字 | 这是区分「算出来」与「写出来」的硬判据 |
| 币种与单位 | 全篇币种一致、单位统一 | 同一指标前后币种漂移 | 币种错了,全篇数值不可比 |
| 期间口径 | 财务期与 TTM 口径写明并一致 | 混用财年与滚动期 | 口径混用会让增长率与倍数同时失真 |
| 方法适用性 | 方法选择与公司类型匹配 | 给银行套现金流折现 | 用错方法比算错数字更常见;系统会撤下类目错误的方法 |
| 缺数据是否留痕 | 缺项带警告或降级标记 | 缺数据静默填零或省略 | 静默缺失会让整份结论看起来比实际更完整 |
| 区间性质 | 说明区间是分布结果还是占位带 | 把占位带当统计分布引用 | 区间被误用会让「不确定性」变成虚假的确定感 |
什么情况下值得用 FinRobot 的估值、什么时候不必上?
确定性与可追溯是有代价的:要装环境、配密钥、管理依赖。下表按你的情况给判断,并写明先做哪一步验证更省时间。
| 你的情况 | 是否值得用 | 原因 | 先做哪一步验证 | 注意点 |
|---|---|---|---|---|
| 需要可复算、可追溯的估值过程 | 值得 | 每个数字都能回到算子与输入 | 按固定 commit 直接调用一次 DCF 算子,确认能复算 | 输入假设仍需你负责 |
| 要一次内部研报流水线(多标的) | 值得 | 13 章制品与警告通道适合批量复核 | 先跑单只标的的完整流程,评估耗时与调用量 | 批量运行的成本与数据源限流需另算 |
| 只想查一个估值参考 | 不必 | 装环境配密钥的成本高于收益 | 先用免部署路线拿到参考结果 | 两条路线彼此独立,无已证实集成 |
| 公司是银行或保险 | 换方法 | 现金流折现与净负债口径不成立,系统会撤下该类方法 | 确认行业识别结果,改用市净率、市盈率与股利折现 | 类目判断可能误伤金融控股等边缘情形 |
| 公司现金流为负或高度不稳定 | 谨慎 | 稳态终值可能被判为不适用,系统会拒绝计算 | 先跑一次看是否触发闸门 | 被拒绝不是失败,而是提示改用相对估值 |
| 必须用 A 股数据 | 需自行接入 | 官方数据链路以美股为主,7 个提供方里没有 A 股数据源 | 先确认你有可用的 A 股数据源与口径处理方案 | 代码层接受 A 股后缀不等于数据层可得 |
FinRobot 估值与研报常见问题
FinRobot 的估值数字可信吗?
分两层看:数字本身由纯 Python 算子计算、可复算、可追溯,这一层比「模型直接说一个价格」可靠;但假设是否合理、方法是否适用仍取决于输入与类目判断。本站的做法是把这两层分开写:算子输出见「本站实测」,假设与边界见「输入契约」与「适用判断」。具体实现与参数以官方仓库为准。
为什么它有时候不给目标价?
因为多方法分歧过大时,单点目标价只能是编造的。官方在模型注释里写明了这个取舍:当各方法无法互相印证时,只发布方向判断与区间,而不是把不同方法的结果平均成一个假的确定值。看到目标价为空,应该去找聚合那一节的撤回理由,而不是当成缺陷。
蒙特卡洛跑出来的分布能当概率用吗?
不能当概率保证。它做的是对假设施加扰动后重新计算,得到的是「假设不确定性传导后的分布」。本站实测 2000 条路径中 1996 条有效,其余被丢弃;分布的分位数会随标准差设置而变。把它当作敏感性的另一种表达更合适,官方也没有承诺它是概率预测。
算子和模型的分工,怎么自己验证?
取固定 commit 的 compute/operators/ 直接调用即可:这些算子不依赖模型与网络,同样的输入会得到同样的数字。反过来,如果你怀疑某个数字是模型写的,就去制品里找对应的算子输出;找不到,就说明它属于叙述而非计算。
研报能导出成文件或 PDF 吗?
研报作为制品存进本地制品库,桌面与浏览器界面可浏览与导出;具体导出格式与是否包含 PDF 以官方当前版本为准,本站未实测这条路径(本机缺 uv,未跑起 V2 完整流程)。教学版 V0 另有 PDF 生成相关的功能模块,但那属于另一代。
能分析 A 股公司吗?
要分开看两层:代码层的标的校验接受 A 股与港股后缀(本机实测 600519.SS、123456.SZ、0700.HK 都通过),但数据层的 7 个提供方以美股为主、没有 A 股数据源。要用 A 股,得自己接数据源并处理币种、单位、报告期与复权口径。详见数据源页。
跑一次估值要花多少钱?
库本体是 Apache-2.0 许可、不收费;花钱的地方是模型调用与部分数据源。官方没有给出统一成本表,因为它取决于模型选择、数据源档位与任务规模。可行的做法是按「单标的查询 / 单一板块 / 完整研报」分档记录调用量与耗时。具体单价以各家官方定价页为准。
和免部署的金融研究路线有什么区别?
准备成本与产物形态不同:FinRobot 这条路线要装环境、配密钥、自己维护版本,换来的是可复算的算子输出与可审计的制品;免部署路线装好客户端就能提问,省掉环境成本。两者是彼此独立的路线,FinRobot 与 EasyClaw 无已证实集成,本站不做能力等同的暗示。