收入构建(驱动型预测)
使用时机
当收入应从实际运营驱动因素自下而上构建,而非仅用一个单一增长率时使用:比如来自营销支出或漏斗的客户数、流失率、ARPU,或按产品线的数量乘以价格。适用于运营计划、ARR 预测和筹资模型,这些模型需要从驱动因素到收入线的可辩护的桥梁。该技能在 Claude 应用中使用 openpyxl 构建一个可下载的 .xlsx 文件;它不使用任何 Excel 插件或 Microsoft 365 连接。
构建内容
一个包含六个选项卡的工作簿:
- 封面:标题、颜色图例、场景选择器、主要收入和增长数据。
- 驱动因素:所有蓝色输入(起始客户数、营销支出、CAC 或漏斗率、ARPU、流失率、价格、场景乘数)。
- 收入构建:逐期客户或单位计划以及收入。
- 汇总:年度收入、增长、期末客户数和当前生效的场景。
- 敏感性分析:以新增客户为变量、流失率为变量的数据表,驱动期末 ARR 或收入。
- 检查:滚动恒等式和合理性标志。
构建工作流
- 创建工作簿和上述顺序的六个选项卡。
- 在驱动因素选项卡上,以蓝色列出每个输入并注明单位;添加一个场景单元格(1=Base, 2=Bull, 3=Bear)并命名为
scn。 - 设置期间标题行(月或季度),并在所有地方引用它。
- 在收入构建选项卡上构建客户或单位滚动计划:期初、新增、流失、期末。
- 根据计划计算每期收入(客户数乘以 ARPU,或数量乘以价格)。
- 通过将期间汇总到年份来构建汇总选项卡。
- 构建敏感性分析选项卡作为原生双变量数据表。
- 构建检查选项卡,包含滚动恒等式和增长合理性测试。
- 无头重新计算工作簿(LibreOffice),使所有公式计算为数值。
- 验证无公式错误(#REF!、#DIV/0!、#VALUE!、#NAME?);在循环中修复并重新计算,然后交付。
逐选项卡说明
封面
- 标题单元格、模型用途行和构建日期。
- 颜色图例块:一个标有“输入”的蓝色色块,标有“公式”的黑色色块,标有“跨选项卡链接”的绿色色块。
- 场景回显:使用
=CHOOSE(scn,"Base","Bull","Bear")从驱动因素选项卡中提取活动场景。 - 主要输出作为绿色跨选项卡链接:最新年度收入
=Summary!<最新收入单元格>、期末客户数和最终年度同比增长率。 - 一行说明,注明工作簿在 Excel 中实时重新计算,并且在构建时已验证无错误。
驱动因素
- B2 场景选择器(蓝色,1/2/3),命名为
scn。 - B5 起始客户数;B6 每期 ARPU;B7 月度流失率百分比。
- 客户获取:B8 每期营销支出;B9 CAC;通过
=B8/B9计算的新增客户数(在构建选项卡上计算,不在此处)。 - 可选漏斗:B10 线索数,B11 线索到客户的转化率。
- 场景乘数位于一个 3 列块(Base/Bull/Bear)中:C14:E14 新增客户乘数行,C15:E15 流失率乘数行。活动值:B14
=CHOOSE(scn,C14,D14,E14),B15=CHOOSE(scn,C15,D15,E15)。 - 可选产品线块:每条产品线的价格和销量,用于数量乘以价格的构建。
收入构建
- 第 3 行期间标题 1..N(单一序列,下面所有行引用)。
- 期初客户数:第 1 期
=Drivers!B5;后续期间=<前一期期末值>。 - 新增客户数:
=Drivers!$B$8/Drivers!$B$9*Drivers!$B$14(支出除以 CAC 再乘以活动新增乘数),或漏斗=Drivers!$B$10*Drivers!$B$11*Drivers!$B$14。整行使用一致的一个公式。 - 流失客户数:
=期初*Drivers!$B$7*Drivers!$B$15(活动流失乘数)。 - 期末客户数:
=期初+新增-流失。 - 收入:
=期末*Drivers!$B$6(客户数乘以 ARPU),或对于产品线=SUMPRODUCT(价格范围, 数量范围)。 - ARR(如果是订阅制):
=收入*12(当期间为月时),或相应进行年化。
汇总
- 年度收入:
=SUM(<该年 12 个月的收入单元格>)。 - 同比增长率:
=本年/上年-1。 - 每年期末客户数:通过跨选项卡链接引用该年最后一个期间的期末值。
- 活动场景标签:
=CHOOSE(scn,"Base","Bull","Bear")。
敏感性分析
- 左上角单元格引用期末 ARR 或最后一期收入
='Revenue Build'!<期末 ARR 单元格>。 - 列输入:每期新增客户数取值。行输入:流失率百分比取值。
- 原生双变量数据表,行输入单元格 = 驱动因素选项卡的流失率,列输入单元格 = 驱动因素选项卡的一个新增客户驱动因素。
检查
- 每期滚动恒等式:
=IF(期末=期初+新增-流失,"PASS","FAIL"),覆盖所有期间,然后使用=AND(...)汇总。 - 连续性检查:
=IF(本期期初=上期期末,"PASS","FAIL")。 - 增长合理性检查:如果任何一年的同比增长率超过蓝色上限输入或低于下限,则标记。
- 每期客户数和收入非负。
公式和格式约定
- 输入使用蓝色字体(仅驱动因素选项卡)。选项卡内公式使用黑色。跨选项卡链接使用绿色。
- 公式中无硬编码数字;常量位于驱动因素选项卡上的蓝色单元格中。使用绝对引用(
$B$7)引用驱动因素单元格,以便整行可以干净地横向填充。 - 每行使用一个一致的公式,以便无需编辑即可横向复制。
- 客户数显示为整数并带千位分隔符;ARPU 和收入显示为货币;流失率和增长率显示为百分比。
- 命名
scn和期末 ARR 单元格,以便检查选项卡和敏感性分析选项卡清晰读取。
检查
- 每期期末 = 期初 + 新增 - 流失(PASS/FAIL)。
- 每期期初等于上期期末。
- 同比增长率在规定的合理区间内。
- 客户数和收入永不出现负数;流失率介于 0 到 1 之间。
重新计算并验证
写入后,使用 LibreOffice 无头重新计算,使 openpyxl 公式文本变为计算后的值。扫描每个工作表是否有 #REF!、#DIV/0!、#VALUE!、#NAME? 错误。修复任何有问题的公式或丢失的命名范围,并在循环中再次重新计算。仅当检查选项卡显示全部 PASS 且没有错误字符串时,才交付。
需要收集的输入
- 起始客户数或单位数,以及 ARPU 或每条产品线的价格。
- 客户获取机制:营销支出和 CAC,或一个漏斗(线索数和转化率)。
- 每期流失率以及期间长度(月或季度)。
- 新增和流失的场景乘数(Base/Bull/Bear)。
- 预测期数。
示例
假设:起始 1,000 个客户,ARPU 每月 50,月流失率 3%。每月营销支出 100,000,CAC 500,因此每月新增 200 个客户。第 1 月流失约 30 个客户,期末约 1,170。在 Base 场景下,36 个月内客户数增长,月收入增长;Bull 场景应用 1.2 倍新增乘数和 0.8 倍流失乘数。敏感性分析将新增客户数从 150 调整到 300,同时流失率从 2% 调整到 5%,以显示期末 ARR 的变化。