以下情境为教学假设,人物与数字不代表经核实的真实案例。
卖掉生意之后,最容易犯的错误是马上给自己换一个头衔:独立开发者变成天使投资人,创始人变成顾问,或者干脆宣布「退休」。头衔不产生现金流,现金流结构才决定身份。出售前,收入来自经营利润;出售后,收入来自组合提款。两者的金额、稳定性、时间投入和决策节奏都不同。如果不把结构换过来,只换称呼,通常会在 12 到 24 个月内发现钱不够、时间空了、身份也没了。
这一节把身份转换拆成三个可计算的问题:现金流结构变了多少、时间怎么分配、什么情况下必须回去工作。所有提款率、收益率和安全边际都是教学假设,不构成投资、税务或职业建议。
现金流结构:从 SDE 到组合提款
出售前的现金流是 SDE:一门生意在扣除运营费用之后、扣除创始人薪酬和所得税之前,能产生的现金。它需要创始人投入时间,也承担经营风险。出售后的现金流是组合提款:税后所得乘一个可持续提款率,不需要每天经营,但也不再随业务增长。
| 案例 | 出售前 SDE | 出售后 4% 现金 | 差额 | 变化 |
|---|---|---|---|---|
| LedgerLite | 130,240 | 23,063 | −107,177 | −82.3% |
| Tidecast | 121,171 | 7,461 | −113,710 | −93.8% |
| Nord 4.5× | 34,320 | 4,633 | −29,687 | −86.5% |
| Nord 3.0× | 34,320 | 3,089 | −31,231 | −91.0% |
这张表和 10.2 的表是同一组数字,但看的角度不同。10.2 问「这笔钱怎么分」,这里问「收入结构变成了什么」。LedgerLite 的 SDE 是 130,240,出售后 4% 只有 23,063,收入下降 82.3%;Tidecast 从 121,171 降到 7,461,下降 93.8%;Nord 从 34,320 降到 4,633 或 3,089,下降 86.5% 或 91.0%。
收入下降不是失败,而是结构变化。SDE 是「用时间换现金」,组合提款是「用资本换现金」。前者可以在业务增长时上升,也可以在客户流失时归零;后者相对稳定,但上限由资产规模和提款率决定。身份转换的核心不是接受更少的钱,而是接受现金流的来源从「经营」变成「资产」,并且重新安排时间。
还有一个常被忽略的差别:SDE 是税前、经营口径,组合提款是税后、个人口径。两者不能直接相减,但量级差异足够大,口径调整不会改变结论。LedgerLite 的 130,240 扣除创始人薪酬和所得税后,经营现金流是 64,299;即使按这个更保守的口径,23,063 仍然只有 35.9%。Tidecast 的 92,090 可支配现金对应 7,461 的提款,比例是 8.1%;Nord 的 25,740 对应 4,633,比例是 18.0%。无论用哪个口径,收入都下降了大半。
年支出 ÷ 可投资资产 = 所需收益率
身份转换的第一个硬约束是「所需收益率」:要让组合覆盖年支出,资产必须每年赚多少。公式很简单:
所需收益率 = 年支出 ÷ 可投资资产
把三案例的税后所得当作可投资资产,把可核算年支出当作支出,得到:
| 案例 | 可投资资产 | 年支出 | 所需收益率 | 4% 提款率 | 安全边际(2 个百分点) | 年缺口 | 跑道月数 | 判断 |
|---|---|---|---|---|---|---|---|---|
| LedgerLite | 576,576 | 132,000 | 22.9% | 4% | 6% | 108,937 | 52.4 | 必须继续赚 |
| Tidecast | 186,531 | 17,000 | 9.1% | 4% | 6% | 9,539 | 131.7 | 必须继续赚 |
| Nord 4.5× | 115,830 | 120,000 | 103.6% | 4% | 6% | 115,367 | 11.6 | 必须继续赚 |
| Nord 3.0× | 77,220 | 120,000 | 155.4% | 4% | 6% | 116,911 | 7.7 | 必须继续赚 |
LedgerLite 的 132,000 ÷ 576,576 = 22.9%,远高于 4% 的提款率。按 4% 算,组合每年只能提供 23,063,缺口 108,937;按当前支出,资产可以撑 52.4 个月,约 4.4 年。Tidecast 的 17,000 ÷ 186,531 = 9.1%,4% 只能提供 7,461,缺口 9,539,跑道 131.7 个月,约 11 年。Nord 的所需收益率是 103.6% 或 155.4%,跑道只有 11.6 或 7.7 个月。
「安全边际 2 个百分点」是一个教学规则:如果所需收益率高于 4% 提款率 2 个百分点以上,就归为「必须继续赚」;如果只在 4% 到 6% 之间,归为「过渡」;如果低于 4%,才归为「投资者」。按这条规则,三案例全部落在「必须继续赚」。这不是说他们不能休息,而是说休息必须建立在削减支出、继续工作或接受更低生活标准的基础上。
Tidecast 的判断需要特别说明:9.1% 用的是 17,000 的可核算经营支出,不含个人生活成本。如果个人支出是 50,000,所需收益率会变成 (17,000 + 50,000) ÷ 186,531 = 35.9%,缺口会更大。因此 Tidecast 的「必须继续赚」结论是稳健的:它不是在边界上,而是在远高于 6% 的位置。
Nord 的情况最直接:可投资资产 115,830 低于 12 个月的 120,000 支出,所需收益率超过 100%。这不是「配置问题」,而是「资产不够覆盖一年支出」的问题。Nord 在卖掉生意后,必须先削减成本、继续服务或找一份有收入的工作,才能谈身份转换。把 77,220 的税后所得叫作「退休本金」,在算术上是不成立的。
时间分配:投资、顾问、新项目
身份转换不只是钱的问题,也是时间的问题。出售前,一周的时间几乎全部投入经营;出售后,时间突然空出来,如果没有结构,很容易滑向两种极端:要么每天看盘,把投资当成全职工作;要么完全停下来,几个月后发现自己既没有收入,也没有项目。
本节用一个 40 小时的时间预算做教学示例,把时间分成投资、顾问、新项目、行政与健康四块。比例不是固定配方,而是按「必须继续赚」的程度调整:越需要收入,新项目或顾问的权重越高;越接近投资者状态,投资和行政的权重越高。
| 案例 | 每周小时 | 投资 | 顾问 | 新项目 | 行政与健康 | 逻辑 |
|---|---|---|---|---|---|---|
| LedgerLite | 40 | 8(20%) | 8(20%) | 16(40%) | 8(20%) | 行业经验可顾问,仍需新收入 |
| Tidecast | 40 | 8(20%) | 4(10%) | 20(50%) | 8(20%) | 续作或授权需要更多建设时间 |
| Nord | 40 | 4(10%) | 4(10%) | 24(60%) | 8(20%) | 收入缺口最大,建设权重最高 |
LedgerLite 的 8 小时投资不是「每天看盘」,而是每月一次的组合检查、每季度一次的再平衡、以及必要的税务和现金流记录。8 小时顾问可以来自会计 SaaS 行业的经验:产品、定价、客户成功、合规。16 小时新项目是主要的收入恢复路径,可能是一个更小的产品,也可能是一个服务产品。8 小时行政与健康包括记账、报税、运动、休息和家庭时间。
Tidecast 的顾问权重较低,因为它的核心资产是 IP 和续作,而不是可复用的行业顾问能力。20 小时新项目可以用于续作、授权谈判或一个小型买断制产品。Nord 的新项目权重最高,因为它的收入缺口最大;24 小时建设不是「再做一个更大的服务工作室」,而是找到一个能用更少人力产生收入的产品或服务组合。
时间预算的关键不是精确到小时,而是给每一类活动设上限和下限。投资时间设上限,防止把组合管理变成新的全职工作;新项目时间设下限,防止「休息」变成「停滞」;顾问时间设下限,保证在完全依赖组合之前还有一条现金流;行政与健康设下限,防止税务、记录和身体问题在两年后集中爆发。
心理账户与决策节奏
身份转换的难点往往不在算术,而在心理账户。出售价格是一个锚:768,768 听起来像一笔大钱,税后 576,576 少了一截,4% 提款只有 23,063,又少了一大截。三个数字相差 33 倍,但很多人做支出决策时仍然锚定第一个数字。心理账户的第一个规则是:用最后一个数字安排生活,用中间的数字做配置,用第一个数字只做交易记录。
第二个心理账户是「赌场钱」。出售所得容易被当成赢来的钱,觉得可以承担更高的风险。风险预算应该在配置之前设定,而不是在上涨之后追加。LedgerLite 的分散化资产 177,830 下跌 30% 是 53,349,相当于 4.8 个月支出;这个数字要在买入之前就知道,而不是在下跌之后才发现。
第三个心理账户是「创始人身份」。卖掉生意之后,很多人会急于用新项目证明自己仍然是创始人,结果把配置资金投进一个没有验证的想法。身份转换不是放弃创造,而是把「必须成功」换成「可以失败」。自营再投资的 111,144 应该按实验预算管理,有里程碑、有止损线,不因为它叫「新项目」就无限追加。
决策节奏也要换。经营时期,决策节奏由客户、发布和现金流驱动,可能是每天、每周;投资时期,决策节奏应该由季度和年度驱动,避免被短期波动牵着走。一个可执行的节奏是:
| 频率 | 看什么 | 触发动作 |
|---|---|---|
| 每月 | 储备月数、实际支出与预算差 | 储备低于 9 个月,削减支出或增加收入 |
| 每季度 | 提款额 ÷ 组合价值、所需收益率 | 连续两个季度超过 4%,削减支出或回去工作 |
| 每年 | 再平衡、时间分配、税务记录 | 所需收益率高于 6%,调整配置或收入计划 |
| 事件驱动 | 组合回撤超过 20%、健康、家庭变化 | 暂停新增风险,重算储备和缺口 |
什么情况下必须回去工作?本节给出五条可计算的触发条件:
- 储备低于 12 个月,且支出无法继续削减。Nord 在出售后立即触发:115,830 或 77,220 都低于 120,000。
- 所需收益率连续两个季度高于 6%(4% 提款率加 2 个百分点安全边际)。三案例在出售后都触发,只是程度不同。
- 实际提款额连续两个季度超过组合的 4% 年化。一次超支可能是意外,连续超支是结构问题。
- 连续 90 天没有产生收入的活动,同时年缺口大于 0。休息可以,但要有时间上限和收入恢复计划。
- 出售后头两年组合回撤超过 20%,且储备不足 12 个月。顺序风险会把「暂时下跌」变成「永久缺口」。
「回去工作」不等于回到原来的生意。它可以是顾问、合同工、兼职、一个小型服务产品,或者一个更小的新项目。关键是收入要能覆盖缺口,而不是恢复原来的身份。LedgerLite 的缺口是 108,937,Tidecast 是 9,539,Nord 是 115,367 或 116,911;这些数字决定了需要多大规模的收入,而不是需要多响亮的头衔。
把身份判断写成代码
下面的 identity.ts 把所需收益率、4% 可支出现金、年缺口、跑道月数和判断结果写成一个函数。assessIdentity 按「所需收益率 − 4% 提款率」与 2 个百分点安全边际比较,返回 must-earn、bridge 或 investor;timeBudget 把一周小时数按投资、顾问、新项目的基点拆分,行政与健康吸收剩余。
// file: src/capital/identity.ts
// tier: L1
// verify: node --test test/capital/identity.test.ts
import { type Cents } from "../core/money.ts";
import { type Bps, applyRate, divide } from "../core/rate.ts";
import { type Result, fail, ok } from "../core/result.ts";
export type IdentityInput = {
investableCents: Cents;
annualSpendingCents: Cents;
withdrawalRateBps: Bps;
safetyMarginBps: Bps;
};
export type Verdict = "must-earn" | "bridge" | "investor";
export type IdentityPosition = {
requiredReturnBps: Bps;
sustainableCashCents: Cents;
annualGapCents: Cents;
runwayMonths: number;
headroomBps: Bps;
verdict: Verdict;
};
export type TimeAllocation = {
weeklyHours: number;
investingHours: number;
advisingHours: number;
buildingHours: number;
adminHours: number;
};
function validBps(value: Bps): boolean {
return Number.isInteger(value) && value >= 0 && value <= 10000;
}
/**
* Compares the return the portfolio must earn with the return the plan is
* willing to withdraw. "must-earn" means the gap is wider than the safety
* margin; "bridge" means the plan is close but still above the withdrawal
* rate; "investor" means withdrawals can cover spending with room to spare.
* The withdrawal rate and margin are teaching assumptions.
*/
export function assessIdentity(
input: IdentityInput,
): Result<IdentityPosition> {
if (!Number.isInteger(input.investableCents) || input.investableCents <= 0) {
return fail("investable assets must be a positive integer amount");
}
if (
!Number.isInteger(input.annualSpendingCents) ||
input.annualSpendingCents <= 0
) {
return fail("annual spending must be a positive integer amount");
}
if (
!validBps(input.withdrawalRateBps) ||
!validBps(input.safetyMarginBps)
) {
return fail("withdrawal rate and safety margin must be valid bps");
}
const requiredReturnBps = divide(
input.annualSpendingCents,
input.investableCents,
);
const sustainableCashCents = applyRate(
input.investableCents,
input.withdrawalRateBps,
);
const annualGapCents = Math.max(
0,
input.annualSpendingCents - sustainableCashCents,
);
const runwayMonths =
Math.round(
((input.investableCents * 12) / input.annualSpendingCents) * 10,
) / 10;
const headroomBps = input.withdrawalRateBps - requiredReturnBps;
let verdict: Verdict = "investor";
if (requiredReturnBps > input.withdrawalRateBps + input.safetyMarginBps) {
verdict = "must-earn";
} else if (requiredReturnBps > input.withdrawalRateBps) {
verdict = "bridge";
}
return ok({
requiredReturnBps,
sustainableCashCents,
annualGapCents,
runwayMonths,
headroomBps,
verdict,
});
}
/**
* Splits a week into investing, advising, building and admin. The first three
* shares are given in basis points; admin absorbs the remainder. Hours are
* rounded to one decimal so the display does not pretend to minute precision.
*/
export function timeBudget(
weeklyHours: number,
investingBps: Bps,
advisingBps: Bps,
buildingBps: Bps,
): Result<TimeAllocation> {
if (!Number.isFinite(weeklyHours) || weeklyHours <= 0 || weeklyHours > 168) {
return fail("weekly hours must be between 0 and 168");
}
if (
!validBps(investingBps) ||
!validBps(advisingBps) ||
!validBps(buildingBps)
) {
return fail("time shares must be between 0 and 10000 basis points");
}
if (investingBps + advisingBps + buildingBps > 10000) {
return fail("investing, advising and building shares cannot exceed 100%");
}
const round = (value: number) => Math.round(value * 10) / 10;
const investingHours = round((weeklyHours * investingBps) / 10000);
const advisingHours = round((weeklyHours * advisingBps) / 10000);
const buildingHours = round((weeklyHours * buildingBps) / 10000);
const adminHours = round(
weeklyHours - investingHours - advisingHours - buildingHours,
);
return ok({
weeklyHours,
investingHours,
advisingHours,
buildingHours,
adminHours,
});
}
代码里有三个刻意的边界。第一,判断规则是教学规则,不是职业建议;2 个百分点的安全边际可以按个人情况调整,但调整后要重新算缺口。第二,年支出是单一数字,不区分刚性支出和可选支出;真实情况要把房租、保险、税务、家庭责任和可削减项分开。第三,时间预算按周计算,不处理项目周期和季节性;新项目的 16 或 24 小时可能集中在某些月份,而不是每周平均。
把 LedgerLite 代入:可投资资产 57,657,600 美分,年支出 13,200,000 美分,所需收益率 2,289 个基点(22.9%),4% 可支出现金 2,306,304 美分,年缺口 10,893,696 美分,跑道 52.4 个月,判断为 must-earn。Tidecast 是 911 个基点、746,124 美分、953,876 美分、131.7 个月;Nord 4.5× 是 10,360 个基点、463,320 美分、11,536,680 美分、11.6 个月;Nord 3.0× 是 15,540 个基点、308,880 美分、11,691,120 美分、7.7 个月。四个判断都是 must-earn。
这套代码不处理税务、通胀、收益路径、提款顺序和个人风险偏好,也不判断一个人是否「应该」退休。它只把「年支出 ÷ 可投资资产」这个比值和 4% 提款率放在一起,给出一个可以复算的起点。身份转换的最终决定仍然要结合健康、家庭、兴趣和机会成本;本节的所有比率都是教学假设。
小结
- 身份转换的核心是现金流结构:从 SDE 变成组合提款,收入会下降 82.3% 到 93.8%,具体取决于售价倍数和提款率。
- 所需收益率 = 年支出 ÷ 可投资资产。LedgerLite 22.9%、Tidecast 9.1%、Nord 103.6% 或 155.4%,全部高于 4% 提款率加 2 个百分点安全边际。
- 4% 提款率下,LedgerLite 可支出 23,063、Tidecast 7,461、Nord 4,633 或 3,089;年缺口分别是 108,937、9,539、115,367 和 116,911。
- 跑道月数:LedgerLite 52.4、Tidecast 131.7、Nord 11.6 或 7.7。跑道不是「可以退休的月数」,而是「不改变支出时的现金续航」。
- 时间预算按「必须继续赚」的程度调整:LedgerLite 40% 新项目,Tidecast 50%,Nord 60%;投资时间设上限,避免变成新的全职工作。
- 心理账户的三个陷阱:锚定出售价、把所得当赌场钱、用新项目证明创始人身份;对应规则是用税后 4% 安排生活、配置前设风险预算、再投资按实验管理。
- 必须回去工作的五条触发条件:储备低于 12 个月且无法削减、所需收益率连续两季高于 6%、实际提款连续两季超过 4%、90 天无收入且缺口大于 0、头两年回撤超过 20% 且储备不足。
阅读导航:上一节:10.2 再投资与资产配置 · 下一节:11.1 关停决策:继续、出售、关停 。
常见错误与边界
- 先换头衔再算现金流。 「投资人」或「退休」不产生收入;先算年支出 ÷ 可投资资产,再决定身份。
- 用出售价安排生活。 768,768 的报价税后 576,576,4% 提款只有 23,063;用报价做支出预算,会把跑道高估 33 倍。
- 把 4% 当保证收益。 4% 是教学提款假设,不是产品承诺;市场下跌、通胀和顺序风险都会改变结果。
- 忽略安全边际。 所需收益率刚好等于 4% 时,一次回撤就会迫使在低点卖出;2 个百分点的边际是为了留出缓冲。
- 把跑道当月数当退休年限。 52.4 个月是「不改变支出」的续航,不是「可以永远不工作」的证明;支出、收益和税务都会变。
- 用经营支出代替生活支出。 Tidecast 的 9.1% 只用了 17,000 经营支出;加上个人生活成本,所需收益率会显著上升。
- 投资时间没有上限。 每天看盘会把组合管理变成新的全职工作,也会放大短期波动对决策的影响。
- 新项目没有止损线。 自营再投资按实验预算管理;没有里程碑和止损线,会把配置资金变成沉没成本。
- 把「回去工作」等同于回到原生意。 顾问、合同工、兼职和小型产品都可以覆盖缺口;目标是收入,不是身份。
- 忽略顺序风险。 出售后头两年如果遇到大幅回撤,同样的提款率会更快耗尽本金;储备和提款规则要在出售前设定。
本节的边界是「单一支出、固定提款率、无负债」的身份模型:不处理税务、通胀、收益路径、提款顺序、家庭责任和个人偏好,也不构成职业或投资建议。它回答的是「这笔税后所得能支撑什么身份、时间怎么分、什么时候必须回去工作」,不是「你应该过怎样的生活」。下一节把「继续、出售、关停」放在同一张决策表上,回答当生意不再增长时,哪条路的现金代价最低。
继续阅读
探索更多技术文章
浏览归档,发现更多关于系统设计、工具链和工程实践的内容。