wealthschemaresourcesarticlesBuilding an equity-compensation platform — the synthetic-data shape Carta-class products need
Article

Building an equity-compensation platform — the synthetic-data shape Carta-class products need

A grant is a multi-year tracking commitment. The platform has to model every event between grant and disposition, with tax math that varies by award type — and the test corpus has to exercise every event.

WealthSchema StaffTax & equity-comp modelingMay 9, 20262 min read

The equity-compensation platform category — Carta, Shareworks, EquityZen, Pulley, and the next-generation entrants — handles a multi-year tracking problem. A grant is issued in 2022. It vests over 4 years with a 1-year cliff. The employee exercises some options in 2025, sells some shares in 2026, and the company IPOs in 2027. Each event has its own tax treatment, basis adjustment, and document trail. Get the math wrong on any one event and the year's tax filing is wrong by tens or hundreds of thousands of dollars.

This article is the working note for engineering teams building equity-compensation platforms. The data model the platform needs, the test scenarios that exercise the full code path, and the synthetic-data shape that surfaces the bugs before they ship to real holders.

What the platform has to model

A working equity-comp platform tracks five award types with different tax mechanics:

 Award typeTax at grantTax at vestTax at exerciseTax at sale
RSUNoneOrdinary income on vested-share FMVN/A (auto-issues at vest)Capital gain/loss on excess over vest-FMV
Restricted Stock with §83(b)Ordinary income on grant FMV (if elected)None (already taxed)N/ACapital gain on excess over grant FMV
ISO (qualified disposition)NoneNoneAMT on spread (federal); no regular taxLTCG on full appreciation
ISO (disqualifying disposition)NoneNoneAMT on spreadSpread becomes ordinary income; appreciation past spread is capital
NSO (non-qualified)NoneNoneOrdinary income on spreadCapital gain on appreciation past exercise FMV
ESPP §423 (qualifying)NoneN/A (purchased)Ordinary income on lesser of discount or actual gain; capital on rest(see exercise)
ESPP §423 (disqualifying)NoneN/AOrdinary income on full discount(see exercise)

Each row is a code path. A platform that handles all of them correctly is shipping engineering work that takes months to get right and years to keep right as IRS guidance evolves. Related: Section 199A QBI deduction modeling.

The data model

The minimum-viable data shape:

Formula
Grant + lot record structure
grant = { grant_id, grantee_id, grant_date, grant_type, shares_total, vesting_schedule: [{date, shares}], strike_price (options only), expiration_date, fmv_at_grant, qsbs_eligible, section_83b_filed } lot = { lot_id, grant_id, acquisition_method, acquisition_date, shares, basis_per_share, holding_period_basis, ordinary_income_at_acquisition, amt_basis_per_share (ISO), exercise_method (cash / cashless / net-exercise), parent_lot_ids }
fmv_at_grant
= Per-share fair market value on the grant date — basis input for §83(b) elections and ISO AMT calculations
qsbs_eligible
= Whether the grant qualifies for Section 1202 small-business-stock exclusion (5-year hold + qualifying corp + acquisition method)
amt_basis_per_share
= ISO-specific — basis for AMT purposes is the FMV at exercise; basis for regular tax is the strike price. The bifurcation matters at sale.
exercise_method
= Cash exercise (full strike + tax), cashless (net of withholding), net-exercise (shares-for-shares). Each has different basis implications.
The amt_basis_per_share field is what most platforms miss. ISO holders have two parallel basis tracks — regular and AMT — that diverge at exercise and reconverge at sale (sometimes). See [AMT and ISO bargain element modeling](/articles/amt-iso-bargain-element-modeling). Without explicit AMT-basis tracking, the platform produces wrong tax forms for the year of exercise and the year of sale.

The events the platform has to handle

Beyond the basic grant → vest → exercise → sale flow, the platform has to model:

Event inventory

  • Section 83(b) election filing — must be filed within 30 days of restricted-stock receipt; the platform has to surface the deadline and track the filing.
  • Cliff vesting — most 4-year grants have a 1-year cliff; the platform has to compute zero vesting on day 1 of year 1 and full year-1 vesting on the cliff date.
  • Acceleration provisions — single-trigger and double-trigger acceleration on change of control. The platform has to know which provisions the grant carries.
  • Exercise post-termination — typical 90-day window for employee terminations; some companies extend to 1+ years. The platform has to flag pending expirations.
  • Net exercise — strike paid in shares rather than cash; reduces the holder's share count and creates a single combined lot from the exercise transaction.
  • Cashless exercise / sell-to-cover — sell enough at exercise to cover strike + withholding. Platform has to compute the right share count and the right cost basis.
  • Forfeiture on termination — unvested shares are forfeited; the platform has to remove them and re-balance the cap table.
  • ISO / NSO conversion — disqualifying dispositions reclassify the entire tax treatment; the platform has to back-out the qualified-treatment numbers and substitute disqualified ones.
  • ESPP enrollment cycles — semi-annual lookback periods, contribution caps, automatic-purchase logic at end of cycle.
  • Buybacks and tender offers — secondary liquidity events where the holder sells shares back to the company or to a tender pool.
  • QSBS holding-period tracking — 5-year clock from acquisition to qualified status; platform should surface the qualification date prominently.
  • Stock splits and reverse splits — proportional adjustment of share counts and basis-per-share across all lots.
  • Mergers and acquisitions — share-for-share exchanges, cash-out events, escrow tranches. Each has different basis carry-over rules.

