Worked research note

The hidden tax price of a sale

Two worked proposals show how proceeds become realized gain, incremental tax, and a separate wash-sale-window warning.

By ArthaPilot Research

Published 2026-10-11

Research question

A deterministic price for one long-term gain proposal and one loss proposal, with exact request and engine-response bytes beside the report.

Scope: These fixtures use zero earlier current-year capital gains/losses and zero incoming carryforwards; other supplied ledger values change annual netting and tax. Itemized deductions, AMT, and a complete state return remain outside scope; resident-state investment tax is shown only when a state is supplied.

Proceeds and gain are different quantities

The gain case prices 1,000 shares at $110 on June 1, 2026. The lot carries $10 of basis per share and was acquired January 2, 2020, so the full proposal produces $110,000 of proceeds, $10,000 of removed basis, and a $100,000 long-term gain.

Tax is measured against the gain after basis, not against gross cash. The response keeps proceeds, basis, gain, character, and modeled tax as distinct fields.

Exhibit 01

Content-pinned result

From $110,000 of proposed proceeds to $100,000 of gain

The complete one-lot bridge in the committed long-term-gain response.

How does the gain case move from gross proposed proceeds to the amount treated as realized gain?

Construction. Multiply 1,000 shares by $110 to obtain $110,000 of proposed proceeds. Multiply 1,000 shares by $10 to obtain $10,000 of removed basis. Subtract basis from proceeds to obtain the engine-returned $100,000 long-term gain.

From $110,000 of proposed proceeds to $100,000 of gain. waterfall chart with 1 series. Exact values are available in the table following the figure.
Amount (USD nominal)
$0$20,000$40,000$60,000$80,000$100,000Proposed proceedsBasis removedRealized gain
Proposal bridge
From $110,000 of proposed proceeds to $100,000 of gain. waterfall chart with 1 series. Exact values are available in the table following the figure.
StepValueKind
Proposed proceeds$110,000total
Basis removed−$10,000delta
Realized gain$100,000total

Source and construction: ArthaPilot Sale Tax Planner engine artifact, 2026 married filing jointly, snapshot June 1, 2026.

How this figure was calculated

Inputs

  • 1,000 proposed shares at the pinned $110 snapshot price.
  • $10 of recorded basis per share on the single long-term lot.
  • June 1, 2026 snapshot date and January 2, 2020 acquisition date.

Calculation

  1. Multiply 1,000 shares by $110 to obtain $110,000 of proposed proceeds.
  2. Multiply 1,000 shares by $10 to obtain $10,000 of removed basis.
  3. Subtract basis from proceeds to obtain the engine-returned $100,000 long-term gain.

What this step cannot establish

The bridge prices one user-specified proposal with complete recorded basis. It does not select a sale or generalize to another lot or tax context.

Exact values behind the figure
Exact plotted values shown in Exhibit 01
SeriesProposal bridgeAmount (USD nominal)
Proceeds to gainProposed proceeds$110,000
Proceeds to gainBasis removed−$10,000
Proceeds to gainRealized gain$100,000

An effective rate on proceeds answers a cash-pricing question; a rate on realized gain uses a different denominator. The report labels the 9.74% figure as a share of proceeds.

This is one user-specified proposal with complete recorded basis. A different lot, price, holding period, or household tax position would produce a different bridge.

The annual comparison sets a $10,715 tax change

The household enters the case with $100,000 of ordinary income and $160,000 of pre-proposal adjusted gross income. Earlier same-year realized gains/losses and incoming carryforwards are zero. After the 2026 standard deduction, $31,100 of federal zero-rate long-term-gain room remains.

The next $68,900 of long-term gain is priced at 15%, producing $10,335 of federal tax. The proposal also moves MAGI $10,000 above the $250,000 NIIT threshold, adding $380. No resident state is set, so state tax is $0.

Exhibit 02

Content-pinned result

The gain case's exact tax stack

The hand-checked federal and NIIT components returned by the production engine for the same canonical request.

