《独立开发者的商业指南·资本与退出》12.1 持有型公司的治理

持有型公司的治理不是把公司管得更复杂,而是把股权、投票、分红、信息权四件事写成可执行的规则。本节用 LedgerLite 的 SDE 130,240 美元算 40% 派息与 60% 留存在三种基数下的现金后果,并给出九项可执行的治理文件清单。

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

退出不一定意味着卖掉公司。对很多独立开发者,更现实的路径是继续持有、把每年的利润分出来,让公司成为一台持续产生现金的机器。这条路径的难点不在增长,而在治理:钱怎么从公司到股东手里,谁有权决定,留下多少再投资,信息给谁看。治理没写清楚,公司越赚钱,争议越大。

这一节把持有型公司的治理拆成四件事:股权与投票权、董事会与顾问、分红政策、信息权与审计。主案例是 LedgerLite:一人持有、SDE 130,240 美元、净利润 58,299 美元、经营现金流 64,299 美元、年末现金 95,000 美元。Nord 与 Tidecast 作为对照。所有比率、税率与工时都是教学假设,不构成法律、税务或投资建议。

股权与投票权:两列数字,不是一列

持有型公司最常见的错误,是把「股权比例」当成「控制权比例」。这两列数字在单一股东、同股同权的结构里恰好相等,一旦引入合伙人、投资人、家族成员或员工持股,就会分开。治理文件要同时写清两列:谁拿多少经济利益,谁拿多少票。

结构股权投票权控制结果
单一股东100%100%没有外部否决
两位合伙人50% / 50%50% / 50%任何一方都能否决
双层股权60% / 40%93.8% / 6.3%创始人用少数股权保持多数投票
投票权委托按股权集中到一人经济不变,控制集中

双层股权那一行值得展开。假设创始人持 60% 股权、每股 10 票,投资人持 40%、每股 1 票,总票数是 60,000 + 4,000 = 64,000,创始人的投票权是 93.8%,投资人只有 6.3%。经济上投资人仍拿 40% 的分红,控制上却只有 6.3% 的票。这种结构在融资时常见,在家族传承时也常见:把分红权逐步给下一代,把投票权留在创始人或受托人手里。

反过来,50/50 是最脆弱的控制结构。两位合伙人各占一半,任何一方都能否决分红、预算、招聘和出售。Nord 就是这种结构:两位合伙人各 50%,没有董事会,也没有书面退出条款。它的问题不是「谁说了算」,而是「谁都不能单独说了算」。合伙人退出机制见 2.3 合伙人协议与退出机制 ,这里只强调一点:50/50 的治理成本,最终会以决策延迟和谈判僵局的形式出现。

投票权还有一层容易被忽略:投票权可以授权,但不能代替所有权。投票权委托、一致行动协议、受托投票,都能在不变更股权的情况下集中控制;它们的代价是协议期限、撤销条件和违约救济。把这些写进股东协议,比在每次开会前临时确认谁投什么票要便宜。

董事会与顾问:什么时候值得设

一人公司不需要董事会。需要董事会的时间点,通常不是「公司变大了」,而是「有外部股东、有银行授信、有重大交易、或者创始人不再每天在场」。董事会不是荣誉职位,是一台有固定运行成本的决定机器。第 3.3 董事会、观察员与信息权 已经把席位、观察员和信息权的成本拆过;这里只做持有型公司的取舍。

形式人数年度治理工时年度成本($100/小时)适用
无董事会,仅顾问2 位顾问16 小时$1,600一人公司、无外部股东
三人董事会3 席约 70 小时约 $7,000有投资人、有银行债务
五人董事会5 席约 94 小时约 $9,400多轮融资、准备出售

三人董事会的 70 小时来自第 3.3 节的教学假设:一年 4 次会议、每席 3 小时、会前准备 4 小时、12 次信息披露每次 1.5 小时。五人董事会把会议小时从 52 拉到 76,加上 18 小时披露,合计 94 小时。多出来的两席,一年增加 24 小时,约 $2,400;这还没算决策延迟和关系维护。

