Aller au contenu
🛠️ToolsShed

Vesting Schedule Calculator

Calculer votre calendrier d'acquisition d'actions avec periods d'attente, acquisition mensuelle, trimestrielle ou annuelle.

À propos de cet outil

Une calculatrice de calendrier d'acquisition aide les salariés et les détenteurs d'options à comprendre comment leur rémunération en actions devient disponible au fil du temps. L'acquisition d'actions est une composante courante des packages de rémunération, en particulier dans les startups et les entreprises technologiques, mais la mécanique peut être complexe avec des périodes de falaise, des périodes d'acquisition et différents calendriers d'accélération. Cet outil vous permet de modéliser votre scénario d'acquisition spécifique—qu'il s'agisse d'une falaise suivie d'une acquisition mensuelle, de jalons trimestriels ou de concessions annuelles—afin que vous puissiez voir exactement quand vos actions ou options deviennent les vôtres à conserver ou à vendre.

Pour utiliser la calculatrice, entrez votre montant total d'actions, la période de falaise d'acquisition (souvent un an avant que toute action soit acquise) et votre intervalle d'acquisition préféré—mensuel, trimestriel ou annuel. L'outil affichera un calendrier montrant combien d'actions sont acquises à chaque intervalle, la progression cumulée de l'acquisition et le montant restant non acquis. Ceci est particulièrement utile lors de l'évaluation d'offres d'emploi, de la planification de votre stratégie financière ou de la vérification de votre admissibilité à exercer des options avant un événement majeur de l'entreprise.

Questions Fréquentes

Implémentation du Code

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.