CAPM Module¶
??? example "capm"
from startup_valuation.capm import capm
result = capm(risk_free_rate=0.04, beta=1.5, market_return=0.10)
print(f"Expected return: {result.value:.2%}") # 13.00%
??? example "portfolio_beta"
from startup_valuation.capm import portfolio_beta
result = portfolio_beta(
weights=[0.40, 0.30, 0.30],
betas=[1.2, 0.8, 1.5],
)
print(f"Portfolio beta: {result.value:.2f}") # 1.17
??? example "startup_adjusted_capm"
from startup_valuation.capm import startup_adjusted_capm
result = startup_adjusted_capm(
risk_free_rate=0.04, beta=1.5, market_risk_premium=0.06,
size_premium=0.03, startup_premium=0.05,
)
print(f"Startup CAPM: {result.value:.2%}") # 21.00%
??? example "portfolio_variance"
from startup_valuation.capm import portfolio_variance
import numpy as np
cov_matrix = np.array([[0.04, 0.01], [0.01, 0.09]])
result = portfolio_variance(weights=[0.60, 0.40], cov_matrix=cov_matrix)
print(f"Portfolio variance: {result.value:.4f}") # 0.0288
startup_valuation.capm
¶
CAPM and risk-adjusted return calculations.
Chapter 2: Mathematical Foundations — Risk-Adjusted Discount Rates
Classes¶
Functions¶
capm(risk_free_rate, beta, market_return)
¶
Calculate expected return using CAPM.
Formula: E(Rᵢ) = Rf + βᵢ × (E(Rm) - Rf)
Parameters:
| Name | Type | Description | Default |
|---|---|---|---|
risk_free_rate
|
float
|
Risk-free rate (Rf). |
required |
beta
|
float
|
Beta of the asset (βᵢ). |
required |
market_return
|
float
|
Expected market return (E(Rm)). |
required |
Returns:
| Type | Description |
|---|---|
ValuationResult
|
ValuationResult with expected return. |
Example
result = capm(0.03, 1.5, 0.10) round(result.value, 4) 0.135
Source code in src/startup_valuation/capm.py
portfolio_beta(weights, betas)
¶
Calculate portfolio beta as weighted average.
Formula: βp = Σ wᵢ × βᵢ
Parameters:
| Name | Type | Description | Default |
|---|---|---|---|
weights
|
list[float]
|
Portfolio weights (wᵢ). |
required |
betas
|
list[float]
|
Individual asset betas (βᵢ). |
required |
Returns:
| Type | Description |
|---|---|
ValuationResult
|
ValuationResult with portfolio beta. |
Example
result = portfolio_beta([0.60, 0.40], [0.8, 1.2]) result.value 0.96
Source code in src/startup_valuation/capm.py
startup_adjusted_capm(risk_free_rate, beta, market_risk_premium, size_premium=0.0, startup_premium=0.0)
¶
Calculate startup-adjusted CAPM with additional risk premiums.
Formula: E(R) = Rf + β × MRP + Size Premium + Startup Premium
Parameters:
| Name | Type | Description | Default |
|---|---|---|---|
risk_free_rate
|
float
|
Risk-free rate. |
required |
beta
|
float
|
Beta of the startup. |
required |
market_risk_premium
|
float
|
Market risk premium. |
required |
size_premium
|
float
|
Additional premium for small company size. |
0.0
|
startup_premium
|
float
|
Additional premium for startup-specific risks. |
0.0
|
Returns:
| Type | Description |
|---|---|
ValuationResult
|
ValuationResult with adjusted expected return. |
Example
result = startup_adjusted_capm(0.04, 1.3, 0.07, 0.03, 0.10) round(result.value, 4) 0.261
Source code in src/startup_valuation/capm.py
portfolio_variance(weights, covariances)
¶
Calculate portfolio variance.
Formula: Var(Rp) = ΣΣ wᵢ × wⱼ × Cov(Rᵢ, Rⱼ)
Parameters:
| Name | Type | Description | Default |
|---|---|---|---|
weights
|
list[float]
|
Portfolio weights. |
required |
covariances
|
list[list[float]]
|
Covariance matrix. |
required |
Returns:
| Type | Description |
|---|---|
ValuationResult
|
ValuationResult with portfolio variance. |