TT Lab
开始
学习 学习路径 课程

开发者创业 — 先验证再动手

亲手把股权结构表推演到融资轮

在 TT Lab 中继续学习

目标

在虚构公司的股权结构表上,依次应用归属、离职者回购、投后估值 SAFE 转换,以及包含期权池增加的种子轮,并计算每个阶段谁被稀释了多少。

为什么重要

股权条件写在合同里,但它的结果,不计算一遍是看不出来的。没有设置归属的股权、彼此稀释的 SAFE、被计入投前估值的池增加量,都会悄悄改变创始人的份额。只有自己能够计算,才能读懂谈判桌上的数字。(不构成法律、税务建议。)

材料——/opt/fixtures/founder/equity/company.json

定义

步骤

  1. 在 /root/founder/equity/equity.py 中创建 vested(shares, start, cliff, total, on)(日期是 "YYYY-MM-DD" 字符串,返回整数)。
  2. 在 /root/founder/equity/departures.json 中,为每个离职者写入 {"left_on", "months", "vested", "repurchased"}(键是姓名)。
  3. 在 /root/founder/equity/cap_pre.json 中写入 holders(姓名、pool_granted、pool_unissued → 股票,离职者也按剩余股票包含在内)、total、ownership。
  4. 在 equity.py 中创建 safe_shares(C, safes)(safes 是材料中的列表原样,返回顺序相同的股票数列表),并在 /root/founder/equity/safes.json 中写入 shares(投资人 → 股票)、total_after(D)、ownership(投资人 → 相对 D 的比例)。
  5. 在 /root/founder/equity/naive.json 中写入常见错误——把 f_i × C 向下取整后的股票给了 SAFE 的情形——的 shares,以及此时的 ownership(相对于 C + Σ错误股票)。
  6. 在 equity.py 中创建 priced_round(D, U, pre_money, investment, pool_target) → {"pool_increase", "price", "investor_shares", "post_fd", "effective_pre_money"},并在 /root/founder/equity/round.json 中写入用材料计算的结果(price 保留到小数点后第二位,effective_pre_money 四舍五入为整数)。
  7. 在 /root/founder/equity/cap_post.json 中写入轮次之后的 holders(pool_unissued 加上增加量,并加入本轮投资人)、total、ownership。
  8. 在 /root/founder/equity/dilution.json 中写入 minji([轮次之前、SAFE 转换之后、轮次之后] 三个持股比例)、founders_after(留下的全体创始人在轮次之后的持股比例)、headline_pre_money、effective_pre_money、investor_ownership(本轮投资人)。

参考

归属——已满的月份与悬崖期

在 /root/founder/equity/equity.py 中创建 vested(shares, start, cliff, total, on)。

先数已满的月数。如果基准日的“日”小于开始日的“日”,那个月就还没有满。悬崖期之前为 0,之后用整数除法(//)。

离职者的份额

在 /root/founder/equity/departures.json 中,为每个离职者写入 left_on、months、vested、repurchased。

只写有 left_on 的创始人。repurchased 是原有股票 − 已归属的股票。

轮次之前的股权结构表

在 /root/founder/equity/cap_pre.json 中写入 holders、total、ownership。

离职者只有归属的份额,留下的创始人全部持有,再把 pool_granted、pool_unissued 放在同一张表里。持股比例是 0–1 的比率。

转换两份投后估值 SAFE

在 equity.py 中加入 safe_shares(C, safes),并在 /root/founder/equity/safes.json 中写入 shares、total_after、ownership。

每份 SAFE 在转换后,必须从全部股票中获得投资额 ÷ 估值上限这么多。SAFE 之间也会彼此稀释,所以用比例之和 F 来计算 C × f / (1 − F)。

常见错误——直接把比例乘上去

在 /root/founder/equity/naive.json 中写入把 f_i × C 向下取整得到的 shares,以及此时的 ownership(相对于 C + Σ)。

这一步是故意做错的计算。请确认投资人的份额比承诺的比例(投资额 ÷ 估值上限)更小。

把池增加量计入投前估值的种子轮

在 equity.py 中加入 priced_round(D, U, pre_money, investment, pool_target),并在 /root/founder/equity/round.json 中写入结果。

k = 投后 ÷ 投前。按定义中的公式求出池增加量 P 并向下取整,每股价格 = 投前 ÷ (D + P),投资人股票 = 投资 ÷ 价格向下取整。

轮次之后的股权结构表

在 /root/founder/equity/cap_post.json 中写入 holders、total、ownership。

在加入了 SAFE 投资人的表中,给 pool_unissued 加上增加量,并把本轮投资人(材料中的 round.investor)作为新的一行放进去。

谁被稀释了多少

在 /root/founder/equity/dilution.json 中写入 minji(三个时点)、founders_after、headline_pre_money、effective_pre_money、investor_ownership。

SAFE 转换之后 minji 的持股比例 = minji 的股票 ÷ D。实际投前估值直接使用第 6 步的结果。