Lewati ke konten
🛠️ToolsShed

Vesting Schedule Calculator

Hitung jadwal vesting ekuitas Anda dengan cliff, vesting bulanan, triwulanan, atau tahunan.

Tentang alat ini

Kalkulator jadwal vesting saham membantu karyawan dan pemegang opsi memahami bagaimana kompensasi saham mereka menjadi tersedia seiring waktu. Vesting saham adalah komponen umum dari paket kompensasi, terutama di startup dan perusahaan teknologi, namun mekaniknya dapat menjadi kompleks dengan periode cliff, periode vesting, dan jadwal akselerasi yang berbeda. Alat ini memungkinkan Anda untuk memodelkan skenario vesting spesifik Anda—baik itu cliff yang diikuti oleh vesting bulanan, milestone triwulanan, atau alokasi tahunan—sehingga Anda dapat melihat dengan tepat kapan saham atau opsi Anda menjadi milik Anda untuk disimpan atau dijual.

Untuk menggunakan kalkulator, masukkan jumlah saham total Anda, periode cliff vesting (sering kali satu tahun sebelum saham apa pun menjadi vesting), dan interval vesting pilihan Anda—bulanan, triwulanan, atau tahunan. Alat ini akan menampilkan garis waktu yang menunjukkan berapa banyak saham yang menjadi vesting di setiap interval, kemajuan vesting kumulatif, dan jumlah yang belum menjadi vesting yang tersisa. Ini sangat berguna ketika mengevaluasi penawaran pekerjaan, merencanakan strategi keuangan Anda, atau memeriksa kelayakan Anda untuk menggunakan opsi sebelum acara perusahaan.

Pertanyaan yang Sering Diajukan

Implementasi Kode

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.