顾问比董事便宜,但不是免费。两位顾问、一年 4 次、每次 2 小时参会加 2 小时准备,合计 16 小时、$1,600。顾问没有投票权,适合「需要外部视角但不需要让渡控制」的阶段。把顾问当董事用,会在关键事项上发现「他们只能建议,不能批准」;把董事当顾问用,会在关键事项上发现「他们能否决,但不承担经营责任」。

持有型公司还要区分「董事会」和「股东会」。董事会批预算、任免管理层、决定重大支出;股东会批章程修改、分红、合并出售、股权激励池。一人公司两者合一,但文件仍要分开写:哪些事项需要股东决议,哪些事项授权董事或经理执行。合并写在一起,传承或引入新股东时就要重写。

分红政策:40% / 60% 的三种基数

分红政策的核心不是「分多少」,而是「按什么基数分」。同样写「派息 40%、留存 60%」,基数换成 SDE、净利润或经营现金流,结果完全不同。LedgerLite 的三个基数分别是 130,240、58,299 和 64,299 美元。

基数基数金额派息 40%名义留存 60%派息后经营现金扣设备投资后净现金增加派息/净利润留存是否由现金覆盖
SDE$130,240$52,096$78,144$12,203$9,20389.4%否,缺口 $65,941
净利润$58,299$23,320$34,979$40,979$37,97940.0%是,余 $6,000
经营现金流$64,299$25,720$38,579$38,579$35,57944.1%是,余 $0

第一行是很多创始人会写的版本:SDE 130,240,派息 40% 是 52,096,留存 60% 是 78,144。看起来留了大头,实际上 52,096 已经吃掉净利润 58,299 的 89.4%,真正留在公司里的净利润只有 6,203。经营现金流 64,299 减去派息 52,096,只剩 12,203;再减设备投资 3,000,净现金只增加 9,203。名义留存 78,144 里,有 65,941 没有现金来源。

第二行把基数换成净利润。派息 40% 是 23,320,留存 34,979;经营现金流减派息后是 40,979,扣设备投资后 37,979。留存不仅被覆盖,还多出 6,000,来自递延收入增加 8,000 和应收增加 2,000 的净影响。第三行把基数换成经营现金流,派息 25,720,留存 38,579,派息后现金刚好等于留存,设备投资会再吃掉 3,000。

三行放在一起,结论很清楚:分红政策必须声明基数。写「40%」不写基数,等于没有政策。持有型公司最稳妥的写法是「以经审计净利润为基数,派息不超过 40%,且派息后现金不低于 6 个月运营费用」;SDE 和经营现金流可以作为上限参考,但不能直接当分红基数,因为 SDE 在创始人薪酬和所得税之前。

还要看覆盖倍数。按 SDE 基数派息 52,096,净利润 58,299,覆盖倍数是 1.12 倍;净利润下降 10.6%,覆盖倍数就打到 1.0。也就是说,这个派息水平只留下不到 11% 的利润缓冲。教学假设下,持有型公司的目标是覆盖倍数不低于 1.5 倍;按 58,299 的净利润,派息上限是 38,866,相当于 SDE 的 29.8%。这个数字比「40%」保守,但它能在利润下滑一年时不分红也不违约。

派息口径派息金额覆盖倍数利润下滑多少会打穿
SDE 的 40%$52,0961.12×10.6%
SDE 的 30%$39,0721.49×33.0%
净利润的 40%$23,3202.50×60.0%

派息之后,剩下的钱要有去处。留存不是为了趴在账上,而是为了再投资:产品研发、招聘、并购、现金缓冲。LedgerLite 按 SDE 基数派息后只剩 9,203 的净现金增加,连一个月的运营费用都不够;按净利润基数派息后有 37,979,才够覆盖一次小规模招聘或半年的现金缓冲。分红政策如果不和再投资计划一起写,留存比例就只是一个会计数字。

信息权与审计:持有型公司也需要

一人公司没有外部股东,信息权看起来是多余的。但只要出现合伙人、家族成员、银行债务、投资人或者潜在的收购方,信息权就会变成治理的一部分。信息权不是「发个邮件」,而是一条持续的义务:取数、解释、按时限披露。

信息项频率时限(教学假设)年度工时
月度财务每月次月 15 天内18 小时
季度经营包每季度季度结束后 30 天24 小时
年度预算每年财年开始前 30 天16 小时
年度审计或审阅每年财年结束后 90 天40 小时
临时重大事项触发时5 个工作日内12 小时
合计110 小时

