wealthschemaresourcesarticlesAMT and ISO bargain element — modeling the tax surface every equity-comp platform misses
Article

AMT and ISO bargain element — modeling the tax surface every equity-comp platform misses

An employee exercises ISOs at a 5x bargain, gets a $400K AMT bill they didn't expect, and sells a chunk of vested shares at a discount to pay it. The data model that prevents this is enumerable.

WealthSchema StaffEquity compensation & AMT modelingMay 8, 20266 min read

The Alternative Minimum Tax was enacted in 1969 to ensure high-income taxpayers couldn't zero out their tax bill via legitimate deductions. Sixty years later, it remains the single largest source of unexpected tax bills for equity-compensated employees, and the single most-mishandled item in equity-comp platforms.

The mechanism: when an employee exercises an Incentive Stock Option (ISO), the difference between the exercise price and the fair-market-value at exercise — the "bargain element" — is included in Alternative Minimum Taxable Income, even though it's not currently taxable for regular-tax purposes. For employees exercising deep-in-the-money ISOs in companies with rapidly-appreciating stock, the AMT preference can be measured in hundreds of thousands or millions of dollars.

The result, when not modeled correctly: the employee exercises, owes substantial AMT in April, and may have to sell vested shares (often at unfavorable prices) to pay the tax. Worse, the AMT credit they generate from the preference can take many years to recover, sometimes more than the original tax savings the ISO was supposed to provide.

This article is the working note on the data model, the projection logic, and what equity-comp platforms ship without when the modeling is shallow.

What the AMT preference for ISOs actually does

The relevant code section is §56(b)(3). For an ISO exercise that doesn't result in a same-year sale (a "qualifying disposition" that destroys ISO treatment), the bargain element is a positive adjustment to AMTI:

AMTI = Regular Taxable Income + ISO Bargain Element + Other Preferences − AMT Exemption

The taxpayer's tentative AMT is computed on AMTI at AMT rates (26% / 28%); if the tentative AMT exceeds regular tax, the difference is the AMT owed.

The mechanics of the bargain element:

  • At exercise: bargain element is (FMV_at_exercise − exercise_price) × shares_exercised
  • For regular tax: not currently taxable; basis remains at exercise price
  • For AMT: bargain element is added to AMTI; AMT basis becomes FMV at exercise
  • At sale (qualifying disposition): regular-tax gain is (sale_price − exercise_price); AMT gain is (sale_price − FMV_at_exercise). The difference produces a negative AMT adjustment (the "AMT gain difference") that often generates an AMT credit.

The structurally tricky thing: the AMT credit generated by the negative adjustment at sale can offset future regular-tax-above-tentative-AMT, but only one year at a time and only to the extent regular tax exceeds tentative AMT. For employees whose AMT-triggering year is anomalous (high preference items in one year, normal income in subsequent years), the credit recovery can be slow.

The data model the platform needs

A working ISO + AMT data model needs to track at least the following per-grant and per-exercise:

interface ISOGrant {
  grant_id: string;
  grant_date: ISODate;
  exercise_price: number;
  shares_granted: number;
  vesting_schedule: VestingEvent[];
  expiration_date: ISODate;
  
  // Per-exercise tracking
  exercises: ISOExercise[];
}

interface ISOExercise {
  exercise_id: string;
  exercise_date: ISODate;
  shares_exercised: number;
  fmv_at_exercise: number; // The most important field
  
  // Computed at exercise
  bargain_element: number; // (fmv − exercise_price) × shares
  amt_basis: number;        // = fmv_at_exercise × shares
  regular_basis: number;    // = exercise_price × shares
  
  // Holding period for ISO qualification
  iso_holding_period_qualifies_at: ISODate; // Later of grant + 2y, exercise + 1y
  
  // Subsequent disposition tracking
  shares_remaining: number;
  dispositions: ISODisposition[];
}

interface ISODisposition {
  disposition_id: string;
  disposition_date: ISODate;
  shares_disposed: number;
  proceeds: number;
  
  // Classification
  is_qualifying_disposition: boolean; // Met both holding-period tests
  
  // Per-disposition tax effect
  regular_tax_gain: number;       // Long-term cap gain if qualifying
  amt_gain_or_loss: number;       // (proceeds − amt_basis) × shares
  amt_adjustment: number;          // Negative amt_gain_or_loss adjustment
}

The most consequential fields are fmv_at_exercise (must be captured at exercise; cannot be reconstructed) and the per-disposition amt_adjustment (the negative adjustment that generates the AMT credit recovery).

A common data-quality issue: platforms record exercises but don't record fmv_at_exercise accurately. For private-company ISOs, the FMV is the most recent 409A valuation; for public-company ISOs, it's the trading price on the exercise date. Both must be captured at exercise; platforms that try to reconstruct FMV later from internal records often produce wrong tax projections.

The projection logic

Once the data model is in place, the platform can project the tax effect of a contemplated exercise:

