Tax basics · Kalshi
Prediction Market Cost Basis for Taxes: FIFO Lots
Prediction market cost basis explained: how FIFO matches a sale to a purchase, where fees go, what settlement does, and what each venue shows.
On this page
The cost basis of a prediction market contract is what you paid, fee included. When one contract was bought twice or more, first in, first out (FIFO) means a sale closes the oldest purchase. The FIFO rule was written for stock. As of October 2026, there is no IRS guidance on event contracts. For people filing under Section 1256, order doesn't matter: open positions count as sold at their December 31 value, and every gain splits 60/40.
What is cost basis on a prediction market contract?
Cost basis on a prediction market contract is what you paid to buy it: the price times the number of contracts, plus the fee on that purchase. The tax code starts basis at cost under Section 1012. The Form 8949 instructions count purchase costs such as commissions as part of it.
Each purchase is its own lot. A lot is one buy of a contract, with its own price, date and fee. This guide carries one example all the way through: two buys of the same YES contract in 2026, then one sale. The sale closes the oldest lot first.
| Step | Date | What happened | Contracts | Price | Example fee | Cost basis of the lot |
|---|---|---|---|---|---|---|
| Lot A | Mar 2 | Bought YES | 100 | 40¢ | $1.68 | $41.68 |
| Lot B | Jun 1 | Bought YES | 100 | 60¢ | $1.68 | $61.68 |
| Sale | Sep 15 | Sold YES | 100 | 70¢ | $1.47 | closes Lot A |
The example fees use the taker formula on Kalshi's fee schedule. Your own fills carry the fee you actually paid.
The sale brings in $70. Take away Lot A's $41.68 and the $1.47 sale fee, and the gain is $26.85. Lot B stays open, still at its $61.68 cost.
YES and NO each have their own cost basis
YES and NO on the same market are two different contracts, so each side keeps its own lots. A sale of YES closes the oldest YES lot. It never touches a NO lot, and a lot in one market never closes against another market.
Kalshi records a trade by the side it leaves you holding. In Kalshi's fill data, selling 100 YES shows up as a NO fill. Buying NO while you hold YES is therefore a sale of your oldest YES lots, not a second position. The Kalshi data guide shows those fill fields.
Where fees go
A fee paid on a purchase goes into that lot's cost basis. A fee paid on a sale comes off the sale proceeds. That is the split in IRS Publication 550, which adds commissions to what you paid and subtracts selling expenses from what you received.
Some filings put both fees in the cost column instead. In the example, that shows proceeds of $70.00 and a cost of $43.15. The gain is $26.85 either way.
The venues describe their own figures in four different ways:
- Kalshi: its profit and loss figure includes fees and any rebates.
- Polymarket US: a position's cost includes the fee paid when buying. It doesn't say where a sale fee goes.
- Webull: fees are added to the cost of a buy and taken off the proceeds of a sale.
- Robinhood: the in-app profit and loss leaves fees out. The annual statement lists them.
Whatever the venue shows, each fee belongs to the trade that paid it.
How does FIFO work for prediction market trades?
FIFO charges each sale to the earliest purchase of the same contract that is still open. In the example, the September 15 sale closes Lot A, bought March 2, and leaves Lot B, bought June 1. The sale takes Lot A's cost basis and Lot A's purchase date with it.
The rule comes from Treasury Regulation 1.1012-1(c). When a seller doesn't name which shares were sold, the sale is charged to the earliest lot. The regulation is written for shares of stock and extends to bonds.
Kalshi names its method. Its help center says: "We use the First-In-First-Out (FIFO) accounting method to compute profits and losses."
The order changes the numbers on only one of the common routes. For people filing on the standard capital route, it can move gain from one year to the next. For people filing under Section 1256, it drops out. The Section 1256 section below runs both routes through the same example.
A partial sale splits a lot
A sale smaller than the oldest lot closes only part of it. Realize splits the lot's cost basis and its purchase fee by the number of contracts sold.
Say the September 15 sale were 50 contracts instead of 100. It closes half of Lot A: $20.00 of price plus half of the $1.68 fee, or $20.84 of cost basis. The other 50 contracts of Lot A stay open at $20.84. Lot B isn't touched.
Each lot keeps its own purchase date after a split. The 50 contracts left in Lot A are still dated March 2. That date matters for people filing on the standard capital route, where a lot held more than one year is long-term. FIFO decides which dates are sold first.
How lots become Form 8949 rows
For people filing on the standard capital route, each lot a sale closes becomes a row on Form 8949. The September 15 sale is one row: proceeds of $70.00 against Lot A's cost.
None of the venues in this guide says it sends a Form 1099-B for event contract trades. With no Form 1099-B or Form 1099-DA, the Form 8949 instructions put the rows under box C for short-term and box F for long-term. A sale that closes lots bought on several dates can go on one row with "VARIOUS" as the purchase date. The short-term and long-term parts still go on separate rows.
The capital gains guide fills in Form 8949 column by column.
Is the average price in a prediction market app the same as FIFO cost basis?
No. An average price blends every purchase still in a position. FIFO cost basis is the cost of the one lot a sale closes. The two give different numbers for the same sale.
The same sale under an average price
In the example, Lot A cost 40¢ a contract and Lot B cost 60¢. The average across the 200 contracts is 50¢. Here is the September 15 sale of 100 at 70¢ both ways, without fees:
| Figure | FIFO | Average price |
|---|---|---|
| Cost of the 100 sold | $40.00 (Lot A) | $50.00 |
| Gain on the sale | $30.00 | $20.00 |
| Cost of the 100 still open | $60.00 (Lot B) | $50.00 |
The average moves $10 of gain off this sale and onto the contracts still open. If those close in the same year, the year's total comes out the same.
The IRS allows an average for a narrow set of holdings. Publication 550 limits the average price per share to certain mutual fund shares. The Form 8949 instructions limit average basis to identical shares in a mutual fund or a dividend reinvestment plan. Both texts are about shares.
What each venue calls its cost basis
Each venue labels its own figure, and most show an average. Five venues describe theirs this way:
- Polymarket US: the portfolio shows an average entry price. Its trader guide lists cost basis as the average entry price and total cost.
- Novig: its API derives an average entry price from the net dollars paid for a position.
- Coinbase: each open prediction position shows an average fill price.
- Webull: each event contract position shows a "cost basis". Webull doesn't say how it is figured.
- Robinhood: its help center says "Average cost isn't the same as the tax cost basis." That article is written about shares and names no method for event contracts.
Kalshi is the exception: its help center says its profit and loss uses FIFO. Its positions API reports a position's total cost, with no per-lot figure.
A position's average shows where the whole position stands. Form 8949 is figured lot by lot.
What is the cost basis of a prediction market contract that settles?
A contract that settles keeps the cost basis of its lot. Settlement counts as the closing sale, at $1 a contract if it wins and $0 if it loses. The gain or loss is that payout minus the lot's cost.
In the example, Lot B is still open: 100 YES contracts at a cost of $61.68. Say the market settles on November 10:
| Outcome | Payout | Lot B's cost | Gain or loss |
|---|---|---|---|
| YES wins | $100.00 | $61.68 | $38.32 |
| YES loses | $0.00 | $61.68 | ($61.68) |
Kalshi charges no fee at settlement, so nothing comes off the payout. Settlement closes every lot still open in that market at once. FIFO only decides the order when some lots are sold first.
For people filing under Section 1256, a lot open on December 31 counts as sold at that day's value. Settlement is then measured from that value. The December 31 guide works that through.
Can you pick which lots a prediction market sale closes?
The IRS rules on picking lots name stock, bonds and digital assets. Event contracts are not among them. Picking the lot a sale closes is called specific identification. Without it, those rules fall back to FIFO.
What the IRS rule names
Treasury Regulation 1.1012-1(c) sets out how a seller identifies a lot. It has two steps when a broker holds the shares:
- At the time of the sale, the seller tells the broker which shares to sell.
- Within a reasonable time, the broker confirms that choice in writing.
A standing instruction counts as made at the time of each sale. The rule is written for stock, and a later paragraph applies it to bonds. Digital assets held at a broker have their own FIFO rule in the same regulation.
Broker reporting follows the same pattern. Under Section 6045(g), a broker that reports basis on a covered security uses FIFO unless the customer identifies the lot. The regulation's list of covered securities has five kinds:
- stock
- debt
- certain options
- securities futures contracts
- digital assets and forwards on them
Commodity contracts join the list only if the Treasury Secretary determines basis reporting fits them.
What Realize matches
Realize matches every sale first in, first out. Each market outcome has its own queue of lots, and each venue account is matched on its own. Realize does not model specific identification, an average cost or any other method. Every route Realize prices starts from the same fills.
Does FIFO matter under Section 1256?
No, not for people filing under Section 1256. Lot order can move two things: the year a gain lands in, and whether it is short-term or long-term. Section 1256 takes both away. For people filing on the standard capital route, the order can change both.
Section 1256: why the order drops out
For people filing under Section 1256, every position still open on December 31 counts as sold at that day's value. Each year's total is then everything closed that year plus the change in value of everything still open, whichever lot a sale closed. The December 31 guide shows how the mark works.
The split doesn't depend on the lot either. Section 1256 treats 60% of each gain or loss as long-term and 40% as short-term, however long the contract was held. The 60/40 rule guide and the Form 6781 guide cover how that split is filed.
Take the example with one change: Lot B is still open on December 31, 2026, when the price is 80¢. It settles YES on February 10, 2027. Without fees, the 2026 total is $50 under FIFO and $50 under an average price. The 2027 total is $20 either way.
Standard capital: where the order changes the numbers
For people filing on the standard capital route, nothing is marked at year end. A lot keeps its real cost until it is sold or settles, so the order decides which cost lands in which year. Here is the same example, without fees:
| Year | What closes | FIFO | Average price |
|---|---|---|---|
| 2026 | Sale of 100 at 70¢ on Sep 15 | $30 | $20 |
| 2027 | Settlement of 100 at $1 on Feb 10 | $40 | $50 |
| Total | $70 | $70 |
The total is the same. The order moves $10 of gain from 2026 into 2027.
In 2026, the example shows $50 under Section 1256 and $30 on the standard capital route. In 2027 it is $20 and $40.
Lot order also sets the holding period. Had the September 15 sale come on April 15, 2027 instead, FIFO would close Lot A, bought March 2, 2026. That is more than one year, so the gain would be long-term. A sale that closed Lot B, bought June 1, 2026, would still be short-term that day.
Do wash sale rules apply to prediction market contracts?
The wash sale rule in Section 1091 disallows a loss on "stock or securities" in one case. That case is a purchase of substantially identical stock or securities within 30 days before or after the sale. It also reaches contracts and options to buy or sell stock or securities. Publication 550 says the rules do not apply to losses on commodity futures contracts.
Section 1256 contracts have their own year-end mark under Section 1256. Realize's numbers include no wash sale adjustment.
What cost basis does each venue show?
Only Kalshi names a lot method for event contracts: its profit and loss uses FIFO. The other five venues in this guide show an average or a single cost figure. None of the six says it sends a tax form with a cost basis for event contract trades.
| Venue | What it shows | Method named | Fees | Form for event contract trades | Checked |
|---|---|---|---|---|---|
| Kalshi | Yearly profit and loss, and a file with one row per closed lot | FIFO, for profit and loss | Included in profit and loss, with rebates | None; its 1099-B covers crypto transfers only | Oct 8 to 27, 2026 |
| Polymarket US | Average entry price; a cost basis field on each trade, sometimes empty | None | Buy fee in the position's cost; sale fee not stated | Agreement consents to electronic delivery of a 1099-B; none committed | Oct 25 to 27, 2026 |
| Robinhood | Annual statement with costs, proceeds, fees and net profit and loss | None for event contracts | Listed on the annual statement; left out of in-app profit and loss | No 1099 for event contracts | Oct 27, 2026 |
| Coinbase | Average fill price on each open position | None | General tax page puts US trading fees in cost basis; prediction markets not named | 1099-B criteria don't name prediction markets | Oct 27, 2026 |
| Novig | Average entry price, from net dollars paid | None | Not described in its docs | 1099-MISC on net redemptions, not trading profit | Oct 25 to 27, 2026 |
| Webull | A "cost basis" on each position | None | Added to cost on a buy, taken off proceeds on a sale | Tax pages name no form for event contracts | Oct 27, 2026 |
Kalshi cost basis
Kalshi is the one venue that names its lot method. Its Documents page shows yearly profit and loss with and without fees. The download behind it has one row per closed lot, so one position can span several rows. Each row has an entry and exit price, open and close fees, and both timestamps. Kalshi updates the figure on the first of each month.
The Kalshi data guide walks through that file, and the Kalshi forms guide covers what Kalshi does and doesn't send. The Kalshi taxes guide covers the rest of the year.
Polymarket US cost basis
Polymarket US shows an average entry price on screen, as covered above. Its API carries three cost basis facts:
- Each trade in the activity feed has a
costBasisfield, and the field can be empty. - A position ledger records how cost basis changed with each trade, going back to May 1, 2026.
- The docs don't say which lots a partial sale closes.
The Polymarket data guide shows those fields, and the Polymarket filing guide shows how a year is built from them.
Robinhood, Coinbase, Novig and Webull cost basis
These four venues name no lot method for event contracts. Robinhood's annual statement lists each event contract trade with its cost, proceeds and fees, and Robinhood says it is "not a substitute tax reporting form". Coinbase and Novig show averages. Webull shows a single cost basis per position. The Robinhood forms, Coinbase forms and Novig data guides cover each one.
How Realize matches lots from your fills
Realize builds lots for Kalshi and Polymarket US from the fills in your connected account. Each sale closes the oldest open lot in the same market and outcome. A buy fee stays on its own lot. A sale fee is split across the lots that sale closes. Settlement closes every remaining lot at the payout, as the closing sale.
Realize builds no lots for Robinhood, Coinbase, Novig or Webull. The guide to how Realize checks its numbers shows the match step by step.
Sources
- IRC §1012, Cornell LII, checked October 27, 2026: law.cornell.edu/uscode/text/26/1012
- Treas. Reg. §1.1012-1, paragraphs (c) and (j), Cornell LII, checked October 27, 2026: law.cornell.edu/cfr/text/26/1.1012-1
- IRC §1091, Cornell LII, checked October 27, 2026: law.cornell.edu/uscode/text/26/1091
- IRC §1222, Cornell LII, checked October 27, 2026: law.cornell.edu/uscode/text/26/1222
- IRC §1256(a), Cornell LII, checked October 27, 2026: law.cornell.edu/uscode/text/26/1256
- IRC §6045(g), Cornell LII, checked October 27, 2026: law.cornell.edu/uscode/text/26/6045
- Treas. Reg. §1.6045-1(a)(14), Cornell LII, checked October 27, 2026: law.cornell.edu/cfr/text/26/1.6045-1
- IRS Publication 550 (2025), basis, average basis, the 60/40 rule and wash sales, checked October 27, 2026: irs.gov/publications/p550
- IRS Instructions for Form 8949 (2025), cost basis, average basis, box C and F, and VARIOUS, checked October 27, 2026: irs.gov/instructions/i8949
- Kalshi Help Center, What tax documentation does Kalshi provide?, checked October 27, 2026: help.kalshi.com
- Kalshi Help Center, Trading history, checked October 27, 2026: help.kalshi.com
- Kalshi API, Get Positions, checked October 27, 2026: docs.kalshi.com
- Kalshi Documents page, profit and loss download columns, checked October 8, 2026: kalshi.com/account/taxes
- Kalshi Fee Schedule (PDF), effective July 7, 2026, taker fee and settlement, checked October 8, 2026: kalshi.com/docs/kalshi-fee-schedule.pdf
- Polymarket US docs, Portfolio, checked October 27, 2026: docs.polymarket.us
- Polymarket US docs, Positions and risk, checked October 27, 2026: docs.polymarket.us
- Polymarket US docs, Whole contracts FAQ, checked October 27, 2026: docs.polymarket.us
- Polymarket US API, Get Activities, checked October 27, 2026: docs.polymarket.us
- Polymarket US API, Get Position Ledger, checked October 27, 2026: docs.polymarket.us
- Polymarket US docs, Reporting, checked October 27, 2026: docs.polymarket.us
- Polymarket US Participant Agreement, tax form delivery, checked October 25, 2026: polymarketexchange.com
- Robinhood Support, Event contracts taxes and statements, checked October 27, 2026: robinhood.com
- Robinhood Support, Average cost, checked October 27, 2026: robinhood.com
- Coinbase Help, Prediction markets portfolio, checked October 27, 2026: help.coinbase.com
- Coinbase Help, Tax info, checked October 27, 2026: help.coinbase.com
- Coinbase Help, Form 1099-B, checked October 27, 2026: help.coinbase.com
- Novig API, List Positions, checked October 27, 2026: docs.novig.com
- Novig Support, 1099 article, checked October 25, 2026: support.novig.com
- Webull Help, event contract positions (FAQ 11170), checked October 27, 2026: webull.com/help/faq/11170
- Webull Help, event contract fees (FAQ 11174), checked October 27, 2026: webull.com/help/faq/11174
- Webull Help, Tax Document Availability, checked October 27, 2026: webull.com/help/faq/10989
Questions people ask
Does Kalshi use FIFO?
Yes, for its profit and loss. Kalshi's help center says it uses the first-in, first-out method to compute profits and losses. Its profit and loss download lists entry and exit prices and fees.
Does Kalshi use an average price for cost basis?
Kalshi's documents name FIFO, not an average. Its positions API reports a position's total cost with no per-lot figure. Form 8949 is figured lot by lot.
Do fees count toward cost basis on a prediction market contract?
Yes, for a purchase. A fee paid to buy goes into that lot's cost basis, and a fee paid to sell comes off the proceeds. Some filings put both fees in the cost column, and the gain is the same.
Does Polymarket US give a cost basis?
Polymarket US shows one as an average entry price. Each trade in its API has a cost basis field that can be empty. Its docs don't say which lots a partial sale closes.
Can I use specific identification for event contracts?
The IRS rule on identifying lots names stock, bonds and digital assets, not event contracts. For those, a seller names the lot at the time of sale and the broker confirms it in writing. Realize matches every sale first in, first out.
What happens if I sell part of a position?
The sale closes the oldest lot first, and only as much of it as was sold. Realize splits that lot's cost basis and purchase fee by the number of contracts sold. The rest stays open with its original purchase date.
Do I need a cost basis if my venue sends no 1099-B?
Form 8949 asks for it either way. For people filing on the standard capital route, each closed lot's cost basis, purchase fee included, goes on its own row. With no Form 1099-B or Form 1099-DA, the rows go under box C for short-term and box F for long-term.
Keep reading
- Guide
Prediction Market Capital Gains and Form 8949
One Form 8949 row per closed position, settlement as a sale, nothing marked on December 31, and a $3,000 loss limit with an indefinite carryforward.
Read the guide - Guide
What Happens to Positions Open on December 31? Section 1256 Marked to Market
The December 31 mark, the January 1 basis reset, and where a year-end price comes from on Kalshi and Polymarket US.
Read the guide - Guide
How Realize checks its numbers
A CPA firm reviewed the engine. Every figure traces to a trade, built against worked cases.
Read the guide - Guide
How to Track Prediction Market Trades for Taxes
What to track, how to pull your Kalshi and Polymarket history, and the mistakes to avoid.
Read the guide - Guide
Why Don't Most Prediction Markets Send a 1099?
Which venues send a 1099 for event contracts, which don't, and which tax treatment each form lines up with.
Read the guide