跳到内容
🛠️ToolsShed

Vesting Schedule Calculator

计算您的股权归属计划,支持悬崖期、月度、季度或年度归属。

关于此工具

股权归属时间表计算器帮助员工和期权持有者了解他们的股权报酬如何随时间推移而可用。股权归属是一个常见的报酬组成部分,尤其是在初创公司和科技公司中,但崖期、归属期和不同的加速计划可能使其变得复杂。该工具允许您对特定的归属情景进行建模——无论是崖期后的月度归属、季度里程碑还是年度授予——这样您可以准确查看您的股份或期权何时成为您可以保留或出售的资产。

要使用该计算器,请输入您的总股权金额、归属崖期(通常是股份开始归属前的一年)和您首选的归属间隔——月度、季度或年度。该工具将显示一个时间表,展示每个间隔时归属的股权金额、累计归属进度和剩余未归属金额。这在评估工作机会、规划财务战略或在公司重大事件前检查您行使期权的资格时特别有用。

常见问题

代码实现

from datetime import date, timedelta
from dateutil.relativedelta import relativedelta

def generate_vesting_schedule(
    total_shares, grant_date, vesting_years=4,
    cliff_months=12, frequency="monthly"
):
    freq_map = {"monthly": 1, "quarterly": 3, "annually": 12}
    period_months = freq_map[frequency]
    total_months = vesting_years * 12
    schedule = []
    cumulative = 0

    month = period_months
    while month <= total_months:
        vest_date = grant_date + relativedelta(months=month)
        is_cliff = cliff_months > 0 and month == max(
            (cliff_months // period_months) * period_months, period_months
        ) and month >= cliff_months

        if cliff_months > 0 and month < cliff_months:
            month += period_months
            continue

        if is_cliff:
            cliff_shares = round(cliff_months / total_months * total_shares)
            period_shares = cliff_shares
        elif month + period_months > total_months:
            period_shares = total_shares - cumulative
        else:
            period_shares = round(period_months / total_months * total_shares)

        cumulative += period_shares
        schedule.append({
            "date": vest_date, "period_shares": period_shares,
            "cumulative": cumulative, "pct": cumulative / total_shares * 100,
            "is_cliff": is_cliff
        })
        month += period_months

    return schedule

# 10,000 shares, 4 years, 1-year cliff, monthly vesting
schedule = generate_vesting_schedule(10000, date.today())
for row in schedule[:6]:
    cliff = " (CLIFF)" if row["is_cliff"] else ""
    print(f"{row['date']}: +{row['period_shares']} shares | {row['cumulative']:,} total | {row['pct']:.1f}%{cliff}")

Comments & Feedback

Comments are powered by Giscus. Sign in with GitHub to leave a comment.