Saltar al contenido
🛠️ToolsShed

Vesting Schedule Calculator

Calcula tu cronograma de adquisición de capital con acantilado, vesting mensual, trimestral o anual.

Acerca de esta herramienta

Una calculadora de calendario de adquisición ayuda a los empleados y tenedores de opciones a entender cómo su compensación en acciones se vuelve disponible con el tiempo. La adquisición de acciones es un componente común de paquetes de compensación, especialmente en startups y empresas tecnológicas, pero la mecánica puede ser compleja con períodos de acantilado, períodos de adquisición y diferentes calendarios de aceleración. Esta herramienta te permite modelar tu escenario de adquisición específico—ya sea un acantilado seguido de adquisición mensual, hitos trimestrales o asignaciones anuales—para que puedas ver exactamente cuándo tus acciones u opciones se convierten en tuyas para conservar o vender.

Para usar la calculadora, ingresa tu cantidad total de acciones, el período de acantilado de adquisición (a menudo un año antes de que cualquier acción se adquiera) e tu intervalo de adquisición preferido—mensual, trimestral o anual. La herramienta mostrará una línea de tiempo que muestra cuántas acciones se adquieren en cada intervalo, el progreso acumulado de adquisición y la cantidad restante no adquirida. Esto es especialmente útil al evaluar ofertas de trabajo, planificar tu estrategia financiera o verificar tu elegibilidad para ejercer opciones antes de un evento de la empresa.

Preguntas Frecuentes

Implementación de Código

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.