A platform missing any of these events has gaps where holders can lose track of basis or miss tax-relevant deadlines. Each event is a category of bug that real holders will eventually find — usually at tax-filing time, when the platform's output disagrees with the holder's accountant.

The tax-form generation

The platform's most-customer-visible output is the year-end tax-form package:

  • Form 3921 for ISO exercises (issued by the company, but the platform has to supply the data)
  • Form 3922 for §423 ESPP qualifying purchases
  • Form W-2 Box 12 codes for NSO exercise income and 83(b) elections
  • Form 1099-B equivalent for sales (broker-issued, but platform has to reconcile)
  • Schedule D / Form 8949 transaction-by-transaction reporting

The platform has to produce data that the customer's tax software can ingest cleanly. The most common bug is mismatch between the platform's basis numbers and the broker's 1099-B basis numbers — the IRS requires reconciliation, and the customer is the one stuck doing it.

What synthetic test data needs to look like

A synthetic test corpus for an equity-comp platform should include:

  1. Spread 1
    Award type coverage
    All 5 award types (RSU, restricted stock with 83(b), ISO, NSO, ESPP) at meaningful frequencies. Companies offering only RSU shouldn't have an ISO-only corpus.
  2. Spread 2
    Lifecycle stage
    Pre-IPO startup (low FMV, paper-millionaire scenarios), late-stage pre-IPO (high FMV, AMT exposure), public-company (RSU-dominant), post-acquisition (cash-out, escrow). Each stage has different bug surfaces.
  3. Spread 3
    Edge cases
    QSBS-eligible founder grants. ISO disqualifying dispositions mid-year. ESPP qualifying vs disqualifying disposition decisions. Net exercises. Section 83(b) elections — both filed and not filed. Acceleration on change of control.
  4. Spread 4
    Tax-year boundaries
    Exercises close to year-end (AMT impact in current year; sale in subsequent year). Vest dates close to year-end. Quarterly tax estimate timing.
  5. Spread 5
    State tax
    Multi-state employees (grant in CA, vest in TX). State tax conformity to federal §83(b) and ISO treatment varies.
  6. Spread 6
    Aggregation across grants
    Holders with multiple grants over multiple years, with different vesting schedules. The platform has to aggregate into a single cohesive picture.

A test corpus missing any spread is a corpus where the platform has untested code paths. An equity-comp platform shipping production from an incomplete corpus is shipping bugs that will eventually surface when a holder's tax preparer disagrees with the year-end forms.

Key takeaways

  • An equity-comp platform tracks five award types with different tax mechanics across the grant → vest → exercise → sale flow. Each award type is a code path.
  • The minimum data model has 13+ fields per lot, including the AMT-basis bifurcation that ISO holders need.
  • 13+ events the platform has to handle, including 83(b) elections, net exercise, cashless exercise, cliff vesting, forfeiture, and disqualifying dispositions.
  • Year-end tax-form generation is the customer-visible output. Form 3921 (ISO), Form 3922 (ESPP), W-2 Box 12, and Schedule D all have to reconcile with broker 1099-B reporting.
  • Test corpus needs award-type spread, lifecycle-stage spread, edge cases, tax-year boundary scenarios, and multi-state employees. Missing any spread leaves untested code paths.

Frequently asked questions

How important is QSBS handling for early-stage equity platforms?+
Critically important. Section 1202 can exclude up to $10M (or 10× basis) of gain from federal tax for qualifying small-business stock held 5+ years. For founder grants in qualifying C-corps, the QSBS exclusion is the single largest tax-relevant feature of the platform. Platforms that don't surface QSBS qualification prominently — including the 5-year clock and the qualifying-corp criteria — are giving founders an experience that's worse than spreadsheets.
What about secondary-market transactions on platforms like EquityZen, Forge, Hiive?+
Secondary sales of pre-IPO equity have different basis and reporting mechanics than primary exercises. The seller's basis is their original acquisition basis (strike + ordinary-income adjustment); the buyer's basis is the secondary-market price. The platform has to track both sides if it's intermediating, and at minimum has to provide the seller-side documentation for the seller's tax filing. Some platforms outsource this to third-party tax engines; some build in-house.
How does the EU treatment of equity comp differ?+
Substantially. EU member states have varying treatment of stock options — France's BSPCE / AGA regimes, Germany's Section 19a, UK's EMI scheme. A platform serving EU employees needs jurisdiction-specific tax modules layered on the US baseline. The synthetic test corpus has to include EU-employee scenarios with the relevant national regimes. Detailed in [cross-border equity compensation test data](/articles/cross-border-equity-comp-test-data).
Can existing brokerage platforms (Fidelity, Schwab, Morgan Stanley) handle equity comp internally?+
They handle the brokerage-account portion well — the actual share holdings, the trades, the 1099-B. They don't handle the pre-IPO portion (no shares to custody yet) or the option-exercise tax math (which requires company-side data). Specialized equity-comp platforms exist precisely because the integration of company-side grant data with employee-side tax math doesn't fit the brokerage model. See [net unrealized appreciation modeling](/articles/nua-net-unrealized-appreciation) for a related employer-stock case. The two coexist: equity-comp platforms for the grant-to-exercise flow, brokerages for post-exercise custody.