Equity compensation is where finance products either prove themselves or quietly produce wrong answers. The combination of vesting schedules, exercise decisions, AMT exposure, QSBS qualification, and ordinary-vs-capital tax treatment means a household with one ISO grant and one RSU grant generates dozens of distinct calculation paths — every one of which your engine has to render correctly.
This theme covers the data shape an equity-comp engine needs, the AMT trap, and what realistic test data looks like.
The four equity-comp instruments
| ISO | NSO | RSU | ESPP | |
|---|---|---|---|---|
| Tax at vest | None | None | Ordinary income on FMV | None |
| Tax at exercise | AMT preference on bargain element | Ordinary income + payroll on bargain | N/A | Ordinary income on discount (non-qualified disposition) |
| Tax at sale | LTCG if 2-yr grant + 1-yr exercise | LTCG / STCG on appreciation | LTCG / STCG on appreciation past vest | LTCG on appreciation past purchase |
| Withholding | None at exercise | Yes — supplemental wage rate | Yes — at vest | Sometimes — at sale |
| Plays well with QSBS | Yes (after exercise) | Yes (after exercise) | Yes (RSU shares qualify after vest) | No (§1202 excludes ESPP) |
What a grant record actually contains
A working grant ledger entry is roughly:
{
"grant_id": "G-2024-04-15-ACME-001",
"grant_type": "ISO",
"grant_date": "2024-04-15",
"shares_granted": 10000,
"strike_price": 4.20,
"fmv_at_grant": 4.20,
"vesting_schedule": {
"type": "graded_with_cliff",
"cliff_months": 12,
"total_months": 48,
"tranche_size": 1
},
"vested_to_date": 2500,
"exercised_to_date": 0,
"qsbs_eligible_at_exercise": true,
"amt_preference_lifetime": 0
}
Realistic test data needs multiple grants per household at different vesting stages, with at least one early-stage employee carrying ISOs whose exercise would trigger meaningful AMT, and at least one mid-stage employee with mixed ISO + RSU + ESPP exposure.
The AMT trap
The single largest equity-comp planning error is the bargain-element AMT cliff. When you exercise ISOs and hold the shares past year-end, the spread between strike and FMV becomes an AMT preference — taxed at 26% / 28% even though no cash changed hands. If the stock then drops, you owe AMT on a paper gain you never realized.
QSBS interaction
Section 1202 QSBS treatment lets a qualifying shareholder exclude up to 100% of gain on the sale of original-issue C-corp stock held >5 years (gain capped at the greater of $10M or 10× basis). Equity comp interacts with §1202 in three ways your engine must track:
- ISO/NSO exercise restarts the QSBS holding clock from the exercise date, not the grant date. This is a multi-year planning window.
- RSU shares qualify from the vesting date.
- ESPP shares are explicitly excluded by §1202(c)(1)(B).
A planning engine that models exercise-vs-sell decisions without the QSBS clock produces materially wrong recommendations for early-stage employees.
Edge cases your test data must exercise
- Concentrated single-stock risk: 80%+ of net worth in one employer's stock at the moment of an exercise decision
- Multi-grant accumulation: 4+ grants over 5+ years with different vesting cliffs and strike prices
- Cross-state exercise: granting state vs exercise state vs sale state — each can claim sourcing
- AMT credit carryforward from a prior year's ISO exercise
- Disqualifying disposition of ISO shares (sold before the holding period) — ordinary income recharacterization
- Section 83(b) elections on early-exercised ISOs
- Post-IPO blackout windows that constrain exercise timing
Key takeaways
- Equity comp requires a grant ledger, not a position summary — vesting curves and exercise history drive every tax decision.
- The AMT bargain element is the most common production bug; engines that ignore the §55 credit carryforward give wrong multi-year recommendations.
- QSBS clocks restart at exercise (ISO/NSO) or vest (RSU) — your engine has to model the 5-year window per lot.
- ESPP shares are §1202-disqualified; do not let your engine route them into QSBS analysis.