尧图建网站 尧图建网站 YAOTU WEB BUILD 免费咨询
ARTICLE DETAIL

资讯详情

深耕网站建设与建站编程的一线实战洞察。

用Python拆解补贴成本黑洞:CAC与LTV建模分析

用Python拆解补贴成本黑洞:CAC与LTV建模分析 好久没有聊商业层面的东西了。前阵子和几个做增长的朋友复盘一个项目聊到一个很有意思的现象用户下单只花了一块钱平台补贴五块六算下来单笔毛利已经是非常夸张的负数但大家还是停不下来。原因很简单——补贴一旦停了订单量立刻跳水留存也撑不住。更扎心的是仔细把底层账算一遍之后会发现那一块多钱的补贴根本不算什么。真正可怕的是隐藏在背后的研发成本、流量采买、履约成本、客服与风控分摊一算下来一个“便宜到离谱”的订单综合成本可能是几十块甚至几百块。这就是典型的“补贴盖不住成本黑洞”。这篇文章不聊情绪不喊口号只做一件最实在的事把“成本黑洞”变成一个可拆解、可建模、可计算的商业指标分析过程。我用 Python 建立一个简化的成本测算模型把 CAC、LTV、留存衰减、补贴强度这些因素全部放进去看看一单亏损是如何一步步演变成长周期亏损的。适合做增长、做数据、做后端、做商业分析的读者收藏阅读。1. 补贴商业模式背后的成本结构1.1 用户视角和平台视角的成本差异先看一个最简单场景。某平台做拉新活动新用户首单 1 元买一杯奶茶平台补贴 5.6 元。站在用户角度这是一笔非常划算的交易站在平台角度表面亏损是 5.6 元。但如果只算这 5.6 元那就漏掉了绝大多数成本。一笔订单真正进入平台系统后至少要经历这些环节用户从广告或者分享链接点击进入、注册、登录、浏览商品、决策、下单、支付、履约发货、售后客服、风控校验、数据上报。每个环节背后都有对应的成本但这些成本在业务报表里并不显眼因为它们通常被混在“研发费用”“市场费用”“管理费用”中。我把一个简化的订单成本拆解做成一个表格方便大家有个直观感受成本项成本类型估算范围说明商品成本变动成本5 - 15 元实物商品或服务采购成本履约成本变动成本5 - 20 元物流、配送、门店制作支付通道费变动成本订单金额的 0.6% - 1.2%微信/支付宝/银行卡通道费用用户补贴变动成本1 - 10 元优惠券、红包、立减流量采买成本获客成本20 - 200 元/新客信息流广告、KOL 投放、拉新活动研发与服务器分摊固定成本按订单量分摊后端、客户端、算法、云资源客服与风控分摊固定成本按订单量分摊客服人力、风控策略、审核可以看到用户看到的“补贴力度”只是表层数字平台真正的支出大头往往在流量采买和固定成本分摊上。1.2 CAC 与 LTV衡量补贴到底值不值在互联网商业分析中两个指标是所有补贴策略绕不开的CAC 和 LTV。CAC 全称 Customer Acquisition Cost即获取一个新用户的成本。它的计算公式非常简单CAC 某段时间内总获客投入 / 该段时间内新增用户数这里的“总获客投入”不只是广告投放金额还包括拉新活动的补贴金额、赠品成本、渠道佣金、素材制作成本。如果只看广告投放不看活动补贴CAC 会被低估。LTV 全称 Lifetime Value即用户生命周期价值。它表示一个用户从第一次进入平台到最终流失累计为平台贡献的毛利总额。LTV 用户生命周期内平均每单毛利 × 用户生命周期内平均订单数更精细一点还要按留存衰减来计算。因为用户不会永远活跃每个月都会有一部分人流失。只有把流失率考虑进去LTV 才能反映真实情况。判断补贴是否健康业内常用一个比值LTV / CACLTV / CAC 3用户质量很好增长模型健康。LTV / CAC 在 1 到 3 之间可以接受但要持续关注。LTV / CAC 1用户贡献的毛利覆盖不了获客成本越增长越亏这就是“增长陷阱”。1.3 成本黑洞的本质是 LTV/CAC 失衡回到“一块钱买、补贴五块六”的场景。假设一位用户首单消费 1 元平台实际支付的总成本是商品成本 8 元 履约成本 6 元 支付成本 0.1 元 补贴 5.6 元 19.7 元用户首单贡献的收入只有 1 元毛利是 -18.7 元。也就是说他必须在这个平台上继续消费并且产生足够多的正毛利订单平台才能把这笔钱赚回来。如果这位用户第二个月就流失了那么平台在他身上的收入就永远只有那 1 元。获客成本 首单履约成本 补贴成本全部沉没亏损就已经确定了。所以用户补贴本身并不是原罪。真正的风险在于补贴拉来了一大批低留存用户LTV 根本覆盖不了 CAC导致单用户亏损成为无法回收的沉没成本。这就是“几千块成本黑洞”的本质。2. 烧钱换增长的核心矛盾留存率与补贴效率2.1 补贴用户的行为分层补贴拉来的用户通常不是同一类人。如果用一个粗糙的分类法可以分成三层第一层是“羊毛党”。他们专门盯着优惠活动哪里有补贴去哪里补贴一停立马走人。这类用户几乎不可能转化为长期付费用户留存率极低甚至可能带来风控和套利风险。第二层是“价格敏感型用户”。他们对价格很在意哪家便宜选哪家。这类用户中有一部分在体验良好后会留下来但忠诚度取决于平台能否持续提供性价比。一旦竞争对手给出更高的优惠他们就会转移。第三层是“价值认同型用户”。他们可能因为朋友推荐、内容种草、平台体验而选择产品补贴只是降低了首次尝试的门槛。这类用户即使补贴结束后仍然愿意继续消费是真正有价值的用户。不同人群的留存率差异非常大。业内经常提到的一个残酷事实是补贴带来的用户中真正能留存下来的比例往往很低。如果留存率只有 10%那么 CAC 就必须由这 10% 的用户去承担实际“有效获客成本”变成了表面的 10 倍。2.2 留存率如何影响 LTVLTV 的计算不能只看“单用户平均消费次数”还要看用户在整个生命周期里的流失节奏。比如某平台用户月流失率是 50%那么用户平均活跃月数就是平均生命周期月数 1 / 月流失率 1 / 0.5 2 个月如果用户每个月平均贡献毛利 10 元那么 LTV 就是LTV 10 × 2 20 元如果获客成本 CAC 是 30 元那么 LTV/CAC 0.67说明平台每获取一个用户平均亏 10 元。如果留存优化做得好月流失率从 50% 降到 30%那么平均生命周期月数变成1 / 0.3 ≈ 3.33 个月同样是每个月贡献 10 元毛利LTV 变成 33.3 元LTV/CAC 1.11这时候商业模型才勉强转正。这就是为什么所有平台都在强调留存。留存率提升带来的 LTV 增长不是线性增长而是指数级的改善。相比之下单纯压低补贴金额对长期模型的影响反而有限。2.3 补贴效率递减曲线补贴还有一个很难回避的问题补贴效率递减。当补贴金额很低时每多补贴 1 块钱订单量可能会有明显提升但当补贴已经非常高时再增加补贴用户增长几乎不再变化。因为用户的下单决策受到商品质量、配送速度、平台口碑、替代品价格等多重因素影响价格只是其中之一。如果把补贴金额和新增订单量画成一条曲线大概可以理解为一个“先快速增长、后逐渐饱和”的形态。这也解释了为什么在某些深陷补贴战的行业中补贴金额越加越大用户增长却越来越慢最终单位获客成本被不断抬高。3. 用 Python 搭建一个补贴成本测算模型3.1 建模目标前面讲了很多概念接下来进入正题用 Python 把“成本黑洞”量化出来。我会基于以下假设搭建一个简化模型模拟一个电商平台的新用户补贴活动。输入参数包括商品成本、履约成本、支付费率、补贴金额、获客成本、月留存率等。核心输出包括单用户首单毛利、用户生命周期价值 LTV、LTV/CAC 比值、回本周期。这个模型可以帮助我们回答三个问题一单卖出 1 元商品平台到底亏多少钱用户要多长时间才能让平台回本如果把某个参数调整一下结果会发生什么变化3.2 模型变量设计先定义模型变量。为了便于理解我用一个配置字典来管理所有参数# 文件路径subsidy_model.py model_config { order_price: 1.0, # 用户支付金额元 goods_cost: 8.0, # 商品成本元 delivery_cost: 6.0, # 履约配送成本元 payment_fee_rate: 0.006, # 支付通道费率 subsidy: 5.6, # 平台补贴金额元 cac: 30.0, # 单用户获客成本元 monthly_gross_profit: 10.0, # 用户留存后平均每月的毛利贡献元 monthly_churn_rate: 0.5 # 月流失率50% }下面对几个关键参数做一下解释order_price用户实际支付的金额。在我们的场景中是 1 元。goods_cost和delivery_cost平台为这笔订单实际付出的商品与物流成本。payment_fee_rate支付通道按订单金额抽取的手续费比例一般小额订单最低收费也可能有封底值这里简化处理。subsidy平台额外补贴。cac获取一个新用户需要投入的营销费用包含广告投放、活动补贴、素材制作等。monthly_gross_profit如果用户留存下来每个月能为平台贡献多少毛利。这里的毛利是指订单收入减去商品成本、履约成本和支付费之后的利润。monthly_churn_rate每个自然月流失的用户比例。3.3 核心函数实现先写一个函数计算单笔订单的成本和毛利# 文件路径subsidy_model.py def calculate_first_order_profit(cfg): 计算新用户首单的净收入、总成本和毛利。 order_price cfg[order_price] goods_cost cfg[goods_cost] delivery_cost cfg[delivery_cost] payment_fee order_price * cfg[payment_fee_rate] subsidy cfg[subsidy] total_cost goods_cost delivery_cost payment_fee subsidy gross_profit order_price - total_cost return { order_price: order_price, goods_cost: goods_cost, delivery_cost: delivery_cost, payment_fee: round(payment_fee, 2), subsidy: subsidy, total_cost: round(total_cost, 2), first_order_profit: round(gross_profit, 2) }这个函数很直接平台为用户支付的所有成本加总然后和订单收入做差。如果结果是负数说明首单就是亏损的。接着计算用户生命周期价值 LTV。这里会用到月留存率也就是每过一个月的留存概率# 文件路径subsidy_model.py def calculate_ltv(cfg): 基于月流失率计算用户生命周期价值 LTV。 LTV monthly_gross_profit / monthly_churn_rate monthly_gross_profit cfg[monthly_gross_profit] churn_rate cfg[monthly_churn_rate] if churn_rate 1: avg_lifetime_months 1 else: avg_lifetime_months 1 / churn_rate ltv monthly_gross_profit * avg_lifetime_months return { avg_lifetime_months: round(avg_lifetime_months, 2), ltv: round(ltv, 2) }这里面最关键的就是1 / churn_rate。它表示在给定流失率的情况下用户的平均活跃月数。月流失率越高用户生命周期越短LTV 就越低。最后把首单亏损、获客成本、LTV 汇总成一个判断结果# 文件路径subsidy_model.py def evaluate_subsidy_strategy(cfg): 综合评估补贴策略是否健康。 first_order calculate_first_order_profit(cfg) ltv_info calculate_ltv(cfg) cac cfg[cac] ltv ltv_info[ltv] first_order_profit first_order[first_order_profit] # 用户完整生命周期内的净贡献 LTV 首单毛利 net_contribution ltv first_order_profit # 扣除获客成本后的净收益 net_profit net_contribution - cac ltv_cac_ratio ltv / cac if cac 0 else float(inf) return { first_order_profit: first_order_profit, ltv: ltv, cac: cac, net_contribution: round(net_contribution, 2), net_profit: round(net_profit, 2), ltv_cac_ratio: round(ltv_cac_ratio, 2) }这里有一个容易混淆的地方LTV 是否包含首单毛利通常 LTV 的定义有两种口径纯口径 LTV只计算用户后续所有订单贡献的毛利不含首单。全口径 LTV包含首单和后续所有贡献。在评估补贴活动时我会把两者分开看首单毛利是单独计算的因为它通常是负数后续 LTV 是用户留存后带来的价值。两者相加再加上首单补贴带来的连带消费才是用户全生命周期内的总贡献。3.4 运行结果与解读代码写好后直接运行# 文件路径subsidy_model.py if __name__ __main__: result evaluate_subsidy_strategy(model_config) print( 补贴成本测算结果 ) print(f首单收入{result[first_order_profit]} 元) print(f用户生命周期价值 LTV{result[ltv]} 元) print(f获客成本 CAC{result[cac]} 元) print(f用户全周期净贡献{result[net_contribution]} 元) print(f扣除获客成本后净收益{result[net_profit]} 元) print(fLTV / CAC 比值{result[ltv_cac_ratio]})预期输出如下 补贴成本测算结果 首单收入-18.7 元 用户生命周期价值 LTV20.0 元 获客成本 CAC30.0 元 用户全周期净贡献1.3 元 扣除获客成本后净收益-28.7 元 LTV / CAC 比值0.67结果非常清晰首单每单亏 18.7 元。用户月流失率 50%平均只活跃 2 个月。2 个月内的后续毛利贡献是 20 元。获客成本 30 元。整个生命周期内从用户身上赚到的所有钱加在一起都不够覆盖首单亏损和获客成本每获取一个用户净亏 28.7 元。这个模型简洁但它把“成本黑洞”的传导路径讲清楚了不是某一笔补贴太贵而是所有成本叠加之后回本周期太长、回本概率太低。3.5 参数敏感性分析模型建立之后最常用的动作是参数敏感性分析。比如想看看“如果把月流失率从 50% 降到 30%结果会怎样”只需要修改配置重新运行。我们可以写一个简单的循环批量对比不同留存率下的结果# 文件路径subsidy_model.py def sensitivity_analysis(): print( 月流失率敏感性分析 ) for churn_rate in [0.6, 0.5, 0.4, 0.3, 0.2]: cfg model_config.copy() cfg[monthly_churn_rate] churn_rate result evaluate_subsidy_strategy(cfg) print(f流失率 {churn_rate:.0%}: LTV{result[ltv]} 元, f净收益{result[net_profit]} 元, LTV/CAC{result[ltv_cac_ratio]})运行结果可能是 月流失率敏感性分析 流失率 60%: LTV16.67 元, 净收益-32.03 元, LTV/CAC0.56 流失率 50%: LTV20.0 元, 净收益-28.7 元, LTV/CAC0.67 流失率 40%: LTV25.0 元, 净收益-23.7 元, LTV/CAC0.83 流失率 30%: LTV33.33 元, 净收益-15.37 元, LTV/CAC1.11 流失率 20%: LTV50.0 元, 净收益1.3 元, LTV/CAC1.67这个结果非常说明问题当流失率降到 20% 时模型才勉强转正。平台想通过补贴赚钱核心不是压补贴金额而是把用户留下来。当然真实业务中还会有复购频次、客单价变化、交叉销售、推荐裂变等因素。这里我刻意做了简化目的是让大家先掌握建模思路后面再按真实业务场景细化。4. 从模型到业务如何定位“成本黑洞”藏在哪里4.1 指标拆解框架模型建完不等于问题解决。真正有用的是把模型指标落到业务监控里。我比较推荐的做法是从北极星指标出发逐层拆解。假设平台的核心目标是“健康增长”那么可以拆成三层指标第一层是结果指标新用户数首单转化率次月留存率月度毛利第二层是过程指标注册转化率首单支付成功率复购率平均订单成本第三层是成本指标CAC单均履约成本补贴费用研发与运维分摊客服与风控成本每一层都可以继续下钻。比如“首单支付成功率低”可能是支付链路体验差也可能是支付风控策略误伤用户。这时候就需要后端开发、数据分析和风控团队一起排查。成本黑洞往往不是出现在单一指标上而是多个指标联动恶化的结果。比如补贴吸引来的用户质量差导致留存低留存低导致 LTV 低LTV 低又迫使平台通过更大补贴来获取更多用户从而进一步提高 CAC形成恶性循环。4.2 数据埋点与漏斗分析要监控这些指标前提是有完整的数据埋点。实践中至少要对以下核心事件进行埋点广告展示、广告点击、落地页打开注册成功、登录成功首次加购、首次下单、首次支付成功首单完成、签收/核销第二次下单、第三次下单当日复访、7 日复访、30 日复访埋点数据经过清洗后就可以做漏斗分析。比如广告点击 10000 人 → 注册成功 3000 人转化率 30% → 首次支付 1200 人转化率 40% → 首单后 7 日复购 120 人复购率 10% → 30 日留存 60 人留存率 5%从这里就能看出10000 个点击最终只留下 60 个活跃用户。如果广告点击平均成本是 3 元那么有效活跃用户的获客成本就是10000 × 3 / 60 500 元/人这就是前面模型里cac参数在真实业务中的来源。很多时候不是补贴把成本推高了而是全链路转化效率太低导致获客成本被放大到了一个不可承受的水平。4.3 成本黑洞的信号清单在业务监控中以下几个信号出现时基本可以判定成本黑洞已经形成信号一补贴率上升但首购转化率未同步上升。说明补贴的边际效果在递减用户对价格刺激已经疲劳。信号二CAC 上升但次月留存率下降。说明新增用户质量在变差或者投放渠道在劣化也可能是因为老用户已经渗透完毕新用户大多来自低价值渠道。信号三用户平均订单频次下降但履约成本占比上升。说明用户虽然还在消费但客单价太低覆盖不了履约成本。信号四LTV/CAC 连续 3 个月小于 1。说明单位经济模型已经转负继续投放等于持续失血。5. 成本失控的常见原因与排查思路很多团队在复盘补贴项目时总觉得问题是“补贴金额设置错了”但实际上原因往往更复杂。下面整理了几个常见原因和排查建议。问题现象常见原因排查思路LTV/CAC 长期小于 1留存率过低用户生命周期太短检查次月留存、季度留存对比不同渠道用户留存补贴停发后订单暴跌用户依赖补贴下单没有建立真实消费习惯分析有补贴用户和无补贴用户的复购行为差异广告投放成本越来越高大盘流量变贵目标人群渗透率接近上限拆分渠道、城市、人群评估各渠道 ROI客单价越来越低补贴活动拉低了用户心理价格预期检查实付金额分布限制补贴使用门槛毛利看着不错但月底亏损退款、售后、风控、客服成本没有被计入模型把售后成本、人工成本、风控损失纳入成本分摊用户增长很快但留存很差活动机制吸引了很多羊毛党检查首单用户的风控命中率、优惠券使用率排查的时候我建议不要一上来就写 SQL 去查一堆维度。先回到模型里看是哪个变量偏离预期如果获客成本变高优先查渠道转化漏斗。如果留存变差优先查用户分层和用户体验链路。如果客单价变低优先查优惠券使用场景和补贴门槛。如果毛利被售后吃掉优先查退款原因和售后流程。这样排查效率更高也能避免团队在错误方向上反复试错。6. 健康增长模型的工程化建议6.1 建立补贴预算的“红线机制”补贴不能是无上限的。建议在产品和运营后台设置两层防线第一层是单用户补贴上限。首单补贴、复购补贴、最高补贴金额都要有明确阈值。超阈值订单需要风控审批。第二层是整体补贴预算红线。每月补贴总额设一个硬性预算预算用完后自动停止发券而不是临时拍脑袋追加。这样才能避免活动失控导致亏损无限放大。6.2 从“买量思维”转向“链路优化”增长的可持续性不取决于投放预算而取决于整个链路的质量。与其把大量资金砸给广告渠道不如把一部分预算投入到转化链路优化上比如优化落地页加载速度和注册流程减少用户流失。优化支付链路提升支付成功率。优化首单后的复购提醒在用户有购买意向的窗口期及时触达。优化履约服务质量减少负向体验带来的流失。这些优化带来的留存率提升是长周期回报比一次性补贴更健康。6.3 用数据产品固化监控体系当模型验证有效后建议把成本测算固化成一个自动化监控产品。可以按周或者按月生成一张成本监控表核心字段包括各渠道新增用户数各渠道 CAC首单亏损率次月留存率月度 LTVLTV/CAC这样团队可以每周复盘及时发现指标恶化趋势并在问题扩大之前做出调整。7. 总结与后续学习方向这篇文章从一个“一块钱下单、补贴五块六”的日常场景出发把成本黑洞拆解成了几个可以量化的商业指标并用 Python 模型演示了一笔亏损订单是怎么在用户生命周期视角下持续扩大影响的。核心结论可以概括成一句话补贴只是表面成本真正的成本黑洞是 CAC 高企、留存恶化、用户生命周期价值不足三者叠加形成的负向循环。如果大家想继续深入可以在几个方向上做扩展学习学习更精细的留存分析方法比如同期群分析 Cohort Analysis、用户分层 RFM 模型。学习用 Python 做更复杂的沙盘模拟比如蒙特卡洛模拟不同补贴策略下的收益分布。学习 AB 测试框架设计通过实验验证补贴力度、补贴门槛、补贴形式对长期留存的影响。如果对数据产品感兴趣可以进一步研究指标中台、数据可视化监控系统的建设思路。商业决策最怕的不是亏损而是不知道自己为什么亏损。模型和指标的价值就是让每一笔补贴都能算清楚账。希望这套建模思路能给你一些启发也欢迎大家把实际项目中的成本结构代入模型跑一跑看看你们的产品到底是不是也在给“成本黑洞”输血。
返回列表