Marketing Science + Capital Allocation

NPVROAS

The Complete Formula Map: From Raw Spend to Capital Allocation Decisions

"A junior marketer worries about ROAS. A better marketer worries about ROI. A serious capital allocator thinks in NPV. NPVROAS bridges the gap."
0

The Evolution

Why existing metrics fail at capital allocation

Junior Marketer
ROAS
Revenue / Ad Spend
Misses: time value, churn, margins, LTV
Better Marketer
ROI
(Revenue - Cost) / Cost
Misses: discounting, expansion, saturation
Capital Allocator
NPVROAS
NPV(Cashflows) / Investment
Captures: TVM, churn, expansion, saturation, margins
Raw Spend
Adstock
Response Curve
Customers
T-Horizon Cashflows
NPV
Capital Decision
1

Spend & Adstock Modeling

Marketing impressions don't vanish instantly. Adstock captures memory decay.

$
Monthly Spend with Seasonality
Budget allocation over time
S(c,t) = Base_Spend(c) × Seasonality(t)

// Seasonality multipliers by month:
// Jan=0.8, Feb=0.85, Mar=0.95, Apr=1.0,
// May=1.05, Jun=0.9, Jul=0.7, Aug=0.6,
// Sep=1.1, Oct=1.2, Nov=1.5, Dec=1.8
S(c,t) spend for channel c, month t
Base_Spend annual budget / 12
Seasonality monthly multiplier
Adstock (Exponential Decay)
Carryover effect of past spend
A(t) = S(t) + θ × A(t-1)
θ decay rate (0 = no memory, 1 = perfect memory)
A(t) adstocked spend at time t
Why it matters: TV and content have high θ because brand impressions linger. Paid Search has low θ because intent fades quickly. Ignoring adstock misattributes long-memory channels' contributions.
θ
Channel-Specific Decay Parameters
Calibrated adstock rates by channel type
Paid_Search: θ = 0.20
Display: θ = 0.30
LinkedIn_Ads: θ = 0.45
Organic: θ = 0.50
Account_Based: θ = 0.55
Content: θ = 0.60
2

Response Curves (Saturation)

More spend doesn't mean proportionally more customers. Diminishing returns are the law.

log
Log Response Curve
Most channels — concave saturation
R(x) = β × log(1 + k × x)
β scale (max response)
k sensitivity (how fast it saturates)
x adstocked spend
Why log: Doubling spend does not double output. The marginal customer costs more than the average customer. This is why average ROAS misleads.
Hill Response Curve
Account-Based Marketing — S-curve with threshold
R(x) = β × xα / (xα + λ)
α steepness of S-curve
λ half-max spend
β max response ceiling
Why Hill for ABM: Enterprise ABM often requires minimum investment before returns appear. Below-threshold spend is wasted.

The Core Insight: Average Returns ≠ Marginal Returns

Channels with the strongest average performance are often not the best place to allocate the next dollar. A capital allocator who invests on marginals creates value; one who invests on averages can destroy it.

3

Customer Acquisition

Converting response curve output into actual customer arrivals

👥
Expected Customers per Channel
Response to customer conversion
E[Customers(c,t)] = R(Adstock(c,t))

Actual ~ Poisson(λ = E[Customers])
R() response curve output
Poisson discrete random arrivals
🎯
Persona Assignment
Channel-persona affinity matrix
P(persona | channel) = Affinity_Matrix[c,p]
ACV contract value by persona
Retention monthly survival rate
Expansion annual growth rate
4

Customer Lifetime Value (NPV)

The heart of NPVROAS: discounted, risk-adjusted cashflows over the customer lifetime

The NPVROAS Master Formula

NPVcustomer = Σt=0T CF(t) / (1 + r)t
CF(t)
cashflow at time t
Rev(t)
revenue at time t
GM
gross margin
Alive(t)
survival at time t
r
discount rate
T
economic horizon in months
💰
Cashflow Definition
Finance-native decomposition
CFi,c(t) = Revi(t) × GM × Alivei(t)
💰
Monthly Revenue per Customer
Base + expansion, pre-churn
Revi(t) = (ACVi / 12) × (1 + gi)t/12
ACV annual contract value
g expansion rate
Churn / Survival Function
Stochastic customer lifetime
E[Alivei(t)] = retentionit
Why stochastic: expected survival gives the mean, but simulation reveals the variance and risk profile of each channel’s customer base.
%
Discount Rate
Time value of money conversion
rmonthly = (1 + rannual)1/12 - 1

DF(t) = 1 / (1 + rmonthly)t
Sales Cycle Delay
Time from acquisition to first revenue
Revenue starts at: t = ceil(sales_cycle_days / 30)
5

Cost & Efficiency Metrics

What you actually paid vs. what you actually got

📊
Customer Acquisition Cost (CAC)
True fully-loaded cost per customer
CAC(c) = Total_Spend(c) / Customers(c)

Fully_Loaded_CAC = CAC × Sales_Multiplier
LTV:CAC Ratio
The classic — but incomplete — efficiency metric
LTV:CAC = NPV(Customer Cashflows) / CAC
The trap: LTV:CAC is an average metric. Marginal NPV tells you where to allocate the next dollar.
6

Marginal NPV & Capital Allocation

The decision that matters: where does the NEXT dollar go?

Δ
Marginal NPV per Channel
Monte Carlo incremental testing
ΔNPV(c) = E[NPV(budget + δ)] - E[NPV(budget)]
δ marginal spend increment
N simulation count
Budget Reallocation
Moving capital from saturated to hungry channels
New_Budget(c) = Old_Budget(c) + Reallocation(c)

ΔPortfolio_NPV = NPV(new) - NPV(old)
7

A/B Testing & Bayesian Updating

Continuous learning: updating beliefs about channel performance with new data

A|B
Frequentist A/B Test
Standard significance testing
z = (μB - μA) / √(sA²/nA + sB²/nB)

MDE = zα × √(2σ²/n)
𝒫
Bayesian Posterior Update
Updating channel beliefs with new evidence
P(θ|data) ∝ P(data|θ) × P(θ)

P(B > A) = ∫ P(θB > θA) dθ
Why Bayesian: it answers the capital allocator’s question: how confident am I, and what should I do next?

Putting It All Together: NPVROAS

NPVROAS(c) = [ Σi in Customers(c) Σt=0T CFi,c(t) / (1+r)t ] / Total_Spend(c)
T is a flexible economic horizon, not an arbitrary fixed month count. This makes the framework more generalizable and more finance-native.