《独立开发者的商业指南·资本与退出》10.2 再投资与资产配置

卖掉生意后的钱不能直接当收入。本节把三案例的税后所得放进四层配置框架:12 个月应急现金、低风险资产、分散化投资和自营再投资,用 4% 提款率教学假设计算可支出现金流,并与原 SDE 对照,说明收入会下降多少、风险预算怎么设,以及储备不足时为什么不能先做分散化投资。

以下情境为教学假设,人物与数字不代表经核实的真实案例。

卖掉生意之后,账户里会出现一笔从未见过的现金。这笔钱的第一反应通常是「再做一个产品」,但产品需要时间、需要试错,也可能在下一个产品成功之前先把生活费和税款烧掉。配置要解决的问题不是「怎么赚得更多」,而是「在下一个收入来源出现之前,这笔钱能撑多久、能承受多大波动、有多少可以拿去冒险」。

这一节给出一个四层框架:应急现金、低风险资产、分散化投资、自营再投资。四层的顺序不能颠倒:先保证 12 个月的支出,再谈保本,再谈增长,最后才是拿钱去开新项目。所有比例、提款率和压力情景都是教学假设,不构成投资建议;真实的配置要按个人负债、税务、家庭责任和风险承受能力单独设计。

四层框架:先活下来,再谈增长

四层各自的职责不同,不能用同一个「收益率」比较。应急现金的作用是避免在低点卖出资产;低风险资产的作用是保住本金和近期支出;分散化投资的作用是长期增值;自营再投资的作用是换取未来的经营现金流。前三层是防守,第四层是进攻。

层作用资金范围教学比例约束
应急现金覆盖 12 个月可核算支出12 个月支出与税后所得 20% 的较大者20%–25%随时可取,不承担市场波动
低风险资产保住 2–3 年内的支出和税款剩余资金的 35%25%–35%期限匹配,不追高收益
分散化投资长期增值,对抗通胀剩余资金的 40%30%–40%接受短期回撤,不用杠杆
自营再投资新项目、产品或小规模收购剩余资金的 25%10%–25%只在储备充足后动用,按项目预算封顶

「教学比例」不是一个必须照做的配方,而是一个可以复算的起点。应急现金取「12 个月支出」和「税后所得 20%」的较大者,是因为这两个约束解决不同问题:12 个月支出保证生活不中断,20% 下限保证小额交易也有最低缓冲。剩余资金再按 35/40/25 分,是因为低风险层要覆盖近期税款和过渡成本,分散化层要承担长期增值,自营再投资层要承担最高的失败概率。

自营再投资最容易被高估。它的期望回报可能最高,但它的失败率也最高,而且和创始人的时间高度绑定。把 25% 的剩余资金投进一个新项目,意味着这个项目失败时,损失的不只是钱,还有本来可以用来找顾问工作或休息的时间。所以第四层要有项目预算、里程碑和止损线,不能写成「看情况投入」。预算方法见 5.1 预算方法 ,现金节奏见 8.1 13 周现金流表 。

三案例的 12 个月储备

储备的目标是 12 个月「可核算支出」。三案例的可核算口径不同:LedgerLite 有完整的运营费用 72,000 和创始人薪酬 60,000,合计 132,000;Nord 有直接成本 24,000 和两位合伙人工资 96,000,合计 120,000;Tidecast 只给出了营销 12,000、服务器 3,000、工具 2,000,合计 17,000,个人生活支出没有出现在案例事实表里,所以 17,000 只是下限,不是完整的生活成本。

案例税后所得可核算年支出12 个月储备目标实际现金层储备月数缺口
LedgerLite576,576132,000132,000132,00012.00
Tidecast186,53117,00017,00037,30626.30
Nord 4.5×115,830120,000120,000115,83011.6417
Nord 3.0×77,220120,000120,00077,2207.74,278