110 小时按 $100/小时折 $11,000,另加审计或审阅的外部费用。教学假设下,年收入 240,240 的 LedgerLite 做一次年度审阅的外部费用约 $6,000;正式审计通常更贵,且只在有银行债务、投资人要求或出售准备时才需要。审计的触发条件要写进治理文件:谁可以要求审计、费用由谁承担、审计范围是什么、发现差异怎么处理。

信息权还要写「坏消息条款」。月度财务只能告诉你已经发生的事;重大事项通知要覆盖融资、并购、核心客户流失、数据泄露、关键人离职、重大诉讼和核心 IP 纠纷。规则可以是「5 个工作日内通知,写明事件、影响、已采取动作和下一步」。这条规则的成本很低,但它决定了信息权是「提前沟通」还是「事后追认」。

对持有型公司,信息权还有一个内部作用:它迫使创始人每月把数做实。没有外部股东时,最容易发生的是「账上还有钱,但不知道这个月赚没赚」。月度财务、季度经营包和年度审阅,本质上是给经营装一条固定的检查线。第 8.1 节 的 13 周现金表是这条检查线的短期版本;治理信息权是它的长期版本。

治理文件清单

治理不是一堆原则,是一组文件。文件的价值不在于厚,而在于每一份都能回答一个具体问题:谁有权、按什么价格、什么时候、给谁看。下表是一人持有型公司的最小清单,随着合伙人、投资人、家族成员进入逐步增加。

文件回答什么问题更新频率谁维护
公司章程或组织文件公司是什么主体、股东权利怎么定义变更时公司秘书/律师
股东协议股权、投票、转让、退出、僵局怎么处理每次股权变动股东
董事会议事规则谁参加、怎么表决、哪些事项保留每年董事会
分红政策基数、比例、覆盖倍数、现金下限每年财务负责人
关联交易政策股东与公司之间的交易怎么定价、谁批准每年财务负责人
信息权与月报模板给谁看、看什么、什么时候给每年财务负责人
年度预算与审批矩阵多少钱谁批、什么事项上会每年管理层
审计与银行授权谁可以要求审计、谁可以动银行账户每年董事会
关键人保险与授权书关键人出事时谁接管、现金从哪来每三年股东

清单里最容易被跳过的是「审批矩阵」和「银行授权」。审批矩阵决定日常经营的速度;银行授权决定公司能不能在关键时刻付款。一人公司常把两者都放在创始人一个人身上,传承或意外发生时,公司会立刻停摆。治理文件不是为大公司准备的,它首先是为「创始人不在场」准备的。

Nord 的对照很短:两位合伙人各 50%,没有董事会,治理成本不在会议,而在 50/50 的僵局——任何一方都能否决分红、预算和退出。Tidecast 是单一资产、单一所有人,138,171 美元净得、121,171 美元 SDE,没有子公司,也没有分红对象;持有型治理对它是多余的,它缺的是关键人保险和一份可执行的传承安排。

把治理写成代码:holdco-governance.ts

下面的 holdco-governance.ts 把两件事固化成函数。votingSummary 同时算股权和投票权,支持双层股权;它要求股权合计等于 10,000 个基点,避免「90% 的 cap table」这种看起来完整、实际缺一块的结构。dividendPolicy 把派息基数、名义留存、派息后现金和缺口放在同一个返回值里;retentionFunded 为 false 时,说明「留存 60%」只是一句口号,现金并没有留下来。

// file: src/capital/holdco-governance.ts
// tier: L1
// verify: node --test test/capital/holdco-governance.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 Shareholder = {
  name: string;
  equityBps: Bps;
  votesPerShare: number;
};

export type HolderVote = {
  name: string;
  equityBps: Bps;
  voteBps: Bps;
};

export type VotingSummary = {
  totalEquityBps: Bps;
  totalVotes: number;
  holders: HolderVote[];
  largestVoteBps: Bps;
  hasMajority: boolean;
};

export type DividendInput = {
  sdeCents: Cents;
  netIncomeCents: Cents;
  operatingCashFlowCents: Cents;
  payoutBps: Bps;
};

