Skip to content

Hardware Module

??? example "trl_adjusted_valuation"

from startup_valuation.hardware import trl_adjusted_valuation

result = trl_adjusted_valuation(
    market_size=1_000_000_000, market_share=0.05,
    margin=0.30, multiple=5, trl_discount=0.40,
)
print(f"TRL-adjusted: ${result.value:,.0f}")  # $45,000,000

??? example "gross_margin_hardware"

from startup_valuation.hardware import gross_margin_hardware

result = gross_margin_hardware(asp=500, cogs=200)
print(f"Gross margin: {result.value:.0%}")  # 60%

??? example "break_even_volume"

from startup_valuation.hardware import break_even_volume

result = break_even_volume(fixed_costs=1_000_000, asp=500, variable_cost=200)
print(f"Break-even volume: {result.value:,.0f} units")  # 3,333 units

??? example "probability_weighted_dcf"

from startup_valuation.hardware import probability_weighted_dcf

scenarios = [
    {"probability": 0.20, "cash_flows": [0, 0, 50_000_000, 100_000_000]},
    {"probability": 0.60, "cash_flows": [0, 0, 20_000_000, 40_000_000]},
    {"probability": 0.20, "cash_flows": [0, 0, -10_000_000, 0]},
]
result = probability_weighted_dcf(scenarios, discount_rate=0.15)
print(f"Expected value: ${result.value:,.0f}")

startup_valuation.hardware

Hardware and deep tech valuation methods.

Chapter 11: Industry-Specific Valuation Frameworks — Hardware

Classes

Functions

trl_adjusted_valuation(market_size, market_share, margin, multiple, trl_discount)

Calculate TRL-adjusted valuation.

Formula: Valuation = Market Size × Market Share × Margin × Multiple × (1 - TRL Discount)

TRL discount: TRL 1-5: 70-95%, TRL 6-7: 40-60%, TRL 8-9: 10-30%

Example

result = trl_adjusted_valuation(10_000_000_000, 0.05, 0.40, 15, 0.80) result.value / 1_000_000_000 0.6

Source code in src/startup_valuation/hardware.py
def trl_adjusted_valuation(
    market_size: float,
    market_share: float,
    margin: float,
    multiple: float,
    trl_discount: float,
) -> ValuationResult:
    """Calculate TRL-adjusted valuation.

    Formula: Valuation = Market Size × Market Share × Margin × Multiple × (1 - TRL Discount)

    TRL discount: TRL 1-5: 70-95%, TRL 6-7: 40-60%, TRL 8-9: 10-30%

    Example:
        >>> result = trl_adjusted_valuation(10_000_000_000, 0.05, 0.40, 15, 0.80)
        >>> result.value / 1_000_000_000
        0.6
    """
    return ValuationResult(
        value=market_size * market_share * margin * multiple * (1 - trl_discount),
        method="TRL-Adjusted Valuation",
        inputs={
            "market_size": market_size,
            "market_share": market_share,
            "margin": margin,
            "multiple": multiple,
            "trl_discount": trl_discount,
        },
        assumptions=["TRL discount reflects technology maturity risk"],
        chapter="11",
    )

gross_margin_hardware(asp, cogs)

Calculate hardware gross margin.

Formula: Gross Margin = (ASP - COGS) / ASP

Source code in src/startup_valuation/hardware.py
def gross_margin_hardware(asp: float, cogs: float) -> ValuationResult:
    """Calculate hardware gross margin.

    Formula: Gross Margin = (ASP - COGS) / ASP
    """
    if asp <= 0:
        raise ValueError("asp must be positive")
    return ValuationResult(
        value=(asp - cogs) / asp,
        method="Hardware Gross Margin",
        inputs={"asp": asp, "cogs": cogs},
        chapter="11",
    )

break_even_volume(fixed_costs, asp, variable_cost)

Calculate break-even volume.

Formula: Break-Even Volume = Fixed Costs / (ASP - Variable Cost per Unit)

Source code in src/startup_valuation/hardware.py
def break_even_volume(fixed_costs: float, asp: float, variable_cost: float) -> ValuationResult:
    """Calculate break-even volume.

    Formula: Break-Even Volume = Fixed Costs / (ASP - Variable Cost per Unit)
    """
    contribution = asp - variable_cost
    if contribution <= 0:
        raise ValueError("ASP must exceed variable cost for break-even")
    return ValuationResult(
        value=fixed_costs / contribution,
        method="Break-Even Volume",
        inputs={"fixed_costs": fixed_costs, "asp": asp, "variable_cost": variable_cost},
        chapter="11",
    )

probability_weighted_dcf(probabilities, values)

Calculate probability-weighted DCF.

Formula: E[V] = Σ pᵢ × Vᵢ

Example

result = probability_weighted_dcf([0.30, 0.40, 0.30], [60_000_000_000, 10_000_000_000, 0]) result.value / 1_000_000_000 22.0

Source code in src/startup_valuation/hardware.py
def probability_weighted_dcf(
    probabilities: list[float],
    values: list[float],
) -> ValuationResult:
    """Calculate probability-weighted DCF.

    Formula: E[V] = Σ pᵢ × Vᵢ

    Example:
        >>> result = probability_weighted_dcf([0.30, 0.40, 0.30], [60_000_000_000, 10_000_000_000, 0])
        >>> result.value / 1_000_000_000
        22.0
    """
    if len(probabilities) != len(values):
        raise ValueError("probabilities and values must have same length")
    return ValuationResult(
        value=sum(p * v for p, v in zip(probabilities, values)),
        method="Probability-Weighted DCF",
        inputs={"probabilities": probabilities, "values": values},
        chapter="11",
    )