본문으로 건너뛰기
🛠️ToolsShed

Vesting Schedule Calculator

절벽, 월간, 분기, 연간 베스팅을 통해 주식 베스팅 일정을 계산합니다.

이 도구 소개

베스팅 스케줄 계산기는 직원과 옵션 보유자가 시간 경과에 따라 주식 보상이 어떻게 가용 가능해지는지 이해하는 데 도움이 됩니다. 주식 베스팅은 특히 스타트업과 기술 회사에서 보상 패키지의 일반적인 요소이지만, 절벽(cliff) 기간, 베스팅 기간, 가속화 일정 등으로 인해 메커니즘이 복잡할 수 있습니다. 이 도구를 사용하면 절벽 후 월간 베스팅, 분기별 마일스톤, 또는 연간 부여 등 특정 베스팅 시나리오를 모델링할 수 있으며, 주식 또는 옵션이 언제 당신의 것이 되거나 판매 가능하게 되는지 정확히 확인할 수 있습니다.

계산기를 사용하려면 총 주식 금액, 베스팅 절벽 기간(보통 주식이 베스팅되기 전의 1년), 그리고 선호하는 베스팅 간격(월간, 분기별 또는 연간)을 입력합니다. 도구는 각 간격에서 베스팅되는 주식 금액, 누적 베스팅 진행 상황, 그리고 남은 미베스팅 금액을 보여주는 타임라인을 표시합니다. 이는 특히 직무 제안을 평가할 때, 재무 전략을 계획할 때, 또는 회사 이벤트 전에 옵션을 행사할 수 있는 자격이 있는지 확인할 때 유용합니다.

자주 묻는 질문

코드 구현

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.