Core Methods Module¶
??? example "scorecard_valuation"
from startup_valuation.core import scorecard_valuation
result = scorecard_valuation(
average_valuation=1_500_000,
weights=[0.30, 0.25, 0.15, 0.10, 0.10, 0.05, 0.05],
scores=[1.25, 1.50, 1.20, 0.75, 1.00, 0.90, 1.00],
)
print(f"Scorecard: ${result.value:,.0f}") # $1,800,000
??? example "berkus_valuation"
from startup_valuation.core import berkus_valuation
result = berkus_valuation(
sound_idea=500_000, prototype=400_000, quality_team=500_000,
strategic_relationships=500_000, product_rollout=0,
)
print(f"Berkus: ${result.value:,.0f}") # $1,900,000
??? example "risk_factor_summation"
from startup_valuation.core import risk_factor_summation
result = risk_factor_summation(
base_valuation=2_000_000,
risk_ratings=[1, 1, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0],
)
print(f"Risk-adjusted: ${result.value:,.0f}") # $2,750,000
??? example "vc_method_post_money"
from startup_valuation.core import vc_method_post_money
result = vc_method_post_money(terminal_value=500_000_000, target_return=10)
print(f"Post-money: ${result.value:,.0f}") # $50,000,000
??? example "vc_method_pre_money"
from startup_valuation.core import vc_method_pre_money
result = vc_method_pre_money(post_money=50_000_000, investment=5_000_000)
print(f"Pre-money: ${result.value:,.0f}") # $45,000,000
??? example "terminal_value_multiple"
from startup_valuation.core import terminal_value_multiple
result = terminal_value_multiple(projected_revenue=20_000_000, multiple=8)
print(f"Terminal value: ${result.value:,.0f}") # $160,000,000
startup_valuation.core
¶
Core valuation models for pre-revenue startups.
Chapter 3: Core Valuation Models
Classes¶
Functions:¶
scorecard_valuation(average_valuation, weights, scores)
¶
Valuation using the Scorecard Method.
Formula: V = V_avg × Σ(wᵢ × sᵢ)
Parameters:
| Name | Type | Description | Default |
|---|---|---|---|
average_valuation
|
float
|
Average regional pre-money valuation (V_avg). |
required |
weights
|
list[float]
|
Factor weights (must sum to 1). |
required |
scores
|
list[float]
|
Factor scores (1.0 = average). |
required |
Returns:
| Type | Description |
|---|---|
ValuationResult
|
ValuationResult with target valuation. |
Raises:
| Type | Description |
|---|---|
ValueError
|
If weights don't sum to 1.0 or weights/scores lengths differ. |
Notes
The Scorecard Method adjusts the average regional pre-money valuation by a weighted sum of factor scores. Each factor (team, product, market, competition, marketing, funding need, other) is scored relative to average (1.0 = average). The formula is:
$$V = V_{avg} \times \sum_{i=1}^{n} w_i \times s_i$$
where $$\sum w_i = 1$$ and $$s_i > 0$$.
Assumptions: - Scores are relative to comparable regional startups (1.0 = average) - Factors are additively independent (no interaction effects) - Linear scaling applies (no diminishing returns) - Weights reflect factor importance at the startup's current stage
References
Startup Valuation textbook, Chapter 3, Section 3.1 (Scorecard Method). Bill Payne's factor framework (7 standard factors).
See Also
berkus_valuation : Alternative pre-revenue method using milestone values. risk_factor_summation : Risk-based adjustment of baseline valuation. Theory: https://github.com/simonplmak-cloud/startup-valuation/wiki/Core-Methods
Example
result = scorecard_valuation( ... 1_500_000, ... [0.30, 0.25, 0.15, 0.10, 0.10, 0.05, 0.05], ... [1.25, 1.50, 1.20, 0.75, 1.00, 0.90, 1.00], ... ) result.value 1800000.0
Source code in src/startup_valuation/core.py
berkus_valuation(sound_idea=0, prototype=0, quality_team=0, strategic_relationships=0, product_rollout=0, max_per_factor=500000)
¶
Valuation using the Berkus Method.
Formula: V = Σ vᵢ, where each vᵢ ≤ $500K Maximum: $2.5M (5 factors × $500K)
Parameters:
| Name | Type | Description | Default |
|---|---|---|---|
sound_idea
|
float
|
Value for sound idea ($0-$500K). |
0
|
prototype
|
float
|
Value for prototype ($0-$500K). |
0
|
quality_team
|
float
|
Value for quality team ($0-$500K). |
0
|
strategic_relationships
|
float
|
Value for relationships ($0-$500K). |
0
|
product_rollout
|
float
|
Value for product rollout/sales ($0-$500K). |
0
|
max_per_factor
|
float
|
Maximum value per factor (default $500K). |
500000
|
Returns:
| Type | Description |
|---|---|
ValuationResult
|
ValuationResult with Berkus valuation. |
Raises:
| Type | Description |
|---|---|
ValueError
|
If any factor value is outside [0, max_per_factor]. |
Notes
The Berkus Method assigns dollar values to five key risk-reduction milestones. Each milestone can contribute up to $500K (default), with a maximum valuation of $2.5M:
$$V = \sum_{i=1}^{5} \text{Value}_i$$
where $$0 \leq \text{Value}_i \leq \text{max_per_factor}$$.
Factors: Sound Idea, Prototype, Quality Management Team, Strategic Relationships, Product Rollout/Sales.
Assumptions: - Applicable to pre-revenue startups only - Maximum per-factor value is $500K (adjustable) - Each factor is independently assessed - Total valuation is additive (no interactions)
References
Startup Valuation textbook, Chapter 3, Section 3.2 (Berkus Method). Dave Berkus, "The Berkus Method: Valuing an Early Stage Startup."
See Also
scorecard_valuation : Factor-weighted adjustment of average valuation. Theory: https://github.com/simonplmak-cloud/startup-valuation/wiki/Core-Methods
Example
result = berkus_valuation(500_000, 400_000, 500_000, 500_000, 0) result.value 1900000.0
Source code in src/startup_valuation/core.py
91 92 93 94 95 96 97 98 99 100 101 102 103 104 105 106 107 108 109 110 111 112 113 114 115 116 117 118 119 120 121 122 123 124 125 126 127 128 129 130 131 132 133 134 135 136 137 138 139 140 141 142 143 144 145 146 147 148 149 150 151 152 153 154 155 156 157 158 159 160 161 162 163 164 165 166 167 168 169 170 171 172 173 174 | |
risk_factor_summation(base_valuation, risk_ratings, adjustment_per_unit=250000)
¶
Valuation using the Risk Factor Summation Method.
Formula: V = V_base + Σ(rᵢ × adjustment_per_unit)
Parameters:
| Name | Type | Description | Default |
|---|---|---|---|
base_valuation
|
float
|
Base valuation for comparable companies. |
required |
risk_ratings
|
list[float]
|
Risk factor ratings (-2 to +2 for each of 12 factors). |
required |
adjustment_per_unit
|
float
|
Dollar adjustment per risk unit (default $250K). |
250000
|
Returns:
| Type | Description |
|---|---|
ValuationResult
|
ValuationResult with adjusted valuation. |
Raises:
| Type | Description |
|---|---|
ValueError
|
If risk_ratings length != 12 or ratings outside [-2, +2]. |
Notes
The Risk Factor Summation Method starts with a baseline valuation and adjusts up or down for each of 12 risk factors. Each risk unit adjusts the valuation by $250K (default):
$$V = V_{base} + \sum_{i=1}^{12} r_i \times \text{adjustment_per_unit}$$
where $$-2 \leq r_i \leq 2$$.
The 12 risk factors are: Management, Stage of Business, Legislation/Political Risk, Manufacturing Risk, Sales/Marketing Risk, Funding/Capital Raising Risk, Competition Risk, Technology Risk, Litigation Risk, International Risk, Reputation Risk, Exit Value Risk.
References
Startup Valuation textbook, Chapter 3, Section 3.3 (Risk Factor Summation Method).
See Also
scorecard_valuation : Weighted-factor approach to valuation. Theory: https://github.com/simonplmak-cloud/startup-valuation/wiki/Core-Methods
Example
result = risk_factor_summation(2_000_000, [1, 1, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0]) result.value 2750000.0
Source code in src/startup_valuation/core.py
vc_method_post_money(terminal_value, target_return)
¶
Calculate post-money valuation using the VC Method.
Formula: Post-Money = Terminal Value / Target Return
Parameters:
| Name | Type | Description | Default |
|---|---|---|---|
terminal_value
|
float
|
Expected exit value. |
required |
target_return
|
float
|
Target return multiple (e.g., 10 for 10x). |
required |
Returns:
| Type | Description |
|---|---|
ValuationResult
|
ValuationResult with post-money valuation. |
Raises:
| Type | Description |
|---|---|
ValueError
|
If target_return is not positive. |
Notes
The Venture Capital Method works backward from an expected exit value to determine today's post-money valuation:
$$V_{post} = \frac{\text{Terminal Value}}{\text{Target Return}}$$
A target return of 10x means the investor expects to 10x their investment by exit. This method assumes a single liquidity event at a known future date.
References
Startup Valuation textbook, Chapter 3, Section 3.4 (VC Method).
See Also
vc_method_pre_money : Subtract investment to get pre-money value. terminal_value_multiple : Estimate terminal value from revenue. Theory: https://github.com/simonplmak-cloud/startup-valuation/wiki/Core-Methods
Example
result = vc_method_post_money(500_000_000, 10) result.value 50000000.0
Source code in src/startup_valuation/core.py
vc_method_pre_money(post_money, investment)
¶
Calculate pre-money valuation.
Formula: Pre-Money = Post-Money - Investment
Parameters:
| Name | Type | Description | Default |
|---|---|---|---|
post_money
|
float
|
Post-money valuation. |
required |
investment
|
float
|
Investment amount. |
required |
Returns:
| Type | Description |
|---|---|
ValuationResult
|
ValuationResult with pre-money valuation. |
Notes
Pre-money valuation is simply post-money minus the investment amount:
$$V_{pre} = V_{post} - \text{Investment}$$
This is the valuation before new capital is injected.
References
Startup Valuation textbook, Chapter 3, Section 3.4 (VC Method).
See Also
vc_method_post_money : Calculate post-money from terminal value. Theory: https://github.com/simonplmak-cloud/startup-valuation/wiki/Core-Methods
Example
result = vc_method_pre_money(8_000_000, 1_500_000) result.value 6500000.0
Source code in src/startup_valuation/core.py
terminal_value_multiple(projected_revenue, multiple)
¶
Calculate terminal value using a revenue multiple.
Formula: Terminal Value = Revenue × Multiple
Parameters:
| Name | Type | Description | Default |
|---|---|---|---|
projected_revenue
|
float
|
Projected revenue at exit. |
required |
multiple
|
float
|
Industry revenue multiple. |
required |
Returns:
| Type | Description |
|---|---|
ValuationResult
|
ValuationResult with terminal value. |
Notes
Terminal value using a revenue multiple at exit:
$$\text{TV} = \text{Revenue} \times \text{Multiple}$$
Multiples vary by industry (3-10x for SaaS, 1-3x for services). Used as input to the VC Method for discounting back to present value.
References
Startup Valuation textbook, Chapter 3, Section 3.4 (VC Method).
See Also
vc_method_post_money : Discount terminal value to post-money. Theory: https://github.com/simonplmak-cloud/startup-valuation/wiki/Core-Methods
Example
result = terminal_value_multiple(20_000_000, 8) result.value 160000000.0