LedgerLite 的储备刚好是 12 个月:132,000 的现金层占税后所得的 22.9%,剩下的 444,576 才进入低风险、分散化和再投资三层。Tidecast 的 20% 现金下限是 37,306,高于它 17,000 的可核算支出,所以储备月数是 26.3;这个数字看起来安全,但它没有把个人生活支出算进去,真实月数会更低。

Nord 是这一节最重要的反例。4.5× SDE 的税后所得 115,830,低于 12 个月的 120,000,缺口 417;3.0× SDE 的税后所得 77,220,缺口 4,278,储备月数只有 7.7。也就是说,Nord 卖掉生意后,按当前成本结构连一年都撑不到,更不用说把剩余资金拿去做分散化投资。这种情况下,配置框架的结论不是「怎么分配」,而是「先削减成本或继续工作,把储备补到 12 个月」。

储备月数的公式很简单:

储备月数 = 现金层 ÷ (年支出 ÷ 12)
缺口 = max(0, 12 个月支出 − 现金层)

LedgerLite 是 132,000 ÷ 11,000 = 12.0;Nord 是 115,830 ÷ 10,000 = 11.6。Tidecast 的 37,306 ÷ 1,417 = 26.3。三个数放在一起,能直接看出谁有资格谈配置、谁必须先补储备。配置的第一步不是选资产,而是确认「12 个月」这个门槛有没有过。

4% 提款率与收入落差

配置完成后,下一个问题是「这笔钱每年能安全取出多少」。本节使用 4% 年提款率作为教学假设:税后所得乘 4%,作为每年可支出的现金流。4% 不是保证收益,也不是任何产品的承诺;它只是一个便于横向比较的长期提款假设,真实结果会受市场收益、通胀、顺序风险和支出变化影响。

案例税后所得4% 可支出现金原 SDE占原 SDE收入下降
LedgerLite576,57623,063130,24017.7%82.3%
Tidecast186,5317,461121,1716.2%93.8%
Nord 4.5×115,8304,63334,32013.5%86.5%
Nord 3.0×77,2203,08934,3209.0%91.0%

LedgerLite 的 4% 是 23,063,只有原 SDE 130,240 的 17.7%,收入下降 82.3%。Tidecast 的 4% 是 7,461,只有原 SDE 121,171 的 6.2%,收入下降 93.8%。Nord 的两条路径分别只剩 4,633 和 3,089,占原 SDE 的 13.5% 和 9.0%,下降 86.5% 和 91.0%。

这张表回答的正是「卖掉生意后收入下降多少」。答案不是「下降一点」,而是「下降八成到九成」。原因不是 4% 太低,而是售价本身只相当于几年的 SDE:LedgerLite 的 768,768 是 SDE 的 5.9 倍,Tidecast 的 248,708 是 SDE 的 2.1 倍,Nord 的 154,440 是 SDE 的 4.5 倍。用 4% 提款率,5.9 倍的售价只能产生约 23.6% 的 SDE(4% × 5.9),2.1 倍只能产生约 8.4%,4.5 倍约 18%。售价倍数和可持续提款率共同决定了收入落差。

这里有一个口径差:SDE 是税前、经营口径的现金,4% 是税后、组合口径的提款。两者不能直接相加或相减,但可以放在同一张表里看量级。SDE 130,240 不等于创始人到手 130,240;4% 的 23,063 也不是免税的。口径不同不影响结论:收入落差是结构性的,不是税率造成的。要缩小落差,只能提高售价倍数、降低生活支出、继续工作,或者接受更低的安全提款率。

4% 还会受到「顺序风险」的影响。如果出售后的头两年市场下跌,同样的提款率会更快耗尽本金;如果头两年上涨,结果会好很多。本节不模拟收益路径,只用一个固定提款率做静态比较。动态情景见 8.2 情景模拟 。

配置比例与风险预算

把四层框架套到三案例上,得到具体的美元分配。LedgerLite 的现金层 132,000 占 22.9%,剩余 444,576 按 35/40/25 分成低风险 155,602、分散化 177,830、自营再投资 111,144。Tidecast 的现金层 37,306 占 20.0%,剩余 149,225 分成 52,229、59,690、37,306。Nord 的税后所得不足 12 个月储备,全部进现金层,低风险、分散化和再投资都是 0。

