Skip to main content
Glama
yagebin79386

openvaluation

by yagebin79386

openvaluation

将初创公司估值方法转化为可审计的代码。 Berkus 法、Scorecard 法、风险因素求和法、风险投资法、First Chicago 法和市场倍数法——均已实现、测试,并能展示其计算过程。

免费开源,MIT 许可。纯 Python,零依赖,无需 API 密钥,无需网络调用。

pip install openvaluation

天使投资圈实际使用的 pre-revenue 方法,只存在于教科书、工作表和电子表格中, 却不在维护良好的软件里。在 GitHub 上搜索 "Berkus method",找到的是一堆 零散的脚本;而每个实现了这些方法的商业工具,都把计算过程封闭起来。这个包 正是缺失的那块拼图:一个代理、脚本或 notebook 可以调用并得到 有依据的数字,同时附带完整的推导过程。

from openvaluation import Engine

company = {
    "company": {"sector": "saas", "stage": "seed", "region": "us"},
    "financials": {"revenue": {"arr": 480_000}},
    "berkus": {"sound_idea": 1.0, "prototype": 1.0, "management_team": 0.8,
               "strategic_relationships": 0.4, "product_rollout": 0.6},
    "scorecard": {"management_team": 1.25, "opportunity_size": 1.4},
}

print(Engine().run_all(company, stage="seed").summary())
4 methods ran; median 4,420,000 USD (range 1,400,000–6,462,500)

  berkus                         1,900,000  [1,400,000 – 2,400,000]
  ev_arr                         3,840,000  [2,400,000 – 5,760,000]
  risk_factor_summation          5,000,000  [4,750,000 – 5,250,000]
  scorecard                      5,875,000  [5,287,500 – 6,462,500]

  2 methods could not run:
    vc_method: vc_method needs exit.value, exit.revenue (supply an exit value, or
      projected revenue at exit to apply a multiple to)
    first_chicago: first_chicago needs scenarios.success.probability, ...

提取是概率性的;计算不应如此

语言模型经常被问到一家初创公司值多少钱,而它们在这方面表现很差——不是差在 推理上,而是差在计算上,以及记住哪种方法需要哪些输入。然而,它们非常 擅长阅读 pitch deck 并提取出结构化的事实。

这个包划清了这两项工作的界限:模型负责读取文档并填写 字段。计算引擎负责执行运算,确定性地完成,并精确报告每一步是如何得出的。 相同的输入,相同的输出,每一次都如此——计算过程中没有任何模型参与,因此不会产生漂移。

result = Engine().run(company, "berkus")
print(result.explain())
berkus: 1,900,000 USD (range 1,400,000–2,400,000)

Steps
  1. Sound idea — basic value, product risk: 500,000  — rating 1.00
  2. Prototype — technology risk: 500,000  — rating 1.00
  3. Quality management team — execution risk: 400,000  — rating 0.80
  4. Strategic relationships — market risk: 200,000  — rating 0.40
  5. Product rollout or sales — production risk: 300,000  — rating 0.60
  6. Pre-money valuation: 1,900,000  — sum of five elements

Assumptions
  cap_per_element: 500000.0

Limitations
  - Berkus caps pre-revenue value and ignores market size, growth and financials.
  - Ratings are judgements, not measurements; this run capped at 2,500,000.
  - This company reports revenue; Berkus was designed for pre-revenue companies
    and a revenue-based method will usually say more.

Sources
  - Dave Berkus, 'The Berkus Method: Valuing an Early Stage Investment' (berkonomics.com)

每个结果都附带其计算步骤、假设、局限性,以及方法的引用来源。 无法被核验的估值,不值得为之辩护。

Related MCP server: tvr-mcp-server

我到底能运行什么?

通常问题先于答案:基于对这家公司已知的信息, 哪些方法可用,以及哪一项缺失的事实能带来最大的信息增益?

report = Engine().readiness(company)

[m.method for m in report.ready]     # ['berkus', 'scorecard', 'risk_factor_summation', 'ev_arr']
report.unlocks()
# {'exit.value|exit.revenue': ('vc_method',),
#  'financials.ebitda': ('ev_ebitda',),
#  'financials.revenue.annual': ('ev_revenue',)}

unlocks() 按每个缺失字段能解锁多少种方法进行排序,因此第一个条目就是 最值得去查明的事项。路径中的 | 表示该字段二者取其一即可。