Which modeled tax components reconcile the gain case from $100,000 of long-term gain to $10,715 of total tax?

Construction. Use the $31,100 stop marker to isolate remaining federal 0% long-term-gain room. Price the remaining $68,900 at 15% for $10,335 of federal tax and the $10,000 NIIT exposure at 3.8% for $380. Add $10,335 federal, $380 NIIT, and $0 state tax to reconcile exactly to $10,715.

The gain case's exact tax stack. bar chart with 1 series. Exact values are available in the table following the figure.
Modeled incremental tax (USD nominal)
$0$2K$4K$6K$8K$10KFederalNIITResident state
Tax component
The gain case's exact tax stack. bar chart with 1 series. Exact values are available in the table following the figure.
CategoryModeled tax
Federal$10,335
NIIT$380
Resident state$0

Source and construction: ArthaPilot T(k) minus T(k−1) pricing result, independently checked against the shipped 2026 federal and NIIT thresholds.

How this figure was calculated

Inputs

  • $100,000 ordinary income and $160,000 adjusted gross income before the proposal.
  • The 2026 married-filing-jointly federal long-term-gain bands and $250,000 NIIT threshold.
  • Engine-returned federal tax, NIIT, and state-tax components from the canonical response.

Calculation

  1. Use the $31,100 stop marker to isolate remaining federal 0% long-term-gain room.
  2. Price the remaining $68,900 at 15% for $10,335 of federal tax and the $10,000 NIIT exposure at 3.8% for $380.
  3. Add $10,335 federal, $380 NIIT, and $0 state tax to reconcile exactly to $10,715.

What this step cannot establish

The components equal the annual with-sale tax minus the baseline tax for this one-lot proposal; they are not universal marginal rates and omit taxes outside the recorded scope.

Exact values behind the figure
Exact plotted values shown in Exhibit 02
SeriesTax componentModeled incremental tax (USD nominal)
Modeled taxFederal$10,335
Modeled taxNIIT$380
Modeled taxResident state$0

The stop markers show that this proposal crosses both the remaining federal 0% band and the NIIT threshold. The annual federal and NIIT changes sum exactly to the response total.

The engine prices each schedule row as the change in the cumulative bill. This one-lot artifact demonstrates the calculation at one tax position; it does not claim a universal marginal rate.

A loss proposal can lower modeled tax and still carry a warning

The 2026 baseline supplies $100,000 of ordinary income and $160,000 of pre-sale AGI, with no earlier same-year capital gains or losses and no incoming loss carryforwards. Selling 100 shares at $100 against $150 basis realizes a $5,000 long-term loss: the modeled $3,000 ordinary-income deduction lowers federal tax by $360 at the 12% marginal rate, and $2,000 remains as a long-term loss carryforward.

An IRA acquired 25 shares of the same ticker on May 22, 2026—ten days before the June 1 anchor. The response separately includes a wash-sale-window warning; it does not match replacement shares or calculate a disallowed loss.

Exhibit 03

Content-pinned result

Annual loss-tax reconciliation and the separate wash-window flag

The signed loss, annual baseline and with-sale tax states, dated IRA acquisition, and exact warning status in the second committed case.

How does this proposal change the 2026 tax-year ledger, and where does the recorded IRA acquisition fall relative to its anchor?

Construction. Settle the annual baseline with no proposal: $7,640 federal tax and $0 incoming or ending loss carryforward. Net the proposed $5,000 long-term loss; deduct $3,000 against ordinary income at the independently checked 12% marginal rate, reducing annual federal tax to $7,280 (a $360 decrease), and carry forward the remaining $2,000 as long-term loss. Measure each recorded event as calendar days from the June 1 snapshot. Place the IRA acquisition at day −10 and the proposed sale anchor at day 0, retaining their recorded share counts. Check whether the acquisition falls inside [−30, +30]; because −10 is inside, preserve the engine's wash_sale_window warning.

