Skip to main content
Glama
yagebin79386

openvaluation

by yagebin79386

openvaluation

Методы оценки стартапов как проверяемый код. Berkus, Scorecard, Risk Factor Summation, метод венчурного капитала, First Chicago и рыночные мультипликаторы — реализованы, протестированы и способны показать свои расчёты.

Бесплатно и с открытым исходным кодом, лицензия MIT. Чистый Python, без зависимостей, без API-ключей, без сетевых вызовов.

pip install openvaluation

Методы для компаний без выручки, которые реально используют ангельские группы, живут в учебниках, таблицах и электронных таблицах, но не в поддерживаемом программном обеспечении. Поищите на GitHub «Berkus method» — найдёте разрозненные скрипты с нулём звёзд; каждый коммерческий инструмент, реализующий эти методы, держит арифметику закрытой. Этот пакет — недостающий элемент: библиотека, которую может вызвать агент, скрипт или блокнот и получить защищаемое число с приложенным выводом.

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, ...

Извлечение вероятностно; арифметика — нет

Языковые модели постоянно спрашивают, сколько стоит стартап, и они плохи в этом — не в рассуждениях, а в арифметике и в запоминании того, какой метод требует какой вход. Однако они очень хороши в чтении питч-дека и извлечении структурированных фактов.

Этот пакет проводит границу между этими двумя задачами. Модель читает документы и заполняет поля. Движок выполняет арифметику детерминированно и сообщает, как именно он к этому пришёл. Одинаковый вход, одинаковый выход, каждый раз — без модели в цикле, которая могла бы отклоняться.

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)

Каждый результат несёт свои шаги, свои допущения, свои ограничения и ссылку на метод. Оценка, которую никто не может проверить, не стоит защиты.

Что вообще можно запустить?

Обычно вопрос возникает до оценки: учитывая то, что известно о компании, какие методы доступны и какой один недостающий факт откроет больше всего?

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 Method

До выручки

Оценки по пяти факторам риска

scorecard

Scorecard Method

До выручки

Сектор, плюс оценки относительно сопоставимых компаний

risk_factor_summation

Risk Factor Summation

До выручки

Сектор, плюс оценки по двенадцати рискам

vc_method

Venture Capital Method

Привлечение капитала с реалистичным выходом

Стоимость выхода или выручка при выходе

first_chicago

First Chicago Method

Исходы действительно бимодальны

Три сценария с вероятностями

ev_arr

EV / ARR

Подписная выручка

ARR и сектор

ev_revenue

EV / Revenue

Выручка, но ещё нет прибыли

Годовая выручка и сектор

ev_ebitda

EV / EBITDA

Прибыльная

Положительный EBITDA и сектор

Полная документация по каждому методу — формула, проработанный пример, ограничения и источник, по одной странице на каждый. Каждый пример на этих страницах выполняется тестовым набором, поэтому ничто не может отклониться от кода.

Каждый метод реализован из его опубликованного описания и цитирует его. Веса Scorecard — это веса Билла Пейна (30% команда, 25% возможность, 15% продукт, 10% конкуренция, 10% продажи, 5% потребность в инвестициях, 5% прочее); Berkus ограничивает пять элементов по 500 000 каждый; Risk Factor Summation сдвигает сопоставимое среднее на 250 000 за шаг по двенадцати факторам. Каждая из этих констант — аргумент конструктора, а не магическое число, зарытое в арифметике.

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

Данные для бенчмарков — ваша проблема, и пакет об этом говорит

Три метода нуждаются во внешних числах: сколько стоят сопоставимые компании, по какому мультипликатору торгуется сектор, под какую ставку фонд андеррайтит. Эти числа устаревают, и ни одна библиотека не должна делать вид, что это не так, поэтому они поступают через провайдера, которого вы поставляете.

Провайдер по умолчанию поставляет иллюстративные заглушки — круглые, без дат, чтобы примеры работали. Любая оценка, которая их касается, говорит об этом в своих ограничениях:

  - 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, электронной таблицы. Три метода, все синхронные. Отраслевые мультипликаторы и стоимость капитала, публикуемые Асватом Дамадараном в NYU Stern, — обычная бесплатная отправная точка.

Провайдер, у которого нет цифры, вызывает UnknownBenchmark, а не подставляет догадку, потому что оценка, построенная на выдуманном мультипликаторе, хуже, чем отсутствие оценки.

Дайте это ИИ-агенту

Отправьте методы любой модели, с которой вы уже общаетесь. 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-обработчика или блокнота:

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. Эти методы дают переговорные якоря и проверки здравомыслия. Оценка с юридическим или налоговым статусом требует квалифицированного оценщика.

  • Не экстрактор. Он принимает структурированные факты; извлечение их из питч-дека — отдельная задача, и хорошая для языковой модели.

  • Не источник рыночных данных. См. выше.

  • Не механизм суждений. Оценки Berkus и факторы Scorecard — это суждения о компании. Пакет записывает и применяет их; он не формирует их.

Когда методы расходятся более чем на медиану, отчёт говорит об этом — потому что это расхождение является информацией, и усреднение его уничтожает.

Требования

Python 3.9+ (разработано и протестировано на 3.11). Нет зависимостей времени выполнения.

Откуда это взялось

Я построил движок оценки, лежащий в основе Wakeworth, который оценивает стартапы по загруженным документам. Сами методы — общеизвестное знание и должны быть в публичном коде; проприетарными там остаются извлечение документов и отчётность вокруг них. Этот пакет — слой методов, пересобранный отдельно из опубликованных описаний, с открытыми константами и каждым результатом, показывающим свои расчёты.

Участие

Приветствуются issues и pull request'ы. Я поддерживаю это на основе best-effort наряду с другой работой, поэтому ожидайте обдуманных ответов, а не быстрых. Самые полезные вклады — метод, реализованный из цитируемого источника, или случай, когда арифметика здесь расходится с проработанным примером в литературе.

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

Лицензия

MIT — см. LICENSE.


Последнее обновление: 2026-08-20 · Changelog

-
license - not tested
Not graded
quality - not tested
B
maintenance

Maintenance

Maintainers
Response time
Release cycle
1Releases (12mo)
Commit activity

Resources

Unclaimed servers have limited discoverability.

Looking for Admin?

If you are the server author, to access and configure the admin panel.

Related MCP Connectors

  • Free MCP tools: the only MCP linter, health checks, cost estimation, and trust evaluation.

  • A paid remote MCP for Equibles, built to return verdicts, receipts, usage logs, and audit-ready JSON

  • Free SME valuation, sell-readiness, M&A pricing, partner and deal-referral tools in EN/FR/ES/PT.

View all MCP Connectors

Latest Blog Posts

MCP directory API

We provide all the information about MCP servers via our MCP API.

curl -X GET 'https://glama.ai/api/mcp/v1/servers/yagebin79386/openvaluation'

If you have feedback or need assistance with the MCP directory API, please join our Discord server