一个报告为"就绪"的方法,必定能够运行——这一不变式经过了测试,因为一份 声称就绪却无法运行的方法清单,比没有清单更糟糕。

方法列表

id

方法名称

适用场景

所需输入

berkus

Berkus 法

Pre-revenue

五项风险要素的评分

scorecard

Scorecard 法

Pre-revenue

行业领域,以及与可比公司的对比评分

risk_factor_summation

风险因素求和法

Pre-revenue

行业领域,以及十二项风险的评分

vc_method

风险投资法

正在融资,且有可信的退出路径

退出估值或退出收入

first_chicago

First Chicago 法

结果确实呈多峰分布

三种情景及其概率

ev_revenue

EV / 收入

订阅制收入

年度经常性收入(ARR)和行业领域

ev_ebitda

EV / EBITDA

已盈利

正的 EBITDA 和行业领域

每种方法的完整文档 — 公式、计算示例、局限性, 每种方法一页。这些页面上的每个示例都由测试套件执行,因此不会 与代码脱节。

每种方法都依据其公开发表的描述实现,并注明引用来源。Scorecard 法的权重来自 Bill Payne(团队 30%、机遇 20%、产品 15%、竞争 10%、销售 10%、投资需求 5%、 其他 5%);Berkus 法将五项要素各上限设为 50 万;风险因素求和法以 25 万为步长,在十二项因素上调整一个基准平均值。所有这些常量都是构造函数参数, 而不是埋藏在计算逻辑中的魔法数字。

from openvaluation import Berkus, RiskFactorSummation

Berkus(cap_per_element=300_000)          # a market where 500k is too rich
RiskFactorSummation(step=100_000)        # finer-grained risk adjustments

基准数据是你的问题,这个包只负责说明这一点

三种方法需要外部数据:可比公司的估值、行业倍数、 以及基金的投资回报率目标。这些数据会过时,因此没有任何库应该 替你硬编码这些数字。相反,它们通过一个你提供的 provider 来获取。

默认的 provider 提供示例性的占位数据——取整的、未注明日期的数字,仅用于让示例 能够运行。任何使用了这些数据的估值,都会在其局限性说明中明确标注:

  - Benchmark figures are illustrative placeholders, not market data; replace
    StaticBenchmarks with a real source before relying on this figure

从不查询市场数据的方法(如 Berkus 法)则不附带此警告。提供真实数据, 警告即消失:

from openvaluation import Engine, Multiple, TableBenchmarks

benchmarks = TableBenchmarks(
    seed_valuations={"saas": 4_200_000},
    multiple_table={("saas", "ARR"): Multiple(4.1, 6.8, 11.2, basis="ARR",
                                              source="Our comp set", sample_size=180,
                                              as_of="2026-06-30")},
    rate_table={"seed": 0.5},
    citations=("Our comp set, n=180, June 2026",),
)

engine = Engine(benchmarks=benchmarks)

或者,实现一个 BenchmarkProvider 来对接你已有的任何数据源——数据库、API、电子表格。三种 方法均为同步实现。Aswath Damodaran 发布的行业倍数和资本成本数据, 是常用的免费起点。

如果 provider 缺少某个数据点,应抛出 UnknownBenchmark 异常,而不是 用猜测值来替代,因为基于虚构倍数构建的估值,比没有估值更糟糕。

交给 AI 代理

将方法直接提供给任何你已经在使用的模型。MCP 服务器暴露四个工具, 由于计算在 Python 中完成,模型不可能算错:

pip install "openvaluation[mcp]"
{"mcpServers": {"openvaluation": {"command": "openvaluation-mcp"}}}

工具

功能

list_valuation_methods

列出所有方法及其适用条件,以便模型能填入真实的字段名称

check_valuation_readiness

检查数据已支持哪些方法,以及哪个缺失字段能解锁最多方法——这样模型就能询问而非编造

value_company

一次性运行所有适用方法,返回估值区间以及无法运行的方法

explain_valuation

生成单个方法的完整推导过程,用于撰写报告

服务器的指令会告诉模型那些它原本可能弄错的事项:Berkus 和 Scorecard 的评分需要证据支持;内置的基准数据只是示例, 其局限性必须被明确传达;当多种方法结果不一致时,中位数并非最终答案。