export type DividendOutcome = {
  payoutCents: Cents;
  statedRetentionCents: Cents;
  retainedCashCents: Cents;
  fundingGapCents: Cents;
  payoutToNetIncomeBps: Bps;
  payoutToCashFlowBps: Bps;
  netIncomeToSdeBps: Bps;
  retentionFunded: boolean;
};

function checkAmount(value: Cents, label: string): string | null {
  if (!Number.isInteger(value) || value < 0) {
    return `${label} must be a non-negative integer amount in cents`;
  }
  return null;
}

function checkBps(value: Bps, label: string): string | null {
  if (!Number.isInteger(value) || value < 0 || value > 10000) {
    return `${label} must be between 0 and 10000 bps`;
  }
  return null;
}

/**
 * Equity and votes are separate columns. One holder can own 60% of the
 * economics and still hold less than 60% of the votes, or the reverse with a
 * dual-class structure. The summary keeps both numbers visible so a voting
 * agreement is not mistaken for an economic agreement.
 */
export function votingSummary(holders: Shareholder[]): Result<VotingSummary> {
  if (holders.length === 0) {
    return fail("at least one shareholder is required");
  }
  let totalEquityBps = 0;
  let totalVotes = 0;
  for (const holder of holders) {
    if (holder.name.trim() === "") {
      return fail("shareholder name is required");
    }
    const equityError = checkBps(holder.equityBps, "equity");
    if (equityError) {
      return fail(equityError);
    }
    if (!Number.isInteger(holder.votesPerShare) || holder.votesPerShare <= 0) {
      return fail("votes per share must be a positive integer");
    }
    totalEquityBps += holder.equityBps;
    totalVotes += holder.equityBps * holder.votesPerShare;
  }
  if (totalEquityBps !== 10000) {
    return fail("equity shares must add up to 10000 bps");
  }
  if (totalVotes <= 0) {
    return fail("total votes must be positive");
  }
  const rows = holders.map((holder) => ({
    name: holder.name,
    equityBps: holder.equityBps,
    voteBps: divide(holder.equityBps * holder.votesPerShare, totalVotes),
  }));
  const largestVoteBps = Math.max(...rows.map((row) => row.voteBps));
  return ok({
    totalEquityBps,
    totalVotes,
    holders: rows,
    largestVoteBps,
    hasMajority: largestVoteBps > 5000,
  });
}

/**
 * A payout ratio is only meaningful when the base is named. Applying 40% to
 * SDE looks conservative, but SDE sits before founder salary and tax. This
 * function keeps the stated retention and the cash actually left in the
 * business side by side, because the gap is what has to be funded.
 */
export function dividendPolicy(input: DividendInput): Result<DividendOutcome> {
  for (const [value, label] of [
    [input.sdeCents, "SDE"],
    [input.netIncomeCents, "net income"],
    [input.operatingCashFlowCents, "operating cash flow"],
  ] as Array<[Cents, string]>) {
    const error = checkAmount(value, label);
    if (error) {
      return fail(error);
    }
  }
  if (input.netIncomeCents <= 0) {
    return fail("net income must be positive to measure dividend cover");
  }
  if (input.operatingCashFlowCents <= 0) {
    return fail("operating cash flow must be positive");
  }
  const payoutError = checkBps(input.payoutBps, "payout");
  if (payoutError) {
    return fail(payoutError);
  }

  const payoutCents = applyRate(input.sdeCents, input.payoutBps);
  const statedRetentionCents = input.sdeCents - payoutCents;
  const retainedCashCents = input.operatingCashFlowCents - payoutCents;
  return ok({
    payoutCents,
    statedRetentionCents,
    retainedCashCents,
    fundingGapCents: Math.max(0, statedRetentionCents - retainedCashCents),
    payoutToNetIncomeBps: divide(payoutCents, input.netIncomeCents),
    payoutToCashFlowBps: divide(payoutCents, input.operatingCashFlowCents),
    netIncomeToSdeBps: divide(input.netIncomeCents, input.sdeCents),
    retentionFunded: retainedCashCents >= statedRetentionCents,
  });
}