Annual loss-tax reconciliation and the separate wash-window flag. scatter chart with 2 series. Exact values are available in the table following the figure.
Shares
406080100-10-8-6-4-20
Calendar days from June 1, 2026 snapshot
Annual loss-tax reconciliation and the separate wash-window flag. scatter chart with 2 series. Exact values are available in the table following the figure.
SeriesLabelCalendar days from June 1, 2026 snapshotSharesValue
Recorded IRA acquisition-102525
Proposed taxable sale0100100

Source and construction: ArthaPilot Sale Tax Planner loss-case engine response, snapshot June 1, 2026.

How this figure was calculated

Inputs

  • Zero earlier-in-2026 short- and long-term gains or losses and zero incoming short- and long-term loss carryforwards.
  • $100,000 ordinary income and $160,000 Form 1040 AGI before the proposal; AGI already includes any earlier household activity.
  • An IRA acquisition of 25 same-ticker shares dated May 22, 2026.
  • A proposed sale of 100 shares anchored to June 1, 2026.
  • The 2026 married-filing-jointly tax schedule and the engine's separate plus-or-minus 30-calendar-day wash-sale warning window.

Calculation

  1. Settle the annual baseline with no proposal: $7,640 federal tax and $0 incoming or ending loss carryforward.
  2. Net the proposed $5,000 long-term loss; deduct $3,000 against ordinary income at the independently checked 12% marginal rate, reducing annual federal tax to $7,280 (a $360 decrease), and carry forward the remaining $2,000 as long-term loss.
  3. Measure each recorded event as calendar days from the June 1 snapshot.
  4. Place the IRA acquisition at day −10 and the proposed sale anchor at day 0, retaining their recorded share counts.
  5. Check whether the acquisition falls inside [−30, +30]; because −10 is inside, preserve the engine's wash_sale_window warning.

What this step cannot establish

The event plot establishes warning-window overlap only. It does not match replacement shares, compute disallowed-loss dollars, or determine filing treatment.

Exact values behind the figure
Exact plotted values shown in Exhibit 03
SeriesCalendar days from June 1, 2026 snapshotShares
Recorded IRA acquisition-1025
Proposed taxable sale0100

The warning means the proposed loss intersects recorded replacement-share facts. It does not compute how much loss is disallowed and does not determine filing treatment.

The −$360 figure is the difference between two modeled 2026 annual tax states for the stated assumptions. It is not a refund estimate; the $2,000 remaining long-term loss carryforward is shown separately.

Method and constraints

Method

How does the production Sale Tax Planner price one user-specified long-term-gain proposal and one user-specified loss proposal at a pinned 2026 household tax position?

Run two deterministic SPY proposals through lib/realization_planner.py with complete lot, price, acquisition, anchor-date, and household tax inputs.

Use the same 2026 married-filing-jointly context in both cases: $100,000 ordinary income, $160,000 pre-proposal Form 1040 AGI, no resident state, zero earlier current-year short- and long-term gains or losses, and zero incoming short- and long-term loss carryforwards.

Retain the full engine response, including assumptions, rows, stop markers, totals, and warnings, as exact committed JSON bytes.

Verify request and response SHA-256 identities and reconcile the visible report values to parsed response fields in tests.

Determinism anchor: snapshot_date June 1, 2026 controls holding period, the plus-or-minus 30-day warning window, valuation, and the current_2026 tax schedule.

Dollar basis: Proceeds, basis, gain or loss, and modeled tax are nominal 2026 U.S. dollars. The effective rate is explicitly measured against proceeds.

Verification guard: Request and response payload hashes must match the exact committed bytes.

Verification guard: The gain-case federal and NIIT arithmetic must continue to pass the independent statutory engine test.

Verification guard: Displayed proceeds, basis, gain or loss, annual baseline and with-sale states, tax components, carryforwards, stop markers, acquisition date, and warning must reconcile to the parsed response.

