Trader Tax Basics¶
OVERVIEW¶
Active traders are responsible for maintaining records sufficient to reconstruct every realized gain and loss on a per-lot basis for a given tax year. Brokers provide Form 1099-B and consolidated statements, but these records have structural gaps around wash sales, lot identification, and cross-account activity. A structured trade journal closes those gaps and gives your CPA the raw transaction data needed for tax filing.
Note
Nothing on Tapeboard is tax advice. If your taxable trading P&L is material, consult a CPA who specializes in trader taxes. This page covers recordkeeping requirements only.
FORMS AND REQUIREMENTS¶
Three forms cover the bulk of active-trader filings.
| Form | Purpose | Who Populates It |
|---|---|---|
| Form 8949 | Line-item record of every individual transaction: security, dates, proceeds, cost basis, wash-sale adjustments, gain/loss | Broker 1099-B plus manual entries for cross-broker trades |
| Schedule D | Aggregates Form 8949 totals into short-term and long-term capital gains | Derived from 8949 totals |
| Form 4797 | Used only under the Section 475(f) mark-to-market election | Replaces 8949/Schedule D under MTM regime |
Note
The Section 475(f) mark-to-market election carries a strict deadline: April 15 of the tax year in which it takes effect. This means the decision is typically made the prior year. Do not make this election without CPA guidance.
WASH-SALE TRACKING¶
Wash-sale tracking is what most retail traders miss. A wash sale is when you take a loss on a security and buy a substantially identical security within 30 days before or after — the loss is disallowed and gets added to the cost basis of the replacement shares. The broker tracks wash sales within a single account, but not across multiple accounts or across substantially-identical securities (an ETF and a similar ETF; a stock and an in-the-money option on the same stock). The cross-account / cross-substantial-identical wash-sale tracking is on the taxpayer, not the broker.
BROKER RECORD GAPS¶
Broker statements do not produce a complete tax record for active traders. Three gaps appear consistently.
| Gap | Description | Who Is Responsible |
|---|---|---|
| Multi-account | Brokers do not reconcile wash sales or cost basis across separate accounts or across a taxable account and an IRA | Taxpayer |
| Substantially identical securities | Brokers flag wash sales on identical securities within one account only; cross-product pairs (e.g. similar ETFs, a stock and an ITM option on that stock) are not flagged | Taxpayer |
| Mark-to-market year-end mark | Under Section 475(f), open positions must be marked to their 12/31 closing price and unrealized P&L treated as realized; brokers do not produce this report cleanly | Taxpayer |
Tip
A journal that aggregates fills across all accounts and tracks related tickers gives your CPA the source data needed to handle all three gaps.
JOURNAL SCHEMA¶
A structured trade journal must capture the following fields at minimum to support Form 8949 preparation and cross-broker reconciliation.
| Column | Description |
|---|---|
| Timestamp | Fill time including timezone |
| Symbol | Ticker or instrument identifier |
| Side | buy, sell, short, or cover |
| Quantity | Signed integer; short positions as negative |
| Price | Fill price per unit |
| Commission and Fees | Total transaction cost |
| Account ID | Broker or account identifier for multi-account traders |
| Notes | Free-form context field |
The Tapeboard trade journal captures every paper-sim fill using this schema natively. For live trades, the CSV-import path supports the same columns. The CSV export uses Form 8949-compatible column ordering so a CPA can pull it directly into a reconciliation workflow.
WHAT THE JOURNAL DOES NOT PROVIDE¶
Note
The journal produces records. It does not compute tax liability.
A complete tax calculation requires the following, none of which the journal performs automatically:
- Applying the correct cost-basis method (FIFO, LIFO, specific-lot, or average cost) per account and per broker election on file
- Identifying all substantially identical security pairs across your trading history
- Determining holding periods for short-term versus long-term classification
- Computing the wash-sale basis carryforward into replacement lots
- Producing the final Schedule D totals or any state-level equivalents
These determinations belong to a qualified CPA working from your complete transaction record. The journal's role is to ensure that record is complete, structured, and exportable.
HOW TO USE¶
Paper-sim fills All fills recorded in the Tapeboard paper simulator are logged automatically to the trade journal with the full schema populated.
Live trade imports 1. Export a CSV from your broker using their standard transaction history report. 2. Map your broker's column headers to the Tapeboard schema using the CSV-import column mapper. 3. Import the file. Duplicate detection runs automatically against existing journal entries. 4. Repeat for each broker account and assign a unique Account ID to each.
Exporting for your CPA 1. Open the Trade Journal from the terminal sidebar. 2. Set the date range to the full tax year (January 1 – December 31). 3. Select Export → CSV (Form 8949 format). 4. Deliver the exported file to your CPA alongside each broker's 1099-B.
Tip
Export separate CSVs per account ID if your CPA prefers to reconcile account-by-account before aggregating. The account ID column is included in all export formats.
KEYBOARD SHORTCUTS¶
| Action | Shortcut |
|---|---|
| Open Trade Journal | J |
| Open CSV Import dialog | Ctrl + I |
| Export journal (current filter) | Ctrl + E |
| Filter by date range | Ctrl + Shift + D |
| Filter by account ID | Ctrl + Shift + A |
| Clear all filters | Esc |