How to Report Prediction-Market Trades on Form 8949
Worked Form 8949 rows for Polymarket, Kalshi and Hyperliquid trades under capital treatment: dates, proceeds, basis, fees, worthless positions, boxes.
OddsFile research·Updated Oct 22, 2026·6 min read
On this page
- When Form 8949 applies
- The columns
- Which box: C, I, L or G/H?
- Worked rows
- Row 1: Polymarket position that won and was redeemed
- Row 2: Polymarket losing position, never redeemed
- Row 3: Kalshi contract sold before settlement
- Row 4: Partial sales and FIFO
- Do you need one row per trade?
- Things that don't go on Form 8949
- Netting and the $3,000 limit
- How OddsFile builds your 8949
- FAQ
- What date do I use for a position that resolved?
- Is Polymarket box I or box C?
- Where do Kalshi trades go on Form 8949?
- How do I handle fees?
- Can I report one line per market?
If you and your preparer treat prediction-market contracts as capital assets, each closed position becomes a row on Form 8949: description, date acquired, date sold or resolved, proceeds, cost basis and gain or loss. Polymarket outcome tokens are usually reported as digital assets with no 1099-DA (box I short-term, box L long-term). Kalshi contracts without a 1099-B usually go in box C or F. Totals then flow to Schedule D.
OddsFile is software, not tax advice. The IRS has not issued guidance on how prediction-market contracts are taxed, and capital-asset treatment is one of several positions. This article shows how Form 8949 works if that position is used; a tax professional can tell you whether it fits your situation.
When Form 8949 applies
Form 8949 is only for the capital-asset treatment. If your results are reported as Section 1256 contracts, they go on Form 6781 instead. If they're treated as other income or gambling, they go on Schedule 1 (and Schedule A for gambling losses). The choice is covered in gambling vs capital gains for event contracts.
The columns
From the Instructions for Form 8949:
| Column | What goes there for a prediction-market position |
|---|---|
| (a) Description | Market and side, e.g. "Polymarket: Fed cut Dec 2026, YES, 1,000 sh" |
| (b) Date acquired | Date of the buy fill (per lot) |
| (c) Date sold or disposed of | Sale date, or resolution/settlement date |
| (d) Proceeds | Sale amount, or settlement payout (0 for a losing position) |
| (e) Cost or other basis | Purchase amount plus buy-side fees |
| (f) Code | Adjustment code, if any (e.g. E for selling expenses not reflected) |
| (g) Adjustment | Amount of the adjustment |
| (h) Gain or loss | (d) − (e) + (g) |
Holding period is short-term if you held one year or less; long-term only if you sold after the one-year anniversary of the purchase. Most event contracts resolve within a year.
Which box: C, I, L or G/H?
Starting with 2025 returns, digital assets have their own boxes and boxes C and F can't be used for them:
| Box | Use for |
|---|---|
| C / F | Short / long-term, no 1099-B received, not a digital asset (e.g. Kalshi contracts) |
| G / J | Digital asset, 1099-DA shows basis reported to the IRS |
| H / K | Digital asset, 1099-DA received without basis |
| I / L | Digital asset, no 1099-DA received (typical for Polymarket outcome tokens) |
Polymarket outcome tokens are blockchain tokens (on Polygon), which is why they're usually treated as digital assets. The IRS hasn't addressed them specifically, so confirm the box with your preparer. Hyperliquid perp positions are less clear-cut; many preparers report them in I/L too. Background in 1099-DA explained.
Worked rows
Row 1: Polymarket position that won and was redeemed
- March 4, 2026: buy 1,000 YES at $0.42 = $420.00, taker fee $2.10
- May 10, 2026: market resolves YES, redeem 1,000 × $1.00 = $1,000.00
| (a) | (b) | (c) | (d) | (e) | (h) |
|---|---|---|---|---|---|
| Polymarket: [market] YES, 1,000 sh | 03/04/2026 | 05/10/2026 | 1,000.00 | 422.10 | 577.90 |
Box I. The fee is added to basis. Polymarket's activity feed shows the fee as the difference between the USDC paid and shares × price.
Row 2: Polymarket losing position, never redeemed
- Buy 600 NO at $0.50 = $300.00, fee $1.50, on June 2, 2026
- Market resolves YES on August 15, 2026. You never click redeem (nothing to redeem).
| (a) | (b) | (c) | (d) | (e) | (h) |
|---|---|---|---|---|---|
| Polymarket: [market] NO, 600 sh, worthless | 06/02/2026 | 08/15/2026 | 0.00 | 301.50 | (301.50) |
The loss is real even without an on-chain sale. Many trackers miss these rows; see unredeemed losing positions.
Row 3: Kalshi contract sold before settlement
- Buy 200 NO at $0.63 = $126.00, fee $1.40
- Sell 200 NO at $0.80 = $160.00, fee $1.12
| (a) | (b) | (c) | (d) | (e) | (h) |
|---|---|---|---|---|---|
| Kalshi: [ticker] NO, 200 | 02/11/2026 | 03/02/2026 | 158.88 | 127.40 | 31.48 |
Box C (not a digital asset, no 1099-B for event contracts). The sell fee reduces proceeds. Alternatively, report gross proceeds of $160.00 and enter −1.12 in column (g) with code E; the result is the same.
Row 4: Partial sales and FIFO
Buy 500 YES at $0.30 (Jan 5), buy 500 YES at $0.50 (Jan 20), sell 600 at $0.70 (Feb 1). Under FIFO the 600 sold are 500 from Jan 5 plus 100 from Jan 20, which is two rows with different acquisition dates (or one row marked "VARIOUS" if your preparer accepts it for short-term lots). Fees ignored for brevity:
| Lot | Proceeds | Basis | Gain |
|---|---|---|---|
| 500 from 01/05 | 350.00 | 150.00 | 200.00 |
| 100 from 01/20 | 70.00 | 50.00 | 20.00 |
The remaining 400 shares from January 20 stay open until sold or resolved. Kalshi's P&L statement uses FIFO (Kalshi help); for crypto you may use specific identification if you keep adequate records.
Do you need one row per trade?
The 8949 instructions allow two shortcuts:
- Exception 1: Report totals directly on Schedule D line 1a or 8a, but only for sales on a 1099-B or 1099-DA with basis reported and no adjustments. That rarely applies to prediction markets.
- Exception 2: Enter combined totals per box on Form 8949 and attach a statement containing every transaction in the same format.
Either way, the per-trade detail has to exist. Active traders with thousands of fills usually use Exception 2 with an attached CSV or PDF.
Things that don't go on Form 8949
- USDC moves between your own wallets. Not a disposal.
- Deposits and withdrawals on Kalshi. Not a disposal.
- Rewards and liquidity incentives. Generally income when received, not a sale. Kalshi reports some on 1099-MISC.
- Hyperliquid funding payments. Their treatment is unsettled; see Hyperliquid funding payments.
Selling USDC for dollars at a custodial exchange is a disposal, usually with near-zero gain, and appears on that exchange's 1099-DA.
Netting and the $3,000 limit
Form 8949 totals flow to Schedule D, where short- and long-term results net across all your capital transactions, stocks included. A net capital loss deducts up to $3,000 a year ($1,500 if married filing separately), with the rest carried forward (IRC §1211, §1212). Wash-sale rules in §1091 apply to stock or securities, and many practitioners take the position they don't reach event contracts or crypto. See Polymarket losses.
How OddsFile builds your 8949
OddsFile imports your Kalshi, Polymarket and Hyperliquid history, matches lots (FIFO, HIFO or specific ID), allocates fees, closes worthless positions at resolution, and exports a Form 8949 CSV with an audit trail linking every row to its source fills. Dates are in UTC. Box mapping (C, I, L and so on) is flagged for confirmation with your preparer.
Run the free OddsFile check: paste a Polymarket or Hyperliquid address and see your 2026 P&L under each treatment, no signup.
For entering the result in software, see Kalshi and Polymarket in TurboTax. The full Polymarket picture is in Polymarket taxes: the complete guide.
FAQ
What date do I use for a position that resolved?
The resolution or settlement date. For losing Polymarket positions you never redeemed, that's when the market resolved and the tokens became worthless.
Is Polymarket box I or box C?
If outcome tokens are treated as digital assets with no 1099-DA, box I (short-term) or L (long-term). Boxes C and F are no longer used for digital assets.
Where do Kalshi trades go on Form 8949?
Under capital treatment, usually box C (short-term) or F (long-term), because Kalshi doesn't issue a 1099-B for event contracts and they aren't digital assets.
How do I handle fees?
Add buy fees to basis and subtract sell fees from proceeds, or report them as an adjustment with code E. Be consistent.
Can I report one line per market?
Each disposal needs its own acquisition date and holding period. Exception 2 lets you put totals on the form if the attached statement has the detail.
Software, not tax advice. We do not prepare or file tax returns. The IRS has not ruled on how prediction-market contracts are taxed; figures shown are estimates of possible treatments. Confirm your position with a qualified tax professional. Read the full disclaimer.
See what you actually made this year.
Paste a Polymarket or Hyperliquid wallet: realized P&L, fees and win rate in seconds.
Run the free P&L checkRelated guides
Guides
Robinhood Prediction Market Taxes: No 1099, Now What?
Robinhood says it doesn't issue a 1099 for event contracts. How prediction market gains and losses can be reported, with examples and 2026 loss rules.
Guides
Prediction Market Tax Calculator: Estimate Your Tax Under Each Treatment
Estimate Polymarket, Kalshi or Hyperliquid taxes under every treatment: other income, capital, Section 1256 and gambling with the 90% limit.
Guides
Kalshi Taxes in California, Texas and Other States: Prediction Market State Taxes
Kalshi taxes in California, Texas and beyond: how states tax prediction market gains, why the federal 90% gambling rule may not apply, and what to check.