Core Methods
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. |
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. |
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
risk_factor_summation(base_valuation, risk_ratings, adjustment_per_unit=250000)
¶
Valuation using the Risk Factor Summation Method.
Formula: V = V_base × (1 + Σ(rᵢ × $250K))
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. |
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. |
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. |
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. |
Example
result = terminal_value_multiple(20_000_000, 8) result.value 160000000.0