案例现金低风险分散化自营再投资压力损失(分散化 −30%)等于几个月支出
LedgerLite132,000(22.9%)155,602(27.0%)177,830(30.8%)111,144(19.3%)53,3494.8
Tidecast37,306(20.0%)52,229(28.0%)59,690(32.0%)37,306(20.0%)17,90712.6(仅经营支出)
Nord 4.5×115,830(100%)0000储备缺口 417
Nord 3.0×77,220(100%)0000储备缺口 4,278

风险预算可以用一个压力情景来量化:假设分散化资产下跌 30%,损失是多少、相当于几个月支出。LedgerLite 的 177,830 下跌 30% 是 53,349,相当于 132,000 年支出的 4.8 个月;Tidecast 的 59,690 下跌 30% 是 17,907,相当于 17,000 经营支出的 12.6 个月,但个人生活支出没有算进去,真实月数会更低;Nord 没有分散化资产,压力损失为 0,但这不是安全,而是因为它连储备都没补满。

风险预算的规则可以写成:如果压力损失超过 6 个月支出,就降低分散化比例或提高现金层;如果储备不足 12 个月,就不进入分散化和再投资层。按这条规则,LedgerLite 的 4.8 个月通过,Tidecast 的 12.6 个月在「仅经营支出」口径下不通过,Nord 在进入配置之前就已经不通过。

自营再投资的比例也要接受同一个风险预算。LedgerLite 的 111,144 如果全部投入一个新项目,失败时损失的是 111,144,相当于 10.1 个月支出;这个金额可以承受,但前提是项目有明确的里程碑和止损线。Tidecast 的 37,306 相当于 26.3 个月的可核算经营支出,看起来很多,但它的个人支出没有计入,实际可承受的失败次数更少。Nord 的自营再投资是 0,不是因为没有项目想法,而是因为储备还没补满。

把配置写成代码

下面的 reinvest.ts 把四层框架写成一个函数。allocate 先补 12 个月储备,再按 35/40/25 分配剩余资金;如果税后所得不足以覆盖储备,所有钱进现金层,并返回缺口。TEACHING_POLICY 把 20% 现金下限、35% 低风险、40% 分散化、25% 再投资、30% 压力回撤和 4% 提款率固化为教学参数。

// file: src/capital/reinvest.ts
// tier: L1
// verify: node --test test/capital/reinvest.test.ts

import { type Cents } from "../core/money.ts";
import { type Bps, applyRate } from "../core/rate.ts";
import { type Result, fail, ok } from "../core/result.ts";

export type AllocationPolicy = {
  cashFloorBps: Bps;
  lowRiskBps: Bps;
  diversifiedBps: Bps;
  reinvestBps: Bps;
  diversifiedDrawdownBps: Bps;
  withdrawalRateBps: Bps;
};

export type Allocation = {
  afterTaxCents: Cents;
  reserveTargetCents: Cents;
  cashCents: Cents;
  reserveShortfallCents: Cents;
  lowRiskCents: Cents;
  diversifiedCents: Cents;
  reinvestCents: Cents;
  stressLossCents: Cents;
  reserveMonths: number;
  sustainableCashCents: Cents;
  gapToOutflowCents: Cents;
};

/**
 * Teaching policy: the reserve is twelve months of documented outflow, but
 * never less than 20% of proceeds. The remainder splits 35/40/25 between
 * low-risk assets, diversified assets and the founder's own project. The 4%
 * withdrawal rate and the 30% stress drawdown are assumptions, not advice.
 */
export const TEACHING_POLICY: AllocationPolicy = {
  cashFloorBps: 2000,
  lowRiskBps: 3500,
  diversifiedBps: 4000,
  reinvestBps: 2500,
  diversifiedDrawdownBps: 3000,
  withdrawalRateBps: 400,
};

function validBps(value: Bps): boolean {
  return Number.isInteger(value) && value >= 0 && value <= 10000;
}