Verification guard: An independent 2026 loss ledger must reproduce the $3,000 ordinary-income deduction, $360 federal-tax decrease, and $2,000 long-term carryforward.

Verification guard: All copy must remain descriptive proposal-pricing language and must not select or advocate a sale.

Assumptions held fixed

  • The user supplies the ticker and proceeds target; the study prices those proposals and does not choose an action.
  • The annual baseline uses the household's pre-proposal AGI, which already includes earlier household activity; earlier same-year capital gains/losses and incoming carryforwards are supplied separately and are zero in these fixtures.
  • The engine reconciles the annual baseline against the same tax year including the proposed sale, using canonical Schedule D netting, loss deduction, and carryforward rules. NIIT uses pre-proposal AGI without counting prior capital activity twice.
  • The final lot may be fractional, although both worked cases use whole lots.
  • The wash-sale-window output is a flag, not replacement-share matching or a disallowed-loss amount.

What this study establishes

The amount sold is not the amount taxed. In the gain case, $110,000 of proposed proceeds removes $10,000 of basis and realizes a $100,000 long-term gain.

At the fixture's 2026 married-filing-jointly tax position, $31,100 of that gain remains in the federal 0% band, $68,900 is priced at 15%, and $10,000 enters NIIT. The engine returns a $10,715 incremental modeled tax change, or 9.74% of proceeds.

The loss case uses a 2026 baseline with no earlier realized capital gains or losses and no incoming carryforwards: $10,000 of proposed proceeds realizes a $5,000 long-term loss, lowers modeled federal tax by $360, and leaves a $2,000 long-term loss carryforward. An IRA acquisition ten days before the anchor produces a separate wash-sale-window warning, not a disallowed-loss calculation.

Limitations
  • These fixtures use zero earlier current-year capital gains/losses and zero incoming carryforwards; other supplied ledger values change annual netting and tax. Itemized deductions, AMT, and a complete state return remain outside scope; resident-state investment tax is shown only when a state is supplied.
  • The difference between the stated ordinary income and AGI is not characterized; ordinary income sets the federal income-tax base, while pre-sale AGI supplies the NIIT MAGI base. Other income and investment items are not priced.
  • The result depends on complete and accurate basis, acquisition dates, holdings, tax context, and price history.
  • One gain case and one loss case do not describe the distribution of tax prices across investor portfolios.
  • The warning does not determine filing treatment or quantify a disallowed loss.
  • The engine prices the two supplied proposal paths and does not evaluate their investment, liquidity, estate, legal, or filing merits.
Sources and prior research
Evidence and reproducibility

sale-tax-two-case-worked-artifact-v2

Two 2026 married-filing-jointly proposal-pricing fixtures with zero earlier same-year capital gains/losses and zero incoming carryforwards: a $110,000 long-term-gain proposal and a $10,000 loss proposal with an in-window IRA acquisition.

Evidence date: 2026-06-01. Nominal 2026 U.S. dollars at the June 1, 2026 anchor.

request=d25634dcfd95816d21b34b6da20162c3ba50b15365062b0cdcd136761aebe15a; response=3f219382acaa6f4cac92e17454775245736358d7050fa0c94be428c663867443

Source: lib/realization_planner.py. Versions: federalSchedule=2026, sourceContract=exact_incremental_tk_minus_tk_minus_1.

  • Both fixtures set earlier same-year capital gains/losses and incoming loss carryforwards to zero; a different ledger changes the reconciliation.
  • The loss-case warning does not compute a disallowed-loss amount or filing treatment.
  • The cases demonstrate the pricing contract and do not describe investor-population outcomes.

Model the same trade-off for a household

The linked tools keep household context, dates, tax assumptions, and result limitations attached to the calculation.

  • Price a proposed sale Enter a held taxable ticker and target, then inspect the lot schedule, annual tax change, stop markers, and warnings.
  • Inspect household tax facts Review loss and gain candidates, replacement-share matching, wash-sale details, bracket room, and NIIT distance.