代码有三个刻意的选择。第一,votingSummary 不把股权比例直接当投票比例,而是按 equityBps × votesPerShare 算总票数;双层股权下,60% 的经济利益可以变成 93.8% 的投票权。第二,dividendPolicy 的派息始终乘在传入的 sdeCents 上,调用方要把基数换成净利润或经营现金流,就必须显式换参数;这迫使「基数是什么」在代码里可见。第三,fundingGapCents 只在名义留存大于实际留存现金时为正,它不判断分红是否合法,只回答「钱够不够」。

把 LedgerLite 代入:SDE 13,024,000 美分、净利润 5,829,900 美分、经营现金流 6,429,900 美分、派息 4,000 基点。返回派息 5,209,600 美分、名义留存 7,814,400 美分、实际留存现金 1,220,300 美分、缺口 6,594,100 美分;派息占净利润 8,936 基点,占经营现金流 8,102 基点,净利润占 SDE 4,476 基点。数字与上表一致。

小结

  • 持有型公司的治理先分两列:股权是经济利益,投票权是控制;50/50 的结构没有多数方,任何一方都能否决。
  • 董事会不是荣誉,是成本:三人董事会约 70 小时、$7,000,五人约 94 小时、$9,400;顾问约 16 小时、$1,600,但没有投票权。
  • 分红政策必须声明基数。LedgerLite 按 SDE 派息 40% 是 52,096 美元,占净利润 89.4%,名义留存 78,144 美元里有 65,941 没有现金来源。
  • 按净利润派息 40% 是 23,320 美元,留存 34,979 美元,经营现金流可以覆盖;按经营现金流派息 40% 是 25,720 美元,刚好覆盖留存。
  • SDE 基数派息的覆盖倍数只有 1.12 倍,净利润下降 10.6% 就打穿;覆盖倍数 1.5 倍对应的派息上限是 38,866 美元,约为 SDE 的 29.8%。
  • 信息权一年约 110 小时、$11,000,另加年度审阅的外部费用;审计触发条件要写进治理文件。
  • 治理文件的最小清单有九项,最容易被跳过的是审批矩阵和银行授权;它们决定创始人不在场时公司能不能继续运转。
  • Nord 的治理成本是 50/50 僵局,Tidecast 的治理成本接近于零,但两者都缺传承安排;治理结构和传承结构要分开设计。

阅读导航:上一节:11.3 债务、合同与主体注销 · 下一节:12.2 职业化管理与授权 。

常见错误与边界

  1. 把股权比例当投票权比例。 双层股权、投票权委托、一致行动协议都会让两列数字分开;治理文件要同时写经济权利和投票权利。
  2. 50/50 却不写僵局条款。 Nord 两位合伙人各 50%,任何一方都能否决分红、预算和退出;没有打破僵局的机制,治理成本会以决策延迟的形式出现。
  3. 把董事会当荣誉。 三人董事会一年约 70 小时、$7,000;五人约 94 小时、$9,400;先算成本,再决定席位。
  4. 把顾问当董事。 顾问没有投票权,只能建议;需要否决权时,顾问满足不了。
  5. 分红不写基数。 「派息 40%」按 SDE、净利润和经营现金流算是三个不同的结果;不写基数等于没有政策。
  6. 把 SDE 当分红基数。 SDE 在创始人薪酬和所得税之前;按 SDE 派息 40%,实际吃掉净利润的 89.4%,名义留存 60% 里大部分没有现金来源。
  7. 只看留存比例,不看现金覆盖。 名义留存 78,144 美元,派息后只剩 12,203 经营现金,扣设备投资后 9,203;留存要靠期初现金或借款补。
  8. 信息权没有时限。 「尽快提供」等于没有义务;月度 15 天、季度 30 天、重大事项 5 个工作日,才是可执行的约定。
  9. 审计触发条件不写。 谁可以要求审计、费用谁承担、范围多大、差异怎么处理,都要在治理文件里写清;否则审计会变成临时谈判。
  10. 治理文件只写原则,不写审批矩阵。 多少钱谁批、什么事项上会、银行谁授权,才是日常经营真正用得到的部分。

边界:本节只处理持有型公司的治理结构与分红政策,不构成法律、税务或投资建议。公司章程、股东协议、董事会规则和具体司法辖区的义务需要当地执业律师审阅。代码只算投票权、派息和现金缺口,不判断条款是否公平,也不替代审计与估值。

继续阅读

探索更多技术文章

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

全部文章 返回首页

「books」更多文章

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