Functional Weave
Code in Python

subscriptions.ltv-cac@1.0.0

README.md

1,933 bytes · view raw

# subscriptions.ltv-cac

The three unit-economics figures SaaS investors ask for, from four inputs:

    LTV            = ARPA x gross margin / monthly customer churn
    LTV : CAC      = LTV / CAC
    CAC payback    = CAC / (ARPA x gross margin)       in months

LTV is ChartMogul's published formula ("LTV = ARPA x Gross Margin / Customer
Churn Rate"): a customer who pays ARPA a month and churns with probability c
each month stays 1/c months on average, and only the gross margin of what they
pay is value. CAC payback is the usual gross-margin-adjusted form: how many
months of margin it takes to earn back what it cost to win the customer. With
ARPA 100.00, an 80% margin, 2.5% monthly churn and CAC 1,200.00, LTV is
3,200.00, the ratio is 2.67x and payback is 15 months.

Rounding. Each figure is one exact integer division from the inputs, never
built from another rounded figure: LTV is rounded half-up to the minor unit,
the ratio half-up to a basis point (30000 is 3x, the common target), and
payback is rounded up to whole months, because a customer who has paid back
12.5 months of CAC has not paid it back after 12.

Zeroes are answers, not errors. With no churn the simple formula has no
finite lifetime, so LTV and the ratio are null; with no CAC the ratio is null
and payback is 0 months; with no margin (or no revenue) payback is null,
because it never happens.

The formula assumes churn is constant over a customer's life, which in
practice overstates LTV: churn is usually highest in the first months. Use
monthly figures for all three rates; for annual churn, convert first.

Errors: a negative ARPA or CAC, rates outside 0 to 10000, amounts in different
currencies, and inputs so large the intermediate products leave the exact
integer range (2^53 - 1) that all three languages share.

Sources: ChartMogul, "Customer Lifetime Value (LTV)",
https://chartmogul.com/saas-metrics/ltv/ (formula and LTV:CAC ratio).