同样的四个函数也可以不通过 MCP 直接导入使用,适用于 HTTP 处理器或 notebook:

from openvaluation.tools import check_readiness, value_company

check_readiness(company)   # plain dicts in, plain dicts out

命令行使用

openvaluation company.json                     # every applicable method
openvaluation company.json --readiness         # what can run, what is missing
openvaluation company.json --method berkus --explain
openvaluation company.json --json              # for piping onward
openvaluation --list-methods

输入格式

一个普通的嵌套字典——无论你的提取步骤产出了什么。字段通过点路径读取,因此 无需所有字段齐全:

{
  "company":    {"sector": "saas", "stage": "seed", "region": "us"},
  "financials": {"revenue": {"arr": 480000, "annual": 520000}, "ebitda": 90000},
  "product":    {"stage": "mvp"},
  "berkus":     {"sound_idea": 1.0, "prototype": 0.8},
  "scorecard":  {"management_team": 1.25, "opportunity_size": 1.4},
  "risk":       {"management": 2, "competition": -1},
  "exit":       {"revenue": 40000000, "years": 5, "dilution": 0.3},
  "funding":    {"round_size": 2000000},
  "scenarios":  {"success": {"value": 80000000, "probability": 0.15},
                 "base":    {"value": 15000000, "probability": 0.35},
                 "failure": {"value": 0,        "probability": 0.50}}
}

金额可以是纯数字、数字字符串,或 {"value": 480000, "currency": "USD"} 对象。 比率可以是 0.4 或 40。对于收入等数量指标,零值视为缺失,因为零收入 与未知收入,对这些方法而言是相同的输入。

这不是什么

  • 不是投资建议,也不是 409A 估值。 这些方法产生的是谈判锚点 和合理性检查。具有法律或税务效力的估值,需要由合格评估师出具。

  • 不是提取器。 它接收的是结构化事实;从 pitch deck 中提取这些事实是另一项 工作,而这正是语言模型所擅长的。

  • 不是市场数据来源。 参见上文。

  • 不是判断引擎。 Berkus 评分和 Scorecard 因素是关于一家公司的判断。 本包只负责记录和应用这些判断,并不自行形成判断。

当各方法的结果差异超过中位数时,报告会明确说明——因为这种分歧本身就是 信息,将其平均掉反而会破坏信息。

环境要求

Python 3.9+(在 3.11 上开发和测试)。无运行时依赖。

来源

我构建了 Wakeworth 背后的估值引擎,该应用根据 上传的文档为初创公司估值。这些方法本身是公开知识,理应属于公开代码;而 文档提取和报告生成则是该产品专有的部分。这个包是 方法层的独立重构,基于已发表的描述实现,所有常量均公开暴露, 每个结果都展示其完整计算过程。

贡献

欢迎提交 issue 和 pull request。我会在主要工作之余尽力维护, 因此回复可能不会很快,但会经过认真考虑。最有价值的贡献是:基于可引用来源 实现一个新方法,或者指出这里的计算与文献中某个计算示例不一致的案例。

git clone https://github.com/yagebin79386/openvaluation
cd openvaluation
pip install -e ".[dev]"
pytest

许可证

MIT — 参见 LICENSE。


最后更新:2026-08-20 · 更新日志

Related MCP Connectors

Related MCP Servers

  • A
    license
    A
    quality
    D
    maintenance
    Validates startup ideas with a deterministic scorecard, evidence brief, and verdict before code is written, integrating with MCP-aware build agents to avoid building dead-on-arrival products.
    1
    11 npm
    MIT
  • A
    license
    Not graded
    quality
    C
    maintenance
    Cryptocurrency fundamental analysis tools via MCP. Enables users and AI agents to evaluate cryptocurrencies across 8 metrics using Sound Value principles. Provides educational material, fair value estimates, and valuation categories.
    1
    MIT
  • A
    license
    Not graded
    quality
    D
    maintenance
    Provides VC-grade startup intelligence, allowing founders to validate ideas and VCs to screen deals using tools like scoring, investor matching, and financial analysis.
    11 npm
    MIT
  • A
    license
    Not graded
    quality
    C
    maintenance
    Enables financial modeling for SaaS and other assets via MCP tools, including simulation, scenario comparison, sensitivity analysis, semantic knowledge search, and persistent context memory.
    MIT