/**
 * Funds the cash reserve first, then allocates the remainder. When proceeds
 * cannot fund twelve months of outflow, every dollar goes to cash and the
 * shortfall is reported; no risk asset is bought before the reserve is whole.
 */
export function allocate(
  afterTaxCents: Cents,
  annualOutflowCents: Cents,
  policy: AllocationPolicy,
): Result<Allocation> {
  if (!Number.isInteger(afterTaxCents) || afterTaxCents < 0) {
    return fail("after-tax proceeds must be a non-negative integer amount");
  }
  if (!Number.isInteger(annualOutflowCents) || annualOutflowCents <= 0) {
    return fail("annual outflow must be a positive integer amount");
  }
  const rates = [
    policy.cashFloorBps,
    policy.lowRiskBps,
    policy.diversifiedBps,
    policy.reinvestBps,
    policy.diversifiedDrawdownBps,
    policy.withdrawalRateBps,
  ];
  if (rates.some((rate) => !validBps(rate))) {
    return fail("all policy rates must be between 0 and 10000 bps");
  }
  if (
    policy.lowRiskBps + policy.diversifiedBps + policy.reinvestBps !==
    10000
  ) {
    return fail("low-risk, diversified and reinvest shares must add up to 100%");
  }

  const reserveTargetCents = annualOutflowCents;
  const cashFloorCents = applyRate(afterTaxCents, policy.cashFloorBps);
  const cashCents = Math.min(
    afterTaxCents,
    Math.max(reserveTargetCents, cashFloorCents),
  );
  const reserveShortfallCents = Math.max(
    0,
    reserveTargetCents - cashCents,
  );
  const remainderCents = afterTaxCents - cashCents;
  const lowRiskCents = applyRate(remainderCents, policy.lowRiskBps);
  const diversifiedCents = applyRate(remainderCents, policy.diversifiedBps);
  const reinvestCents = Math.max(
    0,
    remainderCents - lowRiskCents - diversifiedCents,
  );
  const stressLossCents = applyRate(
    diversifiedCents,
    policy.diversifiedDrawdownBps,
  );
  const reserveMonths =
    Math.round(((cashCents * 12) / annualOutflowCents) * 10) / 10;
  const sustainableCashCents = applyRate(
    afterTaxCents,
    policy.withdrawalRateBps,
  );

  return ok({
    afterTaxCents,
    reserveTargetCents,
    cashCents,
    reserveShortfallCents,
    lowRiskCents,
    diversifiedCents,
    reinvestCents,
    stressLossCents,
    reserveMonths,
    sustainableCashCents,
    gapToOutflowCents: Math.max(
      0,
      annualOutflowCents - sustainableCashCents,
    ),
  });
}

代码里有三个刻意的边界。第一,现金层取「12 个月支出」和「20% 税后所得」的较大者,而不是固定比例;这保证小额交易也有最低缓冲,但也会让大额交易的现金比例看起来偏低。第二,剩余资金的 35/40/25 是教学分配,不是最优组合;真实配置要考虑年龄、负债、税务、币种和流动性需求。第三,压力损失只算分散化资产的 30% 回撤,不算低风险资产的利率风险和现金的通胀风险;它回答的是「股票类资产下跌时,储备够不够」,不是「整个组合最坏会怎样」。

把 LedgerLite 代入:税后 57,657,600 美分,年支出 13,200,000 美分,现金层 13,200,000 美分,剩余 44,457,600 美分;低风险 15,560,160 美分,分散化 17,783,040 美分,再投资 11,114,400 美分;压力损失 5,334,912 美分,储备月数 12.0,4% 可支出现金 2,306,304 美分,与年支出的缺口 10,893,696 美分。换算成美元就是 576,576、132,000、155,602、177,830、111,144、53,349、23,063 和 108,937。

这套代码不处理税务、交易成本、通胀、汇率和提款顺序,也不判断某类资产是否适合某个具体的人。它只把「先储备、后配置」的顺序和「4% 提款率」的量级固定下来,让三案例可以在同一张表里比较。真实的配置方案必须按个人情况单独设计;本节不构成投资建议。

