Vai al contenuto
🛠️ToolsShed

Vesting Schedule Calculator

Calcola il tuo programma di vesting delle azioni con cliff, vesting mensile, trimestrale o annuale.

Informazioni sullo strumento

Un calcolatore del calendario di vesting aiuta dipendenti e detentori di opzioni a capire come la loro compensazione in azioni diventa disponibile nel tempo. Il vesting azionario è una componente comune dei pacchetti di compensazione, specialmente presso startup e aziende tecnologiche, ma la meccanica può essere complessa con periodi di cliff, periodi di vesting e diversi programmi di accelerazione. Questo strumento ti consente di modellare il tuo scenario di vesting specifico—sia un cliff seguito da vesting mensile, milestone trimestrali o assegnazioni annuali—in modo da poter vedere esattamente quando le tue azioni o opzioni diventano tue per mantenere o vendere.

Per utilizzare il calcolatore, inserisci l'importo totale delle azioni, il periodo di cliff del vesting (spesso un anno prima che qualsiasi azione vesta) e il tuo intervallo di vesting preferito—mensile, trimestrale o annuale. Lo strumento visualizzerà una sequenza temporale che mostra quante azioni vengono acquisite ad ogni intervallo, il progresso cumulativo del vesting e l'importo residuo non acquisito. Questo è particolarmente utile quando valuti offerte di lavoro, pianifichi la tua strategia finanziaria o verifichi la tua idoneità per esercitare opzioni prima di un evento importante dell'azienda.

Domande Frequenti

Implementazione del Codice

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.