コンテンツへスキップ
🛠️ToolsShed

Vesting Schedule Calculator

クリフ、月次、四半期、年次などのベスティングスケジュールで株式ベスティングスケジュールを計算します。

このツールについて

ベスティングスケジュール計算機は、従業員やオプション保有者が時間とともに株式報酬がどのように利用可能になるかを理解するのに役立ちます。株式ベスティングは特にスタートアップやテック企業で報酬パッケージの一般的な要素ですが、クリフ期間、ベスティング期間、加速スケジュールなどにより仕組みが複雑になる場合があります。このツールを使用すると、クリフの後に月次ベスティング、四半期ごとのマイルストーン、または年次付与など、特定のベスティングシナリオをモデル化でき、株式またはオプションがいつあなたのものになるか、または売却可能になるかを正確に確認できます。

計算機を使用するには、総株式額、ベスティングクリフ期間(通常は株式がベストされるまでの1年間)、および希望するベスティング間隔(月次、四半期、または年次)を入力します。ツールは各間隔でベストされる株式額、累積ベスティング進捗状況、および残りの未ベスト額を示すタイムラインを表示します。これは特に職務申し入れを評価する場合、財務戦略を立案する場合、または会社のイベント前にオプションを行使する適格性を確認する場合に役立ちます。

よくある質問

コード実装

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.