先写决策,再决定表怎么搭
建模的起点不是打开表格,是先写下一句话:这份模型要支撑哪一个决定。要不要投 300 万美元自建推理集群,明年是招 12 个销售还是 4 个,按席位收费还是按任务收费——目标不同,模型的结构就不同。为了"看看未来三年长什么样"而做的模型往往什么也支撑不了,它既没有可被证伪的变量,也没有触发行动的阈值。先把决策写在第一行,再写公式,能省掉后面两周的返工。全文金额统一用美元。
决策写定之后再搭骨架。一份能用的模型通常是六张表:假设表、获客与留存表、用量与成本表、人员与费用表、月度损益与现金表,再加一张只对外展示的汇总表。假设表里的数字全部硬编码,其余五张表不允许出现任何常数:凡是手敲进去的数,都必须回到假设表。这条规矩看着死板,好处几周后才显现:当有人问"流失从 2.5% 提到 4% 会怎样",你改一个单元格就能回答,而不是满表搜索散落各处的 0.025。
六张表里真正主导结果的只有少数几个数。跑几十次之后会发现,三年后的现金余额几乎只由这五个数字决定:新增付费单位的月增量、单位流失率、单位月均调用量、单次调用的全成本、每名销售的月均产能。定价排在第六位:它重要,但在合理区间内调整定价对终局的影响,小于流失率从 2.5% 变成 4%。其余几十个假设(服务器折旧年限、差旅费率、办公场地)合在一起的摆动幅度,往往不到前五项中任意一项。把调研精力按这个顺序分配。
定价单位和口径决定整张表
五个主导变量之首是定价,而定价先要选单位。按席位、按任务、按结果,三种单位对应三份结构迥异的模型。按席位收费时收入与用量脱钩,用量上涨直接吃掉毛利,模型必须把用量漂移列为头号风险;按任务收费时毛利率相对稳定,收入却随客户内部流程波动,预测误差从成本端转移到收入端;按结果收费(例如每成功处理一张工单)要额外建一张归因表,还得预留争议与退款准备金。同一批用户在三种单位下的年收入能差三成以上:420 次/月按 0.18 美元一次算是 75.6 美元,高于 60 美元的席位价,可一旦某个客户只用 120 次,就只剩 21.6 美元。收入分布的方差决定了现金缓冲要留多厚。先定单位再建表,比建完表再改单位省一周。
单位选定后,还要把"单位"这个词本身定义清楚,否则三张表永远对不上。席位、账户、活跃用户、客户主体(logo)是四个不同的数,混用会让流失和收入在不知不觉中错位。一个客户可能买了 8 个席位,实际每月登录的只有 5 个,而续约是按这一个 logo 去谈的。收入按席位记、流失却常按 logo 报:一个持 8 席位的客户走掉,logo 流失记 1 次,席位流失记 8 次,两个口径能差一个数量级。更隐蔽的是"活跃席位"和"已付费席位"的缺口:推理成本要按活跃席位算(前面那 420 次用的就是活跃口径),收入要按已付费席位算,中间那几个没人用却仍在付费的席位是毛利里最干净的一块,也是客户做席位盘点时最先被砍的一块。建模第一天就把这四个词各自钉到某张表的某一列,之后写任何一个比率都注明分子分母用的是哪一个,能省掉日后对不上账时的整周排查。
把一份客服 AI 的账从头算一遍
设产品按席位收费,每席位每月 60 美元,含 800 次任务额度。第一年实际用量平均每席位 420 次/月。单次任务输入 3500 token、输出 600 token;模型报价输入 3 美元/百万 token、输出 15 美元/百万 token。单次模型成本 = 3500 ÷ 100 万 × 3 + 600 ÷ 100 万 × 15 = 0.0105 + 0.009 = 0.0195 美元。把检索、向量库、日志留存、失败重试与离线评估重跑折进去,乘以 1.35,得到 0.0263 美元。每席位月推理成本 = 420 × 0.0263 = 11.05 美元。加上分摊的托管与支持 6 美元,单席位月毛利 = 60 − 17.05 = 42.95 美元,毛利率 71.6%。
71.6% 是一张静止的照片。真实产品在 12 个月里会做三件事:把更多历史对话塞进上下文、把单步调用改成多步代理、给输出加一轮自检。于是输入从 3500 token 涨到 6200,输出从 600 涨到 900,月均调用从 420 涨到 620。重算:6200 ÷ 100 万 × 3 + 900 ÷ 100 万 × 15 = 0.0186 + 0.0135 = 0.0321,乘 1.35 得 0.0433;月推理成本 = 620 × 0.0433 = 26.85 美元,加 6 美元后毛利率掉到 45.3%。产品做得越好,这条曲线走得越快。上游降价可以缓解成本压力,但缓存、批处理和调用路径优化也应单独建模:若单位 token 报价一年内降 40%,成本回到 16.1 美元,毛利率 63.2%。用量漂移与单价下行要分别建模,不要合并成一个"成本每年降 20%"的常数。
这笔账还有一处能往回扳。上一步把单次输入涨到 6200 token 当成既定成本,但其中一大块是每次调用都重复送进去的系统提示、工具定义和检索回来的固定文档。这部分在一次会话里不变,符合上游的提示缓存条件:命中缓存的输入 token 通常只按新鲜价的一成计费。假设 6200 个输入 token 里有 3800 属于可缓存的稳定前缀,命中后这段成本从 3800 ÷ 100 万 × 3 = 0.0114 降到 0.00114,单次输入成本从 0.0186 落到 0.0082,乘 1.35 后月推理成本从 26.85 美元降到约 19 美元,毛利率从 45.3% 回到 56% 上下。离线可批的任务(夜里重跑评估、批量摘要)走批处理接口常再打五折,但它有延迟,不能塞进实时链路。要点在于缓存收益取决于前缀的稳定度:一旦你频繁改提示词、或检索内容每次都变,命中率掉下去,这行收益就得从模型里划掉,别把它当成永久假设写死。
单位经济:留存、回收期与获客成本
把成本算清之后接着看单位经济,而留存改变的是曲线形状,不是一个折扣系数。沿用 42.95 美元的月毛利。月流失 2.5% 时平均存续 40 个月,单席位毛利终值约 1718 美元;月流失 4.5% 时存续 22 个月,终值 954 美元。若单席位获客成本 1200 美元,前者 LTV/CAC 为 1.43,后者 0.80——同一个产品,一个勉强能投,一个每卖一份亏一份。有意思的是两边的回收期都是 28 个月(1200 ÷ 42.95),说明回收期看不出流失的差别。只算回收期不算终值,或只算终值不算回收期,都会漏掉一半信息。
在数据不足的早期,回收期比 LTV/CAC 更早暴露问题。LTV/CAC 依赖对未来 30 到 40 个月的外推,而一家成立 18 个月的公司根本没有 40 个月的数据,那个分子是猜的。回收期只用已经发生的现金:这批客户花了多少钱获取,到今天回来了多少毛利。把每个季度的新签队列各画一条回收曲线,如果第四季度的曲线比第一季度更平,扩张就在变贵,不管 LTV/CAC 算出来多好看。董事会里资历最深的人通常先问这条曲线。同样出于数据不足,早期公司别急着给 LTV 打贴现。教科书会让你把未来每月的毛利按某个贴现率折回现值再算 LTV,可对一家只有十几个月数据的公司,这一步弊大于利:贴现率本身的假设(8% 还是 20% 年化)对 LTV 的影响,往往比你辛苦调研来的流失率还大,等于用一个更没把握的数去修一个稍有把握的数。更诚实的做法是把时间价值直接交给回收期:回收期越短,那批现金越早回到手里再投出去,时间价值自然落在"早一个季度回本"里,不必显式写贴现率。真要给董事会看贴现后的数,就把贴现率当成敏感性表里的一行,让人看见它的摆动区间有多宽,而不是钉死一个值塞进 LTV 里假装精确。
有了这套算法,就能判断什么样的负单位经济值得赌。前面把 LTV/CAC 低于 1 当成"每卖一份亏一份",多数时候这判断成立,但有两种情形下明知为负仍值得投,条件必须写进模型而不是靠嘴说。其一是留存曲线在拉平:如果第 12 个月之后的月流失从 4% 收敛到 1.5%,终值的尾巴会比线性外推长得多,今天算出的 0.8 是被早期高流失拖低的,模型里要单列一条"成熟队列流失"假设,用最老那批客户的实际数据去支撑,而不是拿全体平均顶替。其二是获客成本在结构性下降:品牌起来后自助占比上升,混合 CAC 会自己往下走,这时该建的是 CAC 随累计客户数下降的曲线,而不是一个常数。两种情形的共同点是,赌注都押在一个可观测、可证伪的量上(成熟流失或自助占比),而不是押在"规模上去就好了"这种没有触发条件的信念上。凡是给不出这样一个可跟踪指标的"战略性亏损",在模型里就该按字面意思当亏损处理。
上面反复出现的 CAC,其实不该当成一个数。前面用 1200 美元的单席位获客成本算 LTV/CAC,可这个数一旦把自助注册和销售驱动的客户平均在一起,就会盖住真正的问题。自助渠道的 CAC 可能只有 200 美元,销售驱动的客户背着销售工资、售前投入和更长的成交周期,单席位 CAC 轻松冲到 2500 美元。混合出来的 1200 看着健康,但如果增长的边际来自销售驱动那一端(扩张期几乎总是如此,因为自助渠道会先饱和),你真实的边际是拿 1718 美元的终值去除 2500,只有 0.69,每多卖一份亏一份。把获客表按渠道拆开,各算各的回收期和终值,再看你打算加的下一块预算落在哪个渠道。用混合 CAC 做投放决策,等于用一个已经不代表边际的历史平均去指导边际支出。
渠道之外,客户还要按进入时间拆——用队列表,不要用"平均客户"。把每个月新签的客户各占一行,横向铺开 36 个月,记录该队列的存活席位、月毛利与累计回收额。平均客户会掩盖两件事:早期队列的留存通常好于后期队列——前者是被产品吸引来的,后者是被销售推来的;涨价也只作用于新队列,混在平均值里看不出来。队列表还能直接产出净收入留存:第 13 个月的队列收入除以第 1 个月,不需要任何假设。用平均值建的模型,会在客户结构发生变化时以看不见的方式失真,而结构变化恰恰是扩张期必然发生的事。
敏感性分析与情景设计
变量之间谁最要命,靠单变量敏感性看出来。固定其余假设,把五个主导变量各自拉到合理区间两端,记录第 36 个月现金余额的变化幅度。以一家在第 36 个月约 2 万席位的公司为例:
| 假设 | 基准 | 下限 | 上限 | 现金余额摆动 |
|---|---|---|---|---|
| 月席位流失 | 2.5% | 1.2% | 4.5% | 1120 万美元 |
| 月新增席位 | 900 | 500 | 1400 | 1450 万美元 |
| 每席位月调用 | 420 | 300 | 700 | 780 万美元 |
| 单次调用全成本 | 0.026 美元 | 0.012 美元 | 0.055 美元 | 690 万美元 |
| 销售人均月产能 | 45 席位 | 28 席位 | 70 席位 | 610 万美元 |
这张表的用途不是给出结论,而是决定接下来两周把调研预算花在哪:排第一的变量值得去翻真实的队列数据,排第五的可以先用行业经验值顶着。
多个变量一起动时就要设情景,而情景不该叫乐观、中性、悲观。这三个标签的毛病在于把不相关的变量绑在了一起。现实里流失偏高的同时,用量往往也偏低——用户不爱用所以走了,成本反而低于基准。更可用的做法是给情景起有因果的名字:"用量涨、留存好、上游不降价""留存好但用量平、为保续约被迫降价""大客户续约、中小客户批量流失"。每个情景只允许改动 2 到 3 个假设,并在旁边写清它们为什么会同时发生。给不出因果解释的组合不是情景,只是一组随机数。
容易被高估或漏记的成本项
免费额度是一条成本,不是一条市场费用。免费层和试用额度消耗的是同一批算力,把它们记进市场费用,毛利率会好看,但那部分推理成本会在规模扩大时突然出现在毛利里。合理的处理是在成本表单列一行"未付费用量",按免费用户数 × 月均调用 × 单次成本计算,并单独跟踪它占推理总支出的比例。一个常见的临界点是:免费用量超过推理总量的 45% 时,增长越快现金烧得越快,此时任何"先做规模再谈变现"的说法都需要一个具体的转化率来支撑。
另一条常被藏进研发的成本是评估与回归测试。每次换模型、改提示词、上线新功能,都要在一批标注好的样本上重跑评估,确认质量没有回退。团队习惯把这笔算力算进研发费用,但它的量随调用规模走:评估集越大、发布越频繁,这行开销越接近可变成本。一个每周发一次、评估集 2000 条、每条平均 4 次调用的团队,一个月光评估就是 3.2 万次调用,按前面 0.026 美元的全成本算约 830 美元——单看不多,可它随席位数和发布频率一起涨,藏在研发里会让毛利率显得比真实高出一两个点。把它单列一行,用"发布频率 × 评估集大小 × 单次成本"驱动,既能在毛利里看见它,也能在有人提议"把评估集扩到一万条"时立刻看到代价。
有漏记的,也有被高估的。模型里最常被高估的是三行:一是扩张收入,净收入留存 130% 常被当成默认值填进去,它必须拆成涨价、加席位、加模块三项分别验证,哪一项拿不出历史数据就不该保留;二是销售人均产能爬坡,新销售通常要 4 到 6 个月才达到满产,模型里却常常从入职第一个月就按满产计;三是降价的传导速度,上游报价下调不等于你的成本同步下调,切换模型要重跑评估、改提示词、处理回归,中间隔着 1 到 2 个季度。还有一类成本披着折扣的外衣:承诺算力折扣是一份期权,也是一份负债。上游给出的年度承诺价常常是按量付费的三到四折,诱惑很大,签之前先算两个数。其一是承诺量与预测用量的比值:若实际用量只有承诺量的 70%,有效单价 = 折后价 ÷ 0.7,折扣当场缩水三成。其二是最坏情况下的沉没现金:一份 240 万美元的年度承诺若只用掉 60%,等于为没用上的部分付了 96 万美元。模型里要把承诺记成固定成本,不要并进可变的单次调用成本,否则用量下滑时毛利率会虚高,而虚高的方向恰好与真实处境相反。
自建、损益与现金勾稽
开头那个 300 万美元自建推理集群的决定,不该用"自建单位成本更低"一句话拍板,而要放进现金表和用量表里跟按量付费逐月比。自建是一次性资本开支加上折旧、电力、运维和闲置——集群按峰值配置,日常利用率能到 60% 就算不错,剩下的产能是每天在烧的沉没成本。按量付费则纯可变、零闲置,但单价高,且用量小时你也拿不到议价权。真正的交叉点由两件事决定:一是稳态用量能不能把集群填到 70% 以上,填不满,自建的有效单位成本会被闲置摊高,可能反而贵过按量;二是用量的确定性——自建把成本从可变变成固定,等于你在赌未来 24 个月用量不会大跌,一旦某个大客户流失,按量付费会跟着降,自建的折旧却一分不少。把这两条写成假设:稳态利用率和用量下行概率,让敏感性表告诉你在什么利用率之下自建才真的更便宜,而不是拿一个理想满载下的单位成本去说服自己。
无论自建还是外购,损益表和现金表会在同一个月给出相反的信号。年付合同在签约当月收到全款,现金表上是一个漂亮的峰值,损益表上按月确认收入,那个月平平无奇。反过来,预留算力的年度承诺付款在损益上按月摊销,在现金上是一次性支出。只做损益不做现金,会在某个季度突然发现账上钱不够;只做现金不做损益,会误判单位经济是否成立。两张表都要有,而且要能互相勾稽——期初现金加净现金流等于期末现金,这个校验行必须每月为零。这条勾稽最容易被循环引用破坏,要主动拆掉。一旦模型里出现"按收入的某个百分比计提"这类项(支付通道手续费、按 ARR 提成的销售奖金、现金余额产生的利息)就容易埋下循环引用:现金依赖净利,净利里的某项又依赖现金或收入,收入回头再影响现金。表格软件会报循环错误,或者悄悄算出一个不稳定的值。两个干净的拆法:一是把这类反馈项统一滞后一个月,用上月余额算本月的利息和提成,误差在月度尺度上可以忽略,逻辑却变成单向;二是把利息、手续费这些二阶项单独放一张小表,手动迭代两三轮到收敛,再把结果贴回主表。无论哪种,主表里那条"期初现金 + 净现金流 = 期末现金"的校验行必须继续每月为零。
现金表要能反映现实,招聘计划就要挂在收入上,不要挂在日历上。人员表里常见的写法是"3 月招 2 人、6 月招 3 人",改成规则会更接近现实:每新增 40 万美元年化经常性收入触发 1 名交付人员,每 3 名销售配 1 名售前。这样在悲观情景里人数会自动收缩,现金曲线才有参考价值。日历式的招聘计划会让悲观情景显得比真实处境更惨——没有哪家公司在收入不及预期时还照原计划招人,模型却默认它会,于是算出一个谁也不相信的现金耗尽日期。同样,融资节点要在现金表里画成台阶,不是斜坡。现金表最容易被画错的地方,是把一轮融资摊成平滑的收入。融资是一次性的现金台阶:钱在交割那个月一次到账,之后是漫长的消耗,直到下一轮或自给自足。把它画成斜坡会掩盖真正要命的那个数——两轮之间的最低现金点,也就是跑道的谷底。合理的做法是在现金表上标出每一轮的交割月和金额,再从谷底往回推:要在钱见底前六个月启动下一轮,那么当期的里程碑(收入、留存、毛利率)必须在谷底之前就达到下一轮投资人要看的水平,而不是等钱快花光才想起来。把融资画成台阶,你才会看见那条真正约束节奏的线——不是现金什么时候归零,而是现金什么时候低到融不到下一轮。
交叉验证、台账与预测对差
关键数字要能用互不依赖的路径推出来,同一个数用三个口径各算一遍。月推理支出至少有三个来源:云账单金额、调用日志条数 × 单次成本、活跃席位 × 月均调用 × 单次成本。三者差异超过 15% 就说明某处假设是错的,多半是漏掉了重试、离线评估或后台批处理。收入同样可以用合同金额、已开发票和产品侧席位数三路交叉。建模阶段花半天做这件事,比上线后被一张账单打脸便宜得多。
交叉验证之外,每个数字都要有出处。在假设表右侧加三列:来源、置信度、下次复核时间。来源写清楚是产品数据库的真实查询、销售负责人的口头估计,还是竞品公开材料;置信度只分高中低三档。收益出现在别人挑战你的时候:你能立刻说出"月均调用 420 来自 6 月份 3800 个活跃席位的实际统计,高置信;销售人均产能 45 来自负责人估计,低置信,9 月复核"。没有台账的模型,被问两轮就会失去可信度。
台账记录假设的来路,另一张表记录假设错得有多离谱:预测和实际要摆在同一张表里逐行对差。模型真正开始产生价值,是在它有了第一份"上月预测对本月实际"的对照之后。把每个主导变量的预测值和实测值并排放,第三列写差异百分比,第四列写一句归因。头三个月这张表通常很难看:新增席位可能连着偏高 20%,说明销售产能假设太乐观;单次调用成本可能偏低,说明重试和离线评估还没算进去。价值不在于哪个月蒙对了,而在于系统性偏差的方向:如果新增席位连续三个月高于实际,就不是运气问题,是假设本身该下调。多数团队跳过这步,因为它会不断暴露上一版的错,可正是这种暴露让第四个月的预测比第一个月可信。连着跳过三次对照,模型就退回成一份没人再信的静态文档。
面对董事会:呈现、边界与重建
面对董事会,不要从模型结构讲起。第一页放结论与一句话理由:"按当前假设,现金能撑到 2027 年 8 月;决定这个日期的是流失率和销售产能。"第二页放敏感性表,让人自己看哪个变量最要命。第三页才是三个情景的现金曲线。完整的月度明细放附录,被追问时再打开。主动指出最脆弱的假设,比等别人发现要好——你说出"净收入留存 130% 这一项我只有 9 个月数据支撑",换来的是讨论;被别人问出来,换来的是对整份模型的怀疑。有三类追问值得提前算好。极限问题:"一分钱不融,什么时候必须裁员,裁多少?"准备一条只含现有现金的自给自足路径。替代问题:"这笔钱投销售而不是研发,回报差多少?"准备两条并列的现金曲线。归因问题:"上季度毛利率掉了 6 个点,是价格、用量还是单价?"准备一张桥式分解,把变动拆到三项并各自给出数值。这三张图提前做好,会议就不会变成"回去再算一下"。
会上也要讲清模型不能替你回答的事。模型算不出能力跃迁:上游发布一个便宜十倍且更强的版本,会同时改写你的成本假设和竞争格局,这不在任何敏感性区间里。它也算不出监管变化、算不出大客户把采购流程拖长半年、算不出团队执行力的差异。模型的价值在于把可量化的部分算清楚,好让讨论集中到不可量化的那几件事上。一份声称覆盖了所有风险的模型,通常只是把风险藏进了更深的公式里。最后,要知道什么时候该重建,而不是继续打补丁。出现下面任何一条就重建:定价单位变了(从席位改成任务)、产品从单一模块变成三个成本结构不同的模块、或者你已经无法在 10 分钟内向新同事讲清某个公式为什么这么写。打补丁的代价是隐性的——每加一层补丁,敏感性分析就少一分可信。重建一份六张表的模型大约要三个工作日,比维护一份没人敢改的模型便宜。
关于这份模型的几个追问
做到多细才算够? 能让五个主导变量各自单独可调,就够了。把成本拆到 20 个二级科目不会让预测更准,只会让每次更新耗时翻倍。
没有历史数据的早期公司怎么建? 用可观测的物理量代替财务量:一次任务消耗多少 token、一名销售一天能做几场演示、一个客户从试用到付费经过几步。这些量在十几个用户身上就能测出来,比直接猜 ARR 增长曲线可靠。
用量增长和单价下降能不能合成一个净成本假设? 不建议。两者的时间常数不同:用量随产品迭代按月上升,单价随上游发布节奏阶跃式下降。合成之后,你会丢掉"如果上游半年不降价会怎样"这个最该问的问题。
多久更新一次? 每月更新实际值并与上月预测逐项对比,每季度复核假设本身。预测与实际的对比是模型唯一的自检机制,跳过三次,模型就与现实脱钩了。
投资人版和内部版该不该是同一份? 数字必须同一份,呈现方式可以不同。内部版保留全部明细和台账,对外版只给汇总与情景。两版数字一旦不一致,被发现的代价远大于多花的那点时间。