Vesting Schedule Calculator
Вычислите график наделения акциями с опциональными периодами, ежемесячным, ежеквартальным или ежегодным наделением.
Об этом инструменте
Калькулятор графика наделения акциями помогает сотрудникам и владельцам опционов понять, как их компенсация в виде акций становится доступной со временем. Наделение акциями является обычным компонентом пакетов компенсации, особенно в стартапах и технологических компаниях, но механика может быть сложной с клифом, периодами наделения и различными графиками ускорения. Этот инструмент позволяет вам моделировать ваш конкретный сценарий наделения—будь то клиф, за которым следует ежемесячное наделение, квартальные вехи или ежегодные выделения—так чтобы вы могли точно увидеть, когда ваши акции или опционы становятся вашими для сохранения или продажи.
Чтобы использовать калькулятор, введите общее количество акций, период клифа наделения (часто один год, прежде чем какие-либо акции будут выданы) и предпочитаемый интервал наделения—ежемесячно, ежеквартально или ежегодно. Инструмент отобразит временную шкалу, показывающую, сколько акций выделяется в каждый интервал, совокупный прогресс наделения и оставшуюся невыданную сумму. Это особенно полезно при оценке предложений о работе, планировании финансовой стратегии или проверке вашего права на исполнение опционов перед важным событием компании.
Часто задаваемые вопросы
Реализация кода
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.