function projectISOExerciseTax(
  user: User, 
  exercise: PlannedISOExercise
): ISOExerciseTaxProjection {
  const yearProjection = projectYearTax(user, year);
  
  const baseAMTI = yearProjection.regular_taxable_income 
    + yearProjection.amt_preferences_other;
  
  const amtiWithExercise = baseAMTI + exercise.bargain_element;
  const amtiWithoutExercise = baseAMTI;
  
  const exemption = computeAMTExemption(user, amtiWithExercise);
  
  const tentativeAMTWith = computeTentativeAMT(amtiWithExercise, exemption);
  const tentativeAMTWithout = computeTentativeAMT(amtiWithoutExercise, 
    computeAMTExemption(user, amtiWithoutExercise));
  
  const regularTaxWith = computeRegularTax(yearProjection); // Same with or without exercise
  
  const amtTriggered = Math.max(0, tentativeAMTWith - regularTaxWith);
  const amtFromExercise = amtTriggered - 
    Math.max(0, tentativeAMTWithout - regularTaxWith);
  
  // The credit recovery projection
  const creditRecoveryProjection = projectCreditRecovery(
    user, amtFromExercise, exercise.expected_sale_year
  );
  
  return {
    incremental_amt_owed: amtFromExercise,
    cash_required_at_exercise: exercise.shares × exercise.exercise_price,
    cash_required_for_tax: amtFromExercise,
    total_cash_required: exercise.shares × exercise.exercise_price + amtFromExercise,
    credit_recovery_timeline: creditRecoveryProjection,
    breakeven_holding_period: ...
  };
}

The breakeven analysis is the planning surface: how long must the employee hold the shares to recover, via the eventual AMT credit and the LTCG-vs-ordinary-rate spread, the cash they outlay for the AMT bill?

For employees in companies whose stock is unlikely to appreciate further or could decline, this analysis can recommend partial exercise or staged exercise across years to manage AMT exposure within the regular-tax-above-tentative-AMT band.

The §83(b) election parallel

For pre-vesting ISOs (rare but possible), the §83(b) election lets the employee recognize income at grant rather than vest. The AMT preference math at grant is the bargain element at grant. For deep-discount grants in early-stage companies where the FMV is close to the exercise price, this can produce minimal AMT and lock in long-term basis.

The platform should surface the §83(b) decision when applicable. The election has a 30-day window from the grant date and is unrecoverable if missed. For most rank-and-file employees, the §83(b) on ISOs isn't relevant, but for early founder-equivalent grants it can be highly material.

The strategic exercise pattern

The strategic ISO exercise pattern that platforms can surface, when the model supports it:

  1. Quantify regular-tax-above-tentative-AMT band: how much bargain element can be exercised in the year without triggering AMT. This is the "AMT-free" zone.
  2. Recommend exercises that fill the AMT-free zone: convert ordinary-income exposure into long-term-capital-gain exposure without immediate tax cost.
  3. Above the AMT-free zone: model the trade-off explicitly. Exercise more (more LTCG conversion, more AMT cash outlay, longer credit recovery) vs. exercise less (smaller conversion, no cash outlay, but ongoing ordinary-income exposure on future income from continued employment).
  4. Time across years: spread exercises across multiple tax years to repeatedly fill the AMT-free zone in each year.

This pattern requires the platform to model both the current year's AMT band and the projected future-year band — which depends on the employee's projected income, projected AMT preferences, and projected regular-tax. The data model and the projection engine must support multi-year AMT scenario analysis.

What the test corpus needs

A test corpus for ISO + AMT modeling needs:

  • Employees in the AMT-free zone (small exercises)
  • Employees just above the AMT-free zone (decision threshold)
  • Employees with deep-bargain ISO exercises (large AMT)
  • Employees in down-round scenarios (worst-case)
  • Employees with multi-year exercise patterns (timing strategy)
  • Employees with mixed ISO + NSO grants (different tax mechanics)
  • Employees with §83(b) election scenarios (early-stage grants)
  • Employees with prior-year AMT credit balances (recovery scenarios)
  • Employees in different state-tax regimes (CA full conformance vs. FL no AMT)

State-tax interaction is consequential and often missed. California, for example, has its own AMT system that conforms partially to federal. New York has a separate AMT. Florida has none. The platform's projection should reflect the employee's state of tax residence, not the federal AMT in isolation.

The synthetic-corpus value

Synthetic corpora calibrated for equity-comp testing must include the per-exercise FMV history, the per-disposition AMT adjustment trail, and the AMT credit-recovery state across years. Without these, the corpus exercises only the simplest "exercise → owe taxes" path and misses the multi-year planning surface that distinguishes a useful equity-comp platform from a basic vesting tracker.

This is also a case where the synthetic corpus templates the production data capture. If the corpus includes fmv_at_exercise, the platform's UI must capture it from real users at exercise time. Reconstructing it later is unreliable and the platform's projections degrade accordingly.

Key takeaways

  • AMT on ISO bargain element is the largest source of surprise tax bills for equity-compensated employees and the most-mishandled item in equity-comp platforms.
  • fmv_at_exercise is the keystone field — must be captured at exercise, cannot be reliably reconstructed. Platforms that don't capture it produce wrong tax projections silently.
  • The strategic exercise pattern fills the AMT-free zone each year — converting ordinary-income exposure to LTCG without immediate tax cost. Implementing this requires multi-year projection.
  • Down-round scenarios are catastrophic for ISO holders who exercised at the peak. The AMT credit recovery on a phantom gain is slow and the underlying loss is regular-rate offset-limited.
  • State AMT interaction (CA, NY have separate systems) materially changes the projection. Platforms that model only federal AMT mis-advise residents of conforming-state jurisdictions.

ISO + AMT modeling is a flagship correctness test for an equity-comp platform. Platforms that get this right differentiate sharply from those that don't, because the cost of getting it wrong is borne by the employee in cash outlays and forced sales they didn't anticipate. The data model isn't elaborate, but it has to be present, complete, and exercised by the projection engine. Without it, the platform is functionally unable to advise on the highest-leverage tax decision its users will face.