小结

  • 四层框架的顺序是:12 个月应急现金、低风险资产、分散化投资、自营再投资。储备没补满之前,不进入后三层。
  • LedgerLite 的 12 个月储备是 132,000,占税后所得的 22.9%;剩余 444,576 按 35/40/25 分成 155,602、177,830、111,144。
  • Tidecast 的 20% 现金下限是 37,306,储备月数 26.3;但它的 17,000 只是经营支出,个人生活支出没有计入。
  • Nord 的税后所得 115,830 和 77,220 都低于 12 个月的 120,000,缺口 417 和 4,278;它没有资格进入分散化和再投资层。
  • 4% 提款率下,LedgerLite 可支出 23,063、Tidecast 7,461、Nord 4,633 或 3,089,分别只有原 SDE 的 17.7%、6.2%、13.5% 和 9.0%。
  • 收入下降是结构性的:售价倍数乘 4%,决定了提款现金流相对于 SDE 的比例;税率不是主因。
  • 风险预算用压力情景量化:分散化资产下跌 30% 的损失,不应超过 6 个月支出;储备不足 12 个月时,不配置风险资产。

阅读导航:上一节:10.1 税后所得与分期 · 下一节:10.3 从经营者到投资者的身份转换 。

常见错误与边界

  1. 拿到钱先做新项目。 储备没补满就投入新项目,项目失败时会同时失去现金和时间;Nord 的 0 再投资不是保守,而是储备不足。
  2. 把 20% 现金下限当成 12 个月储备。 LedgerLite 的 22.9% 刚好覆盖 12 个月,Tidecast 的 20% 覆盖 26.3 个月,Nord 的 100% 仍然不够;比例和月数是两个约束。
  3. 用经营支出代替生活支出。 Tidecast 的 17,000 只是营销、服务器和工具,不含个人生活成本;用它算储备月数会高估安全性。
  4. 把 4% 当保证收益。 4% 是教学提款假设,不是产品承诺;市场收益、通胀和顺序风险都会改变实际结果。
  5. 直接比较 SDE 和 4% 现金流。 SDE 是税前经营现金,4% 是税后组合提款;口径不同,只能比量级,不能相加。
  6. 忽略售价倍数。 5.9 倍 SDE 的 LedgerLite 能产生约 23.6% 的 SDE 提款,2.1 倍的 Tidecast 只有约 8.4%;倍数决定了收入落差。
  7. 把分散化当保本。 分散化资产会下跌;30% 的压力回撤是教学假设,真实回撤可能更大或更久。
  8. 自营再投资没有止损线。 111,144 的再投资相当于 10.1 个月支出;没有里程碑和止损线,会把配置资金变成沉没成本。
  9. 忽略币种和流动性。 税后所得、支出和资产可能在不同币种;汇率变化会让储备月数和提款率同时失真。
  10. 把教学比例当个人建议。 35/40/25 是算例,不是适合所有人的配置;负债、年龄、家庭责任和税务都要单独考虑。

本节的边界是「静态、单一币种、无负债」的配置模型:不处理税务、交易成本、通胀、汇率、提款顺序和个人风险偏好,也不推荐任何具体资产。它回答的是「这笔税后所得能撑多久、能承受多大回撤、有多少可以拿去再投资」,不是「你应该买什么」。下一节把配置结果接到身份转换:当收入从经营利润变成组合提款,时间怎么分、决策节奏怎么换、什么情况下必须回去工作。

继续阅读

探索更多技术文章

浏览归档,发现更多关于系统设计、工具链和工程实践的内容。

全部文章 返回首页

「books」更多文章

  1. 《移动游戏产品的架构·商业化与发行工程》附录 C 商业化与发行评审清单
  2. 《移动游戏产品的架构·商业化与发行工程》附录 B 双案例商业化事实表
  3. 《移动游戏产品的架构·商业化与发行工程》附录 A 